diff options
author | Eike Stepper | 2012-10-06 16:45:01 +0000 |
---|---|---|
committer | Eike Stepper | 2012-10-06 16:45:01 +0000 |
commit | 7a7b5e32cf39247c89f652a6595258aa8ec9634a (patch) | |
tree | 79e4ed5eb865b847b14957aceeeef886df39b92f | |
parent | ac2b6cc802f0690909d1e6c3f66c44062ce87205 (diff) | |
download | cdo-7a7b5e32cf39247c89f652a6595258aa8ec9634a.tar.gz cdo-7a7b5e32cf39247c89f652a6595258aa8ec9634a.tar.xz cdo-7a7b5e32cf39247c89f652a6595258aa8ec9634a.zip |
[391293] Committing a non-dirty transaction persists and broadcasts
CDOCommitInfos https://bugs.eclipse.org/bugs/show_bug.cgi?id=391293
2 files changed, 27 insertions, 4 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java index 06cb7361fb..b86c6d2801 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java @@ -165,6 +165,8 @@ public class TransactionCommitContext implements InternalCommitContext private List<LockState<Object, IView>> postCommitLockStates; + private boolean hasChanges; + private boolean serializingCommits; private boolean ensuringReferentialIntegrity; @@ -475,6 +477,13 @@ public class TransactionCommitContext implements InternalCommitContext try { monitor.begin(107); + + hasChanges = newPackageUnits.length != 0 || newObjects.length != 0 || dirtyObjectDeltas.length != 0; + if (!hasChanges) + { + return; + } + dirtyObjects = new InternalCDORevision[dirtyObjectDeltas.length]; if (newPackageUnits.length != 0) @@ -533,11 +542,22 @@ public class TransactionCommitContext implements InternalCommitContext try { monitor.begin(101); - accessor.commit(monitor.fork(100)); + if (hasChanges) + { + accessor.commit(monitor.fork(100)); + } + else + { + monitor.worked(100); + } + updateInfraStructure(monitor.fork()); - // Bugzilla 297940 - repository.endCommit(timeStamp); + if (hasChanges) + { + // Bugzilla 297940 + repository.endCommit(timeStamp); + } } catch (Throwable ex) { 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 5cf60e458a..9f9d4ec6cb 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 @@ -2910,7 +2910,10 @@ public class CDOTransactionImpl extends CDOViewImpl implements InternalCDOTransa } CDOCommitInfo commitInfo = makeCommitInfo(timeStamp, result.getPreviousTimeStamp()); - session.invalidate(commitInfo, transaction, result.isClearResourcePathCache()); + if (!commitInfo.isEmpty()) + { + session.invalidate(commitInfo, transaction, result.isClearResourcePathCache()); + } // Bug 290032 - Sticky views if (session.isSticky()) |