Browse Source

v3rpc: report eventReceived correctly

Xiang Li 10 years ago
parent
commit
b868f4b1b1
1 changed files with 9 additions and 0 deletions
  1. 9 0
      etcdserver/api/v3rpc/watch.go

+ 9 - 0
etcdserver/api/v3rpc/watch.go

@@ -66,10 +66,19 @@ func sendLoop(stream pb.Watch_WatchServer, watcher storage.Watcher, closec chan
 				return
 			}
 			err := stream.Send(&pb.WatchResponse{Event: &e})
+			storage.ReportEventReceived()
 			if err != nil {
 				return
 			}
 		case <-closec:
+			// drain the chan to clean up pending events
+			for {
+				_, ok := <-watcher.Chan()
+				if !ok {
+					return
+				}
+				storage.ReportEventReceived()
+			}
 			return
 		}
 	}