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 2017/05/29 14:51:39 UTC

svn commit: r1796637 - in /jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade: RepositorySidegrade.java nodestate/AbstractDecoratedNodeState.java

Author: tomekr
Date: Mon May 29 14:51:39 2017
New Revision: 1796637

URL: http://svn.apache.org/viewvc?rev=1796637&view=rev
Log:
OAK-6240: Sidegrade support for DocumentNodeStore to Secondary NodeStore

Optimize performance for the AbstractDecoratedNodeState#getProperty().
Don't enable the report wrapper for the previous root.

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/nodestate/AbstractDecoratedNodeState.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=1796637&r1=1796636&r2=1796637&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 May 29 14:51:39 2017
@@ -362,10 +362,13 @@ public class RepositorySidegrade {
                 LOG.info("Applying diff to {}", checkpoint.getName());
                 tracePaths = false;
             }
+
             NodeState currentRoot = wrapSource(checkpointRoot, tracePaths, true);
-            currentRoot.compareAgainstBaseState(previousRoot, new ApplyDiff(targetRoot));
+            NodeState baseRoot = previousRoot == EmptyNodeState.EMPTY_NODE ? previousRoot : wrapSource(previousRoot, false, true);
+            currentRoot.compareAgainstBaseState(baseRoot, new ApplyDiff(targetRoot));
+
             target.merge(targetRoot, EmptyHook.INSTANCE, CommitInfo.EMPTY);
-            previousRoot = currentRoot;
+            previousRoot = checkpointRoot;
 
             Map<String, String> checkpointInfo = source.checkpointInfo(checkpoint.getName());
             String newCheckpointName = target.checkpoint(checkpoint.getExpiryTime() - System.currentTimeMillis(), checkpointInfo);
@@ -384,8 +387,10 @@ public class RepositorySidegrade {
             LOG.info("Applying diff to head");
             tracePaths = false;
         }
+        
         NodeState currentRoot = wrapSource(sourceRoot, tracePaths, true);
-        currentRoot.compareAgainstBaseState(previousRoot, new ApplyDiff(targetRoot));
+        NodeState baseRoot = previousRoot == EmptyNodeState.EMPTY_NODE ? previousRoot : wrapSource(previousRoot, false, true);
+        currentRoot.compareAgainstBaseState(baseRoot, new ApplyDiff(targetRoot));
 
         LOG.info("Rewriting checkpoint names in /:async {}", nameToRevision);
         NodeBuilder async = targetRoot.getChildNode(":async");

Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/nodestate/AbstractDecoratedNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/nodestate/AbstractDecoratedNodeState.java?rev=1796637&r1=1796636&r2=1796637&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/nodestate/AbstractDecoratedNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/nodestate/AbstractDecoratedNodeState.java Mon May 29 14:51:39 2017
@@ -155,16 +155,16 @@ public abstract class AbstractDecoratedN
     @Override
     @CheckForNull
     public PropertyState getProperty(@Nonnull String name) {
-        if (delegate.hasProperty(name)) {
-            return decorate(delegate.getProperty(name));
-        } else {
+        PropertyState ps = delegate.getProperty(name);
+        if (ps == null) {
             for (PropertyState p : getNewPropertyStates()) {
                 if (name.equals(p.getName())) {
-                    return p;
+                    ps = p;
+                    break;
                 }
             }
-            return null;
         }
+        return ps;
     }
 
     @Override