From 39d307572e2525fee5cc051373bf46b56edfd977 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Wed, 9 Mar 2016 09:55:49 -0800 Subject: [PATCH] integration: fix TestV3WatchFutureRevision Fix https://github.com/coreos/etcd/issues/4730. Previously we put keys async and there might be a race when the watch triggers before the put receives the response. When that happens, put might fails to get the response since we shutdown the server when watch triggers. --- integration/v3_watch_test.go | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/integration/v3_watch_test.go b/integration/v3_watch_test.go index 41fa34a20..45404629c 100644 --- a/integration/v3_watch_test.go +++ b/integration/v3_watch_test.go @@ -319,20 +319,17 @@ func TestV3WatchFutureRevision(t *testing.T) { t.Fatal("create = %v, want %v", cresp.Created, true) } - // asynchronously create keys - go func() { - kvc := toGRPC(clus.RandClient()).KV - for { - req := &pb.PutRequest{Key: wkey, Value: []byte("bar")} - resp, rerr := kvc.Put(context.TODO(), req) - if rerr != nil { - t.Fatalf("couldn't put key (%v)", rerr) - } - if resp.Header.Revision == wrev { - return - } + kvc := toGRPC(clus.RandClient()).KV + for { + req := &pb.PutRequest{Key: wkey, Value: []byte("bar")} + resp, rerr := kvc.Put(context.TODO(), req) + if rerr != nil { + t.Fatalf("couldn't put key (%v)", rerr) } - }() + if resp.Header.Revision == wrev { + break + } + } // ensure watcher request created a new watcher cresp, err = wStream.Recv()