diff options
author | Eike Stepper | 2016-07-30 12:19:15 +0000 |
---|---|---|
committer | Eike Stepper | 2016-07-30 13:17:13 +0000 |
commit | 0dd7b28ec37f964088f3d9be8383f15c4a665e78 (patch) | |
tree | 7cf7392277825440a53ca835ba593662729e70e0 /plugins/org.eclipse.emf.cdo.net4j | |
parent | 915fe3f55eb53acb190536a314e885d2a05d9720 (diff) | |
download | cdo-0dd7b28ec37f964088f3d9be8383f15c4a665e78.tar.gz cdo-0dd7b28ec37f964088f3d9be8383f15c4a665e78.tar.xz cdo-0dd7b28ec37f964088f3d9be8383f15c4a665e78.zip |
[387563] Generalize the "lock of new objects on commit" feature to the "lock/unlock objects on commit"
https://bugs.eclipse.org/bugs/show_bug.cgi?id=387563
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.net4j')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.net4j/META-INF/MANIFEST.MF | 12 | ||||
-rw-r--r-- | plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java | 59 |
2 files changed, 41 insertions, 30 deletions
diff --git a/plugins/org.eclipse.emf.cdo.net4j/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.net4j/META-INF/MANIFEST.MF index 32eca96ebf..6d13a12a79 100644 --- a/plugins/org.eclipse.emf.cdo.net4j/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo.net4j/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.emf.cdo.net4j; singleton:=true -Bundle-Version: 4.1.400.qualifier +Bundle-Version: 4.1.500.qualifier Bundle-ClassPath: . Bundle-Vendor: %providerName Bundle-Localization: plugin @@ -10,17 +10,17 @@ Bundle-Activator: org.eclipse.emf.cdo.internal.net4j.bundle.OM$Activator Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle: org.eclipse.emf.cdo;bundle-version="[4.0.0,5.0.0)";visibility:=reexport, org.eclipse.net4j;bundle-version="[4.0.0,5.0.0)";visibility:=reexport -Export-Package: org.eclipse.emf.cdo.internal.net4j;version="4.1.400"; +Export-Package: org.eclipse.emf.cdo.internal.net4j;version="4.1.500"; x-friends:="org.eclipse.emf.cdo.tests, org.eclipse.emf.cdo.defs, org.eclipse.emf.cdo.ui, org.eclipse.emf.cdo.examples", - org.eclipse.emf.cdo.internal.net4j.bundle;version="4.1.400";x-friends:="org.eclipse.emf.cdo.tests", - org.eclipse.emf.cdo.internal.net4j.messages;version="4.1.400";x-internal:=true, - org.eclipse.emf.cdo.internal.net4j.protocol;version="4.1.400"; + org.eclipse.emf.cdo.internal.net4j.bundle;version="4.1.500";x-friends:="org.eclipse.emf.cdo.tests", + org.eclipse.emf.cdo.internal.net4j.messages;version="4.1.500";x-internal:=true, + org.eclipse.emf.cdo.internal.net4j.protocol;version="4.1.500"; x-friends:="org.eclipse.emf.cdo.tests, org.eclipse.emf.cdo.defs, org.eclipse.emf.cdo.ui, org.eclipse.emf.cdo.examples", - org.eclipse.emf.cdo.net4j;version="4.1.400" + org.eclipse.emf.cdo.net4j;version="4.1.500" Bundle-ActivationPolicy: lazy diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java index acf0b462c9..3f84e0d70f 100644 --- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java +++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java @@ -69,26 +69,24 @@ public class CommitTransactionRequest extends CDOClientRequestWithMonitoring<Com private static long sleepMillisForTesting = 0L; - private CDOIDProvider idProvider; // CDOTransaction + private final int commitNumber; - private int commitNumber; + private final String commitComment; - private String commitComment; + private final CDOCommitData commitData; - private boolean releaseLocks; + private final Collection<CDOLob<?>> lobs; - private CDOCommitData commitData; + private final Collection<CDOLockState> locksOnNewObjects; - private Collection<CDOLob<?>> lobs; + private final Collection<CDOID> idsToUnlock; - private Collection<CDOLockState> locksOnNewObjects; - - private int viewID; + private final int viewID; /** * Is <code>null</code> in {@link CommitDelegationRequest}. */ - private InternalCDOTransaction transaction; + private final InternalCDOTransaction transaction; private boolean clearResourcePathCache; @@ -100,20 +98,23 @@ public class CommitTransactionRequest extends CDOClientRequestWithMonitoring<Com public CommitTransactionRequest(CDOClientProtocol protocol, short signalID, InternalCDOCommitContext context) { super(protocol, signalID); - transaction = context.getTransaction(); + CommitToken commitToken = transaction.getCommitToken(); if (commitToken != null) { commitNumber = commitToken.getCommitNumber(); } + else + { + commitNumber = 0; + } commitComment = context.getCommitComment(); - releaseLocks = context.isAutoReleaseLocks(); - idProvider = context.getTransaction(); commitData = context.getCommitData(); lobs = context.getLobs(); locksOnNewObjects = context.getLocksOnNewObjects(); + idsToUnlock = context.getIDsToUnlock(); viewID = context.getViewID(); } @@ -127,7 +128,7 @@ public class CommitTransactionRequest extends CDOClientRequestWithMonitoring<Com @Override protected CDOIDProvider getIDProvider() { - return idProvider; + return transaction; } @Override @@ -150,33 +151,43 @@ public class CommitTransactionRequest extends CDOClientRequestWithMonitoring<Com List<CDOIDAndVersion> detachedObjects = commitData.getDetachedObjects(); out.writeLong(getLastUpdateTime()); - out.writeBoolean(releaseLocks); out.writeInt(commitNumber); out.writeString(commitComment); - out.writeInt(newPackageUnits.size()); out.writeInt(locksOnNewObjects.size()); + out.writeInt(idsToUnlock.size()); + out.writeInt(newPackageUnits.size()); out.writeInt(newObjects.size()); out.writeInt(changedObjects.size()); out.writeInt(detachedObjects.size()); if (TRACER.isEnabled()) { - TRACER.format("Writing {0} new package units", newPackageUnits.size()); //$NON-NLS-1$ + TRACER.format("Writing {0} locks on new objects", locksOnNewObjects.size()); //$NON-NLS-1$ } - for (CDOPackageUnit newPackageUnit : newPackageUnits) + for (CDOLockState lockState : locksOnNewObjects) { - out.writeCDOPackageUnit(newPackageUnit, true); + out.writeCDOLockState(lockState); } if (TRACER.isEnabled()) { - TRACER.format("Writing {0} locks on new objects", locksOnNewObjects.size()); //$NON-NLS-1$ + TRACER.format("Writing {0} unlocks on changed objects", idsToUnlock.size()); //$NON-NLS-1$ } - for (CDOLockState lockState : locksOnNewObjects) + for (CDOID id : idsToUnlock) { - out.writeCDOLockState(lockState); + out.writeCDOID(id); + } + + if (TRACER.isEnabled()) + { + TRACER.format("Writing {0} new package units", newPackageUnits.size()); //$NON-NLS-1$ + } + + for (CDOPackageUnit newPackageUnit : newPackageUnits) + { + out.writeCDOPackageUnit(newPackageUnit, true); } if (TRACER.isEnabled()) @@ -319,7 +330,7 @@ public class CommitTransactionRequest extends CDOClientRequestWithMonitoring<Com } CommitTransactionResult result = new CommitTransactionResult(); - result.setIDProvider(idProvider); + result.setIDProvider(transaction); result.setClearResourcePathCache(clearResourcePathCache); result.setRollbackReason(in.readByte()); result.setRollbackMessage(in.readString()); @@ -345,7 +356,7 @@ public class CommitTransactionRequest extends CDOClientRequestWithMonitoring<Com protected CommitTransactionResult confirmingResult(CDODataInput in) throws IOException { CommitTransactionResult result = new CommitTransactionResult(); - result.setIDProvider(idProvider); + result.setIDProvider(transaction); result.setClearResourcePathCache(clearResourcePathCache); result.setBranchPoint(in.readCDOBranchPoint()); result.setPreviousTimeStamp(in.readLong()); |