diff --git a/muted-tests.yml b/muted-tests.yml index 72de2e65e278..de95e158d505 100644 --- a/muted-tests.yml +++ b/muted-tests.yml @@ -476,9 +476,6 @@ tests: - class: org.elasticsearch.index.engine.ThreadPoolMergeExecutorServiceDiskSpaceTests method: testAvailableDiskSpaceMonitorWhenFileSystemStatErrors issue: https://github.com/elastic/elasticsearch/issues/129149 -- class: org.elasticsearch.index.engine.ThreadPoolMergeExecutorServiceDiskSpaceTests - method: testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution - issue: https://github.com/elastic/elasticsearch/issues/129148 - class: org.elasticsearch.xpack.esql.qa.single_node.GenerativeForkIT method: test {lookup-join.EnrichLookupStatsBug ASYNC} issue: https://github.com/elastic/elasticsearch/issues/129228 diff --git a/server/src/test/java/org/elasticsearch/index/engine/ThreadPoolMergeExecutorServiceDiskSpaceTests.java b/server/src/test/java/org/elasticsearch/index/engine/ThreadPoolMergeExecutorServiceDiskSpaceTests.java index 5b97878b1845..4653f8210cda 100644 --- a/server/src/test/java/org/elasticsearch/index/engine/ThreadPoolMergeExecutorServiceDiskSpaceTests.java +++ b/server/src/test/java/org/elasticsearch/index/engine/ThreadPoolMergeExecutorServiceDiskSpaceTests.java @@ -847,6 +847,7 @@ public class ThreadPoolMergeExecutorServiceDiskSpaceTests extends ESTestCase { when(mergeTask2.schedule()).thenReturn(RUN); boolean task1Runs = randomBoolean(); long currentAvailableBudget = expectedAvailableBudget.get(); + // the over-budget here can be larger than the total initial available budget long overBudget = randomLongBetween(currentAvailableBudget + 1L, currentAvailableBudget + 100L); long underBudget = randomLongBetween(0L, currentAvailableBudget); if (task1Runs) { @@ -882,11 +883,18 @@ public class ThreadPoolMergeExecutorServiceDiskSpaceTests extends ESTestCase { // update the expected budget given that one task now finished expectedAvailableBudget.set(expectedAvailableBudget.get() + completedMergeTask.estimatedRemainingMergeSize()); } - // let the test finish cleanly - assertBusy(() -> { - assertThat(threadPoolMergeExecutorService.getDiskSpaceAvailableForNewMergeTasks(), is(aHasMoreSpace ? 112_500L : 103_000L)); - assertThat(threadPoolMergeExecutorService.allDone(), is(true)); - }); + assertBusy( + () -> assertThat( + threadPoolMergeExecutorService.getDiskSpaceAvailableForNewMergeTasks(), + is(aHasMoreSpace ? 112_500L : 103_000L) + ) + ); + // let the test finish cleanly (some tasks can be over budget even if all the other tasks finished running) + aFileStore.totalSpace = Long.MAX_VALUE; + bFileStore.totalSpace = Long.MAX_VALUE; + aFileStore.usableSpace = Long.MAX_VALUE; + bFileStore.usableSpace = Long.MAX_VALUE; + assertBusy(() -> assertThat(threadPoolMergeExecutorService.allDone(), is(true))); } if (setThreadPoolMergeSchedulerSetting) { assertWarnings(