Skip to content

Commit 180a107

Browse files
authored
Re-enable shard rebalance in ES|QL rest tests (elastic#122889) (elastic#122897)
Today, we disable shard rebalancing in ES|QL REST tests to avoid failures when shards are rebalanced while the query is being executed. This is no longer necessary if the clusters are on version 8.19 or 9.1.
1 parent 7637b6b commit 180a107

File tree

2 files changed

+32
-14
lines changed
  • x-pack/plugin/esql/qa/server
    • mixed-cluster/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/mixed
    • multi-clusters/src/javaRestTest/java/org/elasticsearch/xpack/esql/ccq

2 files changed

+32
-14
lines changed

x-pack/plugin/esql/qa/server/mixed-cluster/src/javaRestTest/java/org/elasticsearch/xpack/esql/qa/mixed/Clusters.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,22 @@
1414
public class Clusters {
1515
public static ElasticsearchCluster mixedVersionCluster() {
1616
Version oldVersion = Version.fromString(System.getProperty("tests.old_cluster_version"));
17-
return ElasticsearchCluster.local()
17+
var cluster = ElasticsearchCluster.local()
1818
.distribution(DistributionType.DEFAULT)
1919
.withNode(node -> node.version(oldVersion))
2020
.withNode(node -> node.version(Version.CURRENT))
2121
.withNode(node -> node.version(oldVersion))
2222
.withNode(node -> node.version(Version.CURRENT))
2323
.setting("xpack.security.enabled", "false")
24-
.setting("xpack.license.self_generated.type", "trial")
25-
.setting("cluster.routing.rebalance.enable", "none") // disable relocation until we have retry in ESQL
26-
.build();
24+
.setting("xpack.license.self_generated.type", "trial");
25+
if (supportRetryOnShardFailures(oldVersion) == false) {
26+
cluster.setting("cluster.routing.rebalance.enable", "none");
27+
}
28+
return cluster.build();
29+
}
30+
31+
private static boolean supportRetryOnShardFailures(Version version) {
32+
return version.onOrAfter(Version.fromString("9.1.0"))
33+
|| (version.onOrAfter(Version.fromString("8.19.0")) && version.before(Version.fromString("9.0.0")));
2734
}
2835
}

x-pack/plugin/esql/qa/server/multi-clusters/src/javaRestTest/java/org/elasticsearch/xpack/esql/ccq/Clusters.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,38 +17,44 @@ public class Clusters {
1717
static final String LOCAL_CLUSTER_NAME = "local_cluster";
1818

1919
public static ElasticsearchCluster remoteCluster() {
20-
return ElasticsearchCluster.local()
20+
Version version = distributionVersion("tests.version.remote_cluster");
21+
var cluster = ElasticsearchCluster.local()
2122
.name(REMOTE_CLUSTER_NAME)
2223
.distribution(DistributionType.DEFAULT)
23-
.version(distributionVersion("tests.version.remote_cluster"))
24+
.version(version)
2425
.nodes(2)
2526
.setting("node.roles", "[data,ingest,master]")
2627
.setting("xpack.security.enabled", "false")
2728
.setting("xpack.license.self_generated.type", "trial")
28-
.shared(true)
29-
.setting("cluster.routing.rebalance.enable", "none")
30-
.build();
29+
.shared(true);
30+
if (supportRetryOnShardFailures(version) == false) {
31+
cluster.setting("cluster.routing.rebalance.enable", "none");
32+
}
33+
return cluster.build();
3134
}
3235

3336
public static ElasticsearchCluster localCluster(ElasticsearchCluster remoteCluster) {
3437
return localCluster(remoteCluster, true);
3538
}
3639

3740
public static ElasticsearchCluster localCluster(ElasticsearchCluster remoteCluster, Boolean skipUnavailable) {
38-
return ElasticsearchCluster.local()
41+
Version version = distributionVersion("tests.version.local_cluster");
42+
var cluster = ElasticsearchCluster.local()
3943
.name(LOCAL_CLUSTER_NAME)
4044
.distribution(DistributionType.DEFAULT)
41-
.version(distributionVersion("tests.version.local_cluster"))
45+
.version(version)
4246
.nodes(2)
4347
.setting("xpack.security.enabled", "false")
4448
.setting("xpack.license.self_generated.type", "trial")
4549
.setting("node.roles", "[data,ingest,master,remote_cluster_client]")
4650
.setting("cluster.remote.remote_cluster.seeds", () -> "\"" + remoteCluster.getTransportEndpoint(0) + "\"")
4751
.setting("cluster.remote.connections_per_cluster", "1")
4852
.setting("cluster.remote." + REMOTE_CLUSTER_NAME + ".skip_unavailable", skipUnavailable.toString())
49-
.shared(true)
50-
.setting("cluster.routing.rebalance.enable", "none")
51-
.build();
53+
.shared(true);
54+
if (supportRetryOnShardFailures(version) == false) {
55+
cluster.setting("cluster.routing.rebalance.enable", "none");
56+
}
57+
return cluster.build();
5258
}
5359

5460
public static org.elasticsearch.Version localClusterVersion() {
@@ -65,4 +71,9 @@ private static Version distributionVersion(String key) {
6571
final String val = System.getProperty(key);
6672
return val != null ? Version.fromString(val) : Version.CURRENT;
6773
}
74+
75+
private static boolean supportRetryOnShardFailures(Version version) {
76+
return version.onOrAfter(Version.fromString("9.1.0"))
77+
|| (version.onOrAfter(Version.fromString("8.19.0")) && version.before(Version.fromString("9.0.0")));
78+
}
6879
}

0 commit comments

Comments
 (0)