diff options
author | Eike Stepper | 2012-07-10 06:44:39 +0000 |
---|---|---|
committer | Eike Stepper | 2012-07-10 06:44:39 +0000 |
commit | f0ba5f19b6842e4dbf21b3f5fa1cc75ab7aee0ea (patch) | |
tree | 66d0f1eba1c7ceb5b06d0427f24170af56344a0f | |
parent | 9faff3b08057af0ac5d2a01d309d46e0fbcf4932 (diff) | |
download | cdo-f0ba5f19b6842e4dbf21b3f5fa1cc75ab7aee0ea.tar.gz cdo-f0ba5f19b6842e4dbf21b3f5fa1cc75ab7aee0ea.tar.xz cdo-f0ba5f19b6842e4dbf21b3f5fa1cc75ab7aee0ea.zip |
[383602] Branch with base after the last finished commit can be created
https://bugs.eclipse.org/bugs/show_bug.cgi?id=383602
2 files changed, 15 insertions, 5 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java index aec0598956..7c51efcc4b 100644 --- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java +++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java @@ -368,11 +368,11 @@ public class Repository extends Container<Object> implements InternalRepository throw new IllegalStateException("Branching is not supported by " + this); } - long lastFinishedTimeStamp = timeStampAuthority.getLastFinishedTimeStamp(); + long timeStamp = getTimeStamp(); long baseTimeStamp = branchInfo.getBaseTimeStamp(); - if (baseTimeStamp == CDOBranchPoint.UNSPECIFIED_DATE || baseTimeStamp > lastFinishedTimeStamp) + if (baseTimeStamp == CDOBranchPoint.UNSPECIFIED_DATE || baseTimeStamp > timeStamp) { - baseTimeStamp = lastFinishedTimeStamp; + baseTimeStamp = timeStamp; branchInfo = new BranchInfo(branchInfo.getName(), branchInfo.getBaseBranchID(), baseTimeStamp); } diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionManagerTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionManagerTest.java index eb8d6a691e..055b0f755f 100644 --- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionManagerTest.java +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/RevisionManagerTest.java @@ -194,7 +194,7 @@ public class RevisionManagerTest extends AbstractCDOTest private InternalCDORevision[] createBranch(CDOBranch baseBranch, long baseTimeStamp, long offset, long... durations) { - CDOBranch branch = baseBranch.createBranch("branch" + ++branchID, baseTimeStamp); + CDOBranch branch = doCreateBranch(baseBranch, baseTimeStamp); return fillBranch(branch, offset, durations); } @@ -209,6 +209,16 @@ public class RevisionManagerTest extends AbstractCDOTest { CDOBranch baseBranch = revision.getBranch(); long baseTimeStamp = getMiddleOfValidity(revision); + return doCreateBranch(baseBranch, baseTimeStamp); + } + + private CDOBranch doCreateBranch(CDOBranch baseBranch, long baseTimeStamp) + { + while (repository.getTimeStamp() < baseTimeStamp) + { + sleep(1); + } + return baseBranch.createBranch("branch" + ++branchID, baseTimeStamp); } @@ -218,7 +228,7 @@ public class RevisionManagerTest extends AbstractCDOTest long revised = revision.getRevised(); if (revised == CDOBranchPoint.UNSPECIFIED_DATE) { - revised = timeStamp + 10000; + revised = timeStamp + 100; } return timeStamp / 2 + revised / 2; |