diff --git a/clientv3/watch.go b/clientv3/watch.go index bc6ddc037..e0a1e8967 100644 --- a/clientv3/watch.go +++ b/clientv3/watch.go @@ -505,6 +505,7 @@ func (w *watchGrpcStream) serveWatchClient(wc pb.Watch_WatchClient) { // serveStream forwards watch responses from run() to the subscriber func (w *watchGrpcStream) serveStream(ws *watcherStream) { + var closeErr error emptyWr := &WatchResponse{} wrs := []*WatchResponse{} resuming := false @@ -569,13 +570,14 @@ func (w *watchGrpcStream) serveStream(ws *watcherStream) { } case <-w.donec: closing = true + closeErr = w.closeErr case <-ws.initReq.ctx.Done(): closing = true } } // try to send off close error - if w.closeErr != nil { + if closeErr != nil { select { case ws.outc <- WatchResponse{closeErr: w.closeErr}: case <-w.donec: