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

Marcel Reutegger commented on OAK-1768:
---------------------------------------

I think we can get rid of the requirement to update the _lastRevs of documents 
that were modified directly by a commit. For those updates the _lastRev can be 
calculated with the commit revision on the commit root document. This is either 
on the current document or the commit root document. The overhead shouldn't be 
too big, since we have to go through the most recent revisions anyway to read 
the node.

This means we wouldn't have to track the _lastRevs of documents explicitly 
updated by the commit and only need to track _lastRev updates to ancestor 
documents that are not touched by the commit. This reduces the size of the 
UnsavedModifications significantly for cases where a large tree is added or 
removed. Another benefit is that we avoid redundancy. As mentioned already, in 
most cases the _lastRev can be calculated based on the changes on the document.

> DocumentNodeBuilder.setChildNode() runs OOM with large tree
> -----------------------------------------------------------
>
>                 Key: OAK-1768
>                 URL: https://issues.apache.org/jira/browse/OAK-1768
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.0
>            Reporter: Marcel Reutegger
>            Assignee: Marcel Reutegger
>             Fix For: 1.1
>
>         Attachments: 
> 0001-OAK-1768-DocumentNodeBuilder.setChildNode-runs-OOM-w.patch
>
>
> This is a follow up issue for OAK-1760. There we implemented a workaround in 
> the upgrade code to prevent the OOME. For the 1.1 release we should implement 
> a proper fix in the DocumentNodeStore as suggested by Jukka in OAK-1760.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to