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