Skip to content

Commit db2ed34

Browse files
Fix ThreadPoolMergeSchedulerTests testSchedulerCloseWaitsForRunningMerge (#126110)
Fixes #125236
1 parent c43805e commit db2ed34

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,18 +508,21 @@ public void testSchedulerCloseWaitsForRunningMerge() throws Exception {
508508
)
509509
) {
510510
CountDownLatch mergeDoneLatch = new CountDownLatch(1);
511+
CountDownLatch mergeRunningLatch = new CountDownLatch(1);
511512
MergeSource mergeSource = mock(MergeSource.class);
512513
OneMerge oneMerge = mock(OneMerge.class);
513514
when(oneMerge.getStoreMergeInfo()).thenReturn(getNewMergeInfo(randomLongBetween(1L, 10L)));
514515
when(oneMerge.getMergeProgress()).thenReturn(new MergePolicy.OneMergeProgress());
515516
when(mergeSource.getNextMerge()).thenReturn(oneMerge, (OneMerge) null);
516517
doAnswer(invocation -> {
518+
mergeRunningLatch.countDown();
517519
OneMerge merge = (OneMerge) invocation.getArguments()[0];
518520
assertFalse(merge.isAborted());
519521
// wait to be signalled before completing the merge
520522
mergeDoneLatch.await();
521523
return null;
522524
}).when(mergeSource).merge(any(OneMerge.class));
525+
// submit the merge
523526
threadPoolMergeScheduler.merge(mergeSource, randomFrom(MergeTrigger.values()));
524527
Thread t = new Thread(() -> {
525528
try {
@@ -531,6 +534,8 @@ public void testSchedulerCloseWaitsForRunningMerge() throws Exception {
531534
t.start();
532535
try {
533536
assertTrue(t.isAlive());
537+
// wait for the merge to actually run
538+
mergeRunningLatch.await();
534539
// ensure the merge scheduler is effectively "closed"
535540
assertBusy(() -> {
536541
MergeSource mergeSource2 = mock(MergeSource.class);

0 commit comments

Comments
 (0)