Skip to content

Commit e7bf5e7

Browse files
authored
Merge pull request #75 from arangodb/bug-fix/check-result-of-version-up
check result of api version call
2 parents 284b2e2 + 24ee46d commit e7bf5e7

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

tests/deployments_test.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,14 +127,30 @@ 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-
waitUntilVersionUp(dbclient)
130+
131+
if err := waitUntilVersionUp(dbclient); err != nil {
132+
t.Fatal("Version check failed for: %v", agent.ID)
133+
}
131134
}
135+
136+
var goodResults, noLeaderResults int
132137
for _, single := range singles {
133138
dbclient, err := arangod.CreateArangodClient(ctx, k8sClient.CoreV1(), deployment, api.ServerGroupAgents, single.ID)
134139
if err != nil {
135140
t.Fatal("Unable to create connection to: %v", single.ID)
136141
}
137-
waitUntilVersionUp(dbclient)
142+
143+
if err := waitUntilVersionUp(dbclient, true); err == nil {
144+
goodResults++
145+
} else if driver.IsNoLeader(err) {
146+
noLeaderResults++
147+
} else {
148+
t.Fatal("Version check failed for: %v", single.ID)
149+
}
150+
}
151+
152+
if goodResults < 1 || noLeaderResults > 1 {
153+
t.Fatal("Wrong number of results: good %v - noleader %v", goodResults, noLeaderResults)
138154
}
139155
default:
140156
t.Fatalf("DeploymentMode %v is not supported!", mode)

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)