Skip to content

Commit 47b5f07

Browse files
authored
Merge pull request #18785 from veshij/release-3.4
[serverWatchStream] terminate recvLoop on sws.close()
2 parents b360989 + 9375be1 commit 47b5f07

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

etcdserver/api/v3rpc/watch.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,11 +354,17 @@ func (sws *serverWatchStream) recvLoop() error {
354354
id := uv.CancelRequest.WatchId
355355
err := sws.watchStream.Cancel(mvcc.WatchID(id))
356356
if err == nil {
357-
sws.ctrlStream <- &pb.WatchResponse{
357+
wr := &pb.WatchResponse{
358358
Header: sws.newResponseHeader(sws.watchStream.Rev()),
359359
WatchId: id,
360360
Canceled: true,
361361
}
362+
select {
363+
case sws.ctrlStream <- wr:
364+
case <-sws.closec:
365+
return nil
366+
}
367+
362368
sws.mu.Lock()
363369
delete(sws.progress, mvcc.WatchID(id))
364370
delete(sws.prevKV, mvcc.WatchID(id))

0 commit comments

Comments
 (0)