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")) {