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/10/24 10:05:27 UTC

svn commit: r1766370 - /jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java

Author: tomekr
Date: Mon Oct 24 10:05:27 2016
New Revision: 1766370

URL: http://svn.apache.org/viewvc?rev=1766370&view=rev
Log:
OAK-4970: Optimize the version copying performance during sidegrade

Throw an exception if the workspace name can't be detected.

Modified:
    jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.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=1766370&r1=1766369&r2=1766370&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 Oct 24 10:05:27 2016
@@ -27,6 +27,7 @@ import javax.annotation.Nullable;
 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.nodetype.write.InitialContent;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
@@ -51,18 +52,14 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Predicates.notNull;
 import static com.google.common.collect.ImmutableSet.copyOf;
 import static com.google.common.collect.ImmutableSet.of;
-import static com.google.common.collect.Iterables.find;
 import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.Lists.transform;
 import static com.google.common.collect.Sets.union;
-import static java.util.Arrays.asList;
 import static java.util.Collections.sort;
 import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE;
 import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
-import static org.apache.jackrabbit.oak.Oak.DEFAULT_WORKSPACE_NAME;
 import static org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionConstants.NT_REP_PERMISSION_STORE;
 import static org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionConstants.REP_PERMISSION_STORE;
 import static org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.DEFAULT_EXCLUDE_PATHS;
@@ -290,7 +287,7 @@ public class RepositorySidegrade {
         builder.setChildNode(":async");
     }
 
-    private void copyState(NodeState sourceRoot, NodeBuilder targetRoot) throws CommitFailedException {
+    private void copyState(NodeState sourceRoot, NodeBuilder targetRoot) throws CommitFailedException, RepositoryException {
         copyWorkspace(sourceRoot, targetRoot);
 
         if (includeIndex) {
@@ -435,8 +432,16 @@ public class RepositorySidegrade {
         return superRoot.child("checkpoints").child(name);
     }
 
-    private String getWorkspaceName() {
-        return find(asList(System.getProperty(WORKSPACE_NAME_PROP), deriveWorkspaceName(), DEFAULT_WORKSPACE_NAME), notNull());
+    private String getWorkspaceName() throws RepositoryException {
+        String definedName = System.getProperty(WORKSPACE_NAME_PROP);
+        String detectedName = deriveWorkspaceName();
+        if (StringUtils.isNotBlank(definedName)) {
+            return definedName;
+        } else if (StringUtils.isNotBlank(detectedName)) {
+            return detectedName;
+        } else {
+            throw new RepositoryException("Can't detect the workspace name. Please use the system property " + WORKSPACE_NAME_PROP + " to set it manually.");
+        }
     }
 
     /**
@@ -458,7 +463,6 @@ public class RepositorySidegrade {
         if (nameCandidates.size() == 1) {
             return nameCandidates.get(0);
         } else {
-            LOG.warn("Can't find the workspace name. '{}' will be used. It can be overriden with system property {}", DEFAULT_WORKSPACE_NAME, WORKSPACE_NAME_PROP);
             return null;
         }
     }