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 ;
@@ -2155,13 +2156,12 @@ public String getClusterManagerName() {
21552156 * in the viaNode parameter. If viaNode isn't specified a random node will be picked to the send the request to.
21562157 */
21572158 public String getClusterManagerName (@ Nullable String viaNode ) {
2158- try {
2159- Client client = viaNode != null ? client (viaNode ) : client ();
2160- return client .admin ().cluster ().prepareState ().get ().getState ().nodes ().getClusterManagerNode ().getName ();
2161- } catch (Exception e ) {
2162- logger .warn ("Can't fetch cluster state" , e );
2163- throw new RuntimeException ("Can't get cluster-manager node " + e .getMessage (), e );
2159+ Client client = viaNode != null ? client (viaNode ) : client ();
2160+ DiscoveryNode clusterManagerNode = client .admin ().cluster ().prepareState ().get ().getState ().nodes ().getClusterManagerNode ();
2161+ if (clusterManagerNode == null ) {
2162+ throw new ClusterManagerNotDiscoveredException ("Cluster manager node not discovered" );
21642163 }
2164+ return clusterManagerNode .getName ();
21652165 }
21662166
21672167 /**
You can’t perform that action at this time.
0 commit comments