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 st...@apache.org on 2021/02/17 10:42:13 UTC

svn commit: r1886615 - in /jackrabbit/oak/trunk/oak-store-document/src: main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java test/java/org/apache/jackrabbit/oak/plugins/document/DocumentSplitTest.java

Author: stefanegli
Date: Wed Feb 17 10:42:12 2021
New Revision: 1886615

URL: http://svn.apache.org/viewvc?rev=1886615&view=rev
Log:
OAK-9358 : DocumentNodeStore may accumulate split candidates - Fix issue and enable tests - Applying patch from Marcel

Modified:
    jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
    jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentSplitTest.java

Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1886615&r1=1886614&r2=1886615&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java Wed Feb 17 10:42:12 2021
@@ -2485,6 +2485,7 @@ public final class DocumentNodeStore
         List<UpdateOp> splitOpsPhase2 = new ArrayList<>(initialCapacity);
         List<String> removeCandidates = new ArrayList<>(initialCapacity);
         for (String id : splitCandidates.keySet()) {
+            removeCandidates.add(id);
             NodeDocument doc = store.find(Collection.NODES, id);
             if (doc == null) {
                 continue;
@@ -2508,7 +2509,6 @@ public final class DocumentNodeStore
                     splitOpsPhase2.add(op);
                 }
             }
-            removeCandidates.add(id);
             if (splitOpsPhase1.size() >= getCreateOrUpdateBatchSize()
                     || splitOpsPhase2.size() >= getCreateOrUpdateBatchSize()) {
                 invalidatePaths(pathsToInvalidate);
@@ -2527,8 +2527,8 @@ public final class DocumentNodeStore
             invalidatePaths(pathsToInvalidate);
             batchSplit(splitOpsPhase1);
             batchSplit(splitOpsPhase2);
-            splitCandidates.keySet().removeAll(removeCandidates);
         }
+        splitCandidates.keySet().removeAll(removeCandidates);
     }
 
     private void invalidatePaths(@NotNull Set<Path> pathsToInvalidate) {

Modified: jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentSplitTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentSplitTest.java?rev=1886615&r1=1886614&r2=1886615&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentSplitTest.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentSplitTest.java Wed Feb 17 10:42:12 2021
@@ -45,7 +45,6 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.stats.Clock;
 import org.jetbrains.annotations.NotNull;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import com.google.common.collect.Iterables;
@@ -1075,7 +1074,6 @@ public class DocumentSplitTest extends B
         }
     }
 
-    @Ignore("OAK-9358")
     @Test
     public void splitCandidatesCleanAfterBackgroundUpdate() throws Exception {
         DocumentNodeStore ns = mk.getNodeStore();
@@ -1088,7 +1086,6 @@ public class DocumentSplitTest extends B
         assertThat(ns.getSplitCandidates(), empty());
     }
 
-    @Ignore("OAK-9358")
     @Test
     public void splitCandidatesCleanAfterBackgroundUpdateWithUnknownId() throws Exception {
         DocumentNodeStore ns = mk.getNodeStore();