integration: fix a data race about `i` and `tt` in TestV3WatchFromCurrentRevision

don't references to loop variables from within go anonymous function

Fixes etcd-io#10899
release-3.4
Zeming YU 2019-07-17 16:43:40 -07:00
parent 9fba06ba3b
commit 5f21b557e5
1 changed files with 5 additions and 0 deletions

View File

@ -245,6 +245,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) {
}
// asynchronously create keys
ch := make(chan struct{}, 1)
go func() {
for _, k := range tt.putKeys {
kvc := toGRPC(clus.RandClient()).KV
@ -253,6 +254,7 @@ func TestV3WatchFromCurrentRevision(t *testing.T) {
t.Errorf("#%d: couldn't put key (%v)", i, err)
}
}
ch <- struct{}{}
}()
// check stream results
@ -286,6 +288,9 @@ func TestV3WatchFromCurrentRevision(t *testing.T) {
t.Errorf("unexpected pb.WatchResponse is received %+v", nr)
}
// wait for the client to finish sending the keys before terminating the cluster
<-ch
// can't defer because tcp ports will be in use
clus.Terminate(t)
}