Commit 40548ec 1 parent f9c239d commit 40548ec Copy full SHA for 40548ec
File tree 2 files changed +20
-7
lines changed
server/src/internalClusterTest/java/org/opensearch/cluster
test/framework/src/main/java/org/opensearch/test
2 files changed +20
-7
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 ;
@@ -2168,7 +2169,13 @@ public String getClusterManagerName() {
2168
2169
public String getClusterManagerName (@ Nullable String viaNode ) {
2169
2170
try {
2170
2171
Client client = viaNode != null ? client (viaNode ) : client ();
2171
- return client .admin ().cluster ().prepareState ().get ().getState ().nodes ().getClusterManagerNode ().getName ();
2172
+ DiscoveryNode masterNode = client .admin ().cluster ().prepareState ().get ().getState ().nodes ().getClusterManagerNode ();
2173
+ if (masterNode == null ) {
2174
+ throw new ClusterManagerNotDiscoveredException ("Cluster manager node not discovered" );
2175
+ }
2176
+ return masterNode .getName ();
2177
+ } catch (ClusterManagerNotDiscoveredException exception ) {
2178
+ throw exception ;
2172
2179
} catch (Exception e ) {
2173
2180
logger .warn ("Can't fetch cluster state" , e );
2174
2181
throw new RuntimeException ("Can't get cluster-manager node " + e .getMessage (), e );
You can’t perform that action at this time.
0 commit comments