88 */
99package org .elasticsearch .readiness ;
1010
11- import org .elasticsearch .client .internal .Client ;
1211import org .elasticsearch .cluster .ClusterChangedEvent ;
1312import org .elasticsearch .cluster .ClusterState ;
1413import org .elasticsearch .cluster .ClusterStateListener ;
1817import org .elasticsearch .cluster .service .ClusterService ;
1918import org .elasticsearch .common .settings .Settings ;
2019import org .elasticsearch .core .Strings ;
21- import org .elasticsearch .core .TimeValue ;
2220import org .elasticsearch .core .Tuple ;
23- import org .elasticsearch .discovery .MasterNotDiscoveredException ;
2421import org .elasticsearch .plugins .Plugin ;
2522import org .elasticsearch .reservedstate .service .FileSettingsService ;
2623import org .elasticsearch .test .ESIntegTestCase ;
4845import static org .elasticsearch .test .NodeRoles .nonDataNode ;
4946import static org .hamcrest .Matchers .allOf ;
5047import static org .hamcrest .Matchers .containsString ;
51- import static org .hamcrest .Matchers .equalTo ;
5248import static org .hamcrest .Matchers .hasSize ;
5349import static org .hamcrest .Matchers .notNullValue ;
5450
@@ -110,44 +106,30 @@ protected Collection<Class<? extends Plugin>> getMockPlugins() {
110106 return Collections .unmodifiableList (plugins );
111107 }
112108
113- private void assertMasterNode (Client client , String node ) {
114- assertThat (
115- client .admin ().cluster ().prepareState (TEST_REQUEST_TIMEOUT ).get ().getState ().nodes ().getMasterNode ().getName (),
116- equalTo (node )
117- );
118- }
119-
120- private void expectMasterNotFound () {
121- expectThrows (
122- MasterNotDiscoveredException .class ,
123- clusterAdmin ().prepareState (TEST_REQUEST_TIMEOUT ).setMasterNodeTimeout (TimeValue .timeValueMillis (100 ))
124- );
125- }
126-
127109 @ AwaitsFix (bugUrl = "https://github.com/elastic/elasticsearch/issues/108613" )
128110 public void testReadinessDuringRestarts () throws Exception {
129111 internalCluster ().setBootstrapMasterNodeIndex (0 );
130112 writeFileSettings (testJSON );
131113 logger .info ("--> start data node / non master node" );
132114 String dataNode = internalCluster ().startNode (Settings .builder ().put (dataOnlyNode ()).put ("discovery.initial_state_timeout" , "1s" ));
133115
134- expectMasterNotFound ();
116+ awaitMasterNotFound ();
135117 assertFalse (internalCluster ().getInstance (ReadinessService .class , dataNode ).ready ());
136118
137119 logger .info ("--> start master node" );
138120 final String masterNode = internalCluster ().startMasterOnlyNode ();
139121
140- assertMasterNode (internalCluster ().nonMasterClient (), masterNode );
122+ awaitMasterNode (internalCluster ().getNonMasterNodeName (), masterNode );
141123 tcpReadinessProbeTrue (internalCluster ().getInstance (ReadinessService .class , dataNode ));
142124 tcpReadinessProbeTrue (internalCluster ().getInstance (ReadinessService .class , masterNode ));
143125
144126 final var masterReadinessService = internalCluster ().getInstance (ReadinessService .class , masterNode );
145- assertMasterNode (internalCluster ().nonMasterClient (), masterNode );
127+ awaitMasterNode (internalCluster ().getNonMasterNodeName (), masterNode );
146128
147129 logger .info ("--> stop master node" );
148130 Settings masterDataPathSettings = internalCluster ().dataPathSettings (internalCluster ().getMasterName ());
149131 internalCluster ().stopCurrentMasterNode ();
150- expectMasterNotFound ();
132+ awaitMasterNotFound ();
151133
152134 tcpReadinessProbeFalse (masterReadinessService );
153135
@@ -156,8 +138,8 @@ public void testReadinessDuringRestarts() throws Exception {
156138 Settings .builder ().put (nonDataNode (masterNode ())).put (masterDataPathSettings )
157139 );
158140
159- assertMasterNode (internalCluster ().nonMasterClient (), nextMasterEligibleNodeName );
160- assertMasterNode (internalCluster ().masterClient (), nextMasterEligibleNodeName );
141+ awaitMasterNode (internalCluster ().getNonMasterNodeName (), nextMasterEligibleNodeName );
142+ awaitMasterNode (internalCluster ().getMasterName (), nextMasterEligibleNodeName );
161143 tcpReadinessProbeTrue (internalCluster ().getInstance (ReadinessService .class , nextMasterEligibleNodeName ));
162144 }
163145
@@ -168,7 +150,7 @@ public void testReadinessDuringRestartsNormalOrder() throws Exception {
168150 String masterNode = internalCluster ().startMasterOnlyNode ();
169151 internalCluster ().validateClusterFormed ();
170152
171- assertMasterNode (internalCluster ().masterClient (), masterNode );
153+ awaitMasterNode (internalCluster ().getMasterName (), masterNode );
172154
173155 logger .info ("--> start 2 data nodes" );
174156 List <String > dataNodes = internalCluster ().startDataOnlyNodes (2 );
@@ -196,7 +178,7 @@ public Settings onNodeStopped(String nodeName) throws Exception {
196178 internalCluster ().restartNode (masterNode , new InternalTestCluster .RestartCallback () {
197179 @ Override
198180 public Settings onNodeStopped (String nodeName ) throws Exception {
199- expectMasterNotFound ();
181+ awaitMasterNotFound ();
200182
201183 logger .info ("--> master node [{}] stopped" , nodeName );
202184
@@ -271,7 +253,7 @@ public void testNotReadyOnBadFileSettings() throws Exception {
271253 final String masterNode = internalCluster ().startMasterOnlyNode (
272254 Settings .builder ().put (INITIAL_STATE_TIMEOUT_SETTING .getKey (), "0s" ).build ()
273255 );
274- assertMasterNode (internalCluster ().nonMasterClient (), masterNode );
256+ awaitMasterNode (internalCluster ().getNonMasterNodeName (), masterNode );
275257 var savedClusterState = setupClusterStateListenerForError (masterNode );
276258
277259 FileSettingsService masterFileSettingsService = internalCluster ().getInstance (FileSettingsService .class , masterNode );
@@ -294,22 +276,22 @@ public void testReadyAfterRestartWithBadFileSettings() throws Exception {
294276 String dataNode = internalCluster ().startNode (Settings .builder ().put (dataOnlyNode ()).put ("discovery.initial_state_timeout" , "1s" ));
295277 String masterNode = internalCluster ().startMasterOnlyNode ();
296278
297- assertMasterNode (internalCluster ().nonMasterClient (), masterNode );
279+ awaitMasterNode (internalCluster ().getNonMasterNodeName (), masterNode );
298280 assertBusy (() -> assertTrue ("master node ready" , internalCluster ().getInstance (ReadinessService .class , masterNode ).ready ()));
299281 assertBusy (() -> assertTrue ("data node ready" , internalCluster ().getInstance (ReadinessService .class , dataNode ).ready ()));
300282
301283 logger .info ("--> stop master node" );
302284 Settings masterDataPathSettings = internalCluster ().dataPathSettings (internalCluster ().getMasterName ());
303285 internalCluster ().stopCurrentMasterNode ();
304- expectMasterNotFound ();
286+ awaitMasterNotFound ();
305287
306288 logger .info ("--> write bad file settings before restarting master node" );
307289 writeFileSettings (testErrorJSON );
308290
309291 logger .info ("--> restart master node" );
310292 String nextMasterNode = internalCluster ().startNode (Settings .builder ().put (nonDataNode (masterNode ())).put (masterDataPathSettings ));
311293
312- assertMasterNode (internalCluster ().nonMasterClient (), nextMasterNode );
294+ awaitMasterNode (internalCluster ().getNonMasterNodeName (), nextMasterNode );
313295
314296 var savedClusterState = setupClusterStateListenerForError (nextMasterNode );
315297 assertTrue (savedClusterState .await (20 , TimeUnit .SECONDS ));
@@ -324,7 +306,7 @@ public void testReadyWhenMissingFileSettings() throws Exception {
324306 final String masterNode = internalCluster ().startMasterOnlyNode (
325307 Settings .builder ().put (INITIAL_STATE_TIMEOUT_SETTING .getKey (), "0s" ).build ()
326308 );
327- assertMasterNode (internalCluster ().nonMasterClient (), masterNode );
309+ awaitMasterNode (internalCluster ().getNonMasterNodeName (), masterNode );
328310 var savedClusterState = setupClusterStateListener (masterNode );
329311
330312 // we need this after we setup the listener above, in case the node started and processed
@@ -382,7 +364,7 @@ public void testReadyAfterCorrectFileSettings() throws Exception {
382364
383365 logger .info ("--> start master node" );
384366 final String masterNode = internalCluster ().startMasterOnlyNode ();
385- assertMasterNode (internalCluster ().nonMasterClient (), masterNode );
367+ awaitMasterNode (internalCluster ().getNonMasterNodeName (), masterNode );
386368 var readinessProbeListening = setupReadinessProbeListener (masterNode );
387369
388370 FileSettingsService masterFileSettingsService = internalCluster ().getInstance (FileSettingsService .class , masterNode );
0 commit comments