Details
-
Improvement
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
JDO 3.1
-
None
Description
In the Spec I could not find any statement regarding on how a transaction should behave if an object is deleted in a different concurrent transaction.
Related Sections are Section 5.8 (how different methods should behave for different object states) and Section 12.6.1 (the behavior of refresh() and related methods).
For example I wonder about the following situations. Suppose I have two optimistic sessions, pm1 and pm2, both access the same object. pm1 deletes the object and commits. Then what happens in pm2 if:
1. pm2 deletes the object and tries to commit, should that work? It's
wouldn't be a real conflict if both delete it.
2. pm2 modifies the object (make dirty) and calls refresh(). Should I
get an ObjectNotFound exception?
3. pm2 deletes the object and calls refresh(). According to the spec,
refresh() should not change the object's state. But should it
still fail with ObjectNotFound? If refresh should fail, how can I
ever recover from such a situation, because I can't undelete the
object?
Is there a common understanding how this should work?
IF there an external definition JDO relies on, then I think a reference to an external document might useful.
If not, should the Spec define concurrent behavior?
Attachments
Attachments
Issue Links
- is related to
-
JDO-767 JDO TCK lifecycle tests fail
- Closed