Skip to content

Commit 8fe6ed3

Browse files
Avoid re-enqueueing merge tasks (#132020) (#132268)
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 2225627 commit 8fe6ed3

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
@@ -232,9 +232,6 @@ tests:
232232
- class: org.elasticsearch.action.admin.cluster.node.tasks.CancellableTasksIT
233233
method: testChildrenTasksCancelledOnTimeout
234234
issue: https://github.com/elastic/elasticsearch/issues/123568
235-
- class: org.elasticsearch.index.engine.ThreadPoolMergeExecutorServiceDiskSpaceTests
236-
method: testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution
237-
issue: https://github.com/elastic/elasticsearch/issues/130205
238235
- class: org.elasticsearch.packaging.test.DockerTests
239236
method: test050BasicApiTests
240237
issue: https://github.com/elastic/elasticsearch/issues/120911

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)