diff --git a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionCopier.java b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionCopier.java index 25ff756..63077d3 100644 --- a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionCopier.java +++ b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionCopier.java @@ -25,6 +25,7 @@ import java.util.Calendar; import java.util.Iterator; import org.apache.jackrabbit.oak.api.Type; +import org.apache.jackrabbit.oak.plugins.index.IndexUtils; import org.apache.jackrabbit.oak.plugins.nodetype.TypePredicate; import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; @@ -33,6 +34,7 @@ import org.apache.jackrabbit.oak.upgrade.DescendantsIterator; import org.apache.jackrabbit.oak.upgrade.nodestate.NodeStateCopier; import org.apache.jackrabbit.util.ISO8601; +import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME; import static org.apache.jackrabbit.oak.plugins.version.VersionConstants.VERSION_STORE_PATH; import static org.apache.jackrabbit.oak.upgrade.version.VersionHistoryUtil.getVersionHistoryPath; @@ -64,14 +66,15 @@ public class VersionCopier { while (versionStorageIterator.hasNext()) { final NodeState versionHistoryBucket = versionStorageIterator.next(); for (String versionHistory : versionHistoryBucket.getChildNodeNames()) { - versionCopier.copyVersionHistory(versionHistory, config.getOrphanedMinDate()); + versionCopier.doCopyVersionHistory(versionHistory, config.getOrphanedMinDate()); } } + versionCopier.markUuidToReindex(); } /** - * Copy history filtering versions using passed date and returns @{code - * true} if at least one version has been copied. + * Copy history filtering versions using passed date and returns {@code + * true} if the history has been copied. * * @param versionableUuid * Name of the version history node @@ -80,6 +83,14 @@ public class VersionCopier { * @return {@code true} if at least one version has been copied */ public boolean copyVersionHistory(String versionableUuid, Calendar minDate) { + boolean copied = doCopyVersionHistory(versionableUuid, minDate); + if (copied) { + markUuidToReindex(); + } + return copied; + } + + private boolean doCopyVersionHistory(String versionableUuid, Calendar minDate) { final String versionHistoryPath = getVersionHistoryPath(versionableUuid); final NodeState versionHistory = getVersionHistoryNodeState(sourceRoot, versionableUuid); final Calendar lastModified = getVersionHistoryLastModified(versionHistory); @@ -111,4 +122,8 @@ public class VersionCopier { } return youngest; } + + private void markUuidToReindex() { + IndexUtils.getOrCreateOakIndex(targetRoot).getChildNode("uuid").setProperty(REINDEX_PROPERTY_NAME, true); + } }