You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-dev@jackrabbit.apache.org by "Michael Dürig (Created JIRA)" <ji...@apache.org> on 2012/04/03 12:42:23 UTC

[jira] [Created] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Add support for branching and merging of private copies to MicroKernel
----------------------------------------------------------------------

                 Key: OAK-45
                 URL: https://issues.apache.org/jira/browse/OAK-45
             Project: Jackrabbit Oak
          Issue Type: New Feature
          Components: mk
            Reporter: Michael Dürig


As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:

{code}
String addLotsOfData(MicroKernel mk) { 
    String baseRevision = mk.getHeadRevision(); 
    String branchRevision = mk.branch(baseRevision); 
    for (int i = 0; i < 1000000; i++) { 
        branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
            branchRevision, null); 
    } 
    return mk.merge(branchRevision, baseRevision); } 
{code}

[1] http://markmail.org/message/jbbut6vzvmmjqonr

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

       

[jira] [Resolved] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Posted by "Stefan Guggisberg (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OAK-45?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stefan Guggisberg resolved OAK-45.
----------------------------------

       Resolution: Fixed
    Fix Version/s: 0.3

there's javadoc, a basic integration test in MicroKernelIT
and an implementation in oak-mk; resolving as fixed
                
> Add support for branching and merging of private copies to MicroKernel
> ----------------------------------------------------------------------
>
>                 Key: OAK-45
>                 URL: https://issues.apache.org/jira/browse/OAK-45
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: mk
>            Reporter: Michael Dürig
>            Assignee: Stefan Guggisberg
>             Fix For: 0.3
>
>         Attachments: OAK-45__OOME.patch
>
>
> As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:
> {code}
> String addLotsOfData(MicroKernel mk) { 
>     String baseRevision = mk.getHeadRevision(); 
>     String branchRevision = mk.branch(baseRevision); 
>     for (int i = 0; i < 1000000; i++) { 
>         branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
>             branchRevision, null); 
>     } 
>     return mk.merge(branchRevision, baseRevision); } 
> {code}
> [1] http://markmail.org/message/jbbut6vzvmmjqonr

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

       

[jira] [Commented] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Posted by "Stefan Guggisberg (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OAK-45?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13261780#comment-13261780 ] 

Stefan Guggisberg commented on OAK-45:
--------------------------------------

thanks, will investigate
                
> Add support for branching and merging of private copies to MicroKernel
> ----------------------------------------------------------------------
>
>                 Key: OAK-45
>                 URL: https://issues.apache.org/jira/browse/OAK-45
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: mk
>            Reporter: Michael Dürig
>         Attachments: OAK-45__OOME.patch
>
>
> As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:
> {code}
> String addLotsOfData(MicroKernel mk) { 
>     String baseRevision = mk.getHeadRevision(); 
>     String branchRevision = mk.branch(baseRevision); 
>     for (int i = 0; i < 1000000; i++) { 
>         branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
>             branchRevision, null); 
>     } 
>     return mk.merge(branchRevision, baseRevision); } 
> {code}
> [1] http://markmail.org/message/jbbut6vzvmmjqonr

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

       

[jira] [Commented] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Posted by "Thomas Mueller (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OAK-45?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13245248#comment-13245248 ] 

Thomas Mueller commented on OAK-45:
-----------------------------------

As also discussed on the list, I'm not sure if that would be a good idea, given it might turn out to be impossible to support efficiently, correctly, and easily on some MicroKernel implementations.
                
> Add support for branching and merging of private copies to MicroKernel
> ----------------------------------------------------------------------
>
>                 Key: OAK-45
>                 URL: https://issues.apache.org/jira/browse/OAK-45
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: mk
>            Reporter: Michael Dürig
>
> As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:
> {code}
> String addLotsOfData(MicroKernel mk) { 
>     String baseRevision = mk.getHeadRevision(); 
>     String branchRevision = mk.branch(baseRevision); 
>     for (int i = 0; i < 1000000; i++) { 
>         branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
>             branchRevision, null); 
>     } 
>     return mk.merge(branchRevision, baseRevision); } 
> {code}
> [1] http://markmail.org/message/jbbut6vzvmmjqonr

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

       

[jira] [Commented] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Posted by "Stefan Guggisberg (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OAK-45?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13262564#comment-13262564 ] 

Stefan Guggisberg commented on OAK-45:
--------------------------------------

the OOME is not specific to the branch/merge support; 
the tests are using the in-mem mk; to avoid the OOME
you can increase the JVM heap size or reduce the number
of commits.  
                
