Skip to content

Commit 24ee46d

Browse files
committed
add allowNoLeaderResponse paramerter to waitUntilVersionUp
1 parent 83f9707 commit 24ee46d

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

tests/deployments_test.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,19 +127,31 @@ func deploymentSubTest(t *testing.T, mode api.DeploymentMode, engine api.Storage
127127
if err != nil {
128128
t.Fatal("Unable to create connection to: %v", agent.ID)
129129
}
130-
if waitUntilVersionUp(dbclient) != nil {
131-
t.Fatal("Version check failed for: %v", single.ID)
130+
131+
if err := waitUntilVersionUp(dbclient); err != nil {
132+
t.Fatal("Version check failed for: %v", agent.ID)
132133
}
133134
}
135+
136+
var goodResults, noLeaderResults int
134137
for _, single := range singles {
135138
dbclient, err := arangod.CreateArangodClient(ctx, k8sClient.CoreV1(), deployment, api.ServerGroupAgents, single.ID)
136139
if err != nil {
137140
t.Fatal("Unable to create connection to: %v", single.ID)
138141
}
139-
if waitUntilVersionUp(dbclient) != nil {
142+
143+
if err := waitUntilVersionUp(dbclient, true); err == nil {
144+
goodResults++
145+
} else if driver.IsNoLeader(err) {
146+
noLeaderResults++
147+
} else {
140148
t.Fatal("Version check failed for: %v", single.ID)
141149
}
142150
}
151+
152+
if goodResults < 1 || noLeaderResults > 1 {
153+
t.Fatal("Wrong number of results: good %v - noleader %v", goodResults, noLeaderResults)
154+
}
143155
default:
144156
t.Fatalf("DeploymentMode %v is not supported!", mode)
145157
}

tests/test_util.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,17 +207,30 @@ func waitUntilClusterHealth(cli driver.Client, predicate func(driver.ClusterHeal
207207

208208
// waitUntilVersionUp waits until the arango database responds to
209209
// an `/_api/version` request without an error.
210-
func waitUntilVersionUp(cli driver.Client) error {
210+
func waitUntilVersionUp(cli driver.Client, allowNoLeaderResponse ...bool) error {
211+
var noLeaderErr error
212+
allowNoLead := len(allowNoLeaderResponse) > 0 && allowNoLeaderResponse[0]
211213
ctx := context.Background()
214+
212215
op := func() error {
213-
if _, err := cli.Version(ctx); err != nil {
216+
if _, err := cli.Version(ctx); allowNoLead && driver.IsNoLeader(err) {
217+
noLeaderErr = err
218+
return nil //return nil to make the retry below pass
219+
} else if err != nil {
214220
return maskAny(err)
215221
}
216222
return nil
217223
}
224+
218225
if err := retry.Retry(op, deploymentReadyTimeout); err != nil {
219226
return maskAny(err)
220227
}
228+
229+
// noLeadErr updated in op
230+
if noLeaderErr != nil {
231+
return maskAny(noLeaderErr)
232+
}
233+
221234
return nil
222235
}
223236

0 commit comments

Comments
 (0)