Skip to content

transport: data race between http2Client.operateHeaders() and Stream.BytesReceived() #1316

Closed
@heyitsanthony

Description

What version of gRPC are you using?

1.4.1

What version of Go are you using (go version)?

1.8.3

What operating system (Linux, Windows, …) and version?

Ubuntu Linux 16.10

What did you do?

Ran the etcd proxy tests:
PASSES=grpcproxy ./test

What did you expect to see?

No data races from grpc.

What did you see instead?

WARNING: DATA RACE
Write at 0x00c425b38ff1 by goroutine 2016:
  google.golang.org/grpc/transport.(*http2Client).operateHeaders()
      /home/jenkins/workspace/etcd-proxy/gopath/src/google.golang.org/grpc/transport/http2_client.go:1027 +0x93
  google.golang.org/grpc/transport.(*http2Client).reader()
      /home/jenkins/workspace/etcd-proxy/gopath/src/google.golang.org/grpc/transport/http2_client.go:1142 +0x8f8

Previous read at 0x00c425b38ff1 by goroutine 795:
  google.golang.org/grpc/transport.(*Stream).BytesReceived()
      /home/jenkins/workspace/etcd-proxy/gopath/src/google.golang.org/grpc/transport/transport.go:377 +0x91
  google.golang.org/grpc.(*clientStream).finish()
      /home/jenkins/workspace/etcd-proxy/gopath/src/google.golang.org/grpc/stream.go:492 +0x8d1
  google.golang.org/grpc.newClientStream.func3()
      /home/jenkins/workspace/etcd-proxy/gopath/src/google.golang.org/grpc/stream.go:254 +0x209

Goroutine 2016 (running) created at:
  google.golang.org/grpc/transport.newHTTP2Client()
      /home/jenkins/workspace/etcd-proxy/gopath/src/google.golang.org/grpc/transport/http2_client.go:267 +0x12ec
  google.golang.org/grpc/transport.NewClientTransport()
      /home/jenkins/workspace/etcd-proxy/gopath/src/google.golang.org/grpc/transport/transport.go:463 +0xbe
  google.golang.org/grpc.(*addrConn).resetTransport()
      /home/jenkins/workspace/etcd-proxy/gopath/src/google.golang.org/grpc/clientconn.go:876 +0x414
  google.golang.org/grpc.(*ClientConn).resetAddrConn.func1()
      /home/jenkins/workspace/etcd-proxy/gopath/src/google.golang.org/grpc/clientconn.go:648 +0x41

Goroutine 795 (running) created at:
  google.golang.org/grpc.newClientStream()
      /home/jenkins/workspace/etcd-proxy/gopath/src/google.golang.org/grpc/stream.go:269 +0x1703
  google.golang.org/grpc.NewClientStream()
      /home/jenkins/workspace/etcd-proxy/gopath/src/google.golang.org/grpc/stream.go:105 +0x1fc
  github.com/coreos/etcd/etcdserver/etcdserverpb.(*watchClient).Watch()
      /home/jenkins/workspace/etcd-proxy/gopath/src/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.pb.go:3191 +0xe9
  github.com/coreos/etcd/clientv3.(*watchGrpcStream).openWatchClient()
      /home/jenkins/workspace/etcd-proxy/gopath/src/github.com/coreos/etcd/clientv3/watch.go:774 +0x18e
  github.com/coreos/etcd/clientv3.(*watchGrpcStream).newWatchClient()
      /home/jenkins/workspace/etcd-proxy/gopath/src/github.com/coreos/etcd/clientv3/watch.go:691 +0x5c3
  github.com/coreos/etcd/clientv3.(*watchGrpcStream).run()
      /home/jenkins/workspace/etcd-proxy/gopath/src/github.com/coreos/etcd/clientv3/watch.go:422 +0x12b

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions