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/09/20 20:48:58 UTC

svn commit: r1525095 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/ oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/ oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/nodetype/ oa...

Author: jukka
Date: Fri Sep 20 18:48:58 2013
New Revision: 1525095

URL: http://svn.apache.org/r1525095
Log:
OAK-659: Move purge logic for transient changes below the NodeBuilder interface

Use builders instead of branches

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/JournalTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/MergeTest.java
    jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java?rev=1525095&r1=1525094&r2=1525095&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java Fri Sep 20 18:48:58 2013
@@ -36,7 +36,6 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
-import org.apache.jackrabbit.oak.spi.state.NodeStoreBranch;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -88,8 +87,7 @@ public class AsyncIndexUpdate implements
 
         preAsyncRun(store);
 
-        NodeStoreBranch branch = store.branch();
-        NodeBuilder builder = branch.getHead().builder();
+        NodeBuilder builder = store.getRoot().builder();
         NodeBuilder async = builder.child(ASYNC);
 
         NodeState before = null;
@@ -107,8 +105,7 @@ public class AsyncIndexUpdate implements
             try {
                 async.setProperty(name, checkpoint);
                 postAsyncRunStatus(builder);
-                branch.setRoot(builder.getNodeState());
-                branch.merge(new CommitHook() {
+                store.merge(builder, new CommitHook() {
                     @Override
                     @Nonnull
                     public NodeState processCommit(NodeState before,
@@ -144,12 +141,10 @@ public class AsyncIndexUpdate implements
     }
 
     private void preAsyncRun(NodeStore store) {
-        NodeStoreBranch branch = store.branch();
-        NodeBuilder builder = branch.getHead().builder();
+        NodeBuilder builder = store.getRoot().builder();
         preAsyncRunStatus(builder);
-        branch.setRoot(builder.getNodeState());
         try {
-            branch.merge(EmptyHook.INSTANCE, PostCommitHook.EMPTY);
+            store.merge(builder, EmptyHook.INSTANCE, PostCommitHook.EMPTY);
         } catch (CommitFailedException e) {
             log.warn("Index status update {} failed", name, e);
         }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java?rev=1525095&r1=1525094&r2=1525095&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java Fri Sep 20 18:48:58 2013
@@ -34,7 +34,6 @@ import org.apache.jackrabbit.oak.spi.que
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
-import org.apache.jackrabbit.oak.spi.state.NodeStoreBranch;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableSet;
@@ -73,21 +72,18 @@ public class AsyncIndexUpdateTest {
         NodeStore store = new MemoryNodeStore();
         IndexEditorProvider provider = new PropertyIndexEditorProvider();
 
-        NodeStoreBranch branch = store.branch();
-        NodeState root = branch.getHead();
-        NodeBuilder builder = root.builder();
+        NodeBuilder builder = store.getRoot().builder();
         createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME),
                 "rootIndex", true, false, ImmutableSet.of("foo"), null)
                 .setProperty(ASYNC_PROPERTY_NAME, "async");
         builder.child("testRoot").setProperty("foo", "abc");
 
         // merge it back in
-        branch.setRoot(builder.getNodeState());
-        branch.merge(EmptyHook.INSTANCE, PostCommitHook.EMPTY);
+        store.merge(builder, EmptyHook.INSTANCE, PostCommitHook.EMPTY);
 
         AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider);
         async.run();
-        root = store.getRoot();
+        NodeState root = store.getRoot();
 
         // first check that the index content nodes exist
         checkPathExists(root, INDEX_DEFINITIONS_NAME, "rootIndex",
@@ -111,9 +107,7 @@ public class AsyncIndexUpdateTest {
         NodeStore store = new MemoryNodeStore();
         IndexEditorProvider provider = new PropertyIndexEditorProvider();
 
-        NodeStoreBranch branch = store.branch();
-        NodeState root = branch.getHead();
-        NodeBuilder builder = root.builder();
+        NodeBuilder builder = store.getRoot().builder();
         createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME),
                 "rootIndex", true, false, ImmutableSet.of("foo"), null)
                 .setProperty(ASYNC_PROPERTY_NAME, "async");
@@ -126,12 +120,11 @@ public class AsyncIndexUpdateTest {
         builder.child("testSecond").setProperty("bar", "ghi");
 
         // merge it back in
-        branch.setRoot(builder.getNodeState());
-        branch.merge(EmptyHook.INSTANCE, PostCommitHook.EMPTY);
+        store.merge(builder, EmptyHook.INSTANCE, PostCommitHook.EMPTY);
 
         AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider);
         async.run();
-        root = store.getRoot();
+        NodeState root = store.getRoot();
 
         // first check that the index content nodes exist
         checkPathExists(root, INDEX_DEFINITIONS_NAME, "rootIndex",
@@ -164,9 +157,7 @@ public class AsyncIndexUpdateTest {
         NodeStore store = new MemoryNodeStore();
         IndexEditorProvider provider = new PropertyIndexEditorProvider();
 
-        NodeStoreBranch branch = store.branch();
-        NodeState root = branch.getHead();
-        NodeBuilder builder = root.builder();
+        NodeBuilder builder = store.getRoot().builder();
         createIndexDefinition(builder.child(INDEX_DEFINITIONS_NAME),
                 "rootIndex", true, false, ImmutableSet.of("foo"), null)
                 .setProperty(ASYNC_PROPERTY_NAME, "async");
@@ -181,12 +172,11 @@ public class AsyncIndexUpdateTest {
                 .setProperty("foo", "xyz");
 
         // merge it back in
-        branch.setRoot(builder.getNodeState());
-        branch.merge(EmptyHook.INSTANCE, PostCommitHook.EMPTY);
+        store.merge(builder, EmptyHook.INSTANCE, PostCommitHook.EMPTY);
 
         AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider);
         async.run();
-        root = store.getRoot();
+        NodeState root = store.getRoot();
 
         // first check that the index content nodes exist
         checkPathExists(root, INDEX_DEFINITIONS_NAME, "rootIndex",

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexTest.java?rev=1525095&r1=1525094&r2=1525095&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexTest.java Fri Sep 20 18:48:58 2013
@@ -47,7 +47,6 @@ import org.apache.jackrabbit.oak.spi.que
 import org.apache.jackrabbit.oak.spi.query.Cursors;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.apache.jackrabbit.oak.spi.state.NodeStoreBranch;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -70,8 +69,7 @@ public class NodeTypeIndexTest {
 
     @Test
     public void nodeType() throws Exception {
-        NodeStoreBranch branch = store.branch();
-        NodeBuilder root = branch.getHead().builder();
+        NodeBuilder root = store.getRoot().builder();
 
         // remove "rep:security" as it interferes with tests
         root.getChildNode("rep:security").remove(); 
@@ -80,8 +78,7 @@ public class NodeTypeIndexTest {
         addFolder(root, "folder-2");
         addFile(root, "file-1");
 
-        branch.setRoot(root.getNodeState());
-        branch.merge(new EditorHook(new IndexUpdateProvider(
+        store.merge(root, new EditorHook(new IndexUpdateProvider(
                 new PropertyIndexEditorProvider())), PostCommitHook.EMPTY);
 
         NodeState rootState = store.getRoot();

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/JournalTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/JournalTest.java?rev=1525095&r1=1525094&r2=1525095&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/JournalTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/JournalTest.java Fri Sep 20 18:48:58 2013
@@ -25,7 +25,6 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.commit.PostCommitHook;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.apache.jackrabbit.oak.spi.state.NodeStoreBranch;
 import org.junit.Test;
 
 public class JournalTest {
@@ -48,9 +47,7 @@ public class JournalTest {
         builder.setProperty("foo", "bar");
         NodeState newState = builder.getNodeState();
 
-        NodeStoreBranch branch = root.branch();
-        branch.setRoot(newState);
-        branch.merge(EmptyHook.INSTANCE, PostCommitHook.EMPTY);
+        root.merge(builder, EmptyHook.INSTANCE, PostCommitHook.EMPTY);
 
         assertEquals(newState, root.getRoot());
         assertEquals(oldState, left.getRoot());
@@ -77,9 +74,7 @@ public class JournalTest {
         builder.setProperty("foo", "bar");
         NodeState newState = builder.getNodeState();
 
-        NodeStoreBranch branch = left.branch();
-        branch.setRoot(newState);
-        branch.merge(EmptyHook.INSTANCE, PostCommitHook.EMPTY);
+        left.merge(builder, EmptyHook.INSTANCE, PostCommitHook.EMPTY);
 
         assertEquals(oldState, root.getRoot());
         assertEquals(newState, left.getRoot());
@@ -106,9 +101,7 @@ public class JournalTest {
         leftBuilder.setProperty("foo", "bar");
         NodeState leftState = leftBuilder.getNodeState();
 
-        NodeStoreBranch leftBranch = left.branch();
-        leftBranch.setRoot(leftState);
-        leftBranch.merge(EmptyHook.INSTANCE, PostCommitHook.EMPTY);
+        left.merge(leftBuilder, EmptyHook.INSTANCE, PostCommitHook.EMPTY);
 
         assertEquals(oldState, root.getRoot());
         assertEquals(leftState, left.getRoot());
@@ -121,11 +114,8 @@ public class JournalTest {
 
         NodeBuilder rightBuilder = oldState.builder();
         rightBuilder.setProperty("bar", "foo");
-        NodeState rightState = rightBuilder.getNodeState();
 
-        NodeStoreBranch rightBranch = right.branch();
-        rightBranch.setRoot(rightState);
-        rightBranch.merge(EmptyHook.INSTANCE, PostCommitHook.EMPTY);
+        right.merge(rightBuilder, EmptyHook.INSTANCE, PostCommitHook.EMPTY);
 
         store.getJournal("right").merge();
         NodeState newState = root.getRoot();
@@ -138,6 +128,6 @@ public class JournalTest {
         assertEquals(newState, root.getRoot());
         assertEquals(newState, left.getRoot());
         assertEquals(newState, right.getRoot());
-}
+    }
 
 }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/MergeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/MergeTest.java?rev=1525095&r1=1525094&r2=1525095&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/MergeTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/MergeTest.java Fri Sep 20 18:48:58 2013
@@ -45,16 +45,16 @@ public class MergeTest {
         assertFalse(store.getRoot().hasProperty("foo"));
         assertFalse(store.getRoot().hasProperty("bar"));
 
-        NodeStoreBranch a = store.branch();
-        a.setRoot(a.getHead().builder().setProperty("foo", "abc").getNodeState());
-        a.merge(EmptyHook.INSTANCE, PostCommitHook.EMPTY);
+        NodeBuilder a = store.getRoot().builder();
+        a.setProperty("foo", "abc");
+        store.merge(a, EmptyHook.INSTANCE, PostCommitHook.EMPTY);
 
         assertTrue(store.getRoot().hasProperty("foo"));
         assertFalse(store.getRoot().hasProperty("bar"));
 
-        NodeStoreBranch b = store.branch();
-        b.setRoot(b.getHead().builder().setProperty("bar", "xyz").getNodeState());
-        b.merge(EmptyHook.INSTANCE, PostCommitHook.EMPTY);
+        NodeBuilder b = store.getRoot().builder();
+        b.setProperty("bar", "xyz");
+        store.merge(b, EmptyHook.INSTANCE, PostCommitHook.EMPTY);
 
         assertTrue(store.getRoot().hasProperty("foo"));
         assertTrue(store.getRoot().hasProperty("bar"));
@@ -64,21 +64,21 @@ public class MergeTest {
     public void testOptimisticMerge() throws CommitFailedException {
         NodeStore store = new SegmentNodeStore(new MemoryStore());
 
-        NodeStoreBranch a = store.branch();
-        a.setRoot(a.getHead().builder().setProperty("foo", "abc").getNodeState());
+        NodeBuilder a = store.getRoot().builder();
+        a.setProperty("foo", "abc");
 
-        NodeStoreBranch b = store.branch();
-        b.setRoot(b.getHead().builder().setProperty("bar", "xyz").getNodeState());
+        NodeBuilder b = store.getRoot().builder();
+        b.setProperty("bar", "xyz");
 
         assertFalse(store.getRoot().hasProperty("foo"));
         assertFalse(store.getRoot().hasProperty("bar"));
 
-        a.merge(EmptyHook.INSTANCE, PostCommitHook.EMPTY);
+        store.merge(a, EmptyHook.INSTANCE, PostCommitHook.EMPTY);
 
         assertTrue(store.getRoot().hasProperty("foo"));
         assertFalse(store.getRoot().hasProperty("bar"));
 
-        b.merge(EmptyHook.INSTANCE, PostCommitHook.EMPTY);
+        store.merge(b, EmptyHook.INSTANCE, PostCommitHook.EMPTY);
 
         assertTrue(store.getRoot().hasProperty("foo"));
         assertTrue(store.getRoot().hasProperty("bar"));

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=1525095&r1=1525094&r2=1525095&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 Fri Sep 20 18:48:58 2013
@@ -168,16 +168,14 @@ public class RepositoryUpgrade {
                 "Copying repository content from {} to Oak",
                 source.getRepositoryConfig().getHomeDir());
         try {
-            NodeStoreBranch branch = target.branch();
-            NodeBuilder builder = branch.getHead().builder();
+            NodeBuilder builder = target.getRoot().builder();
 
             copyNamespaces(builder);
             copyNodeTypes(builder);
             copyVersionStore(builder);
             copyWorkspaces(builder);
 
-            branch.setRoot(builder.getNodeState());
-            branch.merge(new EditorHook(new RegistrationEditorProvider()), PostCommitHook.EMPTY); // TODO: default hooks?
+            target.merge(builder, new EditorHook(new RegistrationEditorProvider()), PostCommitHook.EMPTY); // TODO: default hooks?
         } catch (Exception e) {
             throw new RepositoryException("Failed to copy content", e);
         }