diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java index 0b38c4471c..facc99bf1f 100644 --- a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java +++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java @@ -126,19 +126,44 @@ public class CommitTransactionIndication extends CDOServerIndicationWithMonitori commitContext.preWrite(); long lastUpdateTime = in.readLong(); - boolean autoReleaseLocksEnabled = in.readBoolean(); int commitNumber = in.readInt(); String commitComment = in.readString(); - InternalCDOPackageUnit[] newPackageUnits = new InternalCDOPackageUnit[in.readInt()]; CDOLockState[] locksOnNewObjects = new CDOLockState[in.readInt()]; + CDOID[] idsToUnlock = new CDOID[in.readInt()]; + InternalCDOPackageUnit[] newPackageUnits = new InternalCDOPackageUnit[in.readInt()]; InternalCDORevision[] newObjects = new InternalCDORevision[in.readInt()]; InternalCDORevisionDelta[] dirtyObjectDeltas = new InternalCDORevisionDelta[in.readInt()]; CDOID[] detachedObjects = new CDOID[in.readInt()]; - monitor.begin(newPackageUnits.length + newObjects.length + dirtyObjectDeltas.length + detachedObjects.length); + monitor.begin(locksOnNewObjects.length + idsToUnlock.length + newPackageUnits.length + newObjects.length + + dirtyObjectDeltas.length + detachedObjects.length); try { + // Locks on new objects + if (TRACER.isEnabled()) + { + TRACER.format("Reading {0} locks on new objects", locksOnNewObjects.length); //$NON-NLS-1$ + } + + for (int i = 0; i < locksOnNewObjects.length; i++) + { + locksOnNewObjects[i] = in.readCDOLockState(); + monitor.worked(); + } + + // Unlocks on changed objects + if (TRACER.isEnabled()) + { + TRACER.format("Reading {0} IDs to unlock", idsToUnlock.length); //$NON-NLS-1$ + } + + for (int i = 0; i < idsToUnlock.length; i++) + { + idsToUnlock[i] = in.readCDOID(); + monitor.worked(); + } + // New package units if (TRACER.isEnabled()) { @@ -161,18 +186,6 @@ public class CommitTransactionIndication extends CDOServerIndicationWithMonitori EMFUtil.safeResolveAll(resourceSet); } - // Locks on new objects - if (TRACER.isEnabled()) - { - TRACER.format("Reading {0} locks on new objects", locksOnNewObjects.length); //$NON-NLS-1$ - } - - for (int i = 0; i < locksOnNewObjects.length; i++) - { - locksOnNewObjects[i] = in.readCDOLockState(); - monitor.worked(); - } - // New objects if (TRACER.isEnabled()) { @@ -274,7 +287,6 @@ public class CommitTransactionIndication extends CDOServerIndicationWithMonitori commitContext.setCommitNumber(commitNumber); commitContext.setLastUpdateTime(lastUpdateTime); - commitContext.setAutoReleaseLocksEnabled(autoReleaseLocksEnabled); commitContext.setClearResourcePathCache(clearResourcePathCache); commitContext.setUsingEcore(usingEcore); commitContext.setUsingEtypes(usingEtypes); @@ -287,6 +299,8 @@ public class CommitTransactionIndication extends CDOServerIndicationWithMonitori commitContext.setDetachedObjectVersions(detachedObjectVersions); commitContext.setCommitComment(commitComment); commitContext.setLobs(getIndicationStream()); + commitContext.setLocksOnNewObjects(locksOnNewObjects); + commitContext.setIDsToUnlock(idsToUnlock); } finally { |