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;
}