File tree Expand file tree Collapse file tree 2 files changed +18
-12
lines changed
server/src/internalClusterTest/java/org/opensearch/cluster
test/framework/src/main/java/org/opensearch/test Expand file tree Collapse file tree 2 files changed +18
-12
lines changed Original file line number Diff line number Diff line change 4444import org .opensearch .test .OpenSearchIntegTestCase .Scope ;
4545
4646import java .io .IOException ;
47+ import java .util .function .Supplier ;
4748
4849import static org .opensearch .test .NodeRoles .clusterManagerNode ;
4950import static org .opensearch .test .NodeRoles .dataOnlyNode ;
@@ -254,9 +255,9 @@ public void testElectOnlyBetweenClusterManagerNodes() throws Exception {
254255 logger .info ("--> closing cluster-manager node (1)" );
255256 client ().execute (AddVotingConfigExclusionsAction .INSTANCE , new AddVotingConfigExclusionsRequest (clusterManagerNodeName )).get ();
256257 // removing the cluster-manager from the voting configuration immediately triggers the cluster-manager to step down
257- assertBusy ( () -> {
258- assertThat (
259- internalCluster ().nonClusterManagerClient ()
258+ Supplier < String > getClusterManagerIfElected = () -> {
259+ try {
260+ return internalCluster ().nonClusterManagerClient ()
260261 .admin ()
261262 .cluster ()
262263 .prepareState ()
@@ -265,9 +266,14 @@ public void testElectOnlyBetweenClusterManagerNodes() throws Exception {
265266 .getState ()
266267 .nodes ()
267268 .getClusterManagerNode ()
268- .getName (),
269- equalTo (nextClusterManagerEligableNodeName )
270- );
269+ .getName ();
270+ } catch (ClusterManagerNotDiscoveredException e ) {
271+ logger .debug ("failed to get cluster-manager name" , e );
272+ return null ;
273+ }
274+ };
275+ assertBusy (() -> {
276+ assertThat (getClusterManagerIfElected .get (), equalTo (nextClusterManagerEligableNodeName ));
271277 assertThat (
272278 internalCluster ().clusterManagerClient ()
273279 .admin ()
Original file line number Diff line number Diff line change 8989import org .opensearch .core .index .shard .ShardId ;
9090import org .opensearch .core .indices .breaker .CircuitBreakerService ;
9191import org .opensearch .core .util .FileSystemUtils ;
92+ import org .opensearch .discovery .ClusterManagerNotDiscoveredException ;
9293import org .opensearch .env .Environment ;
9394import org .opensearch .env .NodeEnvironment ;
9495import org .opensearch .env .ShardLockObtainFailedException ;
@@ -2086,13 +2087,12 @@ public String getClusterManagerName() {
20862087 * in the viaNode parameter. If viaNode isn't specified a random node will be picked to the send the request to.
20872088 */
20882089 public String getClusterManagerName (@ Nullable String viaNode ) {
2089- try {
2090- Client client = viaNode != null ? client (viaNode ) : client ();
2091- return client .admin ().cluster ().prepareState ().get ().getState ().nodes ().getClusterManagerNode ().getName ();
2092- } catch (Exception e ) {
2093- logger .warn ("Can't fetch cluster state" , e );
2094- throw new RuntimeException ("Can't get cluster-manager node " + e .getMessage (), e );
2090+ Client client = viaNode != null ? client (viaNode ) : client ();
2091+ DiscoveryNode clusterManagerNode = client .admin ().cluster ().prepareState ().get ().getState ().nodes ().getClusterManagerNode ();
2092+ if (clusterManagerNode == null ) {
2093+ throw new ClusterManagerNotDiscoveredException ("Cluster manager node not discovered" );
20952094 }
2095+ return clusterManagerNode .getName ();
20962096 }
20972097
20982098 synchronized Set <String > allDataNodesButN (int count ) {
You can’t perform that action at this time.
0 commit comments