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 ju...@apache.org on 2014/05/27 21:47:37 UTC

svn commit: r1597860 - in /jackrabbit/oak/trunk/oak-run: README.md src/main/java/org/apache/jackrabbit/oak/run/Main.java

Author: jukka
Date: Tue May 27 19:47:36 2014
New Revision: 1597860

URL: http://svn.apache.org/r1597860
Log:
OAK-1804: TarMK compaction

Add the 'compact' mode to oak-run. From the patch by Alex Parvulescu.

Modified:
    jackrabbit/oak/trunk/oak-run/README.md
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java

Modified: jackrabbit/oak/trunk/oak-run/README.md
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/README.md?rev=1597860&r1=1597859&r2=1597860&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/README.md (original)
+++ jackrabbit/oak/trunk/oak-run/README.md Tue May 27 19:47:36 2014
@@ -44,6 +44,14 @@ To start the console for a MongoMK repos
 
     $ java -jar oak-run-*.jar console mongodb://host
 
+Compact
+-------
+
+The 'compact' mode runs the segment compaction operation on the provided TarMK
+repository. To start this mode, use:
+
+    $ java -jar oak-run-*.jar compact /path/to/oak/repository
+
 Upgrade
 -------
 

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java?rev=1597860&r1=1597859&r2=1597860&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java Tue May 27 19:47:36 2014
@@ -22,6 +22,7 @@ import static java.util.Arrays.asList;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -110,6 +111,9 @@ public class Main {
             case DEBUG:
                 debug(args);
                 break;
+            case COMPACT:
+                compact(args);
+                break;
             case SERVER:
                 server(URI, args);
                 break;
@@ -169,6 +173,35 @@ public class Main {
         }
     }
 
+    private static void compact(String[] args) throws IOException {
+        if (args.length != 1) {
+            System.err.println("usage: compact <path>");
+            System.exit(1);
+        } else {
+            File directory = new File(args[0]);
+            FileStore store = new FileStore(directory, 256, false);
+            System.out.println("Compacting " + directory);
+
+            System.out.println("    before " + Arrays.toString(directory.list()));
+            try {
+                store.gc();
+                store.flush();
+                store.close();
+                System.gc();
+
+                store = new FileStore(directory, 256, false);
+                store.gc();
+                store.flush();
+
+                System.out
+                        .println("    after  " + Arrays.toString(directory.list()));
+            } finally {
+                store.close();
+            }
+
+        }
+    }
+
     private static void debug(String[] args) throws IOException {
         if (args.length == 0) {
             System.err.println("usage: debug <path> [id...]");
@@ -506,6 +539,7 @@ public class Main {
         BENCHMARK("benchmark"),
         CONSOLE("debug"),
         DEBUG("debug"),
+        COMPACT("compact"),
         SERVER("server"),
         UPGRADE("upgrade"),
         SCALABILITY("scalability"),