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 2017/06/27 09:37:45 UTC

svn commit: r1800043 - in /jackrabbit/oak/trunk/oak-segment-tar/src: main/java/org/apache/jackrabbit/oak/segment/OnlineCompactor.java test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java

Author: mduerig
Date: Tue Jun 27 09:37:45 2017
New Revision: 1800043

URL: http://svn.apache.org/viewvc?rev=1800043&view=rev
Log:
OAK-5790: Chronologically rebase checkpoints on top of each other during compaction
Add feature flag for the update limit during compaction instead of hard coding it

Modified:
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/OnlineCompactor.java
    jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/OnlineCompactor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/OnlineCompactor.java?rev=1800043&r1=1800042&r2=1800043&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/OnlineCompactor.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/OnlineCompactor.java Tue Jun 27 09:37:45 2017
@@ -57,6 +57,13 @@ import org.slf4j.LoggerFactory;
 public class OnlineCompactor {
     private static final Logger log = LoggerFactory.getLogger(OnlineCompactor.class);
 
+    /**
+     * Number of content updates that need to happen before the updates
+     * are automatically purged to the underlying segments.
+     */
+    static final int UPDATE_LIMIT =
+            Integer.getInteger("compaction.update.limit", 10000);
+
     @Nonnull
     private final SegmentWriter writer;
 
@@ -140,7 +147,7 @@ public class OnlineCompactor {
         private long modCount;
 
         private void updated() throws IOException {
-            if (++modCount % 10000 == 0) {
+            if (++modCount % UPDATE_LIMIT == 0) {
                 RecordId newBaseId = writer.writeNode(builder.getNodeState(), null);
                 SegmentNodeState newBase = new SegmentNodeState(reader, writer, blobStore, newBaseId);
                 builder = new MemoryNodeBuilder(newBase);

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java?rev=1800043&r1=1800042&r2=1800043&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/CompactionAndCleanupIT.java Tue Jun 27 09:37:45 2017
@@ -31,6 +31,7 @@ import static org.apache.commons.io.File
 import static org.apache.jackrabbit.oak.api.Type.STRING;
 import static org.apache.jackrabbit.oak.commons.PathUtils.concat;
 import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
+import static org.apache.jackrabbit.oak.segment.OnlineCompactor.UPDATE_LIMIT;
 import static org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions.defaultGCOptions;
 import static org.apache.jackrabbit.oak.segment.file.FileStoreBuilder.fileStoreBuilder;
 import static org.junit.Assert.assertEquals;
@@ -1106,7 +1107,7 @@ public class CompactionAndCleanupIT {
 
             // A final bit of content
             builder = nodeStore.getRoot().builder();
-            for (int k = 0; k < 10000; k++) {
+            for (int k = 0; k < UPDATE_LIMIT; k++) {
                 builder.setChildNode("b-" + k);
             }
             nodeStore.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);