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 th...@apache.org on 2022/06/15 13:08:10 UTC
[jackrabbit-oak] 01/01: OAK-9804 Flaky unit test FlatFileStoreTest.resumePreviousUnfinishedDownload()
This is an automated email from the ASF dual-hosted git repository.
thomasm pushed a commit to branch OAK-9804
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit c60ebd2cf5c3c370d7bd3e2b2ab62a9d06714892
Author: Thomas Mueller <th...@apache.org>
AuthorDate: Wed Jun 15 15:07:57 2022 +0200
OAK-9804 Flaky unit test FlatFileStoreTest.resumePreviousUnfinishedDownload()
---
.../index/indexer/document/flatfile/FlatFileStoreTest.java | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreTest.java b/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreTest.java
index 18bc33e75d..eb7f1a2672 100644
--- a/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreTest.java
+++ b/oak-run-commons/src/test/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreTest.java
@@ -23,6 +23,7 @@ import com.google.common.collect.Iterables;
import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.oak.index.indexer.document.CompositeException;
import org.apache.jackrabbit.oak.index.indexer.document.NodeStateEntry;
+import org.apache.jackrabbit.oak.index.indexer.document.NodeStateEntry.NodeStateEntryBuilder;
import org.apache.jackrabbit.oak.index.indexer.document.NodeStateEntryTraverser;
import org.apache.jackrabbit.oak.index.indexer.document.NodeStateEntryTraverserFactory;
import org.apache.jackrabbit.oak.plugins.document.mongo.DocumentStoreSplitter;
@@ -397,7 +398,11 @@ public class FlatFileStoreTest {
assertContainsMergeFolder(spyBuilder.getFlatFileStoreDir(), true);
List<String> sortedPaths = TestUtils.sortPaths(mongoDocs.stream().map(md -> md.path).collect(Collectors.toList()));
- assertEquals(mongoDocs.size(), nsetf.getTotalProvidedDocCount());
+ // with multi-threaded download and multiple threads,
+ // we can't expect that each entry is downloaded exactly once,
+ // as there could be some overlap (the range check happends
+ // _after_ retrieving the entry)
+ assertTrue(mongoDocs.size() <= nsetf.getTotalProvidedDocCount());
assertEquals(sortedPaths, entryPaths);
} finally {
System.clearProperty(OAK_INDEXER_SORT_STRATEGY_TYPE);
@@ -479,7 +484,8 @@ public class FlatFileStoreTest {
String traverserId = getId();
return new Iterator<NodeStateEntry>() {
- NodeStateEntry lastReturnedDoc;
+ // ensure we don't get a NullPointerException in logger.debug below
+ NodeStateEntry lastReturnedDoc = new NodeStateEntryBuilder(null, "/").build();
@Override
public boolean hasNext() {
@@ -488,7 +494,8 @@ public class FlatFileStoreTest {
@Override
public NodeStateEntry next() {
- if (providedDocuments.get() == breakAfterDelivering.get()) {
+ // multiple threads could fail at the same time, that's fine
+ if (providedDocuments.get() >= breakAfterDelivering.get()) {
logger.debug("{} Breaking after getting docs with id {}", traverserId, lastReturnedDoc.getId());
throw new IllegalStateException(EXCEPTION_MESSAGE);
}