[jira] [Commented] (OAK-1553) More sophisticated conflict resolution when concurrently adding nodes

2019-04-09 Thread JIRA


[ 
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

2014-03-23 Thread JIRA

[ 
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

2014-03-20 Thread Jukka Zitting (JIRA)

[ 
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

2014-03-19 Thread JIRA

[ 
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

2014-03-19 Thread JIRA

[ 
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

2014-03-17 Thread JIRA

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