Return-Path: Delivered-To: apmail-jackrabbit-dev-archive@www.apache.org Received: (qmail 68471 invoked from network); 23 Aug 2007 09:18:52 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 23 Aug 2007 09:18:52 -0000 Received: (qmail 83665 invoked by uid 500); 23 Aug 2007 09:18:48 -0000 Delivered-To: apmail-jackrabbit-dev-archive@jackrabbit.apache.org Received: (qmail 83619 invoked by uid 500); 23 Aug 2007 09:18:48 -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 83608 invoked by uid 99); 23 Aug 2007 09:18:48 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Aug 2007 02:18:48 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Aug 2007 09:18:50 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id B2B32714204 for ; Thu, 23 Aug 2007 02:18:30 -0700 (PDT) Message-ID: <20679320.1187860710722.JavaMail.jira@brutus> Date: Thu, 23 Aug 2007 02:18:30 -0700 (PDT) From: "Martijn Hendriks (JIRA)" To: dev@jackrabbit.apache.org Subject: [jira] Updated: (JCR-1078) ChangeLog serialization causes cache inconsistencies In-Reply-To: <9748400.1187856041246.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/JCR-1078?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Martijn Hendriks updated JCR-1078: ---------------------------------- Attachment: JCR-1078.patch Swapping the order of the serialization to: 1) serialize deletedStates 2) serialize modifiedStates 3) serialize addedStates in ClusterNode.write(Record record, ChangeLog changeLog, EventStateCollection esc) should work. Here's a patch for it. I tested it on the scenario from the description and it works there. > ChangeLog serialization causes cache inconsistencies > ---------------------------------------------------- > > Key: JCR-1078 > URL: https://issues.apache.org/jira/browse/JCR-1078 > Project: Jackrabbit > Issue Type: Bug > Components: clustering > Affects Versions: 1.3 > Environment: Clustered Jackrabbit 1.3 > Reporter: Martijn Hendriks > Assignee: Dominique Pfister > Attachments: JCR-1078.patch > > > The ordering of actions is taken into account when a ChangeLog is built through session manipulations (see, for instance, ChangeLog.deleted(ItemState state)). When it is serialized in ClusterNode.write(Record record, ChangeLog changeLog, EventStateCollection esc), however, this implicit ordering might be changed. As a consequence, the deserialization in ClusterNode.consume(Record record) might produce a different ChangeLog with the effect that the local caches get out-of-sync with the persistent state of the repository. > The issue should be reproducable as follows: > - Setup a clustered environment with two Jackrabbit instances, say A and B. > - On instance A add a property "P" with value "x" to some node and save the session. > - On instance B read property "P" -> it will have value "x". > - On instance A delete property P and then add it again with value "y" and save the session. > - On instance B read property "P" -> it will still have value "x" after the cluster sync... -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.