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 {