Skip to content

Commit dfcc939

Browse files
committed
QA: Better seed nodes for rolling restart
Use all running nodes as unicast seeds in the rolling restart tests to avoid a race between pinging and the tests. Without this if the tests are too fast then when a new node comes up and pings its single configured seed node that node *might* not have a ping from the other running node.
1 parent 1de38a2 commit dfcc939

File tree

4 files changed

+33
-23
lines changed

4 files changed

+33
-23
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,9 @@ class ClusterConfiguration {
8787
* A closure to call which returns the unicast host to connect to for cluster formation.
8888
*
8989
* This allows multi node clusters, or a new cluster to connect to an existing cluster.
90-
* The closure takes two arguments, the NodeInfo for the first node in the cluster, and
91-
* an AntBuilder which may be used to wait on conditions before returning.
90+
* The closure takes three arguments, the NodeInfo for the first node in the cluster,
91+
* the NodeInfo for the node current being configured, an AntBuilder which may be used
92+
* to wait on conditions before returning.
9293
*/
9394
@Input
9495
Closure unicastTransportUri = { NodeInfo seedNode, NodeInfo node, AntBuilder ant ->

qa/rolling-upgrade/build.gradle

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,9 @@ for (Version version : bwcVersions.wireCompatible) {
8989

9090
Task oneThirdUpgradedTest = tasks.create(name: "${baseName}#oneThirdUpgradedTest", type: RestIntegTestTask)
9191

92-
configureUpgradeCluster("oneThirdUpgradedTestCluster", oldClusterTestRunner,
93-
0, { oldClusterTest.nodes.get(1).transportUri() })
92+
configureUpgradeCluster("oneThirdUpgradedTestCluster", oldClusterTestRunner, 0,
93+
// 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() })
9495

9596
Task oneThirdUpgradedTestRunner = tasks.getByName("${baseName}#oneThirdUpgradedTestRunner")
9697
oneThirdUpgradedTestRunner.configure {
@@ -101,8 +102,9 @@ for (Version version : bwcVersions.wireCompatible) {
101102

102103
Task twoThirdsUpgradedTest = tasks.create(name: "${baseName}#twoThirdsUpgradedTest", type: RestIntegTestTask)
103104

104-
configureUpgradeCluster("twoThirdsUpgradedTestCluster", oneThirdUpgradedTestRunner,
105-
1, { oneThirdUpgradedTest.nodes.get(0).transportUri() })
105+
configureUpgradeCluster("twoThirdsUpgradedTestCluster", oneThirdUpgradedTestRunner, 1,
106+
// 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() })
106108

107109
Task twoThirdsUpgradedTestRunner = tasks.getByName("${baseName}#twoThirdsUpgradedTestRunner")
108110
twoThirdsUpgradedTestRunner.configure {
@@ -113,8 +115,9 @@ for (Version version : bwcVersions.wireCompatible) {
113115

114116
Task upgradedClusterTest = tasks.create(name: "${baseName}#upgradedClusterTest", type: RestIntegTestTask)
115117

116-
configureUpgradeCluster("upgradedClusterTestCluster", twoThirdsUpgradedTestRunner,
117-
2, { twoThirdsUpgradedTest.nodes.get(0).transportUri() })
118+
configureUpgradeCluster("upgradedClusterTestCluster", twoThirdsUpgradedTestRunner, 2,
119+
// 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() })
118121

119122
Task upgradedClusterTestRunner = tasks.getByName("${baseName}#upgradedClusterTestRunner")
120123
upgradedClusterTestRunner.configure {

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

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,9 @@ for (Version version : bwcVersions.wireCompatible) {
6969

7070
Task oneThirdUpgradedTest = tasks.create(name: "${baseName}#oneThirdUpgradedTest", type: RestIntegTestTask)
7171

72-
configureUpgradeCluster("oneThirdUpgradedTestCluster", oldClusterTestRunner,
73-
0, { oldClusterTest.nodes.get(1).transportUri() })
72+
configureUpgradeCluster("oneThirdUpgradedTestCluster", oldClusterTestRunner, 0,
73+
// Use all running nodes as seed nodes so there is no race between pinging and the tests
74+
{ oldClusterTest.nodes.get(1).transportUri() + ',' + oldClusterTest.nodes.get(2).transportUri() })
7475

7576
Task oneThirdUpgradedTestRunner = tasks.getByName("${baseName}#oneThirdUpgradedTestRunner")
7677
oneThirdUpgradedTestRunner.configure {
@@ -81,8 +82,9 @@ for (Version version : bwcVersions.wireCompatible) {
8182

8283
Task twoThirdsUpgradedTest = tasks.create(name: "${baseName}#twoThirdsUpgradedTest", type: RestIntegTestTask)
8384

84-
configureUpgradeCluster("twoThirdsUpgradedTestCluster", oneThirdUpgradedTestRunner,
85-
1, { oneThirdUpgradedTest.nodes.get(0).transportUri() })
85+
configureUpgradeCluster("twoThirdsUpgradedTestCluster", oneThirdUpgradedTestRunner, 1,
86+
// Use all running nodes as seed nodes so there is no race between pinging and the tests
87+
{ oldClusterTest.nodes.get(2).transportUri() + ',' + oneThirdUpgradedTest.nodes.get(0).transportUri() })
8688

8789
Task twoThirdsUpgradedTestRunner = tasks.getByName("${baseName}#twoThirdsUpgradedTestRunner")
8890
twoThirdsUpgradedTestRunner.configure {
@@ -93,8 +95,9 @@ for (Version version : bwcVersions.wireCompatible) {
9395

9496
Task upgradedClusterTest = tasks.create(name: "${baseName}#upgradedClusterTest", type: RestIntegTestTask)
9597

96-
configureUpgradeCluster("upgradedClusterTestCluster", twoThirdsUpgradedTestRunner,
97-
2, { twoThirdsUpgradedTest.nodes.get(0).transportUri() })
98+
configureUpgradeCluster("upgradedClusterTestCluster", twoThirdsUpgradedTestRunner, 2,
99+
// Use all running nodes as seed nodes so there is no race between pinging and the tests
100+
{ oneThirdUpgradedTest.nodes.get(0).transportUri() + ',' + twoThirdsUpgradedTest.nodes.get(0).transportUri() })
98101

99102
Task upgradedClusterTestRunner = tasks.getByName("${baseName}#upgradedClusterTestRunner")
100103
upgradedClusterTestRunner.configure {

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

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,9 @@ subprojects {
203203

204204
Task oneThirdUpgradedTest = tasks.create(name: "${baseName}#oneThirdUpgradedTest", type: RestIntegTestTask)
205205

206-
configureUpgradeCluster("oneThirdUpgradedTestCluster", oldClusterTestRunner,
207-
0, { oldClusterTest.nodes.get(1).transportUri() })
206+
configureUpgradeCluster("oneThirdUpgradedTestCluster", oldClusterTestRunner, 0,
207+
// Use all running nodes as seed nodes so there is no race between pinging and the tests
208+
{ oldClusterTest.nodes.get(1).transportUri() + ',' + oldClusterTest.nodes.get(2).transportUri() })
208209

209210
Task oneThirdUpgradedTestRunner = tasks.getByName("${baseName}#oneThirdUpgradedTestRunner")
210211
oneThirdUpgradedTestRunner.configure {
@@ -221,8 +222,9 @@ subprojects {
221222

222223
Task twoThirdsUpgradedTest = tasks.create(name: "${baseName}#twoThirdsUpgradedTest", type: RestIntegTestTask)
223224

224-
configureUpgradeCluster("twoThirdsUpgradedTestCluster", oneThirdUpgradedTestRunner,
225-
1, { oneThirdUpgradedTest.nodes.get(0).transportUri() })
225+
configureUpgradeCluster("twoThirdsUpgradedTestCluster", oneThirdUpgradedTestRunner, 1,
226+
// Use all running nodes as seed nodes so there is no race between pinging and the tests
227+
{ oldClusterTest.nodes.get(2).transportUri() + ',' + oneThirdUpgradedTest.nodes.get(0).transportUri() })
226228

227229
Task twoThirdsUpgradedTestRunner = tasks.getByName("${baseName}#twoThirdsUpgradedTestRunner")
228230
twoThirdsUpgradedTestRunner.configure {
@@ -233,16 +235,17 @@ subprojects {
233235

234236
Task upgradedClusterTest = tasks.create(name: "${baseName}#upgradedClusterTest", type: RestIntegTestTask)
235237

236-
configureUpgradeCluster("upgradedClusterTestCluster", twoThirdsUpgradedTestRunner,
237-
2, { twoThirdsUpgradedTest.nodes.get(0).transportUri() })
238+
configureUpgradeCluster("upgradedClusterTestCluster", twoThirdsUpgradedTestRunner, 2,
239+
// Use all running nodes as seed nodes so there is no race between pinging and the tests
240+
{ oneThirdUpgradedTest.nodes.get(0).transportUri() + ',' + twoThirdsUpgradedTest.nodes.get(0).transportUri() })
238241

239242
Task upgradedClusterTestRunner = tasks.getByName("${baseName}#upgradedClusterTestRunner")
240243
upgradedClusterTestRunner.configure {
241244
systemProperty 'tests.rest.suite', 'upgraded_cluster'
242245
/*
243-
* Force stopping all the upgraded nodes after the test runner
244-
* so they are alive during the test.
245-
*/
246+
* Force stopping all the upgraded nodes after the test runner
247+
* so they are alive during the test.
248+
*/
246249
finalizedBy "${baseName}#oneThirdUpgradedTestCluster#stop"
247250
finalizedBy "${baseName}#twoThirdsUpgradedTestCluster#stop"
248251

0 commit comments

Comments
 (0)