From: Mathieu Baudier Date: Sat, 17 Oct 2015 10:29:03 +0000 (+0000) Subject: Fix issue with transaction clean up. X-Git-Tag: argeo-commons-2.1.30~80 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=ccc4c484ae153b5c17606593724dba227f40e4ad;p=lgpl%2Fargeo-commons.git Fix issue with transaction clean up. git-svn-id: https://svn.argeo.org/commons/trunk@8498 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- 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