[
https://issues.apache.org/jira/browse/OAK-2929?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14736455#comment-14736455
]
Marcel Reutegger commented on OAK-2929:
---------------------------------------
I have a potential fix, but then the test {{mergeInternalDocAcrossCluster()}}
fails. AFAICS this is expected and the test should be changes. The test
simulates a two node cluster and does the following:
- on store1 add /:dynHidden and /:dynHidden/c node, merge but do not run
background ops
- on store2 add /:dynHidden and merge. this succeeds because the test enables
OAK-2673
- on store2 add /:dynHidden/b and try to merge.
The last step fails with my fix, whereas it succeeds currently. I think the
merge should fail already now because adding the 'b' child node causes a
modification on /:dynHidden, which conflicts with the not yet visible add node
operation for /:dynHidden of store1. OAK-2673 only allows some combinations of
operations to proceed concurrently.
> Parent of unseen children must not be removable
> -----------------------------------------------
>
> Key: OAK-2929
> URL: https://issues.apache.org/jira/browse/OAK-2929
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: core, mongomk
> Affects Versions: 1.0.13, 1.2
> Reporter: Vikas Saurabh
> Assignee: Marcel Reutegger
> Priority: Minor
> Labels: concurrency, technical_debt
> Fix For: 1.3.6
>
> Attachments: IgnoredTestCase.patch
>
>
> With OAK-2673, it's now possible to have hidden intermediate nodes created
> concurrently.
> So, a scenario like:
> {noformat}
> start -> /:hidden
> N1 creates /:hiddent/parent/node1
> N2 creates /:hidden/parent/node2
> {noformat}
> is allowed.
> But, if N2's creation of {{parent}} got persisted later than that on N1, then
> N2 is currently able to delete {{parent}} even though there's {{node1}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)