[
https://issues.apache.org/jira/browse/OAK-4966?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15608741#comment-15608741
]
Alex Parvulescu commented on OAK-4966:
--------------------------------------
bq. I agree on the upfront vs. continuous checking of available heap. Let's
start simple and improve when required. Let's keep an eye on this part during
our testing.
that's not totally correct though. if we only check upfront, before a first
compaction node deduplication cache will be empty, so given an instance that
has {{1GB}} or {{2GB}} of available heap, caches will spike to > {{2GB}}
crashing the instance, so if we go with a % of available heap, it needs to be a
continuous check.
my proposal was to provide an estimate (even if higher that real) to stop early
if there's not enough heap based on max size of all the existing caches.
I'll provide a simpler version that only relies on polling available heap and
comparing with a configurable threshold (10%?) stopping compaction if needed.
> Re-introduce a blocker for compaction based on available heap
> -------------------------------------------------------------
>
> Key: OAK-4966
> URL: https://issues.apache.org/jira/browse/OAK-4966
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: segment-tar
> Reporter: Alex Parvulescu
> Assignee: Alex Parvulescu
> Fix For: 1.6, 1.5.13
>
> Attachments: OAK-4966.patch
>
>
> As seen in a local test, running compaction on a tight heap can lead to
> OOMEs. There used to be a best effort barrier against this situation 'not
> enough heap for compaction', but we removed it with the compaction maps.
> I think it makes sense to add it again based on the max size of some of the
> caches: segment cache {{256MB}} by default [0] and some writer caches which
> can go up to {{2GB}} all combined [1] and probably others I missed.
> [0]
> https://github.com/apache/jackrabbit-oak/blob/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentCache.java#L48
> [1]
> https://github.com/apache/jackrabbit-oak/blob/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/WriterCacheManager.java#L50
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)