[ 
https://issues.apache.org/jira/browse/OAK-2192?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu updated OAK-2192:
---------------------------------
    Attachment: OAK-2192-v8.patch

v8 of this patch. I see no more SNFEs, but there are quite some changes 
included: 
 - really add everything to the compaction map (all nodes, all binaries), 
 - segmentid equals check needs to change, the old impl cannot work given the 
cleanup approaches we have now in place
 - tarreader cleanup will now try to take into account the compaction map in 
the case of binary segments. this helps with currently running diffs over the 
old states.
To explain this a bit better: the compaction map is quite efficient in linking 
old states to the new versions, but the only window of trouble we have now are 
already running diffs, where loading the current node state triggers loading a 
segment that may be already gone. this is where you can really see the 
difference between the 2 available cleanup strategies: 'all' will cleanup 
everything but gives no fallback for this scenario, 'timestamp' will allow 
running diffs to catchup at the cost of having to keep some garbage around for 
a longer time. the change on v8 is that now we take into account bulk segments 
already compacted and skip them to make this process more efficient.
 - switched the "pause" flag to false to allow compaction to run.


TODO we possibly need to remove the SNFE logs in the SegmentTracker, cleanup.



> Concurrent commit during compaction results in mixed segments
> -------------------------------------------------------------
>
>                 Key: OAK-2192
>                 URL: https://issues.apache.org/jira/browse/OAK-2192
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: core
>            Reporter: Michael Dürig
>            Assignee: Michael Dürig
>              Labels: compaction, gc
>         Attachments: OAK-2192-2.patch, OAK-2192-poc-fix.patch, 
> OAK-2192-possible-test.patch, OAK-2192-v2.patch, OAK-2192-v3.patch, 
> OAK-2192-v4.patch, OAK-2192-v5.patch, OAK-2192-v6.patch, OAK-2192-v7.patch, 
> OAK-2192-v8.patch, OAK-2192.patch
>
>
> Changes that are committed during a segment store compaction run will be 
> compacted on top of the already compacted changes. However the compactor uses 
> the wrong before state in this case. Instead of compacting against the 
> compacted before state it uses the un-compacted before state. The resulting 
> state will thus contain references to un-compacted state, making those not 
> eligible for later clean up. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to