[
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.