@@ -466,27 +466,26 @@ public void testNonThrottleStats() throws Exception {
466466        assertThat (stats .getPrimaries ().getIndexing ().getTotal ().getThrottleTime ().millis (), equalTo (0L ));
467467    }
468468
469-     public  void  testThrottleStats () {
469+     public  void  testThrottleStats () throws   Exception   {
470470        assertAcked (
471-             prepareCreate ("test " ).setSettings (
471+             prepareCreate ("test_throttle_stats_index " ).setSettings (
472472                settingsBuilder ().put (IndexMetadata .SETTING_NUMBER_OF_SHARDS , "1" )
473473                    .put (IndexMetadata .SETTING_NUMBER_OF_REPLICAS , "0" )
474474                    .put (MergePolicyConfig .INDEX_MERGE_POLICY_MAX_MERGE_AT_ONCE_SETTING .getKey (), "2" )
475475                    .put (MergePolicyConfig .INDEX_MERGE_POLICY_SEGMENTS_PER_TIER_SETTING .getKey (), "2" )
476476                    .put (MergeSchedulerConfig .MAX_THREAD_COUNT_SETTING .getKey (), "1" )
477477                    .put (MergeSchedulerConfig .MAX_MERGE_COUNT_SETTING .getKey (), "1" )
478+                     .put (MergeSchedulerConfig .AUTO_THROTTLE_SETTING .getKey (), "true" )
478479                    .put (IndexSettings .INDEX_TRANSLOG_DURABILITY_SETTING .getKey (), Translog .Durability .ASYNC .name ())
479480            )
480481        );
481-         ensureGreen ();
482+         ensureGreen ("test_throttle_stats_index" );
482483        // make sure we see throttling kicking in: 
483484        AtomicBoolean  done  = new  AtomicBoolean ();
484485        AtomicLong  termUpTo  = new  AtomicLong ();
485-         long  start  = System .currentTimeMillis ();
486-         for  (int  threadIdx  = 0 ; threadIdx  < 5 ; threadIdx ++) {
487-             int  finalThreadIdx  = threadIdx ;
488-             new  Thread (() -> {
489-                 IndicesStatsResponse  stats ;
486+         Thread [] indexingThreads  = new  Thread [5 ];
487+         for  (int  threadIdx  = 0 ; threadIdx  < indexingThreads .length ; threadIdx ++) {
488+             indexingThreads [threadIdx ] = new  Thread (() -> {
490489                while  (done .get () == false ) {
491490                    for  (int  i  = 0 ; i  < 100 ; i ++) {
492491                        // Provoke slowish merging by making many unique terms: 
@@ -495,30 +494,35 @@ public void testThrottleStats() {
495494                            sb .append (' ' );
496495                            sb .append (termUpTo .incrementAndGet ());
497496                        }
498-                         prepareIndex ("test" ).setId (""  + termUpTo .get ()).setSource ("field"  + (i  % 10 ), sb .toString ()).get ();
497+                         prepareIndex ("test_throttle_stats_index" ).setId (""  + termUpTo .get ())
498+                             .setSource ("field"  + (i  % 10 ), sb .toString ())
499+                             .get ();
499500                        if  (i  % 2  == 0 ) {
500-                             refresh ();
501+                             refresh ("test_throttle_stats_index" );
501502                        }
502503                    }
503-                     refresh ();
504-                     if  (finalThreadIdx  == 0 ) {
505-                         stats  = indicesAdmin ().prepareStats ().get ();
506-                         done .set (stats .getPrimaries ().getIndexing ().getTotal ().getThrottleTime ().millis () > 0 );
507-                     }
508-                     if  (System .currentTimeMillis () - start  > 300  * 1000 ) { // Wait 5 minutes for throttling to kick in 
509-                         done .set (true );
510-                         fail ("index throttling didn't kick in after 5 minutes of intense merging" );
511-                     }
504+                     refresh ("test_throttle_stats_index" );
512505                }
513-             }).start ();
506+             });
507+             indexingThreads [threadIdx ].start ();
508+         }
509+ 
510+         assertBusy (() -> {
511+             IndicesStatsResponse  stats  = indicesAdmin ().prepareStats ("test_throttle_stats_index" ).get ();
512+             assertTrue (stats .getPrimaries ().getIndexing ().getTotal ().getThrottleTime ().millis () > 0 );
513+             done .set (true );
514+         }, 5L , TimeUnit .MINUTES );
515+ 
516+         for  (Thread  indexingThread  : indexingThreads ) {
517+             indexingThread .join ();
514518        }
515519
516520        // Optimize & flush and wait; else we sometimes get a "Delete Index failed - not acked" 
517521        // when ESIntegTestCase.after tries to remove indices created by the test: 
518-         logger .info ("test: now optimize" );
519-         indicesAdmin ().prepareForceMerge ("test " ).get ();
520-         flush ();
521-         logger .info ("test: test done" );
522+         logger .info ("test throttle stats : now optimize" );
523+         indicesAdmin ().prepareForceMerge ("test_throttle_stats_index " ).get ();
524+         flush ("test_throttle_stats_index" );
525+         logger .info ("test throttle stats : test done" );
522526    }
523527
524528    public  void  testSimpleStats () throws  Exception  {
0 commit comments