[
https://issues.apache.org/jira/browse/JCR-2598?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stephan Huttenhuis updated JCR-2598:
------------------------------------
Status: Patch Available (was: Open)
- Because it is difficult determine all the causes (multiple ItemStateManagers
and locking) I propose to do a final consistency check on the ChangeLog in the
SharedItemStateManager and to throw an exception if an inconsistency is
detected.
- A race condition is exists when moving and deleting nodes with the same name.
The index passed to removeChildNode(Name nodeName, int index) may not be valid
anymore because another session deleted or moved another child node. Instead of
using name + index use id to make sure that the correct node is removed.
See proposed patch (based on the trunk). After the patch the repository is
consistent and only a few messages are shown (see Output after patch.txt)
> Saving concurrent sessions executing random operations causes a corrupt JCR
> ---------------------------------------------------------------------------
>
> Key: JCR-2598
> URL: https://issues.apache.org/jira/browse/JCR-2598
> Project: Jackrabbit Content Repository
> Issue Type: Bug
> Components: jackrabbit-core
> Affects Versions: 2.0.0, 1.6.1
> Reporter: Stephan Huttenhuis
> Attachments: org.apache.jackrabbit.core.ConcurrencyTest3.txt, Output
> after patch.txt, Output before patch.txt
>
>
> Run the attached unit test. Several concurrent sessions add, move, and remove
> nodes. Then the index is removed and the repository is again started. The
> repository is in an inconsistent state and the index cannot be rebuild. Also
> a lot of exceptions occur. See (see Output before patch.txt). Note that the
> unit test also suffers from the deadlock of issue
> http://issues.apache.org/jira/browse/JCR-2525 about half the time.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.