Skip to content

Commit 4131809

Browse files
wait for the merge task to actually run
1 parent cf95498 commit 4131809

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

server/src/test/java/org/elasticsearch/index/engine/ThreadPoolMergeSchedulerTests.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)