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

Alex Parvulescu commented on OAK-4949:
--------------------------------------

I think the change here is that compaction itself is a very large transaction 
and might introduce this problem. I'm wondering if we could only approach a 
single code path for optimization, the 'persisting a new node with a very large 
child node list' scenario.
This is in any case an improvement analysis, not something we need to urgently 
fix.

> SegmentWriter buffers child node list changes
> ---------------------------------------------
>
>                 Key: OAK-4949
>                 URL: https://issues.apache.org/jira/browse/OAK-4949
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: segment-tar
>            Reporter: Alex Parvulescu
>            Assignee: Alex Parvulescu
>
> The {{SegmentWriter}} currently buffers the list of child nodes changed on a 
> nodestate update [0] (new node or updated node). This can be problematic in a 
> scenario where there are a large number of children added to a node (ie. 
> unique index size seen to spike above {{10MM}} in one case).
> To have a reference for the impact of this, at the {{SegmentWriter}} level, 
> for a list of map entries of almost {{3MM}} items, I saw it take up around 
> {{245MB}} heap.
> This issue serves to track a possible improvement here in how we handle this 
> update scenario.
> [0] 
> https://github.com/apache/jackrabbit-oak/blob/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java#L516



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

Reply via email to