> Add support for branching and merging of private copies to MicroKernel
> ----------------------------------------------------------------------
>
>                 Key: OAK-45
>                 URL: https://issues.apache.org/jira/browse/OAK-45
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: mk
>            Reporter: Michael Dürig
>         Attachments: OAK-45__OOME.patch
>
>
> As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:
> {code}
> String addLotsOfData(MicroKernel mk) { 
>     String baseRevision = mk.getHeadRevision(); 
>     String branchRevision = mk.branch(baseRevision); 
>     for (int i = 0; i < 1000000; i++) { 
>         branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
>             branchRevision, null); 
>     } 
>     return mk.merge(branchRevision, baseRevision); } 
> {code}
> [1] http://markmail.org/message/jbbut6vzvmmjqonr

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

       

[jira] [Commented] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Posted by "Michael Dürig (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OAK-45?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13262566#comment-13262566 ] 

Michael Dürig commented on OAK-45:
----------------------------------

I also tried the other implementation. There was no OOME but a severe performance degradation after a couple of 100 commits.
                
> Add support for branching and merging of private copies to MicroKernel
> ----------------------------------------------------------------------
>
>                 Key: OAK-45
>                 URL: https://issues.apache.org/jira/browse/OAK-45
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: mk
>            Reporter: Michael Dürig
>         Attachments: OAK-45__OOME.patch
>
>
> As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:
> {code}
> String addLotsOfData(MicroKernel mk) { 
>     String baseRevision = mk.getHeadRevision(); 
>     String branchRevision = mk.branch(baseRevision); 
>     for (int i = 0; i < 1000000; i++) { 
>         branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
>             branchRevision, null); 
>     } 
>     return mk.merge(branchRevision, baseRevision); } 
> {code}
> [1] http://markmail.org/message/jbbut6vzvmmjqonr

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

       

[jira] [Assigned] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Posted by "Stefan Guggisberg (Assigned) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OAK-45?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stefan Guggisberg reassigned OAK-45:
------------------------------------

    Assignee:     (was: Stefan Guggisberg)
    
> Add support for branching and merging of private copies to MicroKernel
> ----------------------------------------------------------------------
>
>                 Key: OAK-45
>                 URL: https://issues.apache.org/jira/browse/OAK-45
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: mk
>            Reporter: Michael Dürig
>
> As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:
> {code}
> String addLotsOfData(MicroKernel mk) { 
>     String baseRevision = mk.getHeadRevision(); 
>     String branchRevision = mk.branch(baseRevision); 
>     for (int i = 0; i < 1000000; i++) { 
>         branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
>             branchRevision, null); 
>     } 
>     return mk.merge(branchRevision, baseRevision); } 
> {code}
> [1] http://markmail.org/message/jbbut6vzvmmjqonr

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

       

[jira] [Commented] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Posted by "Michael Dürig (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OAK-45?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13261764#comment-13261764 ] 

Michael Dürig commented on OAK-45:
----------------------------------

Thank works great generally. However, I get an OOME after a couple of 100 commits to a branch. 
                
> Add support for branching and merging of private copies to MicroKernel
> ----------------------------------------------------------------------
>
>                 Key: OAK-45
>                 URL: https://issues.apache.org/jira/browse/OAK-45
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: mk
>            Reporter: Michael Dürig
>
> As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:
> {code}
> String addLotsOfData(MicroKernel mk) { 
>     String baseRevision = mk.getHeadRevision(); 
>     String branchRevision = mk.branch(baseRevision); 
>     for (int i = 0; i < 1000000; i++) { 
>         branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
>             branchRevision, null); 
>     } 
>     return mk.merge(branchRevision, baseRevision); } 
> {code}
> [1] http://markmail.org/message/jbbut6vzvmmjqonr

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

       

[jira] [Assigned] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Posted by "Stefan Guggisberg (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OAK-45?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stefan Guggisberg reassigned OAK-45:
------------------------------------

    Assignee: Stefan Guggisberg
    
> Add support for branching and merging of private copies to MicroKernel
> ----------------------------------------------------------------------
>
>                 Key: OAK-45
>                 URL: https://issues.apache.org/jira/browse/OAK-45
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: mk
>            Reporter: Michael Dürig
>            Assignee: Stefan Guggisberg
>         Attachments: OAK-45__OOME.patch
>
>
> As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:
> {code}
> String addLotsOfData(MicroKernel mk) { 
>     String baseRevision = mk.getHeadRevision(); 
>     String branchRevision = mk.branch(baseRevision); 
>     for (int i = 0; i < 1000000; i++) { 
>         branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
>             branchRevision, null); 
>     } 
>     return mk.merge(branchRevision, baseRevision); } 
> {code}
> [1] http://markmail.org/message/jbbut6vzvmmjqonr

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

       

