jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dürig (JIRA) <j...@apache.org>
Subject [jira] [Comment Edited] (OAK-464) RootImpl.rebase() doesn't handle move operations correctly
Date Mon, 03 Dec 2012 11:03:58 GMT

    [ https://issues.apache.org/jira/browse/OAK-464?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13507482#comment-13507482
] 

Michael Dürig edited comment on OAK-464 at 12/3/12 11:02 AM:
-------------------------------------------------------------

Here is a short summary of our options on this. TBD.

* Move the rebase operation down to the Microkernel
** Easy and efficient to implement since the Microkernel has full access to the journal
** No additional roundtrips between Microkernel and oak-core
** We lose the conflict handling logic that we currently have in oak-core (i.e. {{ConflictHandler}})

* Implement the rebase operation on top of the Microkernel (status quo)
** Easy to implement, needs diffing between the involved node states though. 
** Additional roundtrips between Microkernel and oak-core due to the diffing in oak-core
** Inefficient wrt. to moving large subtrees. These will degrade to a full deep move (i.e.
each moved node will be newly added)

* Drop the rebase operation completely
** Increased changes of conflicts on commit
** No facility for resolving conflicts on client side

* Implement the rebase operation on to of the Microkernel using the journal supplied from
the Microkernel
** Easy to implement
** Additional roundtrips between Microkernel and oak-core for retrieving the journal
** Needs support from the Microkernel. Currently {{getJournal}} does not work on branches.
                
      was (Author: mduerig):
    Here is a short summary of our options on this. TBD.

* Move the rebase operation down to the Microkernel
** Easy and efficient to implement since the Microkernel has full access to the journal
** No additional roundtrips between Microkernel and oak-core
** We lose the conflict handling logic that we currently have in oak-core (i.e. {{ConflictHandler}})

* Implement the rebase operation on top of the Microkernel (status quo)
** Easy to implement, needs diffing between the involved node states though. 
** Additional roundtrips between Microkernel and oak-core due to the diffing in oak-core
** Inefficient wrt. to moving large subtrees. These will degrade to a full deep move (i.e.
each moved node will be newly added)

* Drop the rebase operation completely
** Increased changes of conflicts on commit
** No facility for resolving conflicts on client side

                  
> RootImpl.rebase() doesn't handle move operations correctly
> ----------------------------------------------------------
>
>                 Key: OAK-464
>                 URL: https://issues.apache.org/jira/browse/OAK-464
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>            Reporter: Michael Dürig
>
> Doing {{RootImpl.rebase()}} causes moves to be changed to remove followed by add. Which
causes moves of large sub trees to become very expensive.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message