[ https://issues.apache.org/jira/browse/JCR-756?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dominique Pfister resolved JCR-756. ----------------------------------- Resolution: Fixed Problem identified to be the following during an update: 1) When a journal update is started, the clustered instance syncs with journal contents. This might change the SharedItemStateManager's states 2) Later on, eventual, non-conflicting changes are merged to the local states. 3) Finally, the journal update is prepared. This might again trigger an external update from the journal and change the shared states . However, these changes are not merged to the local states. 4) The local states are pushed "blindly" to the shared states, potentially overwriting a previous change. Fixed by locking the journal in 1) instead of 3). This still allows non-conflicting merge, but only once. An even better, less blocking approach would iteratively merge the changes seen in external updates to the local states. Thanks a lot to Rafał Kwiecień for reporting this bug and providing the test classes. Fixed in revision 509624. > Concurrent add/remove child node operations in a cluster may corrupt > repository. > -------------------------------------------------------------------------------- > > Key: JCR-756 > URL: https://issues.apache.org/jira/browse/JCR-756 > Project: Jackrabbit > Issue Type: Bug > Components: core > Affects Versions: 1.2.1 > Reporter: Dominique Pfister > Assigned To: Dominique Pfister > Attachments: Create.java, Remove.java, repository.xml > > > Concurrent add/remove child node operations in a cluster may store an > inconsistent list of child node entries, i.e. an entry in the list may appear > that has no associated node. This eventually results in an > ItemNotFoundException, the next time one of these bogus entries is accessed. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.