8
8
package org .elasticsearch .cluster .coordination ;
9
9
10
10
import org .apache .logging .log4j .Level ;
11
- import org .apache .logging .log4j .LogManager ;
12
11
import org .elasticsearch .ElasticsearchException ;
13
12
import org .elasticsearch .Version ;
14
13
import org .elasticsearch .cluster .metadata .Metadata ;
15
14
import org .elasticsearch .cluster .node .DiscoveryNode ;
16
15
import org .elasticsearch .cluster .node .DiscoveryNodeRole ;
17
16
import org .elasticsearch .common .UUIDs ;
18
- import org .elasticsearch .common .logging .Loggers ;
19
17
import org .elasticsearch .common .settings .Settings ;
20
18
import org .elasticsearch .common .util .concurrent .DeterministicTaskQueue ;
19
+ import org .elasticsearch .core .TimeValue ;
21
20
import org .elasticsearch .discovery .DiscoveryModule ;
22
21
import org .elasticsearch .test .ESTestCase ;
23
22
import org .elasticsearch .test .MockLogAppender ;
@@ -661,13 +660,9 @@ public void testFailBootstrapNonMasterEligibleNodeWithSingleNodeDiscovery() {
661
660
);
662
661
}
663
662
664
- public void testBootstrapStateLogging () throws IllegalAccessException {
663
+ public void testBootstrapStateLogging () {
665
664
final var mockAppender = new MockLogAppender ();
666
- mockAppender .start ();
667
- final var serviceLogger = LogManager .getLogger (ClusterBootstrapService .class );
668
- Loggers .addAppender (serviceLogger , mockAppender );
669
-
670
- try {
665
+ try (var ignored = mockAppender .capturing (ClusterBootstrapService .class )) {
671
666
mockAppender .addExpectation (
672
667
new MockLogAppender .SeenEventExpectation (
673
668
"fresh node message" ,
@@ -710,14 +705,16 @@ public void testBootstrapStateLogging() throws IllegalAccessException {
710
705
711
706
mockAppender .assertAllExpectationsMatched ();
712
707
708
+ final var warningMessagePattern = """
709
+ this node is locked into cluster UUID [test-uuid] but [cluster.initial_master_nodes] is set to [node1, node2]; \
710
+ remove this setting to avoid possible data loss caused by subsequent cluster bootstrap attempts""" ;
711
+
713
712
mockAppender .addExpectation (
714
713
new MockLogAppender .SeenEventExpectation (
715
714
"bootstrapped node message if bootstrapping still configured" ,
716
715
ClusterBootstrapService .class .getCanonicalName (),
717
716
Level .WARN ,
718
- """
719
- this node is locked into cluster UUID [test-uuid] but [cluster.initial_master_nodes] is set to [node1, node2]; \
720
- remove this setting to avoid possible data loss caused by subsequent cluster bootstrap attempts"""
717
+ warningMessagePattern
721
718
)
722
719
);
723
720
@@ -731,9 +728,22 @@ public void testBootstrapStateLogging() throws IllegalAccessException {
731
728
732
729
mockAppender .assertAllExpectationsMatched ();
733
730
734
- } finally {
735
- Loggers .removeAppender (serviceLogger , mockAppender );
736
- mockAppender .stop ();
731
+ mockAppender .addExpectation (
732
+ new MockLogAppender .SeenEventExpectation (
733
+ "bootstrapped node message if bootstrapping still configured" ,
734
+ ClusterBootstrapService .class .getCanonicalName (),
735
+ Level .WARN ,
736
+ warningMessagePattern
737
+ )
738
+ );
739
+
740
+ var startTime = deterministicTaskQueue .getCurrentTimeMillis ();
741
+ while (deterministicTaskQueue .getCurrentTimeMillis () <= startTime + TimeValue .timeValueHours (12 ).millis ()) {
742
+ deterministicTaskQueue .runAllRunnableTasks ();
743
+ deterministicTaskQueue .advanceTime ();
744
+ }
745
+
746
+ mockAppender .assertAllExpectationsMatched ();
737
747
}
738
748
}
739
749
}
0 commit comments