[
https://issues.apache.org/jira/browse/JCR-3289?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Unico Hommes updated JCR-3289:
------------------------------
Attachment: (was: ConcurrentAddMoveRemoveTest.patch)
> Remove operation right after move operation causes missing child inconsistency
> ------------------------------------------------------------------------------
>
> Key: JCR-3289
> URL: https://issues.apache.org/jira/browse/JCR-3289
> Project: Jackrabbit Content Repository
> Issue Type: Bug
> Affects Versions: 2.2.11, 2.4
> Reporter: Unico Hommes
> Priority: Critical
> Fix For: 2.2.12, 2.4.2
>
> Attachments: ItemSaveOperation.patch, MoveRemoveTest.patch
>
>
> The scenario is as follows:
> 1. Session s1 does a move operation on node /folder1/node to destination
> /folder2/node
> 2. Session s2 does a remove operation on node /folder1/node
> 3. Session s1 is saved
> 4. Session s2 is saved
> A consistency check shows that /folder2 has a child node entry for inexistent
> child node node.
> The problem is that step 4. should fail whereas it doesn't.
> This is caused by the fact that the ItemSaveOperation.removeTransientItems
> puts the overlayed state of the transient state in the changelog instead of
> the transient state itself. But the overlayed state has the updated modcount
> of the previous move operation. Therefore when the shared item state manager
> persists the changelog it doesn't detect that the remove was done on a stale
> item and so the update can succeed.
> Attached is a patch containing a testcase that reproduces the inconsistency
> with this scenario.
> Another patch is for the ItemSaveOperation class which fixes the issue.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira