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 =