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 ba...@apache.org on 2015/05/27 19:12:49 UTC
svn commit: r1682082 - in /jackrabbit/oak/branches/1.2: ./
oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
Author: baedke
Date: Wed May 27 17:12:49 2015
New Revision: 1682082
URL: http://svn.apache.org/r1682082
Log:
OAK-2893: RepositoryUpgrade.copy() should optionally continue on errors.
Merged changes 1680633, 1680643 from trunk.
Modified:
jackrabbit/oak/branches/1.2/ (props changed)
jackrabbit/oak/branches/1.2/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
jackrabbit/oak/branches/1.2/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
Propchange: jackrabbit/oak/branches/1.2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed May 27 17:12:49 2015
@@ -1,3 +1,3 @@
/jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1672350,1672468,1672537,1672603,1672642,1672644,1672834-1672835,1673351,1673410,1673414,1673436,1673644,1673662-1673664,1673669,1673695,1674046,1674065,1674075,1674107,1674228,1674880,1675054-1675055,1675332,1675354,1675357,1675382,1675555,1675566,1675593,1676198,1676237,1676407,1676458,1676539,1676670,1676693,1676703,1676725,1677579,1677581,1677609,1677611,1677774,1677939,1677991,1678173,1678323,1678758,1678938,1678954,1679144,1679165,1679191,1679235,1680182,1680222,1680232,1680236,1680461,1680805-1680806,1680903,1681282,1681767,1681918
+/jackrabbit/oak/trunk:1672350,1672468,1672537,1672603,1672642,1672644,1672834-1672835,1673351,1673410,1673414,1673436,1673644,1673662-1673664,1673669,1673695,1674046,1674065,1674075,1674107,1674228,1674880,1675054-1675055,1675332,1675354,1675357,1675382,1675555,1675566,1675593,1676198,1676237,1676407,1676458,1676539,1676670,1676693,1676703,1676725,1677579,1677581,1677609,1677611,1677774,1677939,1677991,1678173,1678323,1678758,1678938,1678954,1679144,1679165,1679191,1679235,1680182,1680222,1680232,1680236,1680461,1680633,1680643,1680805-1680806,1680903,1681282,1681767,1681918
/jackrabbit/trunk:1345480
Modified: jackrabbit/oak/branches/1.2/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java?rev=1682082&r1=1682081&r2=1682082&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java (original)
+++ jackrabbit/oak/branches/1.2/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java Wed May 27 17:12:49 2015
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.upgrad
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Iterables.addAll;
+import static com.google.common.collect.Iterables.skip;
import static com.google.common.collect.Lists.newArrayList;
import static com.google.common.collect.Lists.newArrayListWithCapacity;
import static com.google.common.collect.Maps.newHashMap;
@@ -120,6 +121,8 @@ class JackrabbitNodeState extends Abstra
private final TypePredicate isFrozenNode;
+ private final boolean skipOnError;
+
/**
* Source namespace mappings (URI -< prefix).
*/
@@ -134,7 +137,8 @@ class JackrabbitNodeState extends Abstra
private final Map<String, PropertyState> properties;
private JackrabbitNodeState(
- JackrabbitNodeState parent, String name, NodePropBundle bundle) {
+ JackrabbitNodeState parent, String name, NodePropBundle bundle,
+ boolean skipOnError) {
this.parent = parent;
this.name = name;
this.path = null;
@@ -150,6 +154,7 @@ class JackrabbitNodeState extends Abstra
this.useBinaryReferences = parent.useBinaryReferences;
this.properties = createProperties(bundle);
this.nodes = createNodes(bundle);
+ this.skipOnError = skipOnError;
setChildOrder();
setVersionablePaths();
fixFrozenUuid();
@@ -160,7 +165,7 @@ class JackrabbitNodeState extends Abstra
PersistenceManager source, NodeState root,
Map<String, String> uriToPrefix, NodeId id, String path,
String workspaceName, Map<String, String> versionablePaths,
- boolean useBinaryReferences) {
+ boolean useBinaryReferences, boolean skipOnError) {
this.parent = null;
this.name = null;
this.path = path;
@@ -174,6 +179,7 @@ class JackrabbitNodeState extends Abstra
this.uriToPrefix = uriToPrefix;
this.versionablePaths = versionablePaths;
this.useBinaryReferences = useBinaryReferences;
+ this.skipOnError = skipOnError;
try {
NodePropBundle bundle = loader.loadBundle(id);
this.properties = createProperties(bundle);
@@ -235,10 +241,16 @@ class JackrabbitNodeState extends Abstra
if (id != null) {
try {
return new JackrabbitNodeState(
- this, name, loader.loadBundle(id));
+ this, name, loader.loadBundle(id), skipOnError);
} catch (ItemStateException e) {
- throw new IllegalStateException(
- "Unable to access child node " + name, e);
+ if (!skipOnError) {
+ throw new IllegalStateException(
+ "Unable to access child node " + name, e);
+ }
+ warn("Skipping broken child node entry " + name + " and changing the primary type to nt:unstructured", e);
+ properties.put(JCR_PRIMARYTYPE, PropertyStates.createProperty(
+ JCR_PRIMARYTYPE, NT_UNSTRUCTURED, Type.NAME));
+
}
}
checkValidName(name);
@@ -258,7 +270,7 @@ class JackrabbitNodeState extends Abstra
String name = entry.getKey();
try {
JackrabbitNodeState child = new JackrabbitNodeState(
- this, name, loader.loadBundle(entry.getValue()));
+ this, name, loader.loadBundle(entry.getValue()), skipOnError);
entries.add(new MemoryChildNodeEntry(name, child));
} catch (ItemStateException e) {
warn("Skipping broken child node entry " + name, e);
Modified: jackrabbit/oak/branches/1.2/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java?rev=1682082&r1=1682081&r2=1682082&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java (original)
+++ jackrabbit/oak/branches/1.2/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java Wed May 27 17:12:49 2015
@@ -139,6 +139,8 @@ public class RepositoryUpgrade {
private boolean earlyShutdown = false;
+ private boolean skipOnError = false;
+
private List<CommitHook> customCommitHooks = null;
/**
@@ -201,6 +203,14 @@ public class RepositoryUpgrade {
this.earlyShutdown = earlyShutdown;
}
+ public boolean isSkipOnError() {
+ return skipOnError;
+ }
+
+ public void setSkipOnError(boolean skipOnError) {
+ this.skipOnError = skipOnError;
+ }
+
/**
* Returns the list of custom CommitHooks to be applied before the final
* type validation, reference and indexing hooks.
@@ -687,13 +697,13 @@ public class RepositoryUpgrade {
copyState(system, JCR_VERSIONSTORAGE, new JackrabbitNodeState(
pm, root, uriToPrefix, VERSION_STORAGE_NODE_ID,
"/jcr:system/jcr:versionStorage",
- workspaceName, versionablePaths, copyBinariesByReference));
+ workspaceName, versionablePaths, copyBinariesByReference, skipOnError));
logger.info("Copying activities");
copyState(system, "jcr:activities", new JackrabbitNodeState(
pm, root, uriToPrefix, ACTIVITIES_NODE_ID,
"/jcr:system/jcr:activities",
- workspaceName, versionablePaths, copyBinariesByReference));
+ workspaceName, versionablePaths, copyBinariesByReference, skipOnError));
}
private String copyWorkspace(
@@ -707,7 +717,7 @@ public class RepositoryUpgrade {
NodeState state = new JackrabbitNodeState(
pm, root, uriToPrefix, ROOT_NODE_ID, "/",
- workspaceName, versionablePaths, copyBinariesByReference);
+ workspaceName, versionablePaths, copyBinariesByReference, skipOnError);
for (PropertyState property : state.getProperties()) {
builder.setProperty(property);