Skip to content

Commit 529910a

Browse files
DISCOVERY: Fix RollingUpgradeTests (#35375)
* DISCOVERY: Fix RollingUpgradeTests * Don't manually manage min master nodes if not necessary * Remove some dead code * Allow for manually supplying list of seed nodes * Closes #35178
1 parent 617f91b commit 529910a

File tree

5 files changed

+29
-27
lines changed

5 files changed

+29
-27
lines changed

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterConfiguration.groovy

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,14 @@ class ClusterConfiguration {
110110
return seedNode.transportUri()
111111
}
112112

113+
/**
114+
* A closure to call which returns a manually supplied list of unicast seed hosts.
115+
*/
116+
@Input
117+
Closure<List<String>> otherUnicastHostAddresses = {
118+
Collections.emptyList()
119+
}
120+
113121
/**
114122
* A closure to call before the cluster is considered ready. The closure is passed the node info,
115123
* as well as a groovy AntBuilder, to enable running ant condition checks. The default wait

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -715,8 +715,9 @@ class ClusterFormationTasks {
715715
wait.doLast {
716716

717717
Collection<String> unicastHosts = new HashSet<>()
718-
nodes.forEach { otherNode ->
719-
String unicastHost = otherNode.config.unicastTransportUri(otherNode, null, project.ant)
718+
nodes.forEach { node ->
719+
unicastHosts.addAll(node.config.otherUnicastHostAddresses.call())
720+
String unicastHost = node.config.unicastTransportUri(node, null, project.ant)
720721
if (unicastHost != null) {
721722
unicastHosts.addAll(Arrays.asList(unicastHost.split(",")))
722723
}

qa/rolling-upgrade/build.gradle

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ for (Version version : bwcVersions.wireCompatible) {
5656
mustRunAfter(precommit)
5757
}
5858

59-
Object extension = extensions.findByName("${baseName}#oldClusterTestCluster")
6059
configure(extensions.findByName("${baseName}#oldClusterTestCluster")) {
6160
bwcVersion = version
6261
numBwcNodes = 3
@@ -73,12 +72,12 @@ for (Version version : bwcVersions.wireCompatible) {
7372
systemProperty 'tests.rest.suite', 'old_cluster'
7473
}
7574

76-
Closure configureUpgradeCluster = {String name, Task lastRunner, int stopNode, Closure unicastSeed ->
75+
Closure configureUpgradeCluster = {String name, Task lastRunner, int stopNode, Closure getOtherUnicastHostAddresses ->
7776
configure(extensions.findByName("${baseName}#${name}")) {
7877
dependsOn lastRunner, "${baseName}#oldClusterTestCluster#node${stopNode}.stop"
7978
clusterName = 'rolling-upgrade'
80-
unicastTransportUri = { seedNode, node, ant -> unicastSeed() }
81-
minimumMasterNodes = { 3 }
79+
otherUnicastHostAddresses = { getOtherUnicastHostAddresses() }
80+
minimumMasterNodes = { 2 }
8281
/* Override the data directory so the new node always gets the node we
8382
* just stopped's data directory. */
8483
dataDir = { nodeNumber -> oldClusterTest.nodes[stopNode].dataDir }
@@ -91,7 +90,7 @@ for (Version version : bwcVersions.wireCompatible) {
9190

9291
configureUpgradeCluster("oneThirdUpgradedTestCluster", oldClusterTestRunner, 0,
9392
// Use all running nodes as seed nodes so there is no race between pinging and the tests
94-
{ oldClusterTest.nodes.get(1).transportUri() + ',' + oldClusterTest.nodes.get(2).transportUri() })
93+
{ [oldClusterTest.nodes.get(1).transportUri(), oldClusterTest.nodes.get(2).transportUri()] })
9594

9695
Task oneThirdUpgradedTestRunner = tasks.getByName("${baseName}#oneThirdUpgradedTestRunner")
9796
oneThirdUpgradedTestRunner.configure {
@@ -104,7 +103,7 @@ for (Version version : bwcVersions.wireCompatible) {
104103

105104
configureUpgradeCluster("twoThirdsUpgradedTestCluster", oneThirdUpgradedTestRunner, 1,
106105
// Use all running nodes as seed nodes so there is no race between pinging and the tests
107-
{ oldClusterTest.nodes.get(2).transportUri() + ',' + oneThirdUpgradedTest.nodes.get(0).transportUri() })
106+
{ [oldClusterTest.nodes.get(2).transportUri(), oneThirdUpgradedTest.nodes.get(0).transportUri()] })
108107

109108
Task twoThirdsUpgradedTestRunner = tasks.getByName("${baseName}#twoThirdsUpgradedTestRunner")
110109
twoThirdsUpgradedTestRunner.configure {
@@ -117,7 +116,7 @@ for (Version version : bwcVersions.wireCompatible) {
117116

118117
configureUpgradeCluster("upgradedClusterTestCluster", twoThirdsUpgradedTestRunner, 2,
119118
// Use all running nodes as seed nodes so there is no race between pinging and the tests
120-
{ oneThirdUpgradedTest.nodes.get(0).transportUri() + ',' + twoThirdsUpgradedTest.nodes.get(0).transportUri() })
119+
{ [oneThirdUpgradedTest.nodes.get(0).transportUri(), twoThirdsUpgradedTest.nodes.get(0).transportUri()] })
121120

122121
Task upgradedClusterTestRunner = tasks.getByName("${baseName}#upgradedClusterTestRunner")
123122
upgradedClusterTestRunner.configure {

x-pack/qa/rolling-upgrade-basic/build.gradle

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import org.elasticsearch.gradle.Version
2-
import org.elasticsearch.gradle.test.NodeInfo
32
import org.elasticsearch.gradle.test.RestIntegTestTask
43

5-
import java.nio.charset.StandardCharsets
6-
74
apply plugin: 'elasticsearch.standalone-test'
85

96
dependencies {
@@ -40,7 +37,6 @@ for (Version version : bwcVersions.wireCompatible) {
4037
bwcVersion = version
4138
numBwcNodes = 3
4239
numNodes = 3
43-
minimumMasterNodes = { 3 }
4440
clusterName = 'rolling-upgrade-basic'
4541
setting 'xpack.security.enabled', 'false'
4642
setting 'xpack.monitoring.enabled', 'false'
@@ -54,12 +50,12 @@ for (Version version : bwcVersions.wireCompatible) {
5450
systemProperty 'tests.rest.suite', 'old_cluster'
5551
}
5652

57-
Closure configureUpgradeCluster = {String name, Task lastRunner, int stopNode, Closure unicastSeed ->
53+
Closure configureUpgradeCluster = {String name, Task lastRunner, int stopNode, Closure getOtherUnicastHostAddresses ->
5854
configure(extensions.findByName("${baseName}#${name}")) {
5955
dependsOn lastRunner, "${baseName}#oldClusterTestCluster#node${stopNode}.stop"
6056
clusterName = 'rolling-upgrade-basic'
61-
unicastTransportUri = { seedNode, node, ant -> unicastSeed() }
62-
minimumMasterNodes = { 3 }
57+
otherUnicastHostAddresses = { getOtherUnicastHostAddresses() }
58+
minimumMasterNodes = { 2 }
6359
/* Override the data directory so the new node always gets the node we
6460
* just stopped's data directory. */
6561
dataDir = { nodeNumber -> oldClusterTest.nodes[stopNode].dataDir }
@@ -77,7 +73,7 @@ for (Version version : bwcVersions.wireCompatible) {
7773

7874
configureUpgradeCluster("oneThirdUpgradedTestCluster", oldClusterTestRunner, 0,
7975
// Use all running nodes as seed nodes so there is no race between pinging and the tests
80-
{ oldClusterTest.nodes.get(1).transportUri() + ',' + oldClusterTest.nodes.get(2).transportUri() })
76+
{ [oldClusterTest.nodes.get(1).transportUri(), oldClusterTest.nodes.get(2).transportUri()] })
8177

8278
Task oneThirdUpgradedTestRunner = tasks.getByName("${baseName}#oneThirdUpgradedTestRunner")
8379
oneThirdUpgradedTestRunner.configure {
@@ -90,7 +86,7 @@ for (Version version : bwcVersions.wireCompatible) {
9086

9187
configureUpgradeCluster("twoThirdsUpgradedTestCluster", oneThirdUpgradedTestRunner, 1,
9288
// Use all running nodes as seed nodes so there is no race between pinging and the tests
93-
{ oldClusterTest.nodes.get(2).transportUri() + ',' + oneThirdUpgradedTest.nodes.get(0).transportUri() })
89+
{ [oldClusterTest.nodes.get(2).transportUri(), oneThirdUpgradedTest.nodes.get(0).transportUri()] })
9490

9591
Task twoThirdsUpgradedTestRunner = tasks.getByName("${baseName}#twoThirdsUpgradedTestRunner")
9692
twoThirdsUpgradedTestRunner.configure {
@@ -103,7 +99,7 @@ for (Version version : bwcVersions.wireCompatible) {
10399

104100
configureUpgradeCluster("upgradedClusterTestCluster", twoThirdsUpgradedTestRunner, 2,
105101
// Use all running nodes as seed nodes so there is no race between pinging and the tests
106-
{ oneThirdUpgradedTest.nodes.get(0).transportUri() + ',' + twoThirdsUpgradedTest.nodes.get(0).transportUri() })
102+
{ [oneThirdUpgradedTest.nodes.get(0).transportUri(), twoThirdsUpgradedTest.nodes.get(0).transportUri()] })
107103

108104
Task upgradedClusterTestRunner = tasks.getByName("${baseName}#upgradedClusterTestRunner")
109105
upgradedClusterTestRunner.configure {

x-pack/qa/rolling-upgrade/build.gradle

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ subprojects {
120120
mustRunAfter(precommit)
121121
}
122122

123-
Object extension = extensions.findByName("${baseName}#oldClusterTestCluster")
124123
configure(extensions.findByName("${baseName}#oldClusterTestCluster")) {
125124
dependsOn copyTestNodeKeystore
126125
if (version.before('6.3.0')) {
@@ -135,7 +134,6 @@ subprojects {
135134
bwcVersion = version
136135
numBwcNodes = 3
137136
numNodes = 3
138-
minimumMasterNodes = { 3 }
139137
clusterName = 'rolling-upgrade'
140138
waitCondition = waitWithAuth
141139
setting 'xpack.monitoring.exporters._http.type', 'http'
@@ -183,13 +181,13 @@ subprojects {
183181
systemProperty 'tests.rest.suite', 'old_cluster'
184182
}
185183

186-
Closure configureUpgradeCluster = {String name, Task lastRunner, int stopNode, Closure unicastSeed ->
184+
Closure configureUpgradeCluster = {String name, Task lastRunner, int stopNode, Closure getOtherUnicastHostAddresses ->
187185
configure(extensions.findByName("${baseName}#${name}")) {
188186
dependsOn lastRunner, "${baseName}#oldClusterTestCluster#node${stopNode}.stop"
189187
setupCommand 'setupTestUser', 'bin/elasticsearch-users', 'useradd', 'test_user', '-p', 'x-pack-test-password', '-r', 'superuser'
190188
clusterName = 'rolling-upgrade'
191-
unicastTransportUri = { seedNode, node, ant -> unicastSeed() }
192-
minimumMasterNodes = { 3 }
189+
otherUnicastHostAddresses = { getOtherUnicastHostAddresses() }
190+
minimumMasterNodes = { 2 }
193191
/* Override the data directory so the new node always gets the node we
194192
* just stopped's data directory. */
195193
dataDir = { nodeNumber -> oldClusterTest.nodes[stopNode].dataDir }
@@ -224,7 +222,7 @@ subprojects {
224222

225223
configureUpgradeCluster("oneThirdUpgradedTestCluster", oldClusterTestRunner, 0,
226224
// Use all running nodes as seed nodes so there is no race between pinging and the tests
227-
{ oldClusterTest.nodes.get(1).transportUri() + ',' + oldClusterTest.nodes.get(2).transportUri() })
225+
{ [oldClusterTest.nodes.get(1).transportUri(), oldClusterTest.nodes.get(2).transportUri()] })
228226

229227
Task oneThirdUpgradedTestRunner = tasks.getByName("${baseName}#oneThirdUpgradedTestRunner")
230228
oneThirdUpgradedTestRunner.configure {
@@ -243,7 +241,7 @@ subprojects {
243241

244242
configureUpgradeCluster("twoThirdsUpgradedTestCluster", oneThirdUpgradedTestRunner, 1,
245243
// Use all running nodes as seed nodes so there is no race between pinging and the tests
246-
{ oldClusterTest.nodes.get(2).transportUri() + ',' + oneThirdUpgradedTest.nodes.get(0).transportUri() })
244+
{ [oldClusterTest.nodes.get(2).transportUri(), oneThirdUpgradedTest.nodes.get(0).transportUri()] })
247245

248246
Task twoThirdsUpgradedTestRunner = tasks.getByName("${baseName}#twoThirdsUpgradedTestRunner")
249247
twoThirdsUpgradedTestRunner.configure {
@@ -256,7 +254,7 @@ subprojects {
256254

257255
configureUpgradeCluster("upgradedClusterTestCluster", twoThirdsUpgradedTestRunner, 2,
258256
// Use all running nodes as seed nodes so there is no race between pinging and the tests
259-
{ oneThirdUpgradedTest.nodes.get(0).transportUri() + ',' + twoThirdsUpgradedTest.nodes.get(0).transportUri() })
257+
{ [oneThirdUpgradedTest.nodes.get(0).transportUri(), twoThirdsUpgradedTest.nodes.get(0).transportUri()] })
260258

261259
Task upgradedClusterTestRunner = tasks.getByName("${baseName}#upgradedClusterTestRunner")
262260
upgradedClusterTestRunner.configure {

0 commit comments

Comments
 (0)