You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by md...@apache.org on 2015/09/04 14:32:58 UTC
svn commit: r1701239 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment:
SegmentNodeStore.java file/FileStore.java
Author: mduerig
Date: Fri Sep 4 12:32:58 2015
New Revision: 1701239
URL: http://svn.apache.org/r1701239
Log:
OAK-3347: Ineffective cleanup after compaction due to references to root
Explicitly give up reference to the previous root state before running cleanup
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java?rev=1701239&r1=1701238&r2=1701239&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java Fri Sep 4 12:32:58 2015
@@ -154,6 +154,9 @@ public class SegmentNodeStore implements
try {
return c.call();
} finally {
+ // Explicitly give up reference to the previous root state
+ // otherwise they would block cleanup. See OAK-3347
+ refreshHead();
commitSemaphore.release();
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1701239&r1=1701238&r2=1701239&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java Fri Sep 4 12:32:58 2015
@@ -673,6 +673,10 @@ public class FileStore implements Segmen
// prevent the flush from stopping concurrent reads and writes
// by the persisted compaction map. See OAK-3264
if (cleanup) {
+ // Explicitly give up reference to the previous root state
+ // otherwise they would block cleanup. See OAK-3347
+ before = null;
+ after = null;
cleanup();
}
}