[jira] [Commented] (OAK-1553) More sophisticated conflict resolution when concurrently adding nodes
[ https://issues.apache.org/jira/browse/OAK-1553?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16813510#comment-16813510 ] Michael Dürig commented on OAK-1553: Unassigning myself as there is no plan to resolve this anytime soon. > More sophisticated conflict resolution when concurrently adding nodes > - > > Key: OAK-1553 > URL: https://issues.apache.org/jira/browse/OAK-1553 > Project: Jackrabbit Oak > Issue Type: Improvement > Components: core, documentmk, segment-tar >Reporter: Michael Dürig >Priority: Major > Labels: concurrency, scalability, technical_debt > Attachments: OAK-1553.patch > > > {{MicroKernel.rebase}} currently specifies: "addExistingNode: A node has been > added that is different from a node of them same name that has been added to > the trunk." > This is somewhat troublesome in the case where the same node with different > but non conflicting child items is added concurrently: > {code} > f.add("fo").add("u1"); commit(); > f.add("fo").add("u2"); commit(); > {code} > currently fails with a conflict because {{fo}} is not the same node for the > both cases. See discussion http://markmail.org/message/flst4eiqvbp4gi3z -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (OAK-1553) More sophisticated conflict resolution when concurrently adding nodes
[ https://issues.apache.org/jira/browse/OAK-1553?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13944558#comment-13944558 ] Michael Dürig commented on OAK-1553: At http://svn.apache.org/r1580588 I committed the relaxed contract for the addExistingNode conflict of {{MicroKernel.rebase}}, which allows for more sophisticated merging behaviour. > More sophisticated conflict resolution when concurrently adding nodes > - > > Key: OAK-1553 > URL: https://issues.apache.org/jira/browse/OAK-1553 > Project: Jackrabbit Oak > Issue Type: Improvement > Components: core, mk, mongomk, segmentmk >Reporter: Michael Dürig >Assignee: Michael Dürig > Fix For: 0.20 > > Attachments: OAK-1553.patch > > > {{MicroKernel.rebase}} currently specifies: "addExistingNode: A node has been > added that is different from a node of them same name that has been added to > the trunk." > This is somewhat troublesome in the case where the same node with different > but non conflicting child items is added concurrently: > {code} > f.add("fo").add("u1"); commit(); > f.add("fo").add("u2"); commit(); > {code} > currently fails with a conflict because {{fo}} is not the same node for the > both cases. See discussion http://markmail.org/message/flst4eiqvbp4gi3z -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Commented] (OAK-1553) More sophisticated conflict resolution when concurrently adding nodes
[ https://issues.apache.org/jira/browse/OAK-1553?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13941700#comment-13941700 ] Jukka Zitting commented on OAK-1553: Sounds good to me. I'll give a look at the SegmentMK implementation. > More sophisticated conflict resolution when concurrently adding nodes > - > > Key: OAK-1553 > URL: https://issues.apache.org/jira/browse/OAK-1553 > Project: Jackrabbit Oak > Issue Type: Improvement > Components: core, mk, mongomk, segmentmk >Reporter: Michael Dürig >Assignee: Michael Dürig > Fix For: 0.20 > > Attachments: OAK-1553.patch > > > {{MicroKernel.rebase}} currently specifies: "addExistingNode: A node has been > added that is different from a node of them same name that has been added to > the trunk." > This is somewhat troublesome in the case where the same node with different > but non conflicting child items is added concurrently: > {code} > f.add("fo").add("u1"); commit(); > f.add("fo").add("u2"); commit(); > {code} > currently fails with a conflict because {{fo}} is not the same node for the > both cases. See discussion http://markmail.org/message/flst4eiqvbp4gi3z -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Commented] (OAK-1553) More sophisticated conflict resolution when concurrently adding nodes
[ https://issues.apache.org/jira/browse/OAK-1553?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13941059#comment-13941059 ] Michael Dürig commented on OAK-1553: Maybe a better approach is not to specify the exact merging behaviour in the contract but leave the details to the implementations: {noformat} addExistingNode: A node has been added that can't be merged with a node of them same name that has been added to the trunk. How and whether merging takes place is up to the implementation. Merging must not cause data to be lost however. {noformat} At least document and segment nodes stores and {{AbstractRebaseDiff}} should still implement the algorithm sketch in my previous comment. > More sophisticated conflict resolution when concurrently adding nodes > - > > Key: OAK-1553 > URL: https://issues.apache.org/jira/browse/OAK-1553 > Project: Jackrabbit Oak > Issue Type: Improvement > Components: core, mk, mongomk, segmentmk >Reporter: Michael Dürig >Assignee: Michael Dürig > Fix For: 0.20 > > > {{MicroKernel.rebase}} currently specifies: "addExistingNode: A node has been > added that is different from a node of them same name that has been added to > the trunk." > This is somewhat troublesome in the case where the same node with different > but non conflicting child items is added concurrently: > {code} > f.add("fo").add("u1"); commit(); > f.add("fo").add("u2"); commit(); > {code} > currently fails with a conflict because {{fo}} is not the same node for the > both cases. See discussion http://markmail.org/message/flst4eiqvbp4gi3z -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Commented] (OAK-1553) More sophisticated conflict resolution when concurrently adding nodes
[ https://issues.apache.org/jira/browse/OAK-1553?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13940731#comment-13940731 ] Michael Dürig commented on OAK-1553: To overcome above problem I suggest to refine the definition for the {{addExistingNode}} conflict as follows: {code} addExistingNode: A node has been added that can't be merged with a node of them same name that has been added to the trunk. Two nodes can't be merged if they contain properties of the same name whose values differ or if they contain child nodes of the same name that can't be merged. The result of merging two nodes M and N that can be merged contains * the union of all properties from M and N, * all nodes from M whose name is not in N, * all nodes from N whose name is not in M, * the results from merging the child nodes whose names are both in M and N. {code} > More sophisticated conflict resolution when concurrently adding nodes > - > > Key: OAK-1553 > URL: https://issues.apache.org/jira/browse/OAK-1553 > Project: Jackrabbit Oak > Issue Type: Improvement > Components: core, mk, mongomk, segmentmk >Reporter: Michael Dürig >Assignee: Michael Dürig > Fix For: 0.20 > > > {{MicroKernel.rebase}} currently specifies: "addExistingNode: A node has been > added that is different from a node of them same name that has been added to > the trunk." > This is somewhat troublesome in the case where the same node with different > but non conflicting child items is added concurrently: > {code} > f.add("fo").add("u1"); commit(); > f.add("fo").add("u2"); commit(); > {code} > currently fails with a conflict because {{fo}} is not the same node for the > both cases. See discussion http://markmail.org/message/flst4eiqvbp4gi3z -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Commented] (OAK-1553) More sophisticated conflict resolution when concurrently adding nodes
[ https://issues.apache.org/jira/browse/OAK-1553?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13938283#comment-13938283 ] Michael Dürig commented on OAK-1553: Note: in addition to the {{MicorKernel}} implementations this will also need fixing in {{AbstractRebaseDiff}}, which is an in-memory implementation of the same contract. > More sophisticated conflict resolution when concurrently adding nodes > - > > Key: OAK-1553 > URL: https://issues.apache.org/jira/browse/OAK-1553 > Project: Jackrabbit Oak > Issue Type: Improvement > Components: core, mk, mongomk, segmentmk >Reporter: Michael Dürig > Fix For: 1.1 > > > {{MicroKernel.rebase}} currently specifies: "addExistingNode: A node has been > added that is different from a node of them same name that has been added to > the trunk." > This is somewhat troublesome in the case where the same node with different > but non conflicting child items is added concurrently: > {code} > f.add("fo").add(u1); commit(); > f.add("fo").add(u2); commit(); > {code} > currently fails with a conflict because {{fo}} is not the same node for the > both cases. See discussion http://markmail.org/message/flst4eiqvbp4gi3z -- This message was sent by Atlassian JIRA (v6.2#6252)