Index: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (revision 1656424) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (working copy) @@ -16,6 +16,7 @@ */ package org.apache.jackrabbit.oak.plugins.segment.file; +import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import static com.google.common.collect.Lists.newArrayList; @@ -531,6 +532,8 @@ * reference to them). */ public void compact() { + checkArgument(!compactionStrategy.equals(NO_COMPACTION), + "You must set a compactionStrategy before calling compact()"); log.info("TarMK compaction running, strategy={}", compactionStrategy); long start = System.currentTimeMillis(); Index: oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java =================================================================== --- oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java (revision 1656424) +++ oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java (working copy) @@ -41,6 +41,7 @@ import java.util.Queue; import java.util.Set; import java.util.UUID; +import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -93,6 +94,8 @@ import org.apache.jackrabbit.oak.plugins.segment.SegmentId; import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState; import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore; +import org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy; +import org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy.CleanupType; import org.apache.jackrabbit.oak.plugins.segment.file.FileStore; import org.apache.jackrabbit.oak.plugins.segment.standby.client.StandbyClient; import org.apache.jackrabbit.oak.plugins.segment.standby.server.StandbyServer; @@ -463,6 +466,20 @@ System.out.println(" -> compacting"); FileStore store = new FileStore(directory, 256, TAR_STORAGE_MEMORY_MAPPED); try { + CompactionStrategy compactionStrategy = new CompactionStrategy( + false, CompactionStrategy.CLONE_BINARIES_DEFAULT, + CleanupType.CLEAN_ALL, 0, + CompactionStrategy.MEMORY_THRESHOLD_DEFAULT) { + @Override + public boolean compacted(Callable setHead) + throws Exception { + // oak-run is doing compaction single-threaded + // hence no guarding needed - go straight ahead + // and call setHead + return setHead.call(); + } + }; + store.setCompactionStrategy(compactionStrategy); store.compact(); } finally { store.close();