Skip to content

Commit 5a5408b

Browse files
authored
Merge pull request #18784 from veshij/release-3.5
[3.5] [serverWatchStream] terminate recvLoop on sws.close()
2 parents e102f29 + e590572 commit 5a5408b

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

server/etcdserver/api/v3rpc/watch.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,11 +345,17 @@ func (sws *serverWatchStream) recvLoop() error {
345345
id := uv.CancelRequest.WatchId
346346
err := sws.watchStream.Cancel(mvcc.WatchID(id))
347347
if err == nil {
348-
sws.ctrlStream <- &pb.WatchResponse{
348+
wr := &pb.WatchResponse{
349349
Header: sws.newResponseHeader(sws.watchStream.Rev()),
350350
WatchId: id,
351351
Canceled: true,
352352
}
353+
select {
354+
case sws.ctrlStream <- wr:
355+
case <-sws.closec:
356+
return nil
357+
}
358+
353359
sws.mu.Lock()
354360
delete(sws.progress, mvcc.WatchID(id))
355361
delete(sws.prevKV, mvcc.WatchID(id))

0 commit comments

Comments
 (0)