[
https://issues.apache.org/jira/browse/OAK-2801?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14526385#comment-14526385
]
Michael Dürig commented on OAK-2801:
------------------------------------
My goal is to make the reference graph used in the cleanup phase more precise.
This indeed increases the changes to run into a {{SNFE}} when running with
{{CLEAN_OLD}}. However, it also makes {{CLEAN_NONE}} more efficient, which
should be the default IMO.
I've been able to run {{SegmentCompactionIT}} for 2 weeks through 306 revision
gc cycles now without an issue. The compaction map is stable and never grew
beyond depth 8 / 2MB, unreferenced revisions get eventually collected, no
compaction took longer then 5mins, and no cleanup took longer then 8mins (with
repository sizes up to 200GB). See [^with-OAK-2801.png].
> Clear excess references before cleanup
> --------------------------------------
>
> Key: OAK-2801
> URL: https://issues.apache.org/jira/browse/OAK-2801
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: segmentmk
> Reporter: Michael Dürig
> Assignee: Michael Dürig
> Labels: compaction, gc
> Fix For: 1.3.0
>
> Attachments: OAK-2801.patch, with-OAK-2801.png, without-OAK-2801.png
>
>
> {{FileStore#cleanup}} would be more efficient when getting rid of as much
> references as possibly beforehand. Excess references are contributed by the
> current {{TarWriter}} instance and segment cache in {{SegmentTracker}}.
> Those excess references turn out to be especially harmful with many
> concurrent writers continuously writing to the repository. Starting with a
> certain write load clean up will become completely blocked.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)