Author: tomekr
Date: Fri Jun 10 09:37:50 2016
New Revision: 1747672

URL: http://svn.apache.org/viewvc?rev=1747672&view=rev
Log:
OAK-4447 RepositorySidegrade: oak-segment to oak-segment-tar migrate without 
external datastore - validate node store combination

Modified:
    
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArguments.java
    
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreType.java
    
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/MissingBlobStoreTest.java

Modified: 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArguments.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArguments.java?rev=1747672&r1=1747671&r2=1747672&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArguments.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreArguments.java
 Fri Jun 10 09:37:50 2016
@@ -46,6 +46,8 @@ import static org.apache.jackrabbit.oak.
 import static org.apache.jackrabbit.oak.upgrade.cli.parser.StoreType.JCR2_DIR;
 import static 
org.apache.jackrabbit.oak.upgrade.cli.parser.StoreType.JCR2_DIR_XML;
 import static org.apache.jackrabbit.oak.upgrade.cli.parser.StoreType.JCR2_XML;
+import static org.apache.jackrabbit.oak.upgrade.cli.parser.StoreType.JDBC;
+import static org.apache.jackrabbit.oak.upgrade.cli.parser.StoreType.MONGO;
 import static org.apache.jackrabbit.oak.upgrade.cli.parser.StoreType.SEGMENT;
 import static 
org.apache.jackrabbit.oak.upgrade.cli.parser.StoreType.SEGMENT_TAR;
 import static 
org.apache.jackrabbit.oak.upgrade.cli.parser.StoreType.getMatchingType;
@@ -80,6 +82,10 @@ public class StoreArguments {
         if (dst.getType() == SEGMENT) {
             logSegmentVersion();
         }
+
+        if (parser.hasOption(MISSING_BLOBSTORE) && 
!nodeStoresSupportMissingBlobStore()) {
+            throw new CliArgumentException("This combination of nodestores is 
not supported by the --" + MISSING_BLOBSTORE, 1);
+        }
     }
 
     public StoreFactory getSrcStore() {
@@ -239,6 +245,21 @@ public class StoreArguments {
         }
     }
 
+    private boolean nodeStoresSupportMissingBlobStore() {
+        StoreType srcType = src.getType();
+        StoreType dstType = dst.getType();
+
+        if (srcType.isSegment() && dstType.isSegment()) {
+            return true;
+        } else if (srcType == MONGO && (dstType.isSegment() || dstType == 
MONGO)) {
+            return true;
+        } else if (srcType == JDBC && (dstType.isSegment() || dstType == 
JDBC)) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
     enum MigrationDirection {
         SRC, DST
     }

Modified: 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreType.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreType.java?rev=1747672&r1=1747671&r2=1747672&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreType.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/StoreType.java
 Fri Jun 10 09:37:50 2016
@@ -130,4 +130,8 @@ enum StoreType {
     public abstract boolean matches(String argument);
 
     public abstract StoreFactory createFactory(String[] paths, 
MigrationDirection direction, MigrationCliArguments arguments);
+
+    public boolean isSegment() {
+        return this == SEGMENT || this == SEGMENT_TAR;
+    }
 }
\ No newline at end of file

Modified: 
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/MissingBlobStoreTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/MissingBlobStoreTest.java?rev=1747672&r1=1747671&r2=1747672&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/MissingBlobStoreTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/MissingBlobStoreTest.java
 Fri Jun 10 09:37:50 2016
@@ -55,12 +55,6 @@ public class MissingBlobStoreTest extend
                 params.add(new Object[] { "Mongo -> Mongo (FDS)",
                         new MongoNodeStoreContainer(blob),
                         new MongoNodeStoreContainer(blob), false });
-                // params.add(new Object[] { "Segment -> Mongo (FDS)", new
-                // SegmentNodeStoreContainer(blob), new
-                // MongoNodeStoreContainer(blob), false });
-                // params.add(new Object[] { "SegmentTar -> Mongo (FDS)", new
-                // SegmentTarNodeStoreContainer(blob), new
-                // MongoNodeStoreContainer(blob), false });
                 params.add(new Object[] { "Mongo -> Segment (FDS)",
                         new MongoNodeStoreContainer(blob),
                         new SegmentNodeStoreContainer(blob), false });
@@ -68,9 +62,6 @@ public class MissingBlobStoreTest extend
         } catch (IOException e) {
             log.error("Can't create Mongo -> Mongo case", e);
         }
-
-        // blob = new FileBlobStoreContainer();
-        // params.add(new Object[] { "SegmentTar -> SegmentTar (FBS)", new 
SegmentTarNodeStoreContainer(blob), new SegmentTarNodeStoreContainer(blob), 
true });
         return params;
     }
 


Reply via email to