diff --git a/etcdserver/api/v3rpc/watch.go b/etcdserver/api/v3rpc/watch.go index 31dcfe328..3a0a9b991 100644 --- a/etcdserver/api/v3rpc/watch.go +++ b/etcdserver/api/v3rpc/watch.go @@ -111,6 +111,7 @@ func (sws *serverWatchStream) recvLoop() error { } else if rev > wsrev { // do not allow watching future revision. sws.ctrlStream <- &pb.WatchResponse{ Header: sws.newResponseHeader(wsrev), + WatchId: -1, Created: true, Canceled: true, } diff --git a/integration/v3_watch_test.go b/integration/v3_watch_test.go index 65772b7a6..17513ca7e 100644 --- a/integration/v3_watch_test.go +++ b/integration/v3_watch_test.go @@ -807,7 +807,8 @@ func TestV3WatchInvalidFutureRevision(t *testing.T) { if err != nil { t.Errorf("wStream.Recv error: %v", err) } - if !resp.Created || !resp.Canceled || len(resp.Events) != 0 { - t.Errorf("invalid start rev should return true, true, 0, but got %v, %v, %d", resp.Created, resp.Canceled, len(resp.Events)) + if resp.WatchId != -1 || !resp.Created || !resp.Canceled || len(resp.Events) != 0 { + t.Errorf("invalid start-rev expected -1, true, true, 0, but got %d, %v, %v, %d", + resp.WatchId, resp.Created, resp.Canceled, len(resp.Events)) } }