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

Reply via email to