clientv3: only update initReq.rev == 0 with creation watch revision

Always updating the initReq.rev on watch create will resume from the wrong
revision if initReq is ever nonzero.
This commit is contained in:
Anthony Romano 2017-04-21 00:28:39 -07:00
parent ec470944f8
commit 4ab818a856

View File

@ -615,11 +615,20 @@ func (w *watchGrpcStream) serveSubstream(ws *watcherStream, resumec chan struct{
// send first creation event only if requested
if ws.initReq.createdNotify {
ws.outc <- *wr
if ws.initReq.rev == 0 {
// current revision of store; returning the
// create response binds the current revision to
// this revision, so restart with it if there's a
// disconnect before receiving any events.
nextRev = wr.Header.Revision
}
}
}
} else {
// current progress of watch; <= store revision
nextRev = wr.Header.Revision
}
nextRev = wr.Header.Revision
if len(wr.Events) > 0 {
nextRev = wr.Events[len(wr.Events)-1].Kv.ModRevision + 1
}