Author: tomekr
Date: Thu Feb 21 11:22:36 2019
New Revision: 1854039
URL: http://svn.apache.org/viewvc?rev=1854039&view=rev
Log:
OAK-8070: The date-based copy-versions directive doesn't work correctly with
include-paths
Modified:
jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java
jackrabbit/oak/branches/1.8/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
Modified:
jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java?rev=1854039&r1=1854038&r2=1854039&view=diff
==============================================================================
---
jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
(original)
+++
jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
Thu Feb 21 11:22:36 2019
@@ -434,7 +434,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.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java?rev=1854039&r1=1854038&r2=1854039&view=diff
==============================================================================
---
jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
(original)
+++
jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
Thu Feb 21 11:22:36 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.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java?rev=1854039&r1=1854038&r2=1854039&view=diff
==============================================================================
---
jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java
(original)
+++
jackrabbit/oak/branches/1.8/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java
Thu Feb 21 11:22:36 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.8/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java?rev=1854039&r1=1854038&r2=1854039&view=diff
==============================================================================
---
jackrabbit/oak/branches/1.8/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
(original)
+++
jackrabbit/oak/branches/1.8/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
Thu Feb 21 11:22:36 2019
@@ -228,6 +228,33 @@ 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(config -> {
+ config.setCopyVersions(null);
+ config.setCopyOrphanedVersions(null);
+ }, targetNodeStore, "/");
+
+ // now only copy the recent versions
+ migrate(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 +362,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);