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 mr...@apache.org on 2021/02/09 12:29:35 UTC

svn commit: r1886362 - in /jackrabbit/oak/trunk: oak-run-elastic/ oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/ oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/

Author: mreutegg
Date: Tue Feb  9 12:29:35 2021
New Revision: 1886362

URL: http://svn.apache.org/viewvc?rev=1886362&view=rev
Log:
OAK-9342: JournalDiffLoader should ignore linked invalidation entries

Modified:
    jackrabbit/oak/trunk/oak-run-elastic/   (props changed)
    jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java
    jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalEntry.java
    jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoaderTest.java

Propchange: jackrabbit/oak/trunk/oak-run-elastic/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Feb  9 12:29:35 2021
@@ -0,0 +1,4 @@
+target
+*.iml
+*.ipr
+*.iws

Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java?rev=1886362&r1=1886361&r2=1886362&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java Tue Feb  9 12:29:35 2021
@@ -169,13 +169,8 @@ class JournalDiffLoader implements DiffC
                 // use revision with a timestamp of zero
                 from = new Revision(0, 0, to.getClusterId());
             }
-            StringSort invalidateOnly = JournalEntry.newSorter();
-            try {
-                stats.numJournalEntries += fillExternalChanges(changes, invalidateOnly,
-                        path, from, to, ns.getDocumentStore(), entry -> {}, null, null);
-            } finally {
-                invalidateOnly.close();
-            }
+            stats.numJournalEntries += fillExternalChanges(changes, null,
+                    path, from, to, ns.getDocumentStore(), entry -> {}, null, null);
         }
     }
 

Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalEntry.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalEntry.java?rev=1886362&r1=1886361&r2=1886362&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalEntry.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalEntry.java Tue Feb  9 12:29:35 2021
@@ -270,7 +270,7 @@ public final class JournalEntry extends
      *          instances fails with an exception.
      */
     static int fillExternalChanges(@NotNull StringSort externalChanges,
-                                   @NotNull StringSort invalidate,
+                                   @Nullable StringSort invalidate,
                                    @NotNull Path path,
                                    @NotNull Revision from,
                                    @NotNull Revision to,
@@ -343,7 +343,7 @@ public final class JournalEntry extends
     }
 
     private static void fillFromJournalEntry(@NotNull StringSort externalChanges,
-                                             @NotNull StringSort invalidate,
+                                             @Nullable StringSort invalidate,
                                              @NotNull Path path,
                                              @Nullable ChangeSetBuilder changeSetBuilder,
                                              @Nullable JournalPropertyHandler journalPropertyHandler,
@@ -351,7 +351,9 @@ public final class JournalEntry extends
                                              @NotNull Consumer<JournalEntry> journalEntryConsumer)
             throws IOException {
         d.addTo(externalChanges, path);
-        d.addInvalidateOnlyTo(invalidate);
+        if (invalidate != null) {
+            d.addInvalidateOnlyTo(invalidate);
+        }
         if (changeSetBuilder != null) {
             d.addTo(changeSetBuilder);
         }

Modified: jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoaderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoaderTest.java?rev=1886362&r1=1886361&r2=1886362&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoaderTest.java (original)
+++ jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoaderTest.java Tue Feb  9 12:29:35 2021
@@ -41,10 +41,10 @@ import org.junit.Rule;
 import org.junit.Test;
 
 import static com.google.common.collect.Sets.newHashSet;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.containsInAnyOrder;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -343,6 +343,26 @@ public class JournalDiffLoaderTest {
         new JournalDiffLoader(before, after, ns).call();
     }
 
+    @Test
+    public void ignoreInvalidationEntries() throws Exception {
+        CountingDocumentStore store = new CountingDocumentStore(new MemoryDocumentStore());
+        DocumentNodeStore ns = builderProvider.newBuilder()
+                .setDocumentStore(store).clock(clock).setAsyncDelay(0)
+                .getNodeStore();
+        DocumentNodeState before = ns.getRoot();
+        for (int i = 0; i < 10; i++) {
+            NodeBuilder builder = ns.getRoot().builder();
+            builder.child("test").setProperty("binaryProp", ns.createBlob(new RandomStream(4097, i)));
+            ns.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+            ns.runBackgroundOperations();
+        }
+        DocumentNodeState after = ns.getRoot();
+        store.resetCounters();
+        JournalDiffLoader diffLoader = new JournalDiffLoader(before, after, ns);
+        diffLoader.call();
+        assertEquals(0, store.getNumFindCalls(Collection.JOURNAL));
+    }
+
     private static CacheStats getMemoryDiffStats(DocumentNodeStore ns) {
         for (CacheStats cs : ns.getDiffCache().getStats()) {
             if (cs.getName().equals("Document-MemoryDiff")) {