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 to...@apache.org on 2017/03/14 08:13:22 UTC
svn commit: r1786851 - in /jackrabbit/oak/trunk: oak-doc/src/site/markdown/
oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/
oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/
oak-upgrade/src/main/java/org/apache/jackrabbit/oa...
Author: tomekr
Date: Tue Mar 14 08:13:22 2017
New Revision: 1786851
URL: http://svn.apache.org/viewvc?rev=1786851&view=rev
Log:
OAK-5920 Checkpoint migration will fail if the MissingBlobStore is used
-break the migration and introduce --skip-checkpoints option
Added:
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyCheckpointsTest.java
- copied, changed from r1786673, jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java
Modified:
jackrabbit/oak/trunk/oak-doc/src/site/markdown/migration.md
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/OptionParserFactory.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/AbstractOak2OakTest.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/container/SegmentNodeStoreContainer.java
Modified: jackrabbit/oak/trunk/oak-doc/src/site/markdown/migration.md
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-doc/src/site/markdown/migration.md?rev=1786851&r1=1786850&r2=1786851&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-doc/src/site/markdown/migration.md (original)
+++ jackrabbit/oak/trunk/oak-doc/src/site/markdown/migration.md Tue Mar 14 08:13:22 2017
@@ -215,11 +215,13 @@ When migrating an old SegmentMK reposito
* custom include-, exclude- or merge- paths are specified or
* the binaries are copied by references, no source datastore is specified and two different checkpoints contains different binary under the same path.
-In the second case oak-upgrade emits following warning:
+In the second case oak-upgrade emits following warning and breaks:
- Checkpoints won't be copied, because no external datastore has been specified. This will result in the full repository reindexing on the first start.
+ Checkpoints won't be copied, because no external datastore has been specified. This will result in the full repository reindexing on the first start. Use --skip-checkpoints to force the migration or see https://jackrabbit.apache.org/oak/docs/migration.html#Checkpoints_migration for more info.
-The easiest way to fix this issue is specifying the source datastore in the command line options (eg. `--src-datastore` or `--src-s3datastore`). The warning may also be ignored, but in this case the repository will be fully reindexing on the first startup, which may be a long process, especially for large instances. Repository won't be usable until the reindexing process is done.
+The easiest way to fix this issue is specifying the source datastore in the command line options (eg. `--src-datastore` or `--src-s3datastore`).
+
+The warning may also be ignored, but in this case the repository will be fully reindexed on the first startup. It may be a long process, especially for the big instance. Repository won't be usable until the reindexing process is done. Use `--skip-checkpoints` option to suppress the warning.
## Online blob migration with SplitBlobStore
Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java?rev=1786851&r1=1786850&r2=1786851&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java Tue Mar 14 08:13:22 2017
@@ -103,6 +103,8 @@ public class RepositorySidegrade {
*/
private Set<String> mergePaths = DEFAULT_MERGE_PATHS;
+ private boolean skipCheckpoints = false;
+
private boolean includeIndex = false;
private boolean filterLongNames = true;
@@ -233,6 +235,10 @@ public class RepositorySidegrade {
this.onlyVerify = onlyVerify;
}
+ public void setSkipCheckpoints(boolean skipCheckpoints) {
+ this.skipCheckpoints = skipCheckpoints;
+ }
+
/**
* Same as {@link #copy(RepositoryInitializer)}, but with no custom initializer.
*
@@ -304,14 +310,16 @@ public class RepositorySidegrade {
if (!isCompleteMigration()) {
LOG.info("Custom paths have been specified, checkpoints won't be migrated");
isRemoveCheckpointReferences = true;
+ } else if (skipCheckpoints) {
+ LOG.info("Checkpoints won't be migrated because of the --skip-checkpoints option");
+ isRemoveCheckpointReferences = true;
} else {
boolean checkpointsCopied;
try {
checkpointsCopied = copyCheckpoints(targetRoot);
} catch(UnsupportedOperationException e) {
removeCheckpoints();
- checkpointsCopied = false;
- LOG.warn("Checkpoints won't be copied, because no external datastore has been specified. This will result in the full repository reindexing on the first start. See https://jackrabbit.apache.org/oak/docs/migration.html#Checkpoints_migration for more info.");
+ throw new RepositoryException("Checkpoints won't be copied, because no external datastore has been specified. This will result in the full repository reindexing on the first start. Use --skip-checkpoints to force the migration or see https://jackrabbit.apache.org/oak/docs/migration.html#Checkpoints_migration for more info.");
}
if (!checkpointsCopied) {
LOG.info("Copying checkpoints is not supported for this combination of node stores");
Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java?rev=1786851&r1=1786850&r2=1786851&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java Tue Mar 14 08:13:22 2017
@@ -117,6 +117,7 @@ public class MigrationFactory {
sidegrade.setIncludeIndex(options.isIncludeIndex());
sidegrade.setVerify(options.isVerify());
sidegrade.setOnlyVerify(options.isOnlyVerify());
+ sidegrade.setSkipCheckpoints(options.isSkipCheckpoints());
return sidegrade;
}
Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java?rev=1786851&r1=1786850&r2=1786851&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java Tue Mar 14 08:13:22 2017
@@ -64,6 +64,8 @@ public class MigrationOptions {
private final boolean onlyVerify;
+ private final boolean skipCheckpoints;
+
private final String srcUser;
private final String srcPassword;
@@ -122,6 +124,7 @@ public class MigrationOptions {
this.ignoreMissingBinaries = args.hasOption(OptionParserFactory.IGNORE_MISSING_BINARIES);
this.verify = args.hasOption(OptionParserFactory.VERIFY);
this.onlyVerify = args.hasOption(OptionParserFactory.ONLY_VERIFY);
+ this.skipCheckpoints = args.hasOption(OptionParserFactory.SKIP_CHECKPOINTS);
this.srcUser = args.getOption(OptionParserFactory.SRC_USER);
this.srcPassword = args.getOption(OptionParserFactory.SRC_USER);
@@ -210,6 +213,10 @@ public class MigrationOptions {
return onlyVerify;
}
+ public boolean isSkipCheckpoints() {
+ return skipCheckpoints;
+ }
+
public String getSrcUser() {
return srcUser;
}
@@ -343,6 +350,10 @@ public class MigrationOptions {
log.info("Source DataStore external blobs: {}", srcExternalBlobs);
}
+ if (skipCheckpoints) {
+ log.info("Checkpoints won't be migrated");
+ }
+
log.info("Cache size: {} MB", cacheSizeInMB);
}
Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/OptionParserFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/OptionParserFactory.java?rev=1786851&r1=1786850&r2=1786851&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/OptionParserFactory.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/OptionParserFactory.java Tue Mar 14 08:13:22 2017
@@ -82,6 +82,8 @@ public class OptionParserFactory {
public static final String ONLY_VERIFY = "only-verify";
+ public static final String SKIP_CHECKPOINTS = "skip-checkpoints";
+
public static OptionParser create() {
OptionParser op = new OptionParser();
addUsageOptions(op);
@@ -153,5 +155,6 @@ public class OptionParserFactory {
op.accepts(SKIP_NAME_CHECK, "Skip the initial phase of testing node name lengths");
op.accepts(VERIFY, "After the sidegrade check whether the source repository is exactly the same as destination");
op.accepts(ONLY_VERIFY, "Performs only --" + VERIFY + ", without copying content");
+ op.accepts(SKIP_CHECKPOINTS, "Don't copy checkpoints on the full segment->segment migration");
}
}
Copied: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyCheckpointsTest.java (from r1786673, jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyCheckpointsTest.java?p2=jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyCheckpointsTest.java&p1=jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java&r1=1786673&r2=1786851&rev=1786851&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyCheckpointsTest.java Tue Mar 14 08:13:22 2017
@@ -14,15 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.upgrade.cli.blob;
-
-import static java.util.Arrays.asList;
-import static org.junit.Assert.assertEquals;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
+package org.apache.jackrabbit.oak.upgrade;
import com.google.common.base.Joiner;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -30,7 +22,6 @@ import org.apache.jackrabbit.oak.upgrade
import org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade;
import org.apache.jackrabbit.oak.upgrade.cli.container.BlobStoreContainer;
import org.apache.jackrabbit.oak.upgrade.cli.container.FileDataStoreContainer;
-import org.apache.jackrabbit.oak.upgrade.cli.container.JdbcNodeStoreContainer;
import org.apache.jackrabbit.oak.upgrade.cli.container.NodeStoreContainer;
import org.apache.jackrabbit.oak.upgrade.cli.container.SegmentNodeStoreContainer;
import org.apache.jackrabbit.oak.upgrade.cli.container.SegmentTarNodeStoreContainer;
@@ -40,6 +31,7 @@ import org.apache.jackrabbit.oak.upgrade
import org.apache.jackrabbit.oak.upgrade.cli.parser.MigrationOptions;
import org.apache.jackrabbit.oak.upgrade.cli.parser.OptionParserFactory;
import org.apache.jackrabbit.oak.upgrade.cli.parser.StoreArguments;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -48,105 +40,48 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.jcr.RepositoryException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import static java.util.Arrays.asList;
+import static org.junit.Assert.fail;
@RunWith(Parameterized.class)
-public class CopyBinariesTest extends AbstractOak2OakTest {
+public class CopyCheckpointsTest extends AbstractOak2OakTest {
+
+ private enum Result {
+ EXCEPTION, CHECKPOINTS_MISSING, CHECKPOINTS_COPIED
+ }
- private static final Logger log = LoggerFactory.getLogger(CopyBinariesTest.class);
+ private static final Logger log = LoggerFactory.getLogger(CopyCheckpointsTest.class);
@Parameterized.Parameters(name = "{0}")
public static Collection<Object[]> data() throws IOException {
List<Object[]> params = new ArrayList<Object[]>();
BlobStoreContainer blob = new FileDataStoreContainer();
- BlobStoreContainer blob2 = new FileDataStoreContainer();
params.add(new Object[]{
- "Copy references, no blobstores defined, segment -> segment",
+ "Fails on missing blobstore",
new SegmentNodeStoreContainer(blob),
new SegmentNodeStoreContainer(blob),
asList(),
- DatastoreArguments.BlobMigrationCase.COPY_REFERENCES,
- false
- });
- params.add(new Object[]{
- "Copy references, no blobstores defined, segment-tar -> segment-tar",
- new SegmentTarNodeStoreContainer(blob),
- new SegmentTarNodeStoreContainer(blob),
- asList(),
- DatastoreArguments.BlobMigrationCase.COPY_REFERENCES,
- false
+ Result.EXCEPTION
});
params.add(new Object[]{
- "Copy references, no blobstores defined, segment -> segment-tar",
+ "Suppress the warning",
new SegmentNodeStoreContainer(blob),
- new SegmentTarNodeStoreContainer(blob),
- asList(),
- DatastoreArguments.BlobMigrationCase.COPY_REFERENCES,
- false
- });
- params.add(new Object[]{
- "Copy references, no blobstores defined, document -> segment-tar",
- new JdbcNodeStoreContainer(blob),
new SegmentNodeStoreContainer(blob),
- asList("--src-user=sa", "--src-password=sa"),
- DatastoreArguments.BlobMigrationCase.COPY_REFERENCES,
- false
+ asList("--skip-checkpoints"),
+ Result.CHECKPOINTS_MISSING
});
params.add(new Object[]{
- "Copy references, no blobstores defined, segment-tar -> document",
- new SegmentTarNodeStoreContainer(blob),
- new JdbcNodeStoreContainer(blob),
- asList("--user=sa", "--password=sa"),
- DatastoreArguments.BlobMigrationCase.UNSUPPORTED,
- false
- });
- params.add(new Object[]{
- "Missing source, external destination",
- new SegmentTarNodeStoreContainer(blob),
- new SegmentTarNodeStoreContainer(blob),
- asList("--datastore=" + blob.getDescription()),
- DatastoreArguments.BlobMigrationCase.UNSUPPORTED,
- false
- });
- params.add(new Object[]{
- "Copy embedded to embedded, no blobstores defined",
- new SegmentTarNodeStoreContainer(),
- new SegmentTarNodeStoreContainer(),
- asList(),
- DatastoreArguments.BlobMigrationCase.EMBEDDED_TO_EMBEDDED,
- true
- });
- params.add(new Object[]{
- "Copy embedded to external, no blobstores defined",
- new SegmentTarNodeStoreContainer(),
- new SegmentTarNodeStoreContainer(blob),
- asList("--datastore=" + blob.getDescription()),
- DatastoreArguments.BlobMigrationCase.EMBEDDED_TO_EXTERNAL,
- true
- });
- params.add(new Object[]{
- "Copy references, src blobstore defined",
+ "Source data store defined, checkpoints migrated",
new SegmentTarNodeStoreContainer(blob),
new SegmentTarNodeStoreContainer(blob),
asList("--src-datastore=" + blob.getDescription()),
- DatastoreArguments.BlobMigrationCase.COPY_REFERENCES,
- true
- });
- params.add(new Object[]{
- "Copy external to embedded, src blobstore defined",
- new SegmentTarNodeStoreContainer(blob),
- new SegmentTarNodeStoreContainer(),
- asList("--copy-binaries", "--src-datastore=" + blob.getDescription()),
- DatastoreArguments.BlobMigrationCase.EXTERNAL_TO_EMBEDDED,
- true
- });
- params.add(new Object[]{
- "Copy external to external, src blobstore defined",
- new SegmentTarNodeStoreContainer(blob),
- new SegmentTarNodeStoreContainer(blob2),
- asList("--copy-binaries", "--src-datastore=" + blob.getDescription(), "--datastore=" + blob2.getDescription()),
- DatastoreArguments.BlobMigrationCase.EXTERNAL_TO_EXTERNAL,
- true
+ Result.CHECKPOINTS_COPIED
});
return params;
}
@@ -157,16 +92,13 @@ public class CopyBinariesTest extends Ab
private final List<String> args;
- private final DatastoreArguments.BlobMigrationCase blobMigrationCase;
-
- private final boolean supportsCheckpointMigration;
+ private final Result expectedResult;
- public CopyBinariesTest(String name, NodeStoreContainer source, NodeStoreContainer destination, List<String> args, DatastoreArguments.BlobMigrationCase blobMigrationCase, boolean supportsCheckpointMigration) throws IOException, CliArgumentException {
+ public CopyCheckpointsTest(String name, NodeStoreContainer source, NodeStoreContainer destination, List<String> args, Result expectedResult) throws IOException, CliArgumentException {
this.source = source;
this.destination = destination;
this.args = args;
- this.blobMigrationCase = blobMigrationCase;
- this.supportsCheckpointMigration = supportsCheckpointMigration;
+ this.expectedResult = expectedResult;
this.source.clean();
this.destination.clean();
@@ -207,28 +139,30 @@ public class CopyBinariesTest extends Ab
StoreArguments stores = new StoreArguments(options, cliArgs.getArguments());
DatastoreArguments datastores = new DatastoreArguments(options, stores, stores.srcUsesEmbeddedDatastore());
OakUpgrade.migrate(options, stores, datastores);
- assertEquals(blobMigrationCase, datastores.getBlobMigrationCase());
- } catch(CliArgumentException e) {
- if (blobMigrationCase == DatastoreArguments.BlobMigrationCase.UNSUPPORTED) {
+ } catch(RuntimeException e) {
+ if (expectedResult == Result.EXCEPTION) {
return;
} else {
throw e;
}
}
+ if (expectedResult == Result.EXCEPTION) {
+ fail("Migration should fail");
+ }
createSession();
}
@Test
@Override
public void validateMigration() throws RepositoryException, IOException, CliArgumentException {
- if (blobMigrationCase == DatastoreArguments.BlobMigrationCase.UNSUPPORTED) {
- return;
+ switch (expectedResult) {
+ case CHECKPOINTS_COPIED:
+ verifyCheckpoint();
+ break;
+
+ case CHECKPOINTS_MISSING:
+ verifyEmptyAsync();
+ break;
}
- super.validateMigration();
- }
-
- @Override
- protected boolean supportsCheckpointMigration() {
- return supportsCheckpointMigration;
}
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/AbstractOak2OakTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/AbstractOak2OakTest.java?rev=1786851&r1=1786850&r2=1786851&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/AbstractOak2OakTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/AbstractOak2OakTest.java Tue Mar 14 08:13:22 2017
@@ -216,7 +216,7 @@ public abstract class AbstractOak2OakTes
}
}
- private void verifyCheckpoint() {
+ protected void verifyCheckpoint() {
assertEquals("after", destination.getRoot().getString("checkpoint-state"));
Map<String, String> info = destination.checkpointInfo(checkpointReference);
@@ -250,7 +250,7 @@ public abstract class AbstractOak2OakTes
}
// OAK-2869
- private void verifyEmptyAsync() {
+ protected void verifyEmptyAsync() {
NodeState state = destination.getRoot().getChildNode(":async");
assertFalse(state.hasProperty("test"));
}
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java?rev=1786851&r1=1786850&r2=1786851&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/blob/CopyBinariesTest.java Tue Mar 14 08:13:22 2017
@@ -65,88 +65,77 @@ public class CopyBinariesTest extends Ab
new SegmentNodeStoreContainer(blob),
new SegmentNodeStoreContainer(blob),
asList(),
- DatastoreArguments.BlobMigrationCase.COPY_REFERENCES,
- false
+ DatastoreArguments.BlobMigrationCase.COPY_REFERENCES
});
params.add(new Object[]{
"Copy references, no blobstores defined, segment-tar -> segment-tar",
new SegmentTarNodeStoreContainer(blob),
new SegmentTarNodeStoreContainer(blob),
asList(),
- DatastoreArguments.BlobMigrationCase.COPY_REFERENCES,
- false
+ DatastoreArguments.BlobMigrationCase.COPY_REFERENCES
});
params.add(new Object[]{
"Copy references, no blobstores defined, segment -> segment-tar",
new SegmentNodeStoreContainer(blob),
new SegmentTarNodeStoreContainer(blob),
asList(),
- DatastoreArguments.BlobMigrationCase.COPY_REFERENCES,
- false
+ DatastoreArguments.BlobMigrationCase.COPY_REFERENCES
});
params.add(new Object[]{
"Copy references, no blobstores defined, document -> segment-tar",
new JdbcNodeStoreContainer(blob),
new SegmentNodeStoreContainer(blob),
asList("--src-user=sa", "--src-password=sa"),
- DatastoreArguments.BlobMigrationCase.COPY_REFERENCES,
- false
+ DatastoreArguments.BlobMigrationCase.COPY_REFERENCES
});
params.add(new Object[]{
"Copy references, no blobstores defined, segment-tar -> document",
new SegmentTarNodeStoreContainer(blob),
new JdbcNodeStoreContainer(blob),
asList("--user=sa", "--password=sa"),
- DatastoreArguments.BlobMigrationCase.UNSUPPORTED,
- false
+ DatastoreArguments.BlobMigrationCase.UNSUPPORTED
});
params.add(new Object[]{
"Missing source, external destination",
new SegmentTarNodeStoreContainer(blob),
new SegmentTarNodeStoreContainer(blob),
asList("--datastore=" + blob.getDescription()),
- DatastoreArguments.BlobMigrationCase.UNSUPPORTED,
- false
+ DatastoreArguments.BlobMigrationCase.UNSUPPORTED
});
params.add(new Object[]{
"Copy embedded to embedded, no blobstores defined",
new SegmentTarNodeStoreContainer(),
new SegmentTarNodeStoreContainer(),
asList(),
- DatastoreArguments.BlobMigrationCase.EMBEDDED_TO_EMBEDDED,
- true
+ DatastoreArguments.BlobMigrationCase.EMBEDDED_TO_EMBEDDED
});
params.add(new Object[]{
"Copy embedded to external, no blobstores defined",
new SegmentTarNodeStoreContainer(),
new SegmentTarNodeStoreContainer(blob),
asList("--datastore=" + blob.getDescription()),
- DatastoreArguments.BlobMigrationCase.EMBEDDED_TO_EXTERNAL,
- true
+ DatastoreArguments.BlobMigrationCase.EMBEDDED_TO_EXTERNAL
});
params.add(new Object[]{
"Copy references, src blobstore defined",
new SegmentTarNodeStoreContainer(blob),
new SegmentTarNodeStoreContainer(blob),
asList("--src-datastore=" + blob.getDescription()),
- DatastoreArguments.BlobMigrationCase.COPY_REFERENCES,
- true
+ DatastoreArguments.BlobMigrationCase.COPY_REFERENCES
});
params.add(new Object[]{
"Copy external to embedded, src blobstore defined",
new SegmentTarNodeStoreContainer(blob),
new SegmentTarNodeStoreContainer(),
asList("--copy-binaries", "--src-datastore=" + blob.getDescription()),
- DatastoreArguments.BlobMigrationCase.EXTERNAL_TO_EMBEDDED,
- true
+ DatastoreArguments.BlobMigrationCase.EXTERNAL_TO_EMBEDDED
});
params.add(new Object[]{
"Copy external to external, src blobstore defined",
new SegmentTarNodeStoreContainer(blob),
new SegmentTarNodeStoreContainer(blob2),
asList("--copy-binaries", "--src-datastore=" + blob.getDescription(), "--datastore=" + blob2.getDescription()),
- DatastoreArguments.BlobMigrationCase.EXTERNAL_TO_EXTERNAL,
- true
+ DatastoreArguments.BlobMigrationCase.EXTERNAL_TO_EXTERNAL
});
return params;
}
@@ -159,14 +148,11 @@ public class CopyBinariesTest extends Ab
private final DatastoreArguments.BlobMigrationCase blobMigrationCase;
- private final boolean supportsCheckpointMigration;
-
- public CopyBinariesTest(String name, NodeStoreContainer source, NodeStoreContainer destination, List<String> args, DatastoreArguments.BlobMigrationCase blobMigrationCase, boolean supportsCheckpointMigration) throws IOException, CliArgumentException {
+ public CopyBinariesTest(String name, NodeStoreContainer source, NodeStoreContainer destination, List<String> args, DatastoreArguments.BlobMigrationCase blobMigrationCase) throws IOException, CliArgumentException {
this.source = source;
this.destination = destination;
this.args = args;
this.blobMigrationCase = blobMigrationCase;
- this.supportsCheckpointMigration = supportsCheckpointMigration;
this.source.clean();
this.destination.clean();
@@ -226,9 +212,4 @@ public class CopyBinariesTest extends Ab
}
super.validateMigration();
}
-
- @Override
- protected boolean supportsCheckpointMigration() {
- return supportsCheckpointMigration;
- }
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/container/SegmentNodeStoreContainer.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/container/SegmentNodeStoreContainer.java?rev=1786851&r1=1786850&r2=1786851&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/container/SegmentNodeStoreContainer.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/container/SegmentNodeStoreContainer.java Tue Mar 14 08:13:22 2017
@@ -72,7 +72,10 @@ public class SegmentNodeStoreContainer i
@Override
public void close() {
- fs.close();
+ if (fs != null) {
+ fs.close();
+ fs = null;
+ }
}
@Override