Author: chetanm
Date: Thu Aug 10 03:44:01 2017
New Revision: 1804624

URL: http://svn.apache.org/viewvc?rev=1804624&view=rev
Log:
OAK-6497 - Support old Segment NodeStore setups for oak-run index tooling

Fallback to oak-segment in case of invalid version. This avoid use of --segment
option

Modified:
    
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/NodeStoreFixtureProvider.java

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/NodeStoreFixtureProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/NodeStoreFixtureProvider.java?rev=1804624&r1=1804623&r2=1804624&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/NodeStoreFixtureProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/cli/NodeStoreFixtureProvider.java
 Thu Aug 10 03:44:01 2017
@@ -19,6 +19,7 @@
 
 package org.apache.jackrabbit.oak.run.cli;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -29,6 +30,7 @@ import com.codahale.metrics.MetricRegist
 import com.google.common.io.Closer;
 import com.google.common.util.concurrent.MoreExecutors;
 import org.apache.jackrabbit.oak.plugins.metric.MetricStatisticsProvider;
+import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
@@ -62,12 +64,28 @@ public class NodeStoreFixtureProvider {
         } else if (commonOpts.isOldSegment()) {
             store = SegmentFixtureProvider.create(options, blobStore, wb, 
closer, readOnly);
         } else {
-            store = SegmentTarFixtureProvider.configureSegment(options, 
blobStore, wb, closer, readOnly);
+            try {
+                store = SegmentTarFixtureProvider.configureSegment(options, 
blobStore, wb, closer, readOnly);
+            } catch (InvalidFileStoreVersionException e) {
+                if (oldSegmentStore(options)) {
+                    store = SegmentFixtureProvider.create(options, blobStore, 
wb, closer, readOnly);
+                } else {
+                    throw e;
+                }
+            }
         }
 
         return new SimpleNodeStoreFixture(store, blobStore, wb, closer);
     }
 
+    private static boolean oldSegmentStore(Options options) {
+        String path = options.getOptionBean(CommonOptions.class).getStoreArg();
+        File dir = new File(path);
+        // manifest file was introduced with oak-segment-tar
+        File manifest = new File(dir, "manifest");
+        return !manifest.exists();
+    }
+
     private static StatisticsProvider createStatsProvider(Options options, 
Whiteboard wb, Closer closer) {
         if (options.getCommonOpts().isMetricsEnabled()) {
             ScheduledExecutorService executorService =


Reply via email to