Community
Participate
Working Groups
Interactive transaction conflict resolution work incorrectly with savepoints. When transaction has more then one savepoint, only the last savepoint revision deltas gets updated, which causes "org.eclipse.emf.cdo.util.CommitConflictException: Attempt by Transaction[...] to modify historical revision" exception on commit.
Interactive transaction conflict resolution is still not fully and correctly implemented. I didn't get it done before the final Mars build so it's best to wait a little longer. And I do not plan to support interactive transaction conflict resolution in combination with savepoints. That's just too complex to handle.
Eike, would you review/accept patches adressing this issue, or is it 'conceptually' broken, and a limitation of savepoints from a design point of view?
Yes, I would say it's conceptually problematic. In a way savepoints capture state of the past and it's unclear how that should change if new remote changes come in. For example how should savepointX.rollback() behave after such internal "mangling"?
Eike, what exactly do you mean by 'mangling'? Changing object revision delta's version in CDOCompareEditorUtil.handleMerge(..)? You probably (and by probably I mean definitely!) have a deeper inderstandement of problem then me, but here is some thoughts... First, how we fixed (worked around) our issue: we changed it to update the version of all revision deltas (including previous savepoints), that's far away from ideal fix, but it made commit possible. I can propose the following logic of the fix, instad of updateing revision delata versions manually, basically from UI code, it could be moved to CDOSavepoint, where it can be stored as a map (Delta -> Version). As getAllRevisionDeltas() already performs a copy of a revision deltas, it can also update the versions on revision deltas (and CDOObjects?) to commit. Since the information about that change is also stored, it could, in theory, be rolled back.
Moving all open bugzillas to 4.5.
Moving all unaddressed bugzillas to 4.6.
Moving all open bugs to 4.7
Moving all unresolved issues to version 4.8-
Moving all unresolved issues to version 4.9
Moving to 4.13.