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 fr...@apache.org on 2016/05/23 09:28:11 UTC

svn commit: r1745132 - in /jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run: GraphCommand.java SegmentTarUtils.java SegmentUtils.java

Author: frm
Date: Mon May 23 09:28:11 2016
New Revision: 1745132

URL: http://svn.apache.org/viewvc?rev=1745132&view=rev
Log:
OAK-4331 - Add a flag to choose between segment store implementations in the "graph" command

Modified:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GraphCommand.java
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentUtils.java

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GraphCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GraphCommand.java?rev=1745132&r1=1745131&r2=1745132&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GraphCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/GraphCommand.java Mon May 23 09:28:11 2016
@@ -17,10 +17,6 @@
 
 package org.apache.jackrabbit.oak.run;
 
-import static org.apache.jackrabbit.oak.plugins.segment.FileStoreHelper.openReadOnlyFileStore;
-import static org.apache.jackrabbit.oak.plugins.segment.SegmentGraph.writeGCGraph;
-import static org.apache.jackrabbit.oak.plugins.segment.SegmentGraph.writeSegmentGraph;
-
 import java.io.File;
 import java.io.FileOutputStream;
 import java.util.Calendar;
@@ -29,7 +25,6 @@ import java.util.Date;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 import joptsimple.OptionSpec;
-import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
 
 class GraphCommand implements Command {
 
@@ -50,6 +45,7 @@ class GraphCommand implements Command {
                 "pattern", "Regular exception specifying which nodes to include (optional). " +
                         "Ignore when --gc is specified.")
                 .withRequiredArg().ofType(String.class);
+        OptionSpec segmentTar = parser.accepts("segment-tar", "Use oak-segment-tar instead of oak-segment");
 
         OptionSet options = parser.parse(args);
 
@@ -59,8 +55,6 @@ class GraphCommand implements Command {
             parser.printHelpOn(System.err);
             System.exit(-1);
         }
-        System.out.println("Opening file store at " + directory);
-        FileStore.ReadOnlyStore fileStore = openReadOnlyFileStore(directory);
 
         String regExp = regExpArg.value(options);
 
@@ -84,12 +78,14 @@ class GraphCommand implements Command {
 
         System.out.println("Setting epoch to " + epoch);
         System.out.println("Writing graph to " + outFile.getAbsolutePath());
-
         FileOutputStream out = new FileOutputStream(outFile);
-        if (options.has(gcGraphArg)) {
-            writeGCGraph(fileStore, out);
+
+        boolean gcGraph = options.has(gcGraphArg);
+
+        if (options.has(segmentTar)) {
+            SegmentTarUtils.graph(directory, gcGraph, epoch, regExp, out);
         } else {
-            writeSegmentGraph(fileStore, out, epoch, regExp);
+            SegmentUtils.graph(directory, gcGraph, epoch, regExp, out);
         }
     }
 

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java?rev=1745132&r1=1745131&r2=1745132&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java Mon May 23 09:28:11 2016
@@ -24,14 +24,18 @@ import static org.apache.commons.io.File
 import static org.apache.jackrabbit.oak.plugins.segment.FileStoreHelper.isValidFileStoreOrFail;
 import static org.apache.jackrabbit.oak.plugins.segment.FileStoreHelper.newBasicReadOnlyBlobStore;
 import static org.apache.jackrabbit.oak.segment.RecordType.NODE;
+import static org.apache.jackrabbit.oak.segment.SegmentGraph.writeGCGraph;
+import static org.apache.jackrabbit.oak.segment.SegmentGraph.writeSegmentGraph;
 import static org.apache.jackrabbit.oak.segment.SegmentNodeStateHelper.getTemplateId;
 import static org.slf4j.LoggerFactory.getLogger;
 
 import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
+import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -66,6 +70,7 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.SegmentPropertyState;
 import org.apache.jackrabbit.oak.segment.SegmentTracker;
 import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.file.FileStore.ReadOnlyStore;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -125,6 +130,16 @@ class SegmentTarUtils {
         }
     }
 
+    static void graph(File path, boolean gcGraph, Date epoch, String regex, OutputStream out) throws Exception {
+        System.out.println("Opening file store at " + path);
+        ReadOnlyStore fileStore = openReadOnlyFileStore(path);
+        if (gcGraph) {
+            writeGCGraph(fileStore, out);
+        } else {
+            writeSegmentGraph(fileStore, out, epoch, regex);
+        }
+    }
+
     private static void debugFileStore(FileStore store) {
         Map<SegmentId, List<SegmentId>> idmap = Maps.newHashMap();
         int dataCount = 0;
@@ -382,7 +397,7 @@ class SegmentTarUtils {
                 .buildReadOnly();
     }
 
-    private static FileStore openReadOnlyFileStore(File path) throws IOException {
+    private static ReadOnlyStore openReadOnlyFileStore(File path) throws IOException {
         return FileStore.builder(isValidFileStoreOrFail(path))
                 .withCacheSize(TAR_SEGMENT_CACHE_SIZE)
                 .withMemoryMapping(TAR_STORAGE_MEMORY_MAPPED)

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentUtils.java?rev=1745132&r1=1745131&r2=1745132&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentUtils.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentUtils.java Mon May 23 09:28:11 2016
@@ -22,13 +22,17 @@ import static org.apache.commons.io.File
 import static org.apache.jackrabbit.oak.plugins.segment.FileStoreHelper.newBasicReadOnlyBlobStore;
 import static org.apache.jackrabbit.oak.plugins.segment.FileStoreHelper.openReadOnlyFileStore;
 import static org.apache.jackrabbit.oak.plugins.segment.RecordType.NODE;
+import static org.apache.jackrabbit.oak.plugins.segment.SegmentGraph.writeGCGraph;
+import static org.apache.jackrabbit.oak.plugins.segment.SegmentGraph.writeSegmentGraph;
 import static org.apache.jackrabbit.oak.run.Utils.asCloseable;
 import static org.slf4j.LoggerFactory.getLogger;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -109,6 +113,16 @@ class SegmentUtils {
         }
     }
 
+    static void graph(File path, boolean gcGraph, Date epoch, String regex, OutputStream out) throws Exception {
+        System.out.println("Opening file store at " + path);
+        FileStore.ReadOnlyStore fileStore = openReadOnlyFileStore(path);
+        if (gcGraph) {
+            writeGCGraph(fileStore, out);
+        } else {
+            writeSegmentGraph(fileStore, out, epoch, regex);
+        }
+    }
+
     private static void debugFileStore(FileStore store) {
         Map<SegmentId, List<SegmentId>> idmap = Maps.newHashMap();
         int dataCount = 0;