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