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/31 08:19:47 UTC
svn commit: r1746252 - in
/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run:
DumpDataStoreReferencesCommand.java SegmentTarUtils.java
Author: frm
Date: Tue May 31 08:19:47 2016
New Revision: 1746252
URL: http://svn.apache.org/viewvc?rev=1746252&view=rev
Log:
OAK-4342 - Add a flag to choose between segment store implementations in the "dumpdatastorerefs" command
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DumpDataStoreReferencesCommand.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/SegmentTarUtils.java
Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DumpDataStoreReferencesCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DumpDataStoreReferencesCommand.java?rev=1746252&r1=1746251&r2=1746252&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DumpDataStoreReferencesCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DumpDataStoreReferencesCommand.java Tue May 31 08:19:47 2016
@@ -35,6 +35,9 @@ import com.google.common.io.Files;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.MongoURI;
+import joptsimple.OptionParser;
+import joptsimple.OptionSet;
+import joptsimple.OptionSpec;
import org.apache.jackrabbit.oak.commons.IOUtils;
import org.apache.jackrabbit.oak.plugins.blob.BlobReferenceRetriever;
import org.apache.jackrabbit.oak.plugins.blob.ReferenceCollector;
@@ -50,34 +53,43 @@ class DumpDataStoreReferencesCommand imp
@Override
public void execute(String... args) throws Exception {
- if (args.length == 0) {
- System.out
- .println("usage: dumpdatastorerefs {<path>|<mongo-uri>} <dump_path>]");
+ OptionParser parser = new OptionParser();
+ OptionSpec segmentTar = parser.accepts("segment-tar", "Use oak-segment-tar instead of oak-segment");
+ OptionSet options = parser.parse(args);
+
+ if (options.nonOptionArguments().isEmpty()) {
+ System.out.println("usage: dumpdatastorerefs {<path>|<mongo-uri>} <dump_path>]");
System.exit(1);
}
Closer closer = Closer.create();
try {
- BlobReferenceRetriever marker = null;
+ BlobReferenceRetriever marker;
BlobStore blobStore = null;
- if (args[0].startsWith(MongoURI.MONGODB_PREFIX)) {
- MongoClientURI uri = new MongoClientURI(args[0]);
+ String source = options.nonOptionArguments().get(0).toString();
+
+ if (source.startsWith(MongoURI.MONGODB_PREFIX)) {
+ MongoClientURI uri = new MongoClientURI(source);
MongoClient client = new MongoClient(uri);
final DocumentNodeStore store = new DocumentMK.Builder().setMongoDB(client.getDB(uri.getDatabase())).getNodeStore();
blobStore = store.getBlobStore();
closer.register(Utils.asCloseable(store));
marker = new DocumentBlobReferenceRetriever(store);
+ } else if (options.has(segmentTar)) {
+ marker = SegmentTarUtils.newBlobReferenceRetriever(source, closer);
} else {
- FileStore store = openFileStore(args[0]);
+ FileStore store = openFileStore(source);
closer.register(Utils.asCloseable(store));
marker = new SegmentBlobReferenceRetriever(store.getTracker());
}
String dumpPath = StandardSystemProperty.JAVA_IO_TMPDIR.value();
- if (args.length == 2) {
- dumpPath = args[1];
+
+ if (options.nonOptionArguments().size() >= 2) {
+ dumpPath = options.nonOptionArguments().get(1).toString();
}
+
File dumpFile = new File(dumpPath, "marked-" + System.currentTimeMillis());
final BufferedWriter writer = Files.newWriter(dumpFile, Charsets.UTF_8);
final AtomicInteger count = new AtomicInteger();
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=1746252&r1=1746251&r2=1746252&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 Tue May 31 08:19:47 2016
@@ -72,10 +72,12 @@ import org.apache.jackrabbit.oak.commons
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
import org.apache.jackrabbit.oak.json.JsopDiff;
+import org.apache.jackrabbit.oak.plugins.blob.BlobReferenceRetriever;
import org.apache.jackrabbit.oak.segment.RecordId;
import org.apache.jackrabbit.oak.segment.RecordUsageAnalyser;
import org.apache.jackrabbit.oak.segment.Segment;
import org.apache.jackrabbit.oak.segment.SegmentBlob;
+import org.apache.jackrabbit.oak.segment.SegmentBlobReferenceRetriever;
import org.apache.jackrabbit.oak.segment.SegmentId;
import org.apache.jackrabbit.oak.segment.SegmentNodeState;
import org.apache.jackrabbit.oak.segment.SegmentNodeStore;
@@ -107,6 +109,10 @@ final class SegmentTarUtils {
return SegmentNodeStore.builder(bootstrapFileStore(path, closer)).build();
}
+ static BlobReferenceRetriever newBlobReferenceRetriever(String path, Closer closer) throws IOException {
+ return new SegmentBlobReferenceRetriever(closer.register(openFileStore(path, false)));
+ }
+
static void backup(File source, File target) throws IOException {
Closer closer = Closer.create();
try {