27
27
import org .elasticsearch .threadpool .TestThreadPool ;
28
28
import org .elasticsearch .threadpool .ThreadPool ;
29
29
import org .junit .After ;
30
- import org .junit .AfterClass ;
31
- import org .junit .BeforeClass ;
30
+ import org .junit .Before ;
32
31
33
32
import java .io .IOException ;
34
33
import java .nio .file .FileStore ;
59
58
60
59
public class ThreadPoolMergeExecutorServiceDiskSpaceTests extends ESTestCase {
61
60
62
- private static TestMockFileStore aFileStore = new TestMockFileStore ( "mocka" ) ;
63
- private static TestMockFileStore bFileStore = new TestMockFileStore ( "mockb" ) ;
61
+ private static TestMockFileStore aFileStore ;
62
+ private static TestMockFileStore bFileStore ;
64
63
private static String aPathPart ;
65
64
private static String bPathPart ;
66
65
private static int mergeExecutorThreadCount ;
@@ -69,8 +68,10 @@ public class ThreadPoolMergeExecutorServiceDiskSpaceTests extends ESTestCase {
69
68
private static NodeEnvironment nodeEnvironment ;
70
69
private static boolean setThreadPoolMergeSchedulerSetting ;
71
70
72
- @ BeforeClass
73
- public static void installMockUsableSpaceFS () throws Exception {
71
+ @ Before
72
+ public void setupTestEnv () throws Exception {
73
+ aFileStore = new TestMockFileStore ("mocka" );
74
+ bFileStore = new TestMockFileStore ("mockb" );
74
75
FileSystem current = PathUtils .getDefaultFileSystem ();
75
76
aPathPart = "a-" + randomUUID ();
76
77
bPathPart = "b-" + randomUUID ();
@@ -96,20 +97,20 @@ public static void installMockUsableSpaceFS() throws Exception {
96
97
nodeEnvironment = new NodeEnvironment (settings , TestEnvironment .newEnvironment (settings ));
97
98
}
98
99
99
- @ AfterClass
100
- public static void removeMockUsableSpaceFS () {
100
+ @ After
101
+ public void removeMockUsableSpaceFS () {
102
+ if (setThreadPoolMergeSchedulerSetting ) {
103
+ assertWarnings (
104
+ "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
105
+ );
106
+ }
101
107
PathUtilsForTesting .teardown ();
102
108
aFileStore = null ;
103
109
bFileStore = null ;
104
110
testThreadPool .close ();
105
111
nodeEnvironment .close ();
106
112
}
107
113
108
- @ After
109
- public void cleanupThreadPool () {
110
- testThreadPool .scheduledTasks .clear ();
111
- }
112
-
113
114
static class TestCapturingThreadPool extends TestThreadPool {
114
115
final List <Tuple <TimeValue , Cancellable >> scheduledTasks = new ArrayList <>();
115
116
@@ -319,8 +320,6 @@ public void testDiskSpaceMonitorStartsAsDisabled() throws Exception {
319
320
)
320
321
);
321
322
}
322
- aFileStore .throwIoException = false ;
323
- bFileStore .throwIoException = false ;
324
323
}
325
324
326
325
public void testAvailableDiskSpaceMonitorWhenFileSystemStatErrors () throws Exception {
@@ -406,8 +405,6 @@ public void testAvailableDiskSpaceMonitorWhenFileSystemStatErrors() throws Excep
406
405
}
407
406
});
408
407
}
409
- aFileStore .throwIoException = false ;
410
- bFileStore .throwIoException = false ;
411
408
}
412
409
413
410
public void testAvailableDiskSpaceMonitorSettingsUpdate () throws Exception {
@@ -516,11 +513,6 @@ public void testAvailableDiskSpaceMonitorSettingsUpdate() throws Exception {
516
513
}
517
514
}, 5 , TimeUnit .SECONDS );
518
515
}
519
- if (setThreadPoolMergeSchedulerSetting ) {
520
- assertWarnings (
521
- "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
522
- );
523
- }
524
516
}
525
517
526
518
public void testAbortingOrRunningMergeTaskHoldsUpBudget () throws Exception {
@@ -563,7 +555,7 @@ public void testAbortingOrRunningMergeTaskHoldsUpBudget() throws Exception {
563
555
testDoneLatch .await ();
564
556
return null ;
565
557
}).when (stallingMergeTask ).abort ();
566
- threadPoolMergeExecutorService .submitMergeTask (stallingMergeTask );
558
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (stallingMergeTask ) );
567
559
// assert the merge task is holding up disk space budget
568
560
expectedAvailableBudget .set (expectedAvailableBudget .get () - taskBudget );
569
561
assertBusy (
@@ -573,7 +565,7 @@ public void testAbortingOrRunningMergeTaskHoldsUpBudget() throws Exception {
573
565
ThreadPoolMergeScheduler .MergeTask mergeTask = mock (ThreadPoolMergeScheduler .MergeTask .class );
574
566
when (mergeTask .estimatedRemainingMergeSize ()).thenReturn (randomLongBetween (0L , expectedAvailableBudget .get ()));
575
567
when (mergeTask .schedule ()).thenReturn (RUN );
576
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
568
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
577
569
assertBusy (() -> {
578
570
verify (mergeTask ).schedule ();
579
571
verify (mergeTask ).run ();
@@ -594,11 +586,6 @@ public void testAbortingOrRunningMergeTaskHoldsUpBudget() throws Exception {
594
586
assertThat (threadPoolMergeExecutorService .allDone (), is (true ));
595
587
});
596
588
}
597
- if (setThreadPoolMergeSchedulerSetting ) {
598
- assertWarnings (
599
- "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
600
- );
601
- }
602
589
}
603
590
604
591
public void testBackloggedMergeTasksDoNotHoldUpBudget () throws Exception {
@@ -652,7 +639,7 @@ && randomBoolean()) {
652
639
testDoneLatch .await ();
653
640
return null ;
654
641
}).when (mergeTask ).abort ();
655
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
642
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
656
643
if (mergeTask .schedule () == RUN ) {
657
644
runningMergeTasks .add (mergeTask );
658
645
} else {
@@ -677,7 +664,7 @@ && randomBoolean()) {
677
664
return RUN ;
678
665
}
679
666
}).when (mergeTask ).schedule ();
680
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
667
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
681
668
backloggingMergeTasksScheduleCountMap .put (mergeTask , 1 );
682
669
}
683
670
int checkRounds = randomIntBetween (1 , 10 );
@@ -710,7 +697,7 @@ && randomBoolean()) {
710
697
long taskBudget = randomLongBetween (1L , backloggedMergeTaskDiskSpaceBudget );
711
698
when (mergeTask .estimatedRemainingMergeSize ()).thenReturn (taskBudget );
712
699
when (mergeTask .schedule ()).thenReturn (RUN );
713
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
700
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
714
701
assertBusy (() -> {
715
702
verify (mergeTask ).schedule ();
716
703
verify (mergeTask ).run ();
@@ -737,11 +724,6 @@ && randomBoolean()) {
737
724
assertThat (threadPoolMergeExecutorService .allDone (), is (true ));
738
725
});
739
726
}
740
- if (setThreadPoolMergeSchedulerSetting ) {
741
- assertWarnings (
742
- "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
743
- );
744
- }
745
727
}
746
728
747
729
public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution () throws Exception {
@@ -820,7 +802,7 @@ public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() thro
820
802
runningOrAbortingMergeTasksList .add (mergeTask );
821
803
latchesBlockingMergeTasksList .add (blockMergeTaskLatch );
822
804
}
823
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
805
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
824
806
}
825
807
// currently running (or aborting) merge tasks have consumed some of the available budget
826
808
while (runningOrAbortingMergeTasksList .isEmpty () == false ) {
@@ -852,8 +834,8 @@ public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() thro
852
834
// merge task 2 can run because it is under budget
853
835
when (mergeTask2 .estimatedRemainingMergeSize ()).thenReturn (underBudget );
854
836
}
855
- threadPoolMergeExecutorService .submitMergeTask (mergeTask1 );
856
- threadPoolMergeExecutorService .submitMergeTask (mergeTask2 );
837
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask1 ) );
838
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask2 ) );
857
839
assertBusy (() -> {
858
840
if (task1Runs ) {
859
841
verify (mergeTask1 ).schedule ();
@@ -887,11 +869,6 @@ public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() thro
887
869
bFileStore .usableSpace = Long .MAX_VALUE ;
888
870
assertBusy (() -> assertThat (threadPoolMergeExecutorService .allDone (), is (true )));
889
871
}
890
- if (setThreadPoolMergeSchedulerSetting ) {
891
- assertWarnings (
892
- "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
893
- );
894
- }
895
872
}
896
873
897
874
public void testEnqueuedMergeTasksAreUnblockedWhenEstimatedMergeSizeChanges () throws Exception {
@@ -986,11 +963,6 @@ public void testEnqueuedMergeTasksAreUnblockedWhenEstimatedMergeSizeChanges() th
986
963
}
987
964
});
988
965
}
989
- if (setThreadPoolMergeSchedulerSetting ) {
990
- assertWarnings (
991
- "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
992
- );
993
- }
994
966
}
995
967
996
968
public void testMergeTasksAreUnblockedWhenMoreDiskSpaceBecomesAvailable () throws Exception {
@@ -1053,7 +1025,7 @@ public void testMergeTasksAreUnblockedWhenMoreDiskSpaceBecomesAvailable() throws
1053
1025
testDoneLatch .await ();
1054
1026
return null ;
1055
1027
}).when (mergeTask ).abort ();
1056
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
1028
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
1057
1029
if (mergeTask .schedule () == RUN ) {
1058
1030
runningMergeTasks .add (mergeTask );
1059
1031
} else {
@@ -1078,7 +1050,7 @@ public void testMergeTasksAreUnblockedWhenMoreDiskSpaceBecomesAvailable() throws
1078
1050
when (mergeTask .estimatedRemainingMergeSize ()).thenReturn (taskBudget );
1079
1051
Schedule schedule = randomFrom (RUN , ABORT );
1080
1052
when (mergeTask .schedule ()).thenReturn (schedule );
1081
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
1053
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
1082
1054
if (schedule == RUN ) {
1083
1055
overBudgetTasksToRunList .add (mergeTask );
1084
1056
} else {
@@ -1145,11 +1117,6 @@ public void testMergeTasksAreUnblockedWhenMoreDiskSpaceBecomesAvailable() throws
1145
1117
);
1146
1118
});
1147
1119
}
1148
- if (setThreadPoolMergeSchedulerSetting ) {
1149
- assertWarnings (
1150
- "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch and will be removed in a future release."
1151
- );
1152
- }
1153
1120
}
1154
1121
1155
1122
private static <T > T getLast (final Iterable <T > elements ) {
0 commit comments