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;