6767import java .util .Collections ;
6868import java .util .Map ;
6969import java .util .concurrent .CountDownLatch ;
70+ import java .util .concurrent .TimeUnit ;
7071import java .util .concurrent .atomic .AtomicInteger ;
7172import java .util .concurrent .atomic .AtomicReference ;
7273import java .util .stream .Collectors ;
7778import static org .opensearch .test .hamcrest .OpenSearchAssertions .assertAcked ;
7879import static org .opensearch .test .hamcrest .OpenSearchAssertions .assertHitCount ;
7980import static org .hamcrest .Matchers .containsInAnyOrder ;
81+ import static org .hamcrest .Matchers .notNullValue ;
8082import static org .hamcrest .core .IsEqual .equalTo ;
83+ import static org .awaitility .Awaitility .await ;
8184
8285/** Unit test(s) for IndexService */
8386public class IndexServiceTests extends OpenSearchSingleNodeTestCase {
@@ -155,18 +158,15 @@ protected void runInternal() {
155158 // now close the index
156159 final Index index = indexService .index ();
157160 assertAcked (client ().admin ().indices ().prepareClose (index .getName ()));
158- assertBusy (() -> assertTrue ("Index not found: " + index .getName (), getInstanceFromNode (IndicesService .class ).hasIndex (index )));
159-
160- final IndexService closedIndexService = getInstanceFromNode (IndicesService .class ).indexServiceSafe (index );
161+ final IndexService closedIndexService = getIndexService (index );
161162 assertNotSame (indexService , closedIndexService );
162163 assertFalse (task .mustReschedule ());
163164 assertFalse (task .isClosed ());
164165 assertEquals (1000000 , task .getInterval ().millis ());
165166
166167 // now reopen the index
167168 assertAcked (client ().admin ().indices ().prepareOpen (index .getName ()));
168- assertBusy (() -> assertTrue ("Index not found: " + index .getName (), getInstanceFromNode (IndicesService .class ).hasIndex (index )));
169- indexService = getInstanceFromNode (IndicesService .class ).indexServiceSafe (index );
169+ indexService = getIndexService (index );
170170 assertNotSame (closedIndexService , indexService );
171171
172172 task = new IndexService .BaseAsyncTask (indexService , TimeValue .timeValueMillis (100000 )) {
@@ -245,9 +245,7 @@ public void testRefreshTaskIsUpdated() throws Exception {
245245 // now close the index
246246 final Index index = indexService .index ();
247247 assertAcked (client ().admin ().indices ().prepareClose (index .getName ()));
248- assertBusy (() -> assertTrue ("Index not found: " + index .getName (), getInstanceFromNode (IndicesService .class ).hasIndex (index )));
249-
250- final IndexService closedIndexService = getInstanceFromNode (IndicesService .class ).indexServiceSafe (index );
248+ final IndexService closedIndexService = getIndexService (index );
251249 assertNotSame (indexService , closedIndexService );
252250 assertNotSame (refreshTask , closedIndexService .getRefreshTask ());
253251 assertFalse (closedIndexService .getRefreshTask ().mustReschedule ());
@@ -256,8 +254,7 @@ public void testRefreshTaskIsUpdated() throws Exception {
256254
257255 // now reopen the index
258256 assertAcked (client ().admin ().indices ().prepareOpen (index .getName ()));
259- assertBusy (() -> assertTrue ("Index not found: " + index .getName (), getInstanceFromNode (IndicesService .class ).hasIndex (index )));
260- indexService = getInstanceFromNode (IndicesService .class ).indexServiceSafe (index );
257+ indexService = getIndexService (index );
261258 assertNotSame (closedIndexService , indexService );
262259 refreshTask = indexService .getRefreshTask ();
263260 assertTrue (indexService .getRefreshTask ().mustReschedule ());
@@ -283,9 +280,7 @@ public void testFsyncTaskIsRunning() throws Exception {
283280 // now close the index
284281 final Index index = indexService .index ();
285282 assertAcked (client ().admin ().indices ().prepareClose (index .getName ()));
286- assertBusy (() -> assertTrue ("Index not found: " + index .getName (), getInstanceFromNode (IndicesService .class ).hasIndex (index )));
287-
288- final IndexService closedIndexService = getInstanceFromNode (IndicesService .class ).indexServiceSafe (index );
283+ final IndexService closedIndexService = getIndexService (index );
289284 assertNotSame (indexService , closedIndexService );
290285 assertNotSame (fsyncTask , closedIndexService .getFsyncTask ());
291286 assertFalse (closedIndexService .getFsyncTask ().mustReschedule ());
@@ -294,8 +289,7 @@ public void testFsyncTaskIsRunning() throws Exception {
294289
295290 // now reopen the index
296291 assertAcked (client ().admin ().indices ().prepareOpen (index .getName ()));
297- assertBusy (() -> assertTrue ("Index not found: " + index .getName (), getInstanceFromNode (IndicesService .class ).hasIndex (index )));
298- indexService = getInstanceFromNode (IndicesService .class ).indexServiceSafe (index );
292+ indexService = getIndexService (index );
299293 assertNotSame (closedIndexService , indexService );
300294 fsyncTask = indexService .getFsyncTask ();
301295 assertTrue (indexService .getRefreshTask ().mustReschedule ());
@@ -462,16 +456,14 @@ public void testAsyncTranslogTrimTaskOnClosedIndex() throws Exception {
462456 assertThat (translog .totalOperations (), equalTo (translogOps ));
463457 assertThat (translog .stats ().estimatedNumberOfOperations (), equalTo (translogOps ));
464458 assertAcked (client ().admin ().indices ().prepareClose ("test" ).setWaitForActiveShards (ActiveShardCount .DEFAULT ));
465-
466- indexService = getInstanceFromNode (IndicesService .class ).indexServiceSafe (indexService .index ());
459+ indexService = getIndexService (indexService .index ());
467460 assertTrue (indexService .getTrimTranslogTask ().mustReschedule ());
468461
469462 final Engine readOnlyEngine = getEngine (indexService .getShard (0 ));
470463 assertBusy (() -> assertTrue (isTranslogEmpty (readOnlyEngine )));
471464
472465 assertAcked (client ().admin ().indices ().prepareOpen ("test" ).setWaitForActiveShards (ActiveShardCount .DEFAULT ));
473-
474- indexService = getInstanceFromNode (IndicesService .class ).indexServiceSafe (indexService .index ());
466+ indexService = getIndexService (indexService .index ());
475467 translog = IndexShardTestCase .getTranslog (indexService .getShard (0 ));
476468 assertThat (translog .totalOperations (), equalTo (0 ));
477469 assertThat (translog .stats ().estimatedNumberOfOperations (), equalTo (0 ));
@@ -886,6 +878,10 @@ public void testRefreshTaskUpdatesWithDynamicShardLevelRefreshes() throws Except
886878
887879 // OS test case fails if test leaves behind transient cluster setting so need to clear it.
888880 client ().admin ().cluster ().prepareUpdateSettings ().setTransientSettings (Settings .builder ().putNull ("*" )).get ();
881+ }
889882
883+ private IndexService getIndexService (Index index ) {
884+ return await ().atMost (10 , TimeUnit .SECONDS )
885+ .until (() -> getInstanceFromNode (IndicesService .class ).indexService (index ), notNullValue ());
890886 }
891887}
0 commit comments