Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2012-10-06 16:45:01 +0000
committerEike Stepper2012-10-06 16:45:01 +0000
commit7a7b5e32cf39247c89f652a6595258aa8ec9634a (patch)
tree79e4ed5eb865b847b14957aceeeef886df39b92f
parentac2b6cc802f0690909d1e6c3f66c44062ce87205 (diff)
downloadcdo-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
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java26
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java5
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())

Back to the top