From bcec212c3706d08d6670b13cc39451e68c2bb895 Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Mon, 10 Nov 2014 21:15:36 -0800 Subject: [PATCH] Added some etcd retries to try to work around some flakes we see in Travis. --- cmd/integration/integration.go | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/cmd/integration/integration.go b/cmd/integration/integration.go index e303a6b581e..41e9fd160db 100644 --- a/cmd/integration/integration.go +++ b/cmd/integration/integration.go @@ -111,14 +111,28 @@ func startComponents(manifestURL string) (apiServerURL string) { apiServer := httptest.NewServer(&handler) etcdClient := etcd.NewClient(servers) - keys, err := etcdClient.Get("/", false, false) - if err != nil { - glog.Fatalf("Unable to list root etcd keys: %v", err) - } - for _, node := range keys.Node.Nodes { - if _, err := etcdClient.Delete(node.Key, true); err != nil { - glog.Fatalf("Unable delete key: %v", err) + sleep := 4 * time.Second + ok := false + for i := 0; i < 3; i++ { + keys, err := etcdClient.Get("/", false, false) + if err != nil { + glog.Warningf("Unable to list root etcd keys: %v", err) + if i < 2 { + time.Sleep(sleep) + sleep = sleep * sleep + } + continue } + for _, node := range keys.Node.Nodes { + if _, err := etcdClient.Delete(node.Key, true); err != nil { + glog.Fatalf("Unable delete key: %v", err) + } + } + ok = true + break + } + if !ok { + glog.Fatalf("Failed to connect to etcd") } cl := client.NewOrDie(&client.Config{Host: apiServer.URL, Version: testapi.Version()})