Index: src/main/java/org/apache/jackrabbit/oak/run/Main.java =================================================================== --- src/main/java/org/apache/jackrabbit/oak/run/Main.java (revision 1701615) +++ src/main/java/org/apache/jackrabbit/oak/run/Main.java (working copy) @@ -53,6 +53,7 @@ import javax.jcr.Repository; import com.google.common.base.Joiner; +import com.google.common.base.Stopwatch; import com.google.common.collect.Maps; import com.google.common.collect.Queues; import com.google.common.io.Closer; @@ -65,6 +66,7 @@ import joptsimple.OptionSet; import joptsimple.OptionSpec; +import org.apache.commons.io.FileUtils; import org.apache.commons.lang.time.DateUtils; import org.apache.jackrabbit.core.RepositoryContext; import org.apache.jackrabbit.core.config.RepositoryConfig; @@ -72,6 +74,7 @@ import org.apache.jackrabbit.oak.api.ContentRepository; import org.apache.jackrabbit.oak.benchmark.BenchmarkRunner; import org.apache.jackrabbit.oak.checkpoint.Checkpoints; +import org.apache.jackrabbit.oak.commons.IOUtils; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.commons.json.JsopBuilder; import org.apache.jackrabbit.oak.console.Console; @@ -474,9 +477,16 @@ System.err.println("Invalid FileStore directory " + args[0]); System.exit(1); } else { + boolean persistCM = Boolean + .getBoolean("tar.PersistCompactionMap"); + Stopwatch watch = Stopwatch.createStarted(); File directory = new File(args[0]); System.out.println("Compacting " + directory); System.out.println(" before " + Arrays.toString(directory.list())); + long sizeBefore = FileUtils.sizeOfDirectory(directory); + System.out.println(" size " + + IOUtils.humanReadableByteCount(sizeBefore) + " (" + sizeBefore + + " bytes)"); System.out.println(" -> compacting"); FileStore store = new FileStore(directory, 256, TAR_STORAGE_MEMORY_MAPPED); @@ -494,6 +504,7 @@ return setHead.call(); } }; + compactionStrategy.setPersistCompactionMap(persistCM); store.setCompactionStrategy(compactionStrategy); store.compact(); } finally { @@ -507,8 +518,15 @@ } finally { store.close(); } - - System.out.println(" after " + Arrays.toString(directory.list())); + watch.stop(); + System.out.println(" after " + + Arrays.toString(directory.list())); + long sizeAfter = FileUtils.sizeOfDirectory(directory); + System.out.println(" size " + + IOUtils.humanReadableByteCount(sizeAfter) + " (" + sizeAfter + + " bytes)"); + System.out.println(" duration " + watch.toString() + " (" + + watch.elapsed(TimeUnit.SECONDS) + "s)."); } }