Closed
Description
> ==================
> WARNING: DATA RACE
> Write by goroutine 499:
> net/http.(*persistConn).readLoop()
> /usr/local/go/src/net/http/transport.go:929 +0xdb8
>
> Previous read by goroutine 189:
> net/http.func·024()
> /usr/local/go/src/net/http/transport.go:910 +0x4c
> net/http.(*bodyEOFSignal).condfn()
> /usr/local/go/src/net/http/transport.go:1228 +0x105
> net/http.(*bodyEOFSignal).Read()
> /usr/local/go/src/net/http/transport.go:1200 +0x41c
> io.ReadAtLeast()
> /usr/local/go/src/io/io.go:298 +0x128
> io.ReadFull()
> /usr/local/go/src/io/io.go:316 +0x7d
> encoding/binary.Read()
> /usr/local/go/src/encoding/binary/binary.go:148 +0x14f
> github.com/coreos/etcd/rafthttp.(*msgAppDecoder).decode()
> /Users/unihorn/gopath/src/github.com/coreos/etcd/rafthttp/msgapp.go:66
> +0x13c
> github.com/coreos/etcd/rafthttp.(*streamReader).run()
>
> /Users/unihorn/gopath/src/github.com/coreos/etcd/rafthttp/stream.go:309
> +0x387
> runtime.goexit()
> /usr/local/go/src/runtime/asm_amd64.s:2232 +0x0
> net/http.func·008()
> /usr/local/go/src/net/http/server.go:171 +0xb6
>
> Goroutine 499 (running) created at:
> net/http.(*Transport).dialConn()
> /usr/local/go/src/net/http/transport.go:660 +0x10d4
> net/http.func·019()
> /usr/local/go/src/net/http/transport.go:520 +0x8d
They share a alive
variable, and this may be the problem.