diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse')
2 files changed, 27 insertions, 10 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java index d7e7da77e7..ecdf2c7616 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java @@ -625,18 +625,20 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa public void commit(IProgressMonitor progressMonitor) throws TransactionException { checkActive(); - if (hasConflict()) - { - throw new TransactionException(Messages.getString("CDOTransactionImpl.2")); //$NON-NLS-1$ - } - - if (progressMonitor == null) - { - progressMonitor = new NullProgressMonitor(); - } + getLock().lock(); try { + if (hasConflict()) + { + throw new TransactionException(Messages.getString("CDOTransactionImpl.2")); //$NON-NLS-1$ + } + + if (progressMonitor == null) + { + progressMonitor = new NullProgressMonitor(); + } + // TTT convertDanglingObjects(); getTransactionStrategy().commit(this, progressMonitor); } @@ -648,6 +650,10 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa { throw new TransactionException(ex); } + finally + { + getLock().unlock(); + } } public void commit() throws TransactionException @@ -1439,6 +1445,12 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa Set<CDOIDAndVersion> dirtyIDs = new HashSet<CDOIDAndVersion>(); for (CDOObject dirtyObject : dirtyObjects.values()) { + CDOState cdoState = dirtyObject.cdoState(); + if (cdoState != CDOState.CLEAN) + { + System.out.println(cdoState); + } + CDORevision revision = dirtyObject.cdoRevision(); CDOIDAndVersion dirtyID = CDOIDUtil.createIDAndVersion(revision.getID(), revision.getVersion() - 1); dirtyIDs.add(dirtyID); diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXATransactionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXATransactionImpl.java index c4279d09ee..52363fdabb 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXATransactionImpl.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOXATransactionImpl.java @@ -91,7 +91,7 @@ public class CDOXATransactionImpl implements InternalCDOXATransaction private boolean allRequestEnabled = true; - private ExecutorService executorService = Executors.newFixedThreadPool(10); + private ExecutorService executorService = createExecutorService(); private Map<InternalCDOTransaction, CDOXACommitContextImpl> activeContext = new HashMap<InternalCDOTransaction, CDOXACommitContextImpl>(); @@ -380,6 +380,11 @@ public class CDOXATransactionImpl implements InternalCDOXATransaction } } + protected ExecutorService createExecutorService() + { + return Executors.newFixedThreadPool(10); + } + /** * @author Simon McDuff */ |