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