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 ju...@apache.org on 2013/12/04 02:08:05 UTC

svn commit: r1547665 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java

Author: jukka
Date: Wed Dec  4 01:08:05 2013
New Revision: 1547665

URL: http://svn.apache.org/r1547665
Log:
OAK-593: Segment-based MK

Simplify the rebase/reset logic

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java?rev=1547665&r1=1547664&r2=1547665&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java Wed Dec  4 01:08:05 2013
@@ -143,22 +143,33 @@ public class SegmentNodeStore implements
     @Override @Nonnull
     public NodeState rebase(@Nonnull NodeBuilder builder) {
         checkArgument(builder instanceof SegmentNodeBuilder);
-        NodeState newBase = getRoot();
-        NodeState oldBase = builder.getBaseState();
-        if (!fastEquals(oldBase, newBase)) {
-            NodeState head = builder.getNodeState();
-            ((SegmentNodeBuilder) builder).reset(newBase);
-            head.compareAgainstBaseState(oldBase, new ConflictAnnotatingRebaseDiff(builder));
+
+        SegmentNodeBuilder snb = (SegmentNodeBuilder) builder;
+        checkArgument(store == snb.getBaseState().getStore());
+
+        NodeState root = getRoot();
+        SegmentNodeState before = snb.getBaseState();
+        if (!fastEquals(before, root)) {
+            SegmentNodeState after = snb.getNodeState();
+            snb.reset(root);
+            after.compareAgainstBaseState(
+                    before, new ConflictAnnotatingRebaseDiff(snb));
         }
-        return builder.getNodeState();
+
+        return snb.getNodeState();
     }
 
     @Override @Nonnull
     public NodeState reset(@Nonnull NodeBuilder builder) {
         checkArgument(builder instanceof SegmentNodeBuilder);
-        NodeState state = getRoot();
-        ((SegmentNodeBuilder) builder).reset(state);
-        return state;
+
+        SegmentNodeBuilder snb = (SegmentNodeBuilder) builder;
+        checkArgument(store == snb.getBaseState().getStore());
+
+        NodeState root = getRoot();
+        snb.reset(root);
+
+        return root;
     }
 
     @Override