From 2080122f383af744d59c9fcc9d64a16f950a92c0 Mon Sep 17 00:00:00 2001 From: Nelson Elhage Date: Mon, 26 May 2014 13:26:42 -0700 Subject: [PATCH] WaitForLeader: Also wait for a non-zero index. On my laptop, I'm currently seeing a huge number of intermittent test failures all related to WaitForLeader returning after the test node has become a leader, but before it has actually finished starting up, in particular, performing the serf/Raft reconciliation. Waiting for the index to become nonzero makes the tests pass reliably, by also blocking until the new leader has started committing state. --- testutil/wait.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testutil/wait.go b/testutil/wait.go index 0bf40937ad..402553352f 100644 --- a/testutil/wait.go +++ b/testutil/wait.go @@ -36,7 +36,7 @@ func WaitForLeader(t *testing.T, rpc rpcFn, dc string) structs.IndexedNodes { Datacenter: dc, } err := rpc("Catalog.ListNodes", args, &out) - return out.QueryMeta.KnownLeader, err + return out.QueryMeta.KnownLeader && out.Index > 0, err }, func(err error) { t.Fatalf("failed to find leader: %v", err) })