diff --git a/proxy/grpcproxy/watch_broadcast.go b/proxy/grpcproxy/watch_broadcast.go index a82c842fb..8c64b61c7 100644 --- a/proxy/grpcproxy/watch_broadcast.go +++ b/proxy/grpcproxy/watch_broadcast.go @@ -81,7 +81,10 @@ func newWatchBroadcast(wp *watchProxy, w *watcher, update func(*watchBroadcast)) func (wb *watchBroadcast) bcast(wr clientv3.WatchResponse) { wb.mu.Lock() defer wb.mu.Unlock() - wb.nextrev = wr.Header.Revision + 1 + // watchers start on the given revision, if any; ignore header rev on create + if wb.responses > 0 || wb.nextrev == 0 { + wb.nextrev = wr.Header.Revision + 1 + } wb.responses++ for r := range wb.receivers { r.send(wr)