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/20 18:35:04 UTC
svn commit: r1680633 - in
/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade:
JackrabbitNodeState.java RepositoryUpgrade.java
Author: baedke
Date: Wed May 20 16:35:04 2015
New Revision: 1680633
URL: http://svn.apache.org/r1680633
Log:
OAK-2893: RepositoryUpgrade.copy() should optionally continue on errors.
Implemented basic support.
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java
Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java?rev=1680633&r1=1680632&r2=1680633&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/JackrabbitNodeState.java Wed May 20 16:35:04 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,13 @@ 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, e);
}
}
checkValidName(name);
@@ -258,7 +267,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/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=1680633&r1=1680632&r2=1680633&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 Wed May 20 16:35:04 2015
@@ -137,6 +137,8 @@ public class RepositoryUpgrade {
private boolean copyBinariesByReference = false;
+ private boolean skipOnError = false;
+
private List<CommitHook> customCommitHooks = null;
/**
@@ -191,6 +193,14 @@ public class RepositoryUpgrade {
this.copyBinariesByReference = copyBinariesByReference;
}
+ 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.
@@ -677,13 +687,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(
@@ -697,7 +707,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);