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/11/21 12:33:16 UTC
svn commit: r1770676 - in /jackrabbit/oak/trunk/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: Mon Nov 21 12:33:15 2016
New Revision: 1770676
URL: http://svn.apache.org/viewvc?rev=1770676&view=rev
Log:
OAK-5112: oak-upgrade breaking versionStorage node when started with copy-verisions=false
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java?rev=1770676&r1=1770675&r2=1770676&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java Mon Nov 21 12:33:15 2016
@@ -29,6 +29,7 @@ import javax.jcr.RepositoryException;
import com.google.common.base.Function;
import org.apache.commons.lang.StringUtils;
import org.apache.jackrabbit.oak.api.CommitFailedException;
+import org.apache.jackrabbit.oak.plugins.version.ReadWriteVersionManager;
import org.apache.jackrabbit.oak.spi.commit.CommitHook;
import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
import org.apache.jackrabbit.oak.spi.commit.CompositeEditorProvider;
@@ -46,6 +47,7 @@ import org.apache.jackrabbit.oak.upgrade
import org.apache.jackrabbit.oak.upgrade.nodestate.report.ReportingNodeState;
import org.apache.jackrabbit.oak.upgrade.nodestate.NodeStateCopier;
import org.apache.jackrabbit.oak.upgrade.version.VersionCopyConfiguration;
+import org.apache.jackrabbit.oak.upgrade.version.VersionHistoryUtil;
import org.apache.jackrabbit.oak.upgrade.version.VersionableEditor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -257,6 +259,10 @@ public class RepositorySidegrade {
try {
if (!onlyVerify) {
NodeBuilder targetRoot = target.getRoot().builder();
+ if (VersionHistoryUtil.getVersionStorage(targetRoot).exists() && !versionCopyConfiguration.skipOrphanedVersionsCopy()) {
+ LOG.warn("The version storage on destination already exists. Orphaned version histories will be skipped.");
+ versionCopyConfiguration.setCopyOrphanedVersions(null);
+ }
if (initializer != null) {
initializer.initialize(targetRoot);
@@ -307,8 +313,13 @@ public class RepositorySidegrade {
final List<CommitHook> hooks = new ArrayList<CommitHook>();
if (!versionCopyConfiguration.isCopyAll()) {
+ NodeBuilder versionStorage = VersionHistoryUtil.getVersionStorage(targetRoot);
+ if (!versionStorage.exists()) { // it's possible that this is a new repository and the version storage
+ // hasn't been created/copied yet
+ versionStorage = VersionHistoryUtil.createVersionStorage(targetRoot);
+ }
if (!versionCopyConfiguration.skipOrphanedVersionsCopy()) {
- copyVersionStorage(targetRoot, getVersionStorage(sourceRoot), getVersionStorage(targetRoot), versionCopyConfiguration);
+ copyVersionStorage(targetRoot, getVersionStorage(sourceRoot), versionStorage, versionCopyConfiguration);
}
hooks.add(new EditorHook(new VersionableEditor.Provider(sourceRoot, getWorkspaceName(), versionCopyConfiguration)));
}
Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java?rev=1770676&r1=1770675&r2=1770676&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java Mon Nov 21 12:33:15 2016
@@ -129,6 +129,7 @@ import org.apache.jackrabbit.oak.upgrade
import org.apache.jackrabbit.oak.upgrade.security.GroupEditorProvider;
import org.apache.jackrabbit.oak.upgrade.security.RestrictionEditorProvider;
import org.apache.jackrabbit.oak.upgrade.version.VersionCopyConfiguration;
+import org.apache.jackrabbit.oak.upgrade.version.VersionHistoryUtil;
import org.apache.jackrabbit.oak.upgrade.version.VersionableEditor;
import org.apache.jackrabbit.oak.upgrade.version.VersionablePropertiesEditor;
import org.apache.jackrabbit.spi.Name;
@@ -407,6 +408,10 @@ public class RepositoryUpgrade {
logger.info("Copying repository content from {} to Oak", config.getHomeDir());
try {
NodeBuilder targetBuilder = target.getRoot().builder();
+ if (VersionHistoryUtil.getVersionStorage(targetBuilder).exists() && !versionCopyConfiguration.skipOrphanedVersionsCopy()) {
+ logger.warn("The version storage on destination already exists. Orphaned version histories will be skipped.");
+ versionCopyConfiguration.setCopyOrphanedVersions(null);
+ }
final Root upgradeRoot = new UpgradeRoot(targetBuilder);
String workspaceName =
Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java?rev=1770676&r1=1770675&r2=1770676&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/version/VersionHistoryUtil.java Mon Nov 21 12:33:15 2016
@@ -18,12 +18,15 @@ package org.apache.jackrabbit.oak.upgrad
import static com.google.common.collect.Iterables.concat;
import static java.util.Collections.singleton;
+import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE;
import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
import static org.apache.jackrabbit.JcrConstants.JCR_VERSIONSTORAGE;
+import static org.apache.jackrabbit.oak.plugins.version.VersionConstants.REP_VERSIONSTORAGE;
import java.util.ArrayList;
import java.util.List;
+import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -75,7 +78,15 @@ public class VersionHistoryUtil {
}
public static NodeBuilder getVersionStorage(NodeBuilder root) {
- return root.child(JCR_SYSTEM).child(JCR_VERSIONSTORAGE);
+ return root.getChildNode(JCR_SYSTEM).getChildNode(JCR_VERSIONSTORAGE);
+ }
+
+ public static NodeBuilder createVersionStorage(NodeBuilder root) {
+ NodeBuilder vs = root.child(JCR_SYSTEM).child(JCR_VERSIONSTORAGE);
+ if (!vs.hasProperty(JCR_PRIMARYTYPE)) {
+ vs.setProperty(JCR_PRIMARYTYPE, REP_VERSIONSTORAGE, Type.NAME);
+ }
+ return vs;
}
}
Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java?rev=1770676&r1=1770675&r2=1770676&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java Mon Nov 21 12:33:15 2016
@@ -252,6 +252,8 @@ public class CopyVersionHistoryTest exte
assertMissingHistories(session,
VERSIONABLES_OLD, VERSIONABLES_OLD_ORPHANED, VERSIONABLES_YOUNG, VERSIONABLES_YOUNG_ORPHANED);
+ assertNotNull(session.getNode("/jcr:system/jcr:versionStorage")
+ .getPrimaryNodeType());
}
protected Session performCopy(VersionCopySetup setup) throws RepositoryException, IOException {