Fix intermittent failure in InternalEngineTest#testRefreshScopedSearcher (#28417)

This change switches the merge policy to none (for this specific test) in order to make sure that refreshes are always triggered
 by a change in the writer.

 Closes #27514
This commit is contained in:
Jim Ferenczi 2018-01-31 09:24:15 +01:00 committed by GitHub
parent 7edb978256
commit cb1fef7f6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4094,8 +4094,13 @@ public class InternalEngineTests extends EngineTestCase {
} }
public void testRefreshScopedSearcher() throws IOException { public void testRefreshScopedSearcher() throws IOException {
try (Store store = createStore();
InternalEngine engine =
// disable merges to make sure that the reader doesn't change unexpectedly during the test
createEngine(defaultSettings, store, createTempDir(), NoMergePolicy.INSTANCE)) {
try (Searcher getSearcher = engine.acquireSearcher("test", Engine.SearcherScope.INTERNAL); try (Searcher getSearcher = engine.acquireSearcher("test", Engine.SearcherScope.INTERNAL);
Searcher searchSearcher = engine.acquireSearcher("test", Engine.SearcherScope.EXTERNAL)){ Searcher searchSearcher = engine.acquireSearcher("test", Engine.SearcherScope.EXTERNAL)) {
assertSameReader(getSearcher, searchSearcher); assertSameReader(getSearcher, searchSearcher);
} }
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
@ -4108,7 +4113,7 @@ public class InternalEngineTests extends EngineTestCase {
assertTrue(engine.refreshNeeded()); assertTrue(engine.refreshNeeded());
engine.refresh("test", Engine.SearcherScope.INTERNAL); engine.refresh("test", Engine.SearcherScope.INTERNAL);
try (Searcher getSearcher = engine.acquireSearcher("test", Engine.SearcherScope.INTERNAL); try (Searcher getSearcher = engine.acquireSearcher("test", Engine.SearcherScope.INTERNAL);
Searcher searchSearcher = engine.acquireSearcher("test", Engine.SearcherScope.EXTERNAL)){ Searcher searchSearcher = engine.acquireSearcher("test", Engine.SearcherScope.EXTERNAL)) {
assertEquals(10, getSearcher.reader().numDocs()); assertEquals(10, getSearcher.reader().numDocs());
assertEquals(0, searchSearcher.reader().numDocs()); assertEquals(0, searchSearcher.reader().numDocs());
assertNotSameReader(getSearcher, searchSearcher); assertNotSameReader(getSearcher, searchSearcher);
@ -4116,7 +4121,7 @@ public class InternalEngineTests extends EngineTestCase {
engine.refresh("test", Engine.SearcherScope.EXTERNAL); engine.refresh("test", Engine.SearcherScope.EXTERNAL);
try (Searcher getSearcher = engine.acquireSearcher("test", Engine.SearcherScope.INTERNAL); try (Searcher getSearcher = engine.acquireSearcher("test", Engine.SearcherScope.INTERNAL);
Searcher searchSearcher = engine.acquireSearcher("test", Engine.SearcherScope.EXTERNAL)){ Searcher searchSearcher = engine.acquireSearcher("test", Engine.SearcherScope.EXTERNAL)) {
assertEquals(10, getSearcher.reader().numDocs()); assertEquals(10, getSearcher.reader().numDocs());
assertEquals(10, searchSearcher.reader().numDocs()); assertEquals(10, searchSearcher.reader().numDocs());
assertSameReader(getSearcher, searchSearcher); assertSameReader(getSearcher, searchSearcher);
@ -4132,26 +4137,27 @@ public class InternalEngineTests extends EngineTestCase {
engine.refresh("test", Engine.SearcherScope.EXTERNAL); engine.refresh("test", Engine.SearcherScope.EXTERNAL);
try (Searcher getSearcher = engine.acquireSearcher("test", Engine.SearcherScope.INTERNAL); try (Searcher getSearcher = engine.acquireSearcher("test", Engine.SearcherScope.INTERNAL);
Searcher searchSearcher = engine.acquireSearcher("test", Engine.SearcherScope.EXTERNAL)){ Searcher searchSearcher = engine.acquireSearcher("test", Engine.SearcherScope.EXTERNAL)) {
assertEquals(11, getSearcher.reader().numDocs()); assertEquals(11, getSearcher.reader().numDocs());
assertEquals(11, searchSearcher.reader().numDocs()); assertEquals(11, searchSearcher.reader().numDocs());
assertSameReader(getSearcher, searchSearcher); assertSameReader(getSearcher, searchSearcher);
} }
try (Searcher searcher = engine.acquireSearcher("test", Engine.SearcherScope.INTERNAL)){ try (Searcher searcher = engine.acquireSearcher("test", Engine.SearcherScope.INTERNAL)) {
engine.refresh("test", Engine.SearcherScope.INTERNAL); engine.refresh("test", Engine.SearcherScope.INTERNAL);
try (Searcher nextSearcher = engine.acquireSearcher("test", Engine.SearcherScope.INTERNAL)){ try (Searcher nextSearcher = engine.acquireSearcher("test", Engine.SearcherScope.INTERNAL)) {
assertSame(searcher.searcher(), nextSearcher.searcher()); assertSame(searcher.searcher(), nextSearcher.searcher());
} }
} }
try (Searcher searcher = engine.acquireSearcher("test", Engine.SearcherScope.EXTERNAL)){ try (Searcher searcher = engine.acquireSearcher("test", Engine.SearcherScope.EXTERNAL)) {
engine.refresh("test", Engine.SearcherScope.EXTERNAL); engine.refresh("test", Engine.SearcherScope.EXTERNAL);
try (Searcher nextSearcher = engine.acquireSearcher("test", Engine.SearcherScope.EXTERNAL)){ try (Searcher nextSearcher = engine.acquireSearcher("test", Engine.SearcherScope.EXTERNAL)) {
assertSame(searcher.searcher(), nextSearcher.searcher()); assertSame(searcher.searcher(), nextSearcher.searcher());
} }
} }
} }
}
public void testSeqNoGenerator() throws IOException { public void testSeqNoGenerator() throws IOException {
engine.close(); engine.close();