[
https://issues.apache.org/jira/browse/OAK-6033?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15956760#comment-15956760
]
Francesco Mari commented on OAK-6033:
-------------------------------------
The issue seems to be caused by an unwanted interleaving of the commit and
cleanup operations. A first thread creates content, executing the following
steps:
* W1 - Write a bulk segment B.
* W2 - Write a data segment D referencing B.
The second thread cleans up the repository, executing the following steps:
* C1 - Determine the set of segments currently in memory.
* C2 - Mark and sweep segments.
The test fails because of the sequences of steps W1-C1-C2-W2. If this sequence
of steps is performed, B will appear in the set of segments currently in
memory, while D will be to the the mark and sweep operation. In my opinion,
there was nothing that prevented these steps to occur in this order before
OAK-6002, but for some reason {{CompactionAndCleanupIT#concurrentCleanup}}
doesn't seem to file in the older implementation.
> Test failure: CompactionAndCleanupIT.concurrentCleanup
> ------------------------------------------------------
>
> Key: OAK-6033
> URL: https://issues.apache.org/jira/browse/OAK-6033
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: segment-tar
> Reporter: Michael Dürig
> Assignee: Francesco Mari
> Labels: gc, test-failure
> Fix For: 1.7.0, 1.8
>
>
> That test fails for me on every 2nd run or so. This seems to be a regression
> introduced with OAK-6002.
> {code}
> org.junit.ComparisonFailure: Expected nothing to be cleaned but generation
> 'b' for file data00002b.tar indicates otherwise.
> Expected :a
> Actual :b
> at org.junit.Assert.assertEquals(Assert.java:115)
> org.apache.jackrabbit.oak.segment.CompactionAndCleanupIT.concurrentCleanup(CompactionAndCleanupIT.java:1252)
> {code}
> [~frm], could you have a look?
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)