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 2016/04/21 16:39:39 UTC
svn commit: r1740330 - in /jackrabbit/oak/branches/1.4/oak-upgrade/src:
main/java/org/apache/jackrabbit/oak/upgrade/
main/java/org/apache/jackrabbit/oak/upgrade/cli/
main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/
test/java/org/apache/jackrabbi...
Author: tomekr
Date: Thu Apr 21 14:39:39 2016
New Revision: 1740330
URL: http://svn.apache.org/viewvc?rev=1740330&view=rev
Log:
OAK-4175 Allow to skip the repository initialization in oak-upgrade
Modified:
jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java
jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java
jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/OptionParserFactory.java
jackrabbit/oak/branches/1.4/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositorySidegradeTest.java
jackrabbit/oak/branches/1.4/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositoryUpgradeTest.java
Modified: jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java?rev=1740330&r1=1740329&r2=1740330&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java (original)
+++ jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java Thu Apr 21 14:39:39 2016
@@ -83,6 +83,8 @@ public class RepositorySidegrade {
private boolean skipLongNames = true;
+ private boolean skipInitialization = false;
+
private List<CommitHook> customCommitHooks = null;
VersionCopyConfiguration versionCopyConfiguration = new VersionCopyConfiguration();
@@ -195,6 +197,16 @@ public class RepositorySidegrade {
}
/**
+ * Skip the new repository initialization. Only copy content passed in the
+ * {@link #includePaths}.
+ *
+ * @param skipInitialization
+ */
+ public void setSkipInitialization(boolean skipInitialization) {
+ this.skipInitialization = skipInitialization;
+ }
+
+ /**
* Same as {@link #copy(RepositoryInitializer)}, but with no custom initializer.
*/
public void copy() throws RepositoryException {
@@ -219,9 +231,13 @@ public class RepositorySidegrade {
try {
NodeBuilder targetRoot = target.getRoot().builder();
- new InitialContent().initialize(targetRoot);
- if (initializer != null) {
- initializer.initialize(targetRoot);
+ if (skipInitialization) {
+ LOG.info("Skipping the repository initialization");
+ } else {
+ new InitialContent().initialize(targetRoot);
+ if (initializer != null) {
+ initializer.initialize(targetRoot);
+ }
}
final NodeState reportingSourceRoot = ReportingNodeState.wrap(source.getRoot(), new LoggingReporter(LOG, "Copying", 10000, -1));
Modified: jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java?rev=1740330&r1=1740329&r2=1740330&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java (original)
+++ jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java Thu Apr 21 14:39:39 2016
@@ -180,6 +180,8 @@ public class RepositoryUpgrade {
private boolean skipLongNames = true;
+ private boolean skipInitialization = false;
+
VersionCopyConfiguration versionCopyConfiguration = new VersionCopyConfiguration();
/**
@@ -258,6 +260,14 @@ public class RepositoryUpgrade {
this.skipLongNames = skipLongNames;
}
+ public boolean isSkipInitialization() {
+ return skipInitialization;
+ }
+
+ public void setSkipInitialization(boolean skipInitialization) {
+ this.skipInitialization = skipInitialization;
+ }
+
/**
* Returns the list of custom CommitHooks to be applied before the final
* type validation, reference and indexing hooks.
@@ -369,23 +379,27 @@ public class RepositoryUpgrade {
SecurityProviderImpl security = new SecurityProviderImpl(
mapSecurityConfig(config.getSecurityConfig()));
- // init target repository first
- logger.info("Initializing initial repository content from {}", config.getHomeDir());
- new InitialContent().initialize(targetBuilder);
- if (initializer != null) {
- initializer.initialize(targetBuilder);
- }
- logger.debug("InitialContent completed from {}", config.getHomeDir());
+ if (skipInitialization) {
+ logger.info("Skipping the repository initialization");
+ } else {
+ // init target repository first
+ logger.info("Initializing initial repository content from {}", config.getHomeDir());
+ new InitialContent().initialize(targetBuilder);
+ if (initializer != null) {
+ initializer.initialize(targetBuilder);
+ }
+ logger.debug("InitialContent completed from {}", config.getHomeDir());
- for (SecurityConfiguration sc : security.getConfigurations()) {
- RepositoryInitializer ri = sc.getRepositoryInitializer();
- ri.initialize(targetBuilder);
- logger.debug("Repository initializer '" + ri.getClass().getName() + "' completed", config.getHomeDir());
- }
- for (SecurityConfiguration sc : security.getConfigurations()) {
- WorkspaceInitializer wi = sc.getWorkspaceInitializer();
- wi.initialize(targetBuilder, workspaceName);
- logger.debug("Workspace initializer '" + wi.getClass().getName() + "' completed", config.getHomeDir());
+ for (SecurityConfiguration sc : security.getConfigurations()) {
+ RepositoryInitializer ri = sc.getRepositoryInitializer();
+ ri.initialize(targetBuilder);
+ logger.debug("Repository initializer '" + ri.getClass().getName() + "' completed", config.getHomeDir());
+ }
+ for (SecurityConfiguration sc : security.getConfigurations()) {
+ WorkspaceInitializer wi = sc.getWorkspaceInitializer();
+ wi.initialize(targetBuilder, workspaceName);
+ logger.debug("Workspace initializer '" + wi.getClass().getName() + "' completed", config.getHomeDir());
+ }
}
HashBiMap<String, String> uriToPrefix = HashBiMap.create();
@@ -393,32 +407,36 @@ public class RepositoryUpgrade {
copyNamespaces(targetBuilder, uriToPrefix);
logger.debug("Namespace registration completed.");
- logger.info("Copying registered node types");
- NodeTypeManager ntMgr = new ReadWriteNodeTypeManager() {
- @Override
- protected Tree getTypes() {
- return upgradeRoot.getTree(NODE_TYPES_PATH);
- }
-
- @Nonnull
- @Override
- protected Root getWriteRoot() {
- return upgradeRoot;
- }
- };
- copyNodeTypes(ntMgr, new ValueFactoryImpl(upgradeRoot, NamePathMapper.DEFAULT));
- logger.debug("Node type registration completed.");
-
- // migrate privileges
- logger.info("Copying registered privileges");
- PrivilegeConfiguration privilegeConfiguration = security.getConfiguration(PrivilegeConfiguration.class);
- copyCustomPrivileges(privilegeConfiguration.getPrivilegeManager(upgradeRoot, NamePathMapper.DEFAULT));
- logger.debug("Privilege registration completed.");
-
- // Triggers compilation of type information, which we need for
- // the type predicates used by the bulk copy operations below.
- new TypeEditorProvider(false).getRootEditor(
- targetBuilder.getBaseState(), targetBuilder.getNodeState(), targetBuilder, null);
+ if (skipInitialization) {
+ logger.info("Skipping registering node types and privileges");
+ } else {
+ logger.info("Copying registered node types");
+ NodeTypeManager ntMgr = new ReadWriteNodeTypeManager() {
+ @Override
+ protected Tree getTypes() {
+ return upgradeRoot.getTree(NODE_TYPES_PATH);
+ }
+
+ @Nonnull
+ @Override
+ protected Root getWriteRoot() {
+ return upgradeRoot;
+ }
+ };
+ copyNodeTypes(ntMgr, new ValueFactoryImpl(upgradeRoot, NamePathMapper.DEFAULT));
+ logger.debug("Node type registration completed.");
+
+ // migrate privileges
+ logger.info("Copying registered privileges");
+ PrivilegeConfiguration privilegeConfiguration = security.getConfiguration(PrivilegeConfiguration.class);
+ copyCustomPrivileges(privilegeConfiguration.getPrivilegeManager(upgradeRoot, NamePathMapper.DEFAULT));
+ logger.debug("Privilege registration completed.");
+
+ // Triggers compilation of type information, which we need for
+ // the type predicates used by the bulk copy operations below.
+ new TypeEditorProvider(false).getRootEditor(
+ targetBuilder.getBaseState(), targetBuilder.getNodeState(), targetBuilder, null);
+ }
final NodeState reportingSourceRoot = ReportingNodeState.wrap(
JackrabbitNodeState.createRootNodeState(
Modified: jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java?rev=1740330&r1=1740329&r2=1740330&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java (original)
+++ jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java Thu Apr 21 14:39:39 2016
@@ -93,6 +93,7 @@ public class MigrationFactory {
upgrade.setSkipLongNames(stores.isSkipLongNames());
upgrade.setSkipOnError(!options.isFailOnError());
upgrade.setEarlyShutdown(options.isEarlyShutdown());
+ upgrade.setSkipInitialization(options.isSkipInitialization());
ServiceLoader<CommitHook> loader = ServiceLoader.load(CommitHook.class);
Iterator<CommitHook> iterator = loader.iterator();
ImmutableList.Builder<CommitHook> builder = ImmutableList.<CommitHook> builder().addAll(iterator);
@@ -114,6 +115,7 @@ public class MigrationFactory {
sidegrade.setMerges(options.getMergePaths());
}
sidegrade.setSkipLongNames(stores.isSkipLongNames());
+ sidegrade.setSkipInitialization(options.isSkipInitialization());
return sidegrade;
}
Modified: jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java?rev=1740330&r1=1740329&r2=1740330&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java (original)
+++ jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/MigrationOptions.java Thu Apr 21 14:39:39 2016
@@ -50,6 +50,8 @@ public class MigrationOptions {
private final boolean earlyShutdown;
+ private final boolean skipInitialization;
+
public MigrationOptions(MigrationCliArguments args) {
this.copyBinariesByReference = !args.hasOption(OptionParserFactory.COPY_BINARIES);
this.mmap = args.hasOption(OptionParserFactory.MMAP);
@@ -76,6 +78,7 @@ public class MigrationOptions {
this.mergePaths = split(args.getOption(OptionParserFactory.MERGE_PATHS));
this.failOnError = args.hasOption(OptionParserFactory.FAIL_ON_ERROR);
this.earlyShutdown = args.hasOption(OptionParserFactory.EARLY_SHUTDOWN);
+ this.skipInitialization = args.hasOption(OptionParserFactory.SKIP_INIT);
logOptions();
}
@@ -119,6 +122,10 @@ public class MigrationOptions {
return earlyShutdown;
}
+ public boolean isSkipInitialization() {
+ return skipInitialization;
+ }
+
private void logOptions() {
if (copyBinariesByReference) {
log.info("DataStore needs to be shared with new repository");
@@ -158,6 +165,10 @@ public class MigrationOptions {
log.info("Source repository would be shutdown post copying of nodes");
}
+ if (skipInitialization) {
+ log.info("The repository initialization will be skipped");
+ }
+
log.info("Cache size: {} MB", cacheSizeInMB);
}
Modified: jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/OptionParserFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/OptionParserFactory.java?rev=1740330&r1=1740329&r2=1740330&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/OptionParserFactory.java (original)
+++ jackrabbit/oak/branches/1.4/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/parser/OptionParserFactory.java Thu Apr 21 14:39:39 2016
@@ -68,6 +68,8 @@ public class OptionParserFactory {
public static final String MERGE_PATHS = "merge-paths";
+ public static final String SKIP_INIT = "skip-init";
+
public static OptionParser create() {
OptionParser op = new OptionParser();
addUsageOptions(op);
@@ -132,5 +134,6 @@ public class OptionParserFactory {
op.accepts(EARLY_SHUTDOWN,
"Shutdown the source repository after nodes are copied and before the commit hooks are applied");
op.accepts(CACHE_SIZE, "Cache size in MB").withRequiredArg().ofType(Integer.class).defaultsTo(256);
+ op.accepts(SKIP_INIT, "Skip the repository initialization; only copy data");
}
}
Modified: jackrabbit/oak/branches/1.4/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositorySidegradeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositorySidegradeTest.java?rev=1740330&r1=1740329&r2=1740330&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositorySidegradeTest.java (original)
+++ jackrabbit/oak/branches/1.4/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositorySidegradeTest.java Thu Apr 21 14:39:39 2016
@@ -57,7 +57,7 @@ public class RepeatedRepositorySidegrade
}
final NodeStore target = getTargetNodeStore();
- doUpgradeRepository(sourceDir, target);
+ doUpgradeRepository(sourceDir, target, false);
fileStore.flush();
fileStore = FileStore.newFileStore(sourceDir).create();
@@ -73,7 +73,7 @@ public class RepeatedRepositorySidegrade
fileStore.close();
}
- doUpgradeRepository(sourceDir, target);
+ doUpgradeRepository(sourceDir, target, true);
fileStore.flush();
upgradeComplete = true;
@@ -81,11 +81,12 @@ public class RepeatedRepositorySidegrade
}
@Override
- protected void doUpgradeRepository(File source, NodeStore target) throws RepositoryException, IOException {
+ protected void doUpgradeRepository(File source, NodeStore target, boolean skipInit) throws RepositoryException, IOException {
FileStore fileStore = FileStore.newFileStore(source).create();
SegmentNodeStore segmentNodeStore = SegmentNodeStore.newSegmentNodeStore(fileStore).create();
try {
final RepositorySidegrade repositoryUpgrade = new RepositorySidegrade(segmentNodeStore, target);
+ repositoryUpgrade.setSkipInitialization(skipInit);
repositoryUpgrade.copy(new RepositoryInitializer() {
@Override
public void initialize(@Nonnull NodeBuilder builder) {
@@ -96,4 +97,4 @@ public class RepeatedRepositorySidegrade
fileStore.close();
}
}
-}
\ No newline at end of file
+}
Modified: jackrabbit/oak/branches/1.4/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositoryUpgradeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositoryUpgradeTest.java?rev=1740330&r1=1740329&r2=1740330&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.4/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositoryUpgradeTest.java (original)
+++ jackrabbit/oak/branches/1.4/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositoryUpgradeTest.java Thu Apr 21 14:39:39 2016
@@ -98,7 +98,7 @@ public class RepeatedRepositoryUpgradeTe
}
final NodeStore target = getTargetNodeStore();
- doUpgradeRepository(sourceDir, target);
+ doUpgradeRepository(sourceDir, target, false);
fileStore.flush();
// re-create source repo
@@ -112,19 +112,19 @@ public class RepeatedRepositoryUpgradeTe
source.shutdown();
}
- doUpgradeRepository(sourceDir, target);
+ doUpgradeRepository(sourceDir, target, true);
fileStore.flush();
upgradeComplete = true;
}
}
- @Override
- protected void doUpgradeRepository(File source, NodeStore target) throws RepositoryException, IOException {
+ protected void doUpgradeRepository(File source, NodeStore target, boolean skipInit) throws RepositoryException, IOException {
final RepositoryConfig config = RepositoryConfig.create(source);
final RepositoryContext context = RepositoryContext.create(config);
try {
final RepositoryUpgrade repositoryUpgrade = new RepositoryUpgrade(context, target);
+ repositoryUpgrade.setSkipInitialization(skipInit);
repositoryUpgrade.copy(new RepositoryInitializer() {
@Override
public void initialize(@Nonnull NodeBuilder builder) {