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

Michael Dürig updated OAK-2192:
-------------------------------
    Attachment: OAK-2192-v10.patch
                OAK-2192-v10-branch-1.0.patch

Attaching v10 of the patches (both for trunk and 1.0). While functionally 
equivalent to v9, I attempted to clean things up a bit:

* Replaced the {{GCHeadGuard}} mechanism with a call back in 
{{CompactionStrategy}}. The problem with the former approach was that it 
wouldn't work with other {{SegmentStore}} implementations without 
{{SegmentNodeStore}} having to instance of check against all of them.

* Made {{CompactionStrategy}} into a class. I think the implementation 
requirement are too specific for admitting other implementations. To me the 
interface looks like a leftover from when we had the three implementations 
which are now all covered by the one class. 

* Moved the {{SegmentWriter.flush}} call that followed calls to 
{{Compactor.compact}} into latter method. 

* Moved some test cases around so long running test run as ITs and package 
private members could stay such.

* Better usage of enums in {{CompactionStrategy}}

* Some renaming here and there.

> 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, segmentmk
>            Reporter: Michael Dürig
>            Assignee: Michael Dürig
>              Labels: compaction, gc
>             Fix For: 1.0.9
>
>         Attachments: OAK-2192-2.patch, OAK-2192-poc-fix.patch, 
> OAK-2192-possible-test.patch, OAK-2192-v10-branch-1.0.patch, 
> OAK-2192-v10.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-branch-1.0.patch, OAK-2192-v8.patch, 
> OAK-2192-v9-branch-1.0.patch, OAK-2192-v9.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