diff options
Diffstat (limited to 'plugins')
3 files changed, 20 insertions, 2 deletions
diff --git a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitDelegationRequest.java b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitDelegationRequest.java index bce93c639a..9539d9c522 100644 --- a/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitDelegationRequest.java +++ b/plugins/org.eclipse.emf.cdo.net4j/src/org/eclipse/emf/cdo/internal/net4j/protocol/CommitDelegationRequest.java @@ -11,6 +11,7 @@ package org.eclipse.emf.cdo.internal.net4j.protocol; import org.eclipse.emf.cdo.common.branch.CDOBranch; +import org.eclipse.emf.cdo.common.branch.CDOBranchPoint; import org.eclipse.emf.cdo.common.id.CDOID; import org.eclipse.emf.cdo.common.id.CDOIDProvider; import org.eclipse.emf.cdo.common.protocol.CDODataOutput; @@ -47,7 +48,13 @@ public class CommitDelegationRequest extends CommitTransactionRequest } @Override - public CDOBranch getBranch() + protected long getLastUpdateTime() + { + return CDOBranchPoint.UNSPECIFIED_DATE; + } + + @Override + protected CDOBranch getBranch() { return branch; } 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 3d071272a6..6c8faade1d 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 @@ -140,7 +140,7 @@ public class CommitTransactionRequest extends CDOClientRequestWithMonitoring<Com List<CDORevisionKey> changedObjects = commitData.getChangedObjects(); List<CDOIDAndVersion> detachedObjects = commitData.getDetachedObjects(); - out.writeLong(transaction.getLastUpdateTime()); + out.writeLong(getLastUpdateTime()); out.writeBoolean(releaseLocks); out.writeString(comment); out.writeInt(newPackageUnits.size()); @@ -268,6 +268,11 @@ public class CommitTransactionRequest extends CDOClientRequestWithMonitoring<Com } } + protected long getLastUpdateTime() + { + return transaction.getLastUpdateTime(); + } + protected CDOBranch getBranch() { return transaction.getBranch(); 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 68c178eb31..3d5aace8cf 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 @@ -976,6 +976,12 @@ public class TransactionCommitContext implements InternalCommitContext return; } + if (lastUpdateTime == CDOBranchPoint.UNSPECIFIED_DATE) + { + // Happens during replication (see CommitDelegationRequest). Commits are checked in the master repo. + return; + } + if (lastTreeRestructuringCommit <= lastUpdateTime) { // If this client's original state includes the state of the last tree-restructuring commit there's no danger. |