Skip to content

Commit

Permalink
Fix Flaky Test ClusterRerouteIT.testDelayWithALargeAmountOfShards (op…
Browse files Browse the repository at this point in the history
…ensearch-project#14510)

Signed-off-by: kkewwei [email protected]

Signed-off-by: kkewwei [email protected]
Signed-off-by: kkewwei <[email protected]>
  • Loading branch information
kkewwei committed Jun 25, 2024
1 parent 563375d commit badf851
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,8 @@ public void testDelayWithALargeAmountOfShards() throws Exception {
internalCluster().stopRandomNode(InternalTestCluster.nameFilter(node_1));

// This might run slowly on older hardware
ensureGreen(TimeValue.timeValueMinutes(2));
// In some case, the shards will be rebalanced back and forth, it seems like a very low probability bug.
ensureGreen(TimeValue.timeValueMinutes(2), false);
}

private void rerouteWithAllocateLocalGateway(Settings commonSettings) throws Exception {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -864,6 +864,10 @@ public ClusterHealthStatus ensureGreen(TimeValue timeout, String... indices) {
return ensureColor(ClusterHealthStatus.GREEN, timeout, false, indices);
}

public ClusterHealthStatus ensureGreen(TimeValue timeout, boolean waitForNoRelocatingShards, String... indices) {
return ensureColor(ClusterHealthStatus.GREEN, timeout, waitForNoRelocatingShards, false, indices);
}

/**
* Ensures the cluster has a yellow state via the cluster health API.
*/
Expand Down Expand Up @@ -891,6 +895,16 @@ private ClusterHealthStatus ensureColor(
TimeValue timeout,
boolean waitForNoInitializingShards,
String... indices
) {
return ensureColor(clusterHealthStatus, timeout, true, waitForNoInitializingShards, indices);
}

private ClusterHealthStatus ensureColor(
ClusterHealthStatus clusterHealthStatus,
TimeValue timeout,
boolean waitForNoRelocatingShards,
boolean waitForNoInitializingShards,
String... indices
) {
String color = clusterHealthStatus.name().toLowerCase(Locale.ROOT);
String method = "ensure" + Strings.capitalize(color);
Expand All @@ -899,7 +913,7 @@ private ClusterHealthStatus ensureColor(
.timeout(timeout)
.waitForStatus(clusterHealthStatus)
.waitForEvents(Priority.LANGUID)
.waitForNoRelocatingShards(true)
.waitForNoRelocatingShards(waitForNoRelocatingShards)
.waitForNoInitializingShards(waitForNoInitializingShards)
// We currently often use ensureGreen or ensureYellow to check whether the cluster is back in a good state after shutting down
// a node. If the node that is stopped is the cluster-manager node, another node will become cluster-manager and publish a
Expand Down

0 comments on commit badf851

Please sign in to comment.