Skip to content

Commit 3b84f64

Browse files
Fix ThreadPoolMergeExecutorServiceDiskSpaceTests testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution (#132020) (#132267)
Avoid mocking merge tasks as backlogged (which are then re-enqueued) because it makes the merge task's queue available budget value unsteady, which breaks the test when it later schedules merge tasks that are under/over budget. Closes #130205 #131982
1 parent 10a8af2 commit 3b84f64

File tree

2 files changed

+2
-13
lines changed

2 files changed

+2
-13
lines changed

muted-tests.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -405,9 +405,6 @@ tests:
405405
- class: org.elasticsearch.xpack.esql.qa.single_node.GenerativeIT
406406
method: test
407407
issue: https://github.com/elastic/elasticsearch/issues/130067
408-
- class: org.elasticsearch.index.engine.ThreadPoolMergeExecutorServiceDiskSpaceTests
409-
method: testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution
410-
issue: https://github.com/elastic/elasticsearch/issues/130205
411408
- class: org.elasticsearch.search.SearchWithRejectionsIT
412409
method: testOpenContextsAfterRejections
413410
issue: https://github.com/elastic/elasticsearch/issues/130821

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

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -771,16 +771,8 @@ public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() thro
771771
while (submittedMergesCount > 0 && expectedAvailableBudget.get() > 0L) {
772772
ThreadPoolMergeScheduler.MergeTask mergeTask = mock(ThreadPoolMergeScheduler.MergeTask.class);
773773
when(mergeTask.supportsIOThrottling()).thenReturn(randomBoolean());
774-
doAnswer(mock -> {
775-
Schedule schedule = randomFrom(Schedule.values());
776-
if (schedule == BACKLOG) {
777-
testThreadPool.executor(ThreadPool.Names.GENERIC).execute(() -> {
778-
// re-enqueue backlogged merge task
779-
threadPoolMergeExecutorService.reEnqueueBackloggedMergeTask(mergeTask);
780-
});
781-
}
782-
return schedule;
783-
}).when(mergeTask).schedule();
774+
// avoid backlogging and re-enqueing merge tasks in this test because it makes the queue's available budget unsteady
775+
when(mergeTask.schedule()).thenReturn(randomFrom(RUN, ABORT));
784776
// let some task complete, which will NOT hold up any budget
785777
if (randomBoolean()) {
786778
// this task will NOT hold up any budget because it runs quickly (it is not blocked)

0 commit comments

Comments
 (0)