Skip to content

Commit

Permalink
Fix Flaky Test SpecificClusterManagerNodesIT.testElectOnlyBetweenClus…
Browse files Browse the repository at this point in the history
…terManagerNodes (opensearch-project#16021) (opensearch-project#17265)

(cherry picked from commit 852011a)

Signed-off-by: kkewwei <[email protected]>
Signed-off-by: kkewwei <[email protected]>
Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
  • Loading branch information
1 parent bc04657 commit 4ad5800
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import org.opensearch.test.OpenSearchIntegTestCase.Scope;

import java.io.IOException;
import java.util.function.Supplier;

import static org.opensearch.test.NodeRoles.clusterManagerNode;
import static org.opensearch.test.NodeRoles.dataOnlyNode;
Expand Down Expand Up @@ -254,9 +255,9 @@ public void testElectOnlyBetweenClusterManagerNodes() throws Exception {
logger.info("--> closing cluster-manager node (1)");
client().execute(AddVotingConfigExclusionsAction.INSTANCE, new AddVotingConfigExclusionsRequest(clusterManagerNodeName)).get();
// removing the cluster-manager from the voting configuration immediately triggers the cluster-manager to step down
assertBusy(() -> {
assertThat(
internalCluster().nonClusterManagerClient()
Supplier<String> getClusterManagerIfElected = () -> {
try {
return internalCluster().nonClusterManagerClient()
.admin()
.cluster()
.prepareState()
Expand All @@ -265,9 +266,14 @@ public void testElectOnlyBetweenClusterManagerNodes() throws Exception {
.getState()
.nodes()
.getClusterManagerNode()
.getName(),
equalTo(nextClusterManagerEligableNodeName)
);
.getName();
} catch (ClusterManagerNotDiscoveredException e) {
logger.debug("failed to get cluster-manager name", e);
return null;
}
};
assertBusy(() -> {
assertThat(getClusterManagerIfElected.get(), equalTo(nextClusterManagerEligableNodeName));
assertThat(
internalCluster().clusterManagerClient()
.admin()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
import org.opensearch.core.index.shard.ShardId;
import org.opensearch.core.indices.breaker.CircuitBreakerService;
import org.opensearch.core.util.FileSystemUtils;
import org.opensearch.discovery.ClusterManagerNotDiscoveredException;
import org.opensearch.env.Environment;
import org.opensearch.env.NodeEnvironment;
import org.opensearch.env.ShardLockObtainFailedException;
Expand Down Expand Up @@ -2155,13 +2156,12 @@ public String getClusterManagerName() {
* in the viaNode parameter. If viaNode isn't specified a random node will be picked to the send the request to.
*/
public String getClusterManagerName(@Nullable String viaNode) {
try {
Client client = viaNode != null ? client(viaNode) : client();
return client.admin().cluster().prepareState().get().getState().nodes().getClusterManagerNode().getName();
} catch (Exception e) {
logger.warn("Can't fetch cluster state", e);
throw new RuntimeException("Can't get cluster-manager node " + e.getMessage(), e);
Client client = viaNode != null ? client(viaNode) : client();
DiscoveryNode clusterManagerNode = client.admin().cluster().prepareState().get().getState().nodes().getClusterManagerNode();
if (clusterManagerNode == null) {
throw new ClusterManagerNotDiscoveredException("Cluster manager node not discovered");
}
return clusterManagerNode.getName();
}

/**
Expand Down

0 comments on commit 4ad5800

Please sign in to comment.