You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Alex Parvulescu (JIRA)" <ji...@apache.org> on 2014/11/03 11:22:33 UTC

[jira] [Updated] (OAK-2192) Concurrent commit during compaction results in mixed segments

     [ 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-v2.patch

attaching another draft patch.
this includes a lot more than this issue, so it may be a good idea to break it apart into dedicated issues once we have some consensus on the approach:
 - a proposed approach for the shared semaphore problem (not a very good one unfortunately, but I couldn't come up with a nicer version)
 - the compaction map now keeps a history of previous states, this will allow us to properly link to the compacted state even after a few consecutive compaction runs
 - the segment tracker now aggressively removes all references keeping the number of refs blocking the compaction process to a bare minimum.
 - Compaction and cleanup test now passes with a tiny hiccup (repo size assumptions changed slightly following the aggressive cleanup approach).
 - a patch for OAK-2140: a flag to control the clone behavior: full copy vs ref copy, there are tradeoffs either way, it makes sense to allow the user to control this via a flag

the patch currently bypasses the compaction flag setting, I did this to make testing easier, included it for now because I'm lazy like that.




 

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