You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Michael Dürig (JIRA)" <ji...@apache.org> on 2013/09/20 16:47:51 UTC

[jira] [Comment Edited] (OAK-659) Move purge logic for transient changes below the NodeBuilder interface

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

Michael Dürig edited comment on OAK-659 at 9/20/13 2:45 PM:
------------------------------------------------------------

Initial fix at http://svn.apache.org/r1524957 

This still needs some fine tuning:
* --{{MutableTree#moveTo}} and {{MutableTree#copyTo}} fall back to using a {{MemoryNodeBuilder}} instead of a {{KernelNodeBuilder}} when operating on a {{SecureNodeState}}. {{MemoryNodeBuilder}} does not have optimised handling for move/copy operations.-- Fixed at http://svn.apache.org/r1525016
* {{KernelNodeState.builder()}} returns a {{MemoryNodeBuilder}} (instead of a {{KernelNodeBuilder}} when the current state is on a branch. This is a workaround to avoid branching form a branch, which is not supported. The effect of this is that commit hooks currently run against a {{MemoryNodeBuilder}}, which limits the amount of changes commit hooks can add. 
* {{SegmentNodeStore.merge()}} currently has no implementation of its own but falls back to the default implementation of its super class. 

I left FIXMEs and TODOs in the code accordingly.
                
      was (Author: mduerig):
    Initial fix at http://svn.apache.org/r1524957 

This still needs some fine tuning:
* {{MutableTree#moveTo}} and {{MutableTree#copyTo}} fall back to using a {{MemoryNodeBuilder}} instead of a {{KernelNodeBuilder}} when operating on a {{SecureNodeState}}. {{MemoryNodeBuilder}} does not have optimised handling for move/copy operations. 
* {{KernelNodeState.builder()}} returns a {{MemoryNodeBuilder}} (instead of a {{KernelNodeBuilder}} when the current state is on a branch. This is a workaround to avoid branching form a branch, which is not supported. The effect of this is that commit hooks currently run against a {{MemoryNodeBuilder}}, which limits the amount of changes commit hooks can add. 
* {{SegmentNodeStore.merge()}} currently has no implementation of its own but falls back to the default implementation of its super class. 

I left FIXMEs and TODOs in the code accordingly.
                  
> Move purge logic for transient changes below the NodeBuilder interface
> ----------------------------------------------------------------------
>
>                 Key: OAK-659
>                 URL: https://issues.apache.org/jira/browse/OAK-659
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core
>            Reporter: Michael Dürig
>         Attachments: OAK-659-2.patch, OAK-659.patch
>
>
> Currently transient changes are purged down to a persisted branch once a certain size threshold is hit. This logic currently resides in {{RootImpl}}. However this approach doesn't catch the case where a lot of content is added by a commit hook (e.g. index updates) since commit hooks operate on the {{NodeBuilder}} level which is below {{Root}}. 
> The aim of this issue is to pursue ways to push the purge logic further down below the {{NodeBuilder}} interface. 

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