@@ -506,12 +506,14 @@ public void testSchedulerCloseWaitsForRunningMerge() throws Exception {
506506 )
507507 ) {
508508 CountDownLatch mergeDoneLatch = new CountDownLatch (1 );
509+ CountDownLatch mergeRunningLatch = new CountDownLatch (1 );
509510 MergeSource mergeSource = mock (MergeSource .class );
510511 OneMerge oneMerge = mock (OneMerge .class );
511512 when (oneMerge .getStoreMergeInfo ()).thenReturn (getNewMergeInfo (randomLongBetween (1L , 10L )));
512513 when (oneMerge .getMergeProgress ()).thenReturn (new MergePolicy .OneMergeProgress ());
513514 when (mergeSource .getNextMerge ()).thenReturn (oneMerge , (OneMerge ) null );
514515 doAnswer (invocation -> {
516+ mergeRunningLatch .countDown ();
515517 OneMerge merge = (OneMerge ) invocation .getArguments ()[0 ];
516518 assertFalse (merge .isAborted ());
517519 // wait to be signalled before completing the merge
@@ -530,16 +532,18 @@ public void testSchedulerCloseWaitsForRunningMerge() throws Exception {
530532 t .start ();
531533 try {
532534 assertTrue (t .isAlive ());
535+ // wait for the merge to actually run
536+ mergeRunningLatch .await ();
533537 // ensure the merge scheduler is effectively "closed"
534538 assertBusy (() -> {
535539 MergeSource mergeSource2 = mock (MergeSource .class );
536540 threadPoolMergeScheduler .merge (mergeSource2 , randomFrom (MergeTrigger .values ()));
537541 // when the merge scheduler is closed it won't pull in any new merges from the merge source
538542 verifyNoInteractions (mergeSource2 );
539- // assert the merge still shows up as "running"
540- assertThat (threadPoolMergeScheduler .getRunningMergeTasks ().keySet (), contains (oneMerge ));
541- assertThat (threadPoolMergeScheduler .getBackloggedMergeTasks ().size (), is (0 ));
542543 });
544+ // assert the merge still shows up as "running"
545+ assertThat (threadPoolMergeScheduler .getRunningMergeTasks ().keySet (), contains (oneMerge ));
546+ assertThat (threadPoolMergeScheduler .getBackloggedMergeTasks ().size (), is (0 ));
543547 assertTrue (t .isAlive ());
544548 // signal the merge to finish
545549 mergeDoneLatch .countDown ();
0 commit comments