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/ 


Reply via email to