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 2019/02/21 11:57:19 UTC
svn commit: r1854043 - in /jackrabbit/oak/branches/1.6/oak-upgrade/src:
main/java/org/apache/jackrabbit/oak/upgrade/
main/java/org/apache/jackrabbit/oak/upgrade/version/
test/java/org/apache/jackrabbit/oak/upgrade/
Author: tomekr
Date: Thu Feb 21 11:57:19 2019
New Revision: 1854043
URL: http://svn.apache.org/viewvc?rev=1854043&view=rev
Log:
OAK-8070: The date-based copy-versions directive doesn't work correctly with include-paths
Modified:
jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java
jackrabbit/oak/branches/1.6/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
Modified: jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java?rev=1854043&r1=1854042&r2=1854043&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java (original)
+++ jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java Thu Feb 21 11:57:19 2019
@@ -426,7 +426,8 @@ public class RepositorySidegrade {
private void removeVersions() throws CommitFailedException {
NodeState root = target.getRoot();
NodeState wrappedRoot = FilteringNodeState.wrap(PathUtils.ROOT_PATH, root, includePaths, excludePaths, FilteringNodeState.NONE, FilteringNodeState.NONE);
- List<String> versionablesToStrip = VersionHistoryUtil.getVersionableNodes(wrappedRoot, new TypePredicate(root, JcrConstants.MIX_VERSIONABLE), versionCopyConfiguration.getVersionsMinDate());
+ NodeState versionStorage = getVersionStorage(root);
+ List<String> versionablesToStrip = VersionHistoryUtil.getVersionableNodes(wrappedRoot, versionStorage, new TypePredicate(root, JcrConstants.MIX_VERSIONABLE), versionCopyConfiguration.getVersionsMinDate());
if (!versionablesToStrip.isEmpty()) {
LOG.info("Removing version histories for included paths");
NodeBuilder newRoot = VersionHistoryUtil.removeVersions(root, versionablesToStrip);
Modified: jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java?rev=1854043&r1=1854042&r2=1854043&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java (original)
+++ jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java Thu Feb 21 11:57:19 2019
@@ -564,7 +564,8 @@ public class RepositoryUpgrade {
private void removeVersions() throws CommitFailedException {
NodeState root = target.getRoot();
NodeState wrappedRoot = FilteringNodeState.wrap(PathUtils.ROOT_PATH, root, includePaths, excludePaths, FilteringNodeState.NONE, FilteringNodeState.NONE);
- List<String> versionablesToStrip = VersionHistoryUtil.getVersionableNodes(wrappedRoot, new TypePredicate(root, JcrConstants.MIX_VERSIONABLE), versionCopyConfiguration.getVersionsMinDate());
+ NodeState versionStorage = getVersionStorage(root);
+ List<String> versionablesToStrip = VersionHistoryUtil.getVersionableNodes(wrappedRoot, versionStorage, new TypePredicate(root, JcrConstants.MIX_VERSIONABLE), versionCopyConfiguration.getVersionsMinDate());
if (!versionablesToStrip.isEmpty()) {
logger.info("Removing version histories for included paths");
NodeBuilder newRoot = VersionHistoryUtil.removeVersions(root, versionablesToStrip);
Modified: jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java?rev=1854043&r1=1854042&r2=1854043&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java (original)
+++ jackrabbit/oak/branches/1.6/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java Thu Feb 21 11:57:19 2019
@@ -111,9 +111,8 @@ public class VersionHistoryUtil {
return vs;
}
- public static List<String> getVersionableNodes(NodeState root, TypePredicate isVersionable, Calendar olderThan) {
+ public static List<String> getVersionableNodes(NodeState root, NodeState versionStorage, TypePredicate isVersionable, Calendar olderThan) {
List<String> paths = new ArrayList<>();
- NodeState versionStorage = getVersionStorage(root);
getVersionableNodes(root, versionStorage, isVersionable, olderThan, PathUtils.ROOT_PATH, paths);
return paths;
}
Modified: jackrabbit/oak/branches/1.6/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.6/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java?rev=1854043&r1=1854042&r2=1854043&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.6/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java (original)
+++ jackrabbit/oak/branches/1.6/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java Thu Feb 21 11:57:19 2019
@@ -228,6 +228,39 @@ public class CopyVersionHistoryTest exte
}
@Test
+ public void onlyReferencedAfterDateWithIncludePaths() throws RepositoryException, IOException {
+ final NodeStore targetNodeStore = SegmentNodeStoreBuilders.builder(new MemoryStore()).build();
+
+ // initialize the target node store, with no versions at all
+ migrate(new VersionCopySetup() {
+ @Override
+ public void setup(VersionCopyConfiguration config) {
+ config.setCopyVersions(null);
+ config.setCopyOrphanedVersions(null);
+ }
+ }, targetNodeStore, "/");
+
+ // now only copy the recent versions
+ migrate(new VersionCopySetup() {
+ @Override
+ public void setup(VersionCopyConfiguration config) {
+ config.setCopyVersions(betweenHistories);
+ config.setCopyOrphanedVersions(null);
+ }
+ }, targetNodeStore, "/versionables");
+
+ repository = (RepositoryImpl) new Jcr(new Oak(targetNodeStore)).createRepository();
+ Session session = repository.login(AbstractRepositoryUpgradeTest.CREDENTIALS);
+ sessions.add(session);
+
+ assertVersionableProperties(session, VERSIONABLES_YOUNG);
+ assertExistingHistories(session, VERSIONABLES_YOUNG);
+ assertVersionablePaths(session, VERSIONABLES_YOUNG);
+ assertMissingHistories(session, VERSIONABLES_OLD, VERSIONABLES_OLD_ORPHANED, VERSIONABLES_YOUNG_ORPHANED);
+ assertVersionsCanBeRestored(session, VERSIONABLES_YOUNG);
+ }
+
+ @Test
public void overrideOrphaned() throws RepositoryException, IOException {
Session session = performCopy(new VersionCopySetup() {
@Override
@@ -335,6 +368,7 @@ public class CopyVersionHistoryTest exte
for (final String name : names) {
final String path = pathPrefix + name;
Node versionable = session.getNode(path);
+ assertTrue(versionable.isNodeType(MIX_VERSIONABLE));
String versionHistoryUuid = versionable.getProperty(JCR_VERSIONHISTORY).getString();
assertEquals(getVersionHistoryForPath(session, path).getIdentifier(), versionHistoryUuid);