[jira] [Assigned] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Posted by "Stefan Guggisberg (Assigned) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OAK-45?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stefan Guggisberg reassigned OAK-45:
------------------------------------

    Assignee: Stefan Guggisberg
    
> Add support for branching and merging of private copies to MicroKernel
> ----------------------------------------------------------------------
>
>                 Key: OAK-45
>                 URL: https://issues.apache.org/jira/browse/OAK-45
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: mk
>            Reporter: Michael Dürig
>            Assignee: Stefan Guggisberg
>
> As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:
> {code}
> String addLotsOfData(MicroKernel mk) { 
>     String baseRevision = mk.getHeadRevision(); 
>     String branchRevision = mk.branch(baseRevision); 
>     for (int i = 0; i < 1000000; i++) { 
>         branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
>             branchRevision, null); 
>     } 
>     return mk.merge(branchRevision, baseRevision); } 
> {code}
> [1] http://markmail.org/message/jbbut6vzvmmjqonr

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

       

[jira] [Commented] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Posted by "Stefan Guggisberg (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OAK-45?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13258308#comment-13258308 ] 

Stefan Guggisberg commented on OAK-45:
--------------------------------------

implemented initial support for branch & merge in oak-mk incl. a basic integration test in svn r1328397.

the integration test currently fails with UnsupportedOperationException when using the non-default mk impl
in oak-core. 
                
> Add support for branching and merging of private copies to MicroKernel
> ----------------------------------------------------------------------
>
>                 Key: OAK-45
>                 URL: https://issues.apache.org/jira/browse/OAK-45
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: mk
>            Reporter: Michael Dürig
>            Assignee: Stefan Guggisberg
>
> As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:
> {code}
> String addLotsOfData(MicroKernel mk) { 
>     String baseRevision = mk.getHeadRevision(); 
>     String branchRevision = mk.branch(baseRevision); 
>     for (int i = 0; i < 1000000; i++) { 
>         branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
>             branchRevision, null); 
>     } 
>     return mk.merge(branchRevision, baseRevision); } 
> {code}
> [1] http://markmail.org/message/jbbut6vzvmmjqonr

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

       

[jira] [Updated] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Posted by "Michael Dürig (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/OAK-45?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Dürig updated OAK-45:
-----------------------------

    Attachment: OAK-45__OOME.patch

Test case demonstrating the OOME
                
> Add support for branching and merging of private copies to MicroKernel
> ----------------------------------------------------------------------
>
>                 Key: OAK-45
>                 URL: https://issues.apache.org/jira/browse/OAK-45
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: mk
>            Reporter: Michael Dürig
>         Attachments: OAK-45__OOME.patch
>
>
> As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:
> {code}
> String addLotsOfData(MicroKernel mk) { 
>     String baseRevision = mk.getHeadRevision(); 
>     String branchRevision = mk.branch(baseRevision); 
>     for (int i = 0; i < 1000000; i++) { 
>         branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
>             branchRevision, null); 
>     } 
>     return mk.merge(branchRevision, baseRevision); } 
> {code}
> [1] http://markmail.org/message/jbbut6vzvmmjqonr

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

       

[jira] [Commented] (OAK-45) Add support for branching and merging of private copies to MicroKernel

Posted by "Michael Dürig (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/OAK-45?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13262610#comment-13262610 ] 

Michael Dürig commented on OAK-45:
----------------------------------

Never mind, then changes from revision 1330811 seems to improve this.
                
> Add support for branching and merging of private copies to MicroKernel
> ----------------------------------------------------------------------
>
>                 Key: OAK-45
>                 URL: https://issues.apache.org/jira/browse/OAK-45
>             Project: Jackrabbit Oak
>          Issue Type: New Feature
>          Components: mk
>            Reporter: Michael Dürig
>         Attachments: OAK-45__OOME.patch
>
>
> As discussed on the dev list [1] we should add support to the Microkernel for branching of a private working copy which can be merged back later:
> {code}
> String addLotsOfData(MicroKernel mk) { 
>     String baseRevision = mk.getHeadRevision(); 
>     String branchRevision = mk.branch(baseRevision); 
>     for (int i = 0; i < 1000000; i++) { 
>         branchRevision = mk.commit("/", "+\"node" + i + "\":{}", 
>             branchRevision, null); 
>     } 
>     return mk.merge(branchRevision, baseRevision); } 
> {code}
> [1] http://markmail.org/message/jbbut6vzvmmjqonr

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