| Summary: | Missing Revsion Version Increment | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Modeling] EMF | Reporter: | Michael Szediwy <michael> | ||||
| Component: | cdo.core | Assignee: | Eike Stepper <stepper> | ||||
| Status: | CLOSED FIXED | QA Contact: | Eike Stepper <stepper> | ||||
| Severity: | major | ||||||
| Priority: | P3 | CC: | saulius.tvarijonas | ||||
| Version: | 3.0 | ||||||
| Target Milestone: | --- | ||||||
| Hardware: | PC | ||||||
| OS: | Windows 7 | ||||||
| Whiteboard: | |||||||
| Attachments: |
|
||||||
I'll have to write tests first. I suspect that the created timestamp might also be wrong in these cases... Added tests: org.eclipse.emf.cdo.tests.ChangeSubscriptionTest.testInvalidationWithDeltas_SameBranch() org.eclipse.emf.cdo.tests.ChangeSubscriptionTest.testInvalidationWithDeltas_SubBranch() Problem fixed, all tests pass. Committed to HEAD. Created attachment 170922 [details]
Patch v1 - for future reference
Available in 3.0 GA: http://download.eclipse.org/modeling/emf/cdo/updates/3.0-releases/ |
Build Identifier: 3.0 It seems that recently an optimization has been introduced to directly create new revisions on an InvalidateTransition if the delta is available. It looks like the version increment is missing. As a test I tried to increment the version by 1 within the InvalidateTransition: CDORevisionDelta delta = (CDORevisionDelta)key; InternalCDORevision newRevision = oldRevision.copy(); >>>> newRevision.setVersion(oldRevision.getVersion() + 1); delta.apply(newRevision); As I am the only one comitting to my repository all the "Modifying old revision" exceptions are gone. Maybe it would be a good solution to undo the recently introduced optimization... Reproducible: Always