Hi all, We have quite some trouble with inconsistencies in our repositories. After some digging I found two scenario's that might result in inconsistent data:
The starting situation is that there are four nodes: /, /A, /A/B and /C (i) Corrupt parent-child relation Thread 1 uses session1 to add node D to node A. Thread 2 uses session2 to move /A/B to /A/C. After saving you might get the situation in which A still refers to B as a child, but that B is moved to C. (ii) "Ghost" reference Thread 1 uses session1 to add a reference property "ref to B" to C. Thread 2 uses session2 to add a reference property "ref to B" to C. After saving you might get the situation in which two references to B exist. After deletion of C there still is a "ghost" reference which makes it impossible to remove B due to referential integrity. I created https://issues.apache.org/jira/browse/JCR-2129 and have the feeling that the NodeStateMerger should handle these cases, but I am not sure. If the NodeStateMerger should fix this, then I am afraid that the ItemState and subclasses need to be changed as well in order to provide more detailed information on changes. I really want to fix this issue, but I am not sure whether this is the right way. Any help, feedback or pointers are much appreciated! Thanks! Best regards, Martijn -- Martijn Hendriks <GX> creative online development B.V. t: 024 - 3888 261 f: 024 - 3888 621 e: marti...@gx.nl Wijchenseweg 111 6538 SW Nijmegen http://www.gx.nl/