Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TestWatchOverlapDropConnContextCancel finds DATA RACE #6586

Closed
gyuho opened this issue Oct 5, 2016 · 1 comment · Fixed by #6587
Closed

TestWatchOverlapDropConnContextCancel finds DATA RACE #6586

gyuho opened this issue Oct 5, 2016 · 1 comment · Fixed by #6587

Comments

@gyuho
Copy link
Contributor

gyuho commented Oct 5, 2016

=== RUN   TestWatchOverlapDropConnContextCancel
2016-10-05 13:32:32.360195 I | integration: launching node8115522619036237221 (unix://localhost:node8115522619036237221.sock.bridge)
2016-10-05 13:32:32.360665 I | etcdserver: name = node8115522619036237221
2016-10-05 13:32:32.360701 I | etcdserver: data dir = /tmp/etcd183121487
2016-10-05 13:32:32.360733 I | etcdserver: member dir = /tmp/etcd183121487/member
2016-10-05 13:32:32.360757 I | etcdserver: heartbeat = 10ms
2016-10-05 13:32:32.360781 I | etcdserver: election = 100ms
2016-10-05 13:32:32.360805 I | etcdserver: snapshot count = 0
2016-10-05 13:32:32.360836 I | etcdserver: advertise client URLs = unix://127.0.0.1:21540.15939.sock
2016-10-05 13:32:32.360868 I | etcdserver: initial advertise peer URLs = unix://127.0.0.1:21539.15939.sock
2016-10-05 13:32:32.360902 I | etcdserver: initial cluster = node8115522619036237221=unix://127.0.0.1:21539.15939.sock
2016-10-05 13:32:32.369402 I | etcdserver: starting member b9a86ac2b12f99d9 in cluster af1a29d042316b92
2016-10-05 13:32:32.369513 I | raft: b9a86ac2b12f99d9 became follower at term 0
2016-10-05 13:32:32.369583 I | raft: newRaft b9a86ac2b12f99d9 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
2016-10-05 13:32:32.369641 I | raft: b9a86ac2b12f99d9 became follower at term 1
2016-10-05 13:32:32.372454 I | etcdserver: set snapshot count to default 10000
2016-10-05 13:32:32.372512 I | etcdserver: starting server... [version: 3.1.0-alpha.1+git, cluster version: to_be_decided]
2016-10-05 13:32:32.373329 I | etcdserver/membership: added member b9a86ac2b12f99d9 [unix://127.0.0.1:21539.15939.sock] to cluster af1a29d042316b92
2016-10-05 13:32:32.374813 I | integration: launched node8115522619036237221 (unix://localhost:node8115522619036237221.sock.bridge)
2016-10-05 13:32:32.440567 I | raft: b9a86ac2b12f99d9 is starting a new election at term 1
2016-10-05 13:32:32.440627 I | raft: b9a86ac2b12f99d9 became candidate at term 2
2016-10-05 13:32:32.440665 I | raft: b9a86ac2b12f99d9 received vote from b9a86ac2b12f99d9 at term 2
2016-10-05 13:32:32.440706 I | raft: b9a86ac2b12f99d9 became leader at term 2
2016-10-05 13:32:32.440734 I | raft: raft.node: b9a86ac2b12f99d9 elected leader b9a86ac2b12f99d9 at term 2
2016-10-05 13:32:32.441309 I | etcdserver: setting up the initial cluster version to 3.1
2016-10-05 13:32:32.441342 I | etcdserver: published {Name:node8115522619036237221 ClientURLs:[unix://127.0.0.1:21540.15939.sock]} to cluster af1a29d042316b92
2016-10-05 13:32:32.441582 N | etcdserver/membership: set the initial cluster version to 3.1
2016-10-05 13:32:32.448316 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.457150 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.463547 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.469852 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.470081 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.478466 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.483070 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.490649 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.490698 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.496807 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.502470 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.508369 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.513517 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.514279 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.522267 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.522478 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.527920 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.534904 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: use of closed network connection
2016-10-05 13:32:32.535159 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.541867 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.544244 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: use of closed network connection
2016-10-05 13:32:32.549647 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.555271 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.571072 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.585088 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.591307 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.598107 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.604362 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.611862 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.619987 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.620218 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.628107 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.636396 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.646233 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.653556 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.661701 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.668789 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.679954 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.686634 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.689449 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.696261 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.702922 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.703431 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.710159 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: use of closed network connection
2016-10-05 13:32:32.710252 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.715855 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.723005 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.723126 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.729389 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.729606 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.737114 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.737251 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.745281 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.753360 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.760300 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.760388 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.768562 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.785825 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.792681 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.797898 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.805322 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.812237 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.812323 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.819289 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.827886 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.833216 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.838259 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.845378 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
==================
WARNING: DATA RACE
Write at 0x00c4227e45b0 by goroutine 100:
  github.com/coreos/etcd/clientv3.(*watchGrpcStream).serveSubstream.func1()
      /home/runner/workspace/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:576 +0x61
  github.com/coreos/etcd/clientv3.(*watchGrpcStream).serveSubstream()
      /home/runner/workspace/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:623 +0x870

Previous read at 0x00c4227e45b0 by goroutine 108:
  github.com/coreos/etcd/clientv3.(*watchGrpcStream).run()
      /home/runner/workspace/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:491 +0x1983

Goroutine 100 (running) created at:
  github.com/coreos/etcd/clientv3.(*watchGrpcStream).newWatchClient()
      /home/runner/workspace/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:652 +0x5ea
  github.com/coreos/etcd/clientv3.(*watchGrpcStream).run()
      /home/runner/workspace/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:487 +0x17e5

Goroutine 108 (running) created at:
  github.com/coreos/etcd/clientv3.(*watcher).newWatcherGrpcStream()
      /home/runner/workspace/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:222 +0x62b
  github.com/coreos/etcd/clientv3.(*watcher).Watch()
      /home/runner/workspace/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/watch.go:264 +0xc2c
  github.com/coreos/etcd/clientv3/integration.testWatchOverlapContextCancel.func1()
      /home/runner/workspace/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/clientv3/integration/watch_test.go:811 +0x254
==================
2016-10-05 13:32:32.852132 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.852223 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.860017 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.867380 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.875564 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.894331 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.894844 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.899972 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.900120 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.910773 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.918204 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.929788 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.936045 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.943415 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken write unix @->localhost:node8115522619036237221.sock.bridge: write: broken pipe.
2016-10-05 13:32:32.950001 I | etcdserver/api/v3rpc: transport: http2Server.HandleStreams failed to read frame: read unix localhost:node8115522619036237221.sock->@: read: connection reset by peer
2016-10-05 13:32:32.951854 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.957510 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken read unix @->localhost:node8115522619036237221.sock.bridge: read: connection reset by peer.
2016-10-05 13:32:32.963984 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.971615 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.978477 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.982989 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.988674 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:32.992869 I | etcdserver/api/v3rpc: transport: http2Client.notifyError got notified that the client transport was broken EOF.
2016-10-05 13:32:33.086584 I | integration: terminating node8115522619036237221 (unix://localhost:node8115522619036237221.sock.bridge)
2016-10-05 13:32:33.100637 I | integration: terminated node8115522619036237221 (unix://localhost:node8115522619036237221.sock.bridge)
--- PASS: TestWatchOverlapDropConnContextCancel (0.75s)

https://semaphoreci.com/coreos/etcd/branches/pull-request-6583/builds/2

@xiang90
Copy link
Contributor

xiang90 commented Oct 5, 2016

/cc @heyitsanthony

@xiang90 xiang90 added this to the v3.1.0-rc.0 milestone Oct 5, 2016
heyitsanthony pushed a commit to heyitsanthony/etcd that referenced this issue Oct 5, 2016
The initial revision was being updated in the substream goroutine defer;
this was racing with the resume path fetching the initial revision when
the substream closes during resume. Instead, update the initial revision
whenever the substream processes a new watch response. Since the substream
cannot receive a watch response while it is resuming, the write to the
initial revision is ordered to always happen after the resume read.

Fixes etcd-io#6586
gyuho pushed a commit that referenced this issue Oct 5, 2016
The initial revision was being updated in the substream goroutine defer;
this was racing with the resume path fetching the initial revision when
the substream closes during resume. Instead, update the initial revision
whenever the substream processes a new watch response. Since the substream
cannot receive a watch response while it is resuming, the write to the
initial revision is ordered to always happen after the resume read.

Fixes #6586
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging a pull request may close this issue.

2 participants