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,21 @@ 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 "
105
+ + "and will be removed in a future release. See the breaking changes documentation for the next major version."
106
+ );
107
+ }
101
108
PathUtilsForTesting .teardown ();
102
109
aFileStore = null ;
103
110
bFileStore = null ;
104
111
testThreadPool .close ();
105
112
nodeEnvironment .close ();
106
113
}
107
114
108
- @ After
109
- public void cleanupThreadPool () {
110
- testThreadPool .scheduledTasks .clear ();
111
- }
112
-
113
115
static class TestCapturingThreadPool extends TestThreadPool {
114
116
final List <Tuple <TimeValue , Cancellable >> scheduledTasks = new ArrayList <>();
115
117
@@ -319,8 +321,6 @@ public void testDiskSpaceMonitorStartsAsDisabled() throws Exception {
319
321
)
320
322
);
321
323
}
322
- aFileStore .throwIoException = false ;
323
- bFileStore .throwIoException = false ;
324
324
}
325
325
326
326
public void testAvailableDiskSpaceMonitorWhenFileSystemStatErrors () throws Exception {
@@ -406,8 +406,6 @@ public void testAvailableDiskSpaceMonitorWhenFileSystemStatErrors() throws Excep
406
406
}
407
407
});
408
408
}
409
- aFileStore .throwIoException = false ;
410
- bFileStore .throwIoException = false ;
411
409
}
412
410
413
411
public void testAvailableDiskSpaceMonitorSettingsUpdate () throws Exception {
@@ -516,12 +514,6 @@ public void testAvailableDiskSpaceMonitorSettingsUpdate() throws Exception {
516
514
}
517
515
}, 5 , TimeUnit .SECONDS );
518
516
}
519
- if (setThreadPoolMergeSchedulerSetting ) {
520
- assertWarnings (
521
- "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch "
522
- + "and will be removed in a future release. See the breaking changes documentation for the next major version."
523
- );
524
- }
525
517
}
526
518
527
519
public void testAbortingOrRunningMergeTaskHoldsUpBudget () throws Exception {
@@ -564,7 +556,7 @@ public void testAbortingOrRunningMergeTaskHoldsUpBudget() throws Exception {
564
556
testDoneLatch .await ();
565
557
return null ;
566
558
}).when (stallingMergeTask ).abort ();
567
- threadPoolMergeExecutorService .submitMergeTask (stallingMergeTask );
559
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (stallingMergeTask ) );
568
560
// assert the merge task is holding up disk space budget
569
561
expectedAvailableBudget .set (expectedAvailableBudget .get () - taskBudget );
570
562
assertBusy (
@@ -574,7 +566,7 @@ public void testAbortingOrRunningMergeTaskHoldsUpBudget() throws Exception {
574
566
ThreadPoolMergeScheduler .MergeTask mergeTask = mock (ThreadPoolMergeScheduler .MergeTask .class );
575
567
when (mergeTask .estimatedRemainingMergeSize ()).thenReturn (randomLongBetween (0L , expectedAvailableBudget .get ()));
576
568
when (mergeTask .schedule ()).thenReturn (RUN );
577
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
569
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
578
570
assertBusy (() -> {
579
571
verify (mergeTask ).schedule ();
580
572
verify (mergeTask ).run ();
@@ -595,12 +587,6 @@ public void testAbortingOrRunningMergeTaskHoldsUpBudget() throws Exception {
595
587
assertThat (threadPoolMergeExecutorService .allDone (), is (true ));
596
588
});
597
589
}
598
- if (setThreadPoolMergeSchedulerSetting ) {
599
- assertWarnings (
600
- "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch "
601
- + "and will be removed in a future release. See the breaking changes documentation for the next major version."
602
- );
603
- }
604
590
}
605
591
606
592
public void testBackloggedMergeTasksDoNotHoldUpBudget () throws Exception {
@@ -654,7 +640,7 @@ && randomBoolean()) {
654
640
testDoneLatch .await ();
655
641
return null ;
656
642
}).when (mergeTask ).abort ();
657
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
643
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
658
644
if (mergeTask .schedule () == RUN ) {
659
645
runningMergeTasks .add (mergeTask );
660
646
} else {
@@ -679,7 +665,7 @@ && randomBoolean()) {
679
665
return RUN ;
680
666
}
681
667
}).when (mergeTask ).schedule ();
682
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
668
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
683
669
backloggingMergeTasksScheduleCountMap .put (mergeTask , 1 );
684
670
}
685
671
int checkRounds = randomIntBetween (1 , 10 );
@@ -712,7 +698,7 @@ && randomBoolean()) {
712
698
long taskBudget = randomLongBetween (1L , backloggedMergeTaskDiskSpaceBudget );
713
699
when (mergeTask .estimatedRemainingMergeSize ()).thenReturn (taskBudget );
714
700
when (mergeTask .schedule ()).thenReturn (RUN );
715
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
701
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
716
702
assertBusy (() -> {
717
703
verify (mergeTask ).schedule ();
718
704
verify (mergeTask ).run ();
@@ -739,12 +725,6 @@ && randomBoolean()) {
739
725
assertThat (threadPoolMergeExecutorService .allDone (), is (true ));
740
726
});
741
727
}
742
- if (setThreadPoolMergeSchedulerSetting ) {
743
- assertWarnings (
744
- "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch "
745
- + "and will be removed in a future release. See the breaking changes documentation for the next major version."
746
- );
747
- }
748
728
}
749
729
750
730
public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution () throws Exception {
@@ -823,7 +803,7 @@ public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() thro
823
803
runningOrAbortingMergeTasksList .add (mergeTask );
824
804
latchesBlockingMergeTasksList .add (blockMergeTaskLatch );
825
805
}
826
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
806
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
827
807
}
828
808
// currently running (or aborting) merge tasks have consumed some of the available budget
829
809
while (runningOrAbortingMergeTasksList .isEmpty () == false ) {
@@ -855,8 +835,8 @@ public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() thro
855
835
// merge task 2 can run because it is under budget
856
836
when (mergeTask2 .estimatedRemainingMergeSize ()).thenReturn (underBudget );
857
837
}
858
- threadPoolMergeExecutorService .submitMergeTask (mergeTask1 );
859
- threadPoolMergeExecutorService .submitMergeTask (mergeTask2 );
838
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask1 ) );
839
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask2 ) );
860
840
assertBusy (() -> {
861
841
if (task1Runs ) {
862
842
verify (mergeTask1 ).schedule ();
@@ -890,12 +870,6 @@ public void testUnavailableBudgetBlocksNewMergeTasksFromStartingExecution() thro
890
870
bFileStore .usableSpace = Long .MAX_VALUE ;
891
871
assertBusy (() -> assertThat (threadPoolMergeExecutorService .allDone (), is (true )));
892
872
}
893
- if (setThreadPoolMergeSchedulerSetting ) {
894
- assertWarnings (
895
- "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch "
896
- + "and will be removed in a future release. See the breaking changes documentation for the next major version."
897
- );
898
- }
899
873
}
900
874
901
875
public void testEnqueuedMergeTasksAreUnblockedWhenEstimatedMergeSizeChanges () throws Exception {
@@ -990,12 +964,6 @@ public void testEnqueuedMergeTasksAreUnblockedWhenEstimatedMergeSizeChanges() th
990
964
}
991
965
});
992
966
}
993
- if (setThreadPoolMergeSchedulerSetting ) {
994
- assertWarnings (
995
- "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch "
996
- + "and will be removed in a future release. See the breaking changes documentation for the next major version."
997
- );
998
- }
999
967
}
1000
968
1001
969
public void testMergeTasksAreUnblockedWhenMoreDiskSpaceBecomesAvailable () throws Exception {
@@ -1058,7 +1026,7 @@ public void testMergeTasksAreUnblockedWhenMoreDiskSpaceBecomesAvailable() throws
1058
1026
testDoneLatch .await ();
1059
1027
return null ;
1060
1028
}).when (mergeTask ).abort ();
1061
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
1029
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
1062
1030
if (mergeTask .schedule () == RUN ) {
1063
1031
runningMergeTasks .add (mergeTask );
1064
1032
} else {
@@ -1083,7 +1051,7 @@ public void testMergeTasksAreUnblockedWhenMoreDiskSpaceBecomesAvailable() throws
1083
1051
when (mergeTask .estimatedRemainingMergeSize ()).thenReturn (taskBudget );
1084
1052
Schedule schedule = randomFrom (RUN , ABORT );
1085
1053
when (mergeTask .schedule ()).thenReturn (schedule );
1086
- threadPoolMergeExecutorService .submitMergeTask (mergeTask );
1054
+ assertTrue ( threadPoolMergeExecutorService .submitMergeTask (mergeTask ) );
1087
1055
if (schedule == RUN ) {
1088
1056
overBudgetTasksToRunList .add (mergeTask );
1089
1057
} else {
@@ -1150,11 +1118,5 @@ public void testMergeTasksAreUnblockedWhenMoreDiskSpaceBecomesAvailable() throws
1150
1118
);
1151
1119
});
1152
1120
}
1153
- if (setThreadPoolMergeSchedulerSetting ) {
1154
- assertWarnings (
1155
- "[indices.merge.scheduler.use_thread_pool] setting was deprecated in Elasticsearch "
1156
- + "and will be removed in a future release. See the breaking changes documentation for the next major version."
1157
- );
1158
- }
1159
1121
}
1160
1122
}
0 commit comments