Return-Path: Delivered-To: apmail-jackrabbit-dev-archive@www.apache.org Received: (qmail 22785 invoked from network); 8 Jun 2009 14:18:11 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 8 Jun 2009 14:18:11 -0000 Received: (qmail 35673 invoked by uid 500); 8 Jun 2009 14:18:22 -0000 Delivered-To: apmail-jackrabbit-dev-archive@jackrabbit.apache.org Received: (qmail 35629 invoked by uid 500); 8 Jun 2009 14:18:22 -0000 Mailing-List: contact dev-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list dev@jackrabbit.apache.org Received: (qmail 35621 invoked by uid 99); 8 Jun 2009 14:18:22 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 08 Jun 2009 14:18:22 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of martijnh@gx.nl designates 193.173.25.11 as permitted sender) Received: from [193.173.25.11] (HELO boba.gx.nl) (193.173.25.11) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 08 Jun 2009 14:18:11 +0000 Received: from darth-malak.gx.local (vpn-dmz.gx.nl [192.168.16.2]) by boba.gx.nl (8.13.1/8.13.1) with ESMTP id n58EHpr7032165 for ; Mon, 8 Jun 2009 16:17:51 +0200 Received: from darth-malak.gx.local ([172.16.3.3]) by darth-malak.gx.local ([172.16.3.3]) with mapi; Mon, 8 Jun 2009 16:17:51 +0200 From: Martijn Hendriks To: "dev@jackrabbit.apache.org" Date: Mon, 8 Jun 2009 16:17:48 +0200 Subject: Inconsistencies in the repository Thread-Topic: Inconsistencies in the repository Thread-Index: AcnoQ+aBLAUlu9UFTOOfWiqzJtgNPg== Message-ID: <7A5837CEF4D4834E97721F3BCC46D7F71BC7753A58@darth-malak.gx.local> Accept-Language: nl-NL, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: nl-NL, en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Virus-Checked: Checked by ClamAV on apache.org 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 imp= ossible to remove B due to referential integrity. I created https://issues.apache.org/jira/browse/JCR-2129 and have the feeli= ng that the NodeStateMerger should handle these cases, but I am not sure. I= f 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 app= reciated! Thanks! Best regards, Martijn -- Martijn Hendriks creative online development B.V. =20 t: 024 - 3888 261 f: 024 - 3888 621 e: martijnh@gx.nl =20 Wijchenseweg 111 6538 SW Nijmegen http://www.gx.nl/=20