@@ -847,6 +847,7 @@ public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() thro
847847 when (mergeTask2 .schedule ()).thenReturn (RUN );
848848 boolean task1Runs = randomBoolean ();
849849 long currentAvailableBudget = expectedAvailableBudget .get ();
850+ // the over-budget here can be larger than the total initial available budget
850851 long overBudget = randomLongBetween (currentAvailableBudget + 1L , currentAvailableBudget + 100L );
851852 long underBudget = randomLongBetween (0L , currentAvailableBudget );
852853 if (task1Runs ) {
@@ -882,11 +883,13 @@ public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() thro
882883 // update the expected budget given that one task now finished
883884 expectedAvailableBudget .set (expectedAvailableBudget .get () + completedMergeTask .estimatedRemainingMergeSize ());
884885 }
885- // let the test finish cleanly
886- assertBusy (() -> {
887- assertThat (threadPoolMergeExecutorService .getDiskSpaceAvailableForNewMergeTasks (), is (aHasMoreSpace ? 112_500L : 103_000L ));
888- assertThat (threadPoolMergeExecutorService .allDone (), is (true ));
889- });
886+ assertBusy (() -> assertThat (threadPoolMergeExecutorService .getDiskSpaceAvailableForNewMergeTasks (), is (aHasMoreSpace ? 112_500L : 103_000L )));
887+ // let the test finish cleanly (some tasks can be over budget even if all the other tasks finished running)
888+ aFileStore .totalSpace = Long .MAX_VALUE ;
889+ bFileStore .totalSpace = Long .MAX_VALUE ;
890+ aFileStore .usableSpace = Long .MAX_VALUE ;
891+ bFileStore .usableSpace = Long .MAX_VALUE ;
892+ assertBusy (() -> assertThat (threadPoolMergeExecutorService .allDone (), is (true )));
890893 }
891894 if (setThreadPoolMergeSchedulerSetting ) {
892895 assertWarnings (
0 commit comments