Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2016-07-30 12:19:15 +0000
committerEike Stepper2016-07-30 13:17:13 +0000
commit0dd7b28ec37f964088f3d9be8383f15c4a665e78 (patch)
tree7cf7392277825440a53ca835ba593662729e70e0 /plugins/org.eclipse.emf.cdo.net4j
parent915fe3f55eb53acb190536a314e885d2a05d9720 (diff)
downloadcdo-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.MF12
-rw-r--r--plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitTransactionRequest.java59
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());

Back to the top