Просмотр исходного кода

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.
Xiang Li 10 лет назад
Родитель
Сommit
39d307572e
1 измененных файлов с 10 добавлено и 13 удалено
  1. 10 13
      integration/v3_watch_test.go

+ 10 - 13
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()