Fix issue with transaction clean up.
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 17 Oct 2015 10:29:03 +0000 (10:29 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 17 Oct 2015 10:29:03 +0000 (10:29 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@8498 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.security.core/src/org/argeo/osgi/useradmin/WcXaResource.java

index f438a2a67e2d358c8ea370b32db79345b44bf150..8567d0538526ed7dcfbeb65512449d160c112bee 100644 (file)
@@ -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