Update etcd godep to 3.0.10 to fix known watch issue.

This commit is contained in:
Timothy St. Clair 2016-09-23 16:05:38 -05:00
parent 69083bcfce
commit a8dbab6631
4 changed files with 135 additions and 126 deletions

212
Godeps/Godeps.json generated
View File

@ -1,7 +1,7 @@
{ {
"ImportPath": "k8s.io/kubernetes", "ImportPath": "k8s.io/kubernetes",
"GoVersion": "go1.6", "GoVersion": "go1.7",
"GodepVersion": "v69", "GodepVersion": "v74",
"Packages": [ "Packages": [
"github.com/ugorji/go/codec/codecgen", "github.com/ugorji/go/codec/codecgen",
"github.com/onsi/ginkgo/ginkgo", "github.com/onsi/ginkgo/ginkgo",
@ -353,263 +353,263 @@
}, },
{ {
"ImportPath": "github.com/coreos/etcd/alarm", "ImportPath": "github.com/coreos/etcd/alarm",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/auth", "ImportPath": "github.com/coreos/etcd/auth",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/auth/authpb", "ImportPath": "github.com/coreos/etcd/auth/authpb",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/client", "ImportPath": "github.com/coreos/etcd/client",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/clientv3", "ImportPath": "github.com/coreos/etcd/clientv3",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/compactor", "ImportPath": "github.com/coreos/etcd/compactor",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/discovery", "ImportPath": "github.com/coreos/etcd/discovery",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/error", "ImportPath": "github.com/coreos/etcd/error",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/etcdserver", "ImportPath": "github.com/coreos/etcd/etcdserver",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/etcdserver/api", "ImportPath": "github.com/coreos/etcd/etcdserver/api",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/etcdserver/api/v2http", "ImportPath": "github.com/coreos/etcd/etcdserver/api/v2http",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/etcdserver/api/v2http/httptypes", "ImportPath": "github.com/coreos/etcd/etcdserver/api/v2http/httptypes",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/etcdserver/api/v3rpc", "ImportPath": "github.com/coreos/etcd/etcdserver/api/v3rpc",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes", "ImportPath": "github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/etcdserver/auth", "ImportPath": "github.com/coreos/etcd/etcdserver/auth",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/etcdserver/etcdserverpb", "ImportPath": "github.com/coreos/etcd/etcdserver/etcdserverpb",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/etcdserver/membership", "ImportPath": "github.com/coreos/etcd/etcdserver/membership",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/etcdserver/stats", "ImportPath": "github.com/coreos/etcd/etcdserver/stats",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/integration", "ImportPath": "github.com/coreos/etcd/integration",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/lease", "ImportPath": "github.com/coreos/etcd/lease",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/lease/leasehttp", "ImportPath": "github.com/coreos/etcd/lease/leasehttp",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/lease/leasepb", "ImportPath": "github.com/coreos/etcd/lease/leasepb",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/mvcc", "ImportPath": "github.com/coreos/etcd/mvcc",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/mvcc/backend", "ImportPath": "github.com/coreos/etcd/mvcc/backend",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/mvcc/mvccpb", "ImportPath": "github.com/coreos/etcd/mvcc/mvccpb",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/adt", "ImportPath": "github.com/coreos/etcd/pkg/adt",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/contention", "ImportPath": "github.com/coreos/etcd/pkg/contention",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/crc", "ImportPath": "github.com/coreos/etcd/pkg/crc",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/fileutil", "ImportPath": "github.com/coreos/etcd/pkg/fileutil",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/httputil", "ImportPath": "github.com/coreos/etcd/pkg/httputil",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/idutil", "ImportPath": "github.com/coreos/etcd/pkg/idutil",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/ioutil", "ImportPath": "github.com/coreos/etcd/pkg/ioutil",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/logutil", "ImportPath": "github.com/coreos/etcd/pkg/logutil",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/netutil", "ImportPath": "github.com/coreos/etcd/pkg/netutil",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/pathutil", "ImportPath": "github.com/coreos/etcd/pkg/pathutil",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/pbutil", "ImportPath": "github.com/coreos/etcd/pkg/pbutil",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/runtime", "ImportPath": "github.com/coreos/etcd/pkg/runtime",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/schedule", "ImportPath": "github.com/coreos/etcd/pkg/schedule",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/testutil", "ImportPath": "github.com/coreos/etcd/pkg/testutil",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/tlsutil", "ImportPath": "github.com/coreos/etcd/pkg/tlsutil",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/transport", "ImportPath": "github.com/coreos/etcd/pkg/transport",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/types", "ImportPath": "github.com/coreos/etcd/pkg/types",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/pkg/wait", "ImportPath": "github.com/coreos/etcd/pkg/wait",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/raft", "ImportPath": "github.com/coreos/etcd/raft",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/raft/raftpb", "ImportPath": "github.com/coreos/etcd/raft/raftpb",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/rafthttp", "ImportPath": "github.com/coreos/etcd/rafthttp",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/snap", "ImportPath": "github.com/coreos/etcd/snap",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/snap/snappb", "ImportPath": "github.com/coreos/etcd/snap/snappb",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/store", "ImportPath": "github.com/coreos/etcd/store",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/version", "ImportPath": "github.com/coreos/etcd/version",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/wal", "ImportPath": "github.com/coreos/etcd/wal",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/etcd/wal/walpb", "ImportPath": "github.com/coreos/etcd/wal/walpb",
"Comment": "v3.0.9", "Comment": "v3.0.10",
"Rev": "494c0126596c0e7cd59686a2e7afc90fe3296079" "Rev": "546c0f7ed65523c24390f0f26c7e4af2232f52d2"
}, },
{ {
"ImportPath": "github.com/coreos/go-oidc/http", "ImportPath": "github.com/coreos/go-oidc/http",

View File

@ -127,6 +127,8 @@ type watchGrpcStream struct {
donec chan struct{} donec chan struct{}
// errc transmits errors from grpc Recv to the watch stream reconn logic // errc transmits errors from grpc Recv to the watch stream reconn logic
errc chan error errc chan error
// closingc gets the watcherStream of closing watchers
closingc chan *watcherStream
// the error that closed the watch stream // the error that closed the watch stream
closeErr error closeErr error
@ -194,6 +196,7 @@ func (w *watcher) newWatcherGrpcStream(inctx context.Context) *watchGrpcStream {
stopc: make(chan struct{}), stopc: make(chan struct{}),
donec: make(chan struct{}), donec: make(chan struct{}),
errc: make(chan error, 1), errc: make(chan error, 1),
closingc: make(chan *watcherStream),
} }
go wgs.run() go wgs.run()
return wgs return wgs
@ -242,7 +245,6 @@ func (w *watcher) Watch(ctx context.Context, key string, opts ...OpOption) Watch
case reqc <- wr: case reqc <- wr:
ok = true ok = true
case <-wr.ctx.Done(): case <-wr.ctx.Done():
wgs.stopIfEmpty()
case <-donec: case <-donec:
if wgs.closeErr != nil { if wgs.closeErr != nil {
closeCh <- WatchResponse{closeErr: wgs.closeErr} closeCh <- WatchResponse{closeErr: wgs.closeErr}
@ -352,15 +354,19 @@ func (w *watchGrpcStream) addStream(resp *pb.WatchResponse, pendingReq *watchReq
go w.serveStream(ws) go w.serveStream(ws)
} }
// closeStream closes the watcher resources and removes it func (w *watchGrpcStream) closeStream(ws *watcherStream) bool {
func (w *watchGrpcStream) closeStream(ws *watcherStream) {
w.mu.Lock() w.mu.Lock()
// cancels request stream; subscriber receives nil channel // cancels request stream; subscriber receives nil channel
close(ws.initReq.retc) close(ws.initReq.retc)
// close subscriber's channel // close subscriber's channel
close(ws.outc) close(ws.outc)
delete(w.streams, ws.id) delete(w.streams, ws.id)
empty := len(w.streams) == 0
if empty && w.stopc != nil {
w.stopc = nil
}
w.mu.Unlock() w.mu.Unlock()
return empty
} }
// run is the root of the goroutines for managing a watcher client // 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{}) cancelSet = make(map[int64]struct{})
case <-stopc: case <-stopc:
return return
case ws := <-w.closingc:
if w.closeStream(ws) {
return
}
} }
// send failed; queue for retry // 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 // serveStream forwards watch responses from run() to the subscriber
func (w *watchGrpcStream) serveStream(ws *watcherStream) { 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 var closeErr error
emptyWr := &WatchResponse{} emptyWr := &WatchResponse{}
wrs := []*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 // 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) { func (w *watchGrpcStream) newWatchClient() (pb.Watch_WatchClient, error) {
ws, rerr := w.resume() ws, rerr := w.resume()
if rerr != nil { if rerr != nil {

View File

@ -49,6 +49,7 @@ var (
"2.1.0": {streamTypeMsgAppV2, streamTypeMessage}, "2.1.0": {streamTypeMsgAppV2, streamTypeMessage},
"2.2.0": {streamTypeMsgAppV2, streamTypeMessage}, "2.2.0": {streamTypeMsgAppV2, streamTypeMessage},
"2.3.0": {streamTypeMsgAppV2, streamTypeMessage}, "2.3.0": {streamTypeMsgAppV2, streamTypeMessage},
"3.0.0": {streamTypeMsgAppV2, streamTypeMessage},
} }
) )

View File

@ -29,7 +29,7 @@ import (
var ( var (
// MinClusterVersion is the min cluster version this etcd binary is compatible with. // MinClusterVersion is the min cluster version this etcd binary is compatible with.
MinClusterVersion = "2.3.0" MinClusterVersion = "2.3.0"
Version = "3.0.9" Version = "3.0.10"
// Git SHA Value will be set during build // Git SHA Value will be set during build
GitSHA = "Not provided (use ./build instead of go build)" GitSHA = "Not provided (use ./build instead of go build)"