From ccc4c484ae153b5c17606593724dba227f40e4ad Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sat, 17 Oct 2015 10:29:03 +0000 Subject: [PATCH] Fix issue with transaction clean up. git-svn-id: https://svn.argeo.org/commons/trunk@8498 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../src/org/argeo/osgi/useradmin/WcXaResource.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/org.argeo.security.core/src/org/argeo/osgi/useradmin/WcXaResource.java b/org.argeo.security.core/src/org/argeo/osgi/useradmin/WcXaResource.java index f438a2a67..8567d0538 100644 --- a/org.argeo.security.core/src/org/argeo/osgi/useradmin/WcXaResource.java +++ b/org.argeo.security.core/src/org/argeo/osgi/useradmin/WcXaResource.java @@ -25,7 +25,7 @@ class WcXaResource implements XAResource { } @Override - public void start(Xid xid, int flags) throws XAException { + public synchronized void start(Xid xid, int flags) throws XAException { if (editingXid != null) throw new UserDirectoryException("Already editing " + editingXid); UserDirectoryWorkingCopy wc = workingCopies.put(xid, @@ -39,14 +39,13 @@ class WcXaResource implements XAResource { @Override public void end(Xid xid, int flags) throws XAException { checkXid(xid); - } private UserDirectoryWorkingCopy wc(Xid xid) { return workingCopies.get(xid); } - UserDirectoryWorkingCopy wc() { + synchronized UserDirectoryWorkingCopy wc() { if (editingXid == null) return null; UserDirectoryWorkingCopy wc = workingCopies.get(editingXid); @@ -56,13 +55,10 @@ class WcXaResource implements XAResource { return wc; } - private void cleanUp(Xid xid) { - // clean collections + private synchronized void cleanUp(Xid xid) { wc(xid).cleanUp(); workingCopies.remove(xid); - - // clean IDs - // userDirectory.clearEditingTransactionXid(); + editingXid = null; } @Override -- 2.30.2