mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-20 03:45:02 +00:00
[TEST] Fix flaky IndexServiceTests#testRefreshActuallyWorks
This commit is contained in:
parent
105dcb544c
commit
13a8ba4740
@ -194,25 +194,46 @@ public class IndexServiceTests extends ESSingleNodeTestCase {
|
|||||||
IndexService.AsyncRefreshTask refreshTask = indexService.getRefreshTask();
|
IndexService.AsyncRefreshTask refreshTask = indexService.getRefreshTask();
|
||||||
assertEquals(1000, refreshTask.getInterval().millis());
|
assertEquals(1000, refreshTask.getInterval().millis());
|
||||||
assertTrue(indexService.getRefreshTask().mustReschedule());
|
assertTrue(indexService.getRefreshTask().mustReschedule());
|
||||||
|
|
||||||
// now disable
|
|
||||||
IndexMetaData metaData = IndexMetaData.builder(indexService.getMetaData()).settings(Settings.builder().put(indexService.getMetaData().getSettings()).put(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey(), -1)).build();
|
|
||||||
indexService.updateMetaData(metaData);
|
|
||||||
client().prepareIndex("test", "test", "1").setSource("{\"foo\": \"bar\"}", XContentType.JSON).get();
|
|
||||||
IndexShard shard = indexService.getShard(0);
|
IndexShard shard = indexService.getShard(0);
|
||||||
try (Engine.Searcher searcher = shard.acquireSearcher("test")) {
|
client().prepareIndex("test", "test", "0").setSource("{\"foo\": \"bar\"}", XContentType.JSON).get();
|
||||||
TopDocs search = searcher.searcher().search(new MatchAllDocsQuery(), 10);
|
// now disable the refresh
|
||||||
assertEquals(0, search.totalHits);
|
IndexMetaData metaData = IndexMetaData.builder(indexService.getMetaData())
|
||||||
}
|
.settings(Settings.builder().put(indexService.getMetaData().getSettings())
|
||||||
// refresh every millisecond
|
.put(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey(), -1)).build();
|
||||||
metaData = IndexMetaData.builder(indexService.getMetaData()).settings(Settings.builder().put(indexService.getMetaData().getSettings()).put(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey(), "1ms")).build();
|
// when we update we reschedule the existing task AND fire off an async refresh to make sure we make everything visible
|
||||||
|
// before that this is why we need to wait for the refresh task to be unscheduled and the first doc to be visible
|
||||||
indexService.updateMetaData(metaData);
|
indexService.updateMetaData(metaData);
|
||||||
|
assertTrue(refreshTask.isClosed());
|
||||||
|
refreshTask = indexService.getRefreshTask();
|
||||||
assertBusy(() -> {
|
assertBusy(() -> {
|
||||||
|
// this one either becomes visible due to a concurrently running scheduled refresh OR due to the force refresh
|
||||||
|
// we are running on updateMetaData if the interval changes
|
||||||
try (Engine.Searcher searcher = shard.acquireSearcher("test")) {
|
try (Engine.Searcher searcher = shard.acquireSearcher("test")) {
|
||||||
TopDocs search = searcher.searcher().search(new MatchAllDocsQuery(), 10);
|
TopDocs search = searcher.searcher().search(new MatchAllDocsQuery(), 10);
|
||||||
assertEquals(1, search.totalHits);
|
assertEquals(1, search.totalHits);
|
||||||
} catch (IOException e) {
|
}
|
||||||
fail(e.getMessage());
|
});
|
||||||
|
assertFalse(refreshTask.isClosed());
|
||||||
|
// refresh every millisecond
|
||||||
|
client().prepareIndex("test", "test", "1").setSource("{\"foo\": \"bar\"}", XContentType.JSON).get();
|
||||||
|
metaData = IndexMetaData.builder(indexService.getMetaData())
|
||||||
|
.settings(Settings.builder().put(indexService.getMetaData().getSettings())
|
||||||
|
.put(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey(), "1ms")).build();
|
||||||
|
indexService.updateMetaData(metaData);
|
||||||
|
assertTrue(refreshTask.isClosed());
|
||||||
|
assertBusy(() -> {
|
||||||
|
// this one becomes visible due to the force refresh we are running on updateMetaData if the interval changes
|
||||||
|
try (Engine.Searcher searcher = shard.acquireSearcher("test")) {
|
||||||
|
TopDocs search = searcher.searcher().search(new MatchAllDocsQuery(), 10);
|
||||||
|
assertEquals(2, search.totalHits);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
client().prepareIndex("test", "test", "2").setSource("{\"foo\": \"bar\"}", XContentType.JSON).get();
|
||||||
|
assertBusy(() -> {
|
||||||
|
// this one becomes visible due to the scheduled refresh
|
||||||
|
try (Engine.Searcher searcher = shard.acquireSearcher("test")) {
|
||||||
|
TopDocs search = searcher.searcher().search(new MatchAllDocsQuery(), 10);
|
||||||
|
assertEquals(3, search.totalHits);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user