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