From f990bc3a6aa0b267608eda2b89365e8936e8d01c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20Re=CC=A8kawek?= Date: Tue, 7 Aug 2018 17:54:27 +0200 Subject: [PATCH] OAK-7687: :async node is being removed during the partial migration --- .../oak/upgrade/RepositorySidegrade.java | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java index 7d44c4366d..ac43d6e6f1 100755 --- a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java +++ b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java @@ -27,6 +27,7 @@ import java.util.Set; import javax.annotation.Nonnull; import javax.jcr.RepositoryException; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import org.apache.commons.lang.StringUtils; import org.apache.jackrabbit.JcrConstants; @@ -279,12 +280,6 @@ public class RepositorySidegrade { } } - private void removeCheckpointReferences(NodeBuilder builder) throws CommitFailedException { - // removing references to the checkpoints, - // which don't exist in the new repository - builder.setChildNode(":async"); - } - private void copyState() throws CommitFailedException, RepositoryException, IOException { boolean migrateCheckpoints = true; if (!isCompleteMigration() && !forceCheckpoints) { @@ -408,7 +403,6 @@ public class RepositorySidegrade { NodeState sourceRoot = wrapNodeState(source.getRoot(), true, false); NodeBuilder targetRoot = target.getRoot().builder(); copyWorkspace(sourceRoot, targetRoot); - removeCheckpointReferences(targetRoot); if (!versionCopyConfiguration.isCopyAll()) { NodeBuilder versionStorage = VersionHistoryUtil.getVersionStorage(targetRoot); if (!versionStorage.exists()) { // it's possible that this is a new repository and the version storage @@ -446,17 +440,17 @@ public class RepositorySidegrade { private void copyWorkspace(NodeState sourceRoot, NodeBuilder targetRoot) { final Set includes = calculateEffectiveIncludePaths(includePaths, sourceRoot); - final Set excludes; - if (versionCopyConfiguration.isCopyAll()) { - excludes = copyOf(this.excludePaths); - } else { - excludes = union(copyOf(this.excludePaths), of("/jcr:system/jcr:versionStorage")); + ImmutableSet.Builder excludes = new ImmutableSet.Builder<>(); + excludes.addAll(excludePaths); + if (!versionCopyConfiguration.isCopyAll()) { + excludes.add("/jcr:system/jcr:versionStorage"); } - final Set merges = union(copyOf(this.mergePaths), of("/jcr:system")); + excludes.add("/:async"); + final Set merges = union(copyOf(this.mergePaths), of("/jcr:system")); NodeStateCopier.builder() .include(includes) - .exclude(excludes) + .exclude(excludes.build()) .merge(merges) .copy(sourceRoot, targetRoot); -- 2.17.1