Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2023-01-31 08:37:05 +0000
committerEike Stepper2023-01-31 08:37:05 +0000
commitfd83407e34f17aa473838908c6f53e14e407c86a (patch)
treec862d8ece12891b7fb7ad88eb569a4b807c5f5b1 /plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction
parentd31dc99aed7099d4f14c75320589127b785ef093 (diff)
downloadcdo-fd83407e34f17aa473838908c6f53e14e407c86a.tar.gz
cdo-fd83407e34f17aa473838908c6f53e14e407c86a.tar.xz
cdo-fd83407e34f17aa473838908c6f53e14e407c86a.zip
[581443] Provide a faster CDOTransaction.commitAndClose() method
https://bugs.eclipse.org/bugs/show_bug.cgi?id=581443
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java52
1 files changed, 45 insertions, 7 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 d2a7f0a09c..eb21e32acf 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
@@ -1699,6 +1699,50 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
@Override
public CDOCommitInfo commit(IProgressMonitor monitor) throws CommitException
{
+ CDOCommitInfo info = commitAfterResolveConflicts(monitor);
+ if (info != null)
+ {
+ waitForCommitInfo(info.getTimeStamp());
+ }
+
+ return info;
+ }
+
+ @Override
+ public CDOCommitInfo commitAndClose(IProgressMonitor monitor, boolean keepOpenAfterCommitProblem) throws CommitException
+ {
+ CDOCommitInfo info;
+
+ try
+ {
+ info = commitAfterResolveConflicts(monitor);
+ }
+ catch (Error | RuntimeException | CommitException ex)
+ {
+ if (!keepOpenAfterCommitProblem)
+ {
+ try
+ {
+ close();
+ }
+ catch (Exception ex1)
+ {
+ if (isActive())
+ {
+ OM.LOG.error(ex1);
+ }
+ }
+ }
+
+ throw ex;
+ }
+
+ close();
+ return info;
+ }
+
+ private CDOCommitInfo commitAfterResolveConflicts(IProgressMonitor monitor) throws CommitException
+ {
CDOConflictResolver[] conflictResolvers = options().getConflictResolvers();
if (conflictResolvers.length != 0)
{
@@ -1724,13 +1768,7 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa
}
}
- CDOCommitInfo info = commitSynced(monitor);
- if (info != null)
- {
- waitForCommitInfo(info.getTimeStamp());
- }
-
- return info;
+ return commitSynced(monitor);
}
private void waitForCommitInfo(long timeStamp)

Back to the top