Commit 852011a 1 parent 5231937 commit 852011a Copy full SHA for 852011a
File tree 2 files changed +18
-12
lines changed
server/src/internalClusterTest/java/org/opensearch/cluster
test/framework/src/main/java/org/opensearch/test
2 files changed +18
-12
lines changed Original file line number Diff line number Diff line change 44
44
import org .opensearch .test .OpenSearchIntegTestCase .Scope ;
45
45
46
46
import java .io .IOException ;
47
+ import java .util .function .Supplier ;
47
48
48
49
import static org .opensearch .test .NodeRoles .clusterManagerNode ;
49
50
import static org .opensearch .test .NodeRoles .dataOnlyNode ;
@@ -254,9 +255,9 @@ public void testElectOnlyBetweenClusterManagerNodes() throws Exception {
254
255
logger .info ("--> closing cluster-manager node (1)" );
255
256
client ().execute (AddVotingConfigExclusionsAction .INSTANCE , new AddVotingConfigExclusionsRequest (clusterManagerNodeName )).get ();
256
257
// 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 ()
260
261
.admin ()
261
262
.cluster ()
262
263
.prepareState ()
@@ -265,9 +266,14 @@ public void testElectOnlyBetweenClusterManagerNodes() throws Exception {
265
266
.getState ()
266
267
.nodes ()
267
268
.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 ));
271
277
assertThat (
272
278
internalCluster ().clusterManagerClient ()
273
279
.admin ()
Original file line number Diff line number Diff line change 89
89
import org .opensearch .core .index .shard .ShardId ;
90
90
import org .opensearch .core .indices .breaker .CircuitBreakerService ;
91
91
import org .opensearch .core .util .FileSystemUtils ;
92
+ import org .opensearch .discovery .ClusterManagerNotDiscoveredException ;
92
93
import org .opensearch .env .Environment ;
93
94
import org .opensearch .env .NodeEnvironment ;
94
95
import org .opensearch .env .ShardLockObtainFailedException ;
@@ -2086,13 +2087,12 @@ public String getClusterManagerName() {
2086
2087
* in the viaNode parameter. If viaNode isn't specified a random node will be picked to the send the request to.
2087
2088
*/
2088
2089
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" );
2095
2094
}
2095
+ return clusterManagerNode .getName ();
2096
2096
}
2097
2097
2098
2098
synchronized Set <String > allDataNodesButN (int count ) {
You can’t perform that action at this time.
0 commit comments