diff --git a/etcdserver/api/v3rpc/watch.go b/etcdserver/api/v3rpc/watch.go index 88eb334f9e22..441bcf03ca0e 100644 --- a/etcdserver/api/v3rpc/watch.go +++ b/etcdserver/api/v3rpc/watch.go @@ -223,6 +223,7 @@ func (sws *serverWatchStream) recvLoop() error { return err } + requestHandler: switch uv := req.RequestUnion.(type) { case *pb.WatchRequest_CreateRequest: if uv.CreateRequest == nil { @@ -255,9 +256,10 @@ func (sws *serverWatchStream) recvLoop() error { select { case sws.ctrlStream <- wr: + break requestHandler case <-sws.closec: + return nil } - return nil } filters := FiltersFromRequest(creq)