grpcproxy: fix more issues in watch path

This commit is contained in:
Xiang Li
2016-09-02 14:22:06 -07:00
parent f7293125cf
commit 8cd47c4348
3 changed files with 29 additions and 3 deletions

View File

@ -42,12 +42,16 @@ func (w *watcher) send(wr clientv3.WatchResponse) {
events := make([]*mvccpb.Event, 0, len(wr.Events))
var lastRev int64
for i := range wr.Events {
ev := (*mvccpb.Event)(wr.Events[i])
if ev.Kv.ModRevision <= w.rev {
continue
} else {
w.rev = ev.Kv.ModRevision
// We cannot update w.rev here.
// txn can have multiple events with the same rev.
// If we update w.rev here, we would skip some events in the same txn.
lastRev = ev.Kv.ModRevision
}
filtered := false
@ -65,6 +69,10 @@ func (w *watcher) send(wr clientv3.WatchResponse) {
}
}
if lastRev > w.rev {
w.rev = lastRev
}
// all events are filtered out?
if !wr.IsProgressNotify() && !wr.Created && len(events) == 0 {
return