From a8dbab66315d9fe9e705297a228540652bdd69fe Mon Sep 17 00:00:00 2001 From: "Timothy St. Clair" Date: Fri, 23 Sep 2016 16:05:38 -0500 Subject: [PATCH] Update etcd godep to 3.0.10 to fix known watch issue. --- Godeps/Godeps.json | 212 +++++++++--------- .../github.com/coreos/etcd/clientv3/watch.go | 46 ++-- .../github.com/coreos/etcd/rafthttp/stream.go | 1 + .../github.com/coreos/etcd/version/version.go | 2 +- 4 files changed, 135 insertions(+), 126 deletions(-) diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index c2fc6af51a7..3037c3b878a 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -1,7 +1,7 @@ { "ImportPath": "k8s.io/kubernetes", - "GoVersion": "go1.6", - "GodepVersion": "v69", + "GoVersion": "go1.7", + "GodepVersion": "v74", "Packages": [ "github.com/ugorji/go/codec/codecgen", "github.com/onsi/ginkgo/ginkgo", @@ -353,263 +353,263 @@ }, { "ImportPath": "github.com/coreos/etcd/alarm", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/auth", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/auth/authpb", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/client", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/clientv3", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/compactor", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/discovery", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/error", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/etcdserver", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/etcdserver/api", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/etcdserver/api/v2http", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/etcdserver/api/v2http/httptypes", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/etcdserver/api/v3rpc", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/etcdserver/auth", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/etcdserver/etcdserverpb", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/etcdserver/membership", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/etcdserver/stats", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/integration", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/lease", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/lease/leasehttp", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/lease/leasepb", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/mvcc", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/mvcc/backend", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/mvcc/mvccpb", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/adt", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/contention", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/crc", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/fileutil", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/httputil", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/idutil", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/ioutil", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/logutil", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/netutil", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/pathutil", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/pbutil", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/runtime", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/schedule", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/testutil", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/tlsutil", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/transport", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/types", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/pkg/wait", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/raft", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/raft/raftpb", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/rafthttp", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/snap", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/snap/snappb", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/store", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/version", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/wal", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/etcd/wal/walpb", - "Comment": "v3.0.9", - "Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" + "Comment": "v3.0.10", + "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2" }, { "ImportPath": "github.com/coreos/go-oidc/http", diff --git a/vendor/github.com/coreos/etcd/clientv3/watch.go b/vendor/github.com/coreos/etcd/clientv3/watch.go index 7d16e5c3735..2b9d015fb25 100644 --- a/vendor/github.com/coreos/etcd/clientv3/watch.go +++ b/vendor/github.com/coreos/etcd/clientv3/watch.go @@ -127,6 +127,8 @@ type watchGrpcStream struct { donec chan struct{} // errc transmits errors from grpc Recv to the watch stream reconn logic errc chan error + // closingc gets the watcherStream of closing watchers + closingc chan *watcherStream // the error that closed the watch stream closeErr error @@ -189,11 +191,12 @@ func (w *watcher) newWatcherGrpcStream(inctx context.Context) *watchGrpcStream { cancel: cancel, streams: make(map[int64]*watcherStream), - respc: make(chan *pb.WatchResponse), - reqc: make(chan *watchRequest), - stopc: make(chan struct{}), - donec: make(chan struct{}), - errc: make(chan error, 1), + respc: make(chan *pb.WatchResponse), + reqc: make(chan *watchRequest), + stopc: make(chan struct{}), + donec: make(chan struct{}), + errc: make(chan error, 1), + closingc: make(chan *watcherStream), } go wgs.run() return wgs @@ -242,7 +245,6 @@ func (w *watcher) Watch(ctx context.Context, key string, opts ...OpOption) Watch case reqc <- wr: ok = true case <-wr.ctx.Done(): - wgs.stopIfEmpty() case <-donec: if wgs.closeErr != nil { closeCh <- WatchResponse{closeErr: wgs.closeErr} @@ -352,15 +354,19 @@ func (w *watchGrpcStream) addStream(resp *pb.WatchResponse, pendingReq *watchReq go w.serveStream(ws) } -// closeStream closes the watcher resources and removes it -func (w *watchGrpcStream) closeStream(ws *watcherStream) { +func (w *watchGrpcStream) closeStream(ws *watcherStream) bool { w.mu.Lock() // cancels request stream; subscriber receives nil channel close(ws.initReq.retc) // close subscriber's channel close(ws.outc) delete(w.streams, ws.id) + empty := len(w.streams) == 0 + if empty && w.stopc != nil { + w.stopc = nil + } w.mu.Unlock() + return empty } // run is the root of the goroutines for managing a watcher client @@ -464,6 +470,10 @@ func (w *watchGrpcStream) run() { cancelSet = make(map[int64]struct{}) case <-stopc: return + case ws := <-w.closingc: + if w.closeStream(ws) { + return + } } // send failed; queue for retry @@ -522,6 +532,15 @@ func (w *watchGrpcStream) serveWatchClient(wc pb.Watch_WatchClient) { // serveStream forwards watch responses from run() to the subscriber func (w *watchGrpcStream) serveStream(ws *watcherStream) { + defer func() { + // signal that this watcherStream is finished + select { + case w.closingc <- ws: + case <-w.donec: + w.closeStream(ws) + } + }() + var closeErr error emptyWr := &WatchResponse{} wrs := []*WatchResponse{} @@ -602,20 +621,9 @@ func (w *watchGrpcStream) serveStream(ws *watcherStream) { } } - w.closeStream(ws) - w.stopIfEmpty() // lazily send cancel message if events on missing id } -func (wgs *watchGrpcStream) stopIfEmpty() { - wgs.mu.Lock() - if len(wgs.streams) == 0 && wgs.stopc != nil { - close(wgs.stopc) - wgs.stopc = nil - } - wgs.mu.Unlock() -} - func (w *watchGrpcStream) newWatchClient() (pb.Watch_WatchClient, error) { ws, rerr := w.resume() if rerr != nil { diff --git a/vendor/github.com/coreos/etcd/rafthttp/stream.go b/vendor/github.com/coreos/etcd/rafthttp/stream.go index 76e731e91d0..7487707267e 100644 --- a/vendor/github.com/coreos/etcd/rafthttp/stream.go +++ b/vendor/github.com/coreos/etcd/rafthttp/stream.go @@ -49,6 +49,7 @@ var ( "2.1.0": {streamTypeMsgAppV2, streamTypeMessage}, "2.2.0": {streamTypeMsgAppV2, streamTypeMessage}, "2.3.0": {streamTypeMsgAppV2, streamTypeMessage}, + "3.0.0": {streamTypeMsgAppV2, streamTypeMessage}, } ) diff --git a/vendor/github.com/coreos/etcd/version/version.go b/vendor/github.com/coreos/etcd/version/version.go index 96658785840..bb884db9184 100644 --- a/vendor/github.com/coreos/etcd/version/version.go +++ b/vendor/github.com/coreos/etcd/version/version.go @@ -29,7 +29,7 @@ import ( var ( // MinClusterVersion is the min cluster version this etcd binary is compatible with. MinClusterVersion = "2.3.0" - Version = "3.0.9" + Version = "3.0.10" // Git SHA Value will be set during build GitSHA = "Not provided (use ./build instead of go build)"