From a4f8be1d4343739227a1a32df039de519c9b388a Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sun, 10 May 2020 14:43:43 +0200 Subject: [PATCH] vendor: kubernetes v1.18.2 Fix client watch reestablishment handling of client-side timeouts Signed-off-by: Sebastiaan van Stijn --- vendor.conf | 12 ++++++------ vendor/k8s.io/api/go.mod | 4 ++-- vendor/k8s.io/apimachinery/pkg/util/net/http.go | 6 ++++++ .../apimachinery/pkg/watch/streamwatcher.go | 2 +- vendor/k8s.io/apiserver/go.mod | 16 ++++++++-------- vendor/k8s.io/client-go/go.mod | 8 ++++---- vendor/k8s.io/client-go/rest/request.go | 2 +- 7 files changed, 28 insertions(+), 22 deletions(-) diff --git a/vendor.conf b/vendor.conf index c2e90af03..3dee19387 100644 --- a/vendor.conf +++ b/vendor.conf @@ -75,13 +75,13 @@ golang.org/x/oauth2 0f29369cfe4552d0e4bcddc57cc7 golang.org/x/time 9d24e82272b4f38b78bc8cff74fa936d31ccd8ef gopkg.in/inf.v0 v0.9.1 gopkg.in/yaml.v2 v2.2.8 -k8s.io/api v0.18.0 -k8s.io/apimachinery v0.18.0 -k8s.io/apiserver v0.18.0 -k8s.io/client-go v0.18.0 -k8s.io/cri-api v0.18.0 +k8s.io/api v0.18.2 +k8s.io/apimachinery v0.18.2 +k8s.io/apiserver v0.18.2 +k8s.io/client-go v0.18.2 +k8s.io/cri-api v0.18.2 k8s.io/klog v1.0.0 -k8s.io/kubernetes v1.18.0 +k8s.io/kubernetes v1.18.2 k8s.io/utils a9aa75ae1b89e1b992c33383f48e942d97e52dae sigs.k8s.io/structured-merge-diff/v3 v3.0.0 sigs.k8s.io/yaml v1.2.0 diff --git a/vendor/k8s.io/api/go.mod b/vendor/k8s.io/api/go.mod index 563613173..a762d201d 100644 --- a/vendor/k8s.io/api/go.mod +++ b/vendor/k8s.io/api/go.mod @@ -7,11 +7,11 @@ go 1.13 require ( github.com/gogo/protobuf v1.3.1 github.com/stretchr/testify v1.4.0 - k8s.io/apimachinery v0.18.0 + k8s.io/apimachinery v0.18.2 ) replace ( golang.org/x/sys => golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a // pinned to release-branch.go1.13 golang.org/x/tools => golang.org/x/tools v0.0.0-20190821162956-65e3620a7ae7 // pinned to release-branch.go1.13 - k8s.io/apimachinery => k8s.io/apimachinery v0.18.0 + k8s.io/apimachinery => k8s.io/apimachinery v0.18.2 ) diff --git a/vendor/k8s.io/apimachinery/pkg/util/net/http.go b/vendor/k8s.io/apimachinery/pkg/util/net/http.go index 0ba586bfe..7449cbb0a 100644 --- a/vendor/k8s.io/apimachinery/pkg/util/net/http.go +++ b/vendor/k8s.io/apimachinery/pkg/util/net/http.go @@ -55,6 +55,12 @@ func JoinPreservingTrailingSlash(elem ...string) string { return result } +// IsTimeout returns true if the given error is a network timeout error +func IsTimeout(err error) bool { + neterr, ok := err.(net.Error) + return ok && neterr != nil && neterr.Timeout() +} + // IsProbableEOF returns true if the given error resembles a connection termination // scenario that would justify assuming that the watch is empty. // These errors are what the Go http stack returns back to us which are general diff --git a/vendor/k8s.io/apimachinery/pkg/watch/streamwatcher.go b/vendor/k8s.io/apimachinery/pkg/watch/streamwatcher.go index 8af256eb1..4269a836a 100644 --- a/vendor/k8s.io/apimachinery/pkg/watch/streamwatcher.go +++ b/vendor/k8s.io/apimachinery/pkg/watch/streamwatcher.go @@ -113,7 +113,7 @@ func (sw *StreamWatcher) receive() { case io.ErrUnexpectedEOF: klog.V(1).Infof("Unexpected EOF during watch stream event decoding: %v", err) default: - if net.IsProbableEOF(err) { + if net.IsProbableEOF(err) || net.IsTimeout(err) { klog.V(5).Infof("Unable to decode an event from the watch stream: %v", err) } else { sw.result <- Event{ diff --git a/vendor/k8s.io/apiserver/go.mod b/vendor/k8s.io/apiserver/go.mod index 3d473aa23..11ec847e1 100644 --- a/vendor/k8s.io/apiserver/go.mod +++ b/vendor/k8s.io/apiserver/go.mod @@ -43,10 +43,10 @@ require ( gopkg.in/square/go-jose.v2 v2.2.2 gopkg.in/yaml.v2 v2.2.8 gotest.tools v2.2.0+incompatible // indirect - k8s.io/api v0.18.0 - k8s.io/apimachinery v0.18.0 - k8s.io/client-go v0.18.0 - k8s.io/component-base v0.18.0 + k8s.io/api v0.18.2 + k8s.io/apimachinery v0.18.2 + k8s.io/client-go v0.18.2 + k8s.io/component-base v0.18.2 k8s.io/klog v1.0.0 k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89 @@ -58,8 +58,8 @@ require ( replace ( golang.org/x/sys => golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a // pinned to release-branch.go1.13 golang.org/x/tools => golang.org/x/tools v0.0.0-20190821162956-65e3620a7ae7 // pinned to release-branch.go1.13 - k8s.io/api => k8s.io/api v0.18.0 - k8s.io/apimachinery => k8s.io/apimachinery v0.18.0 - k8s.io/client-go => k8s.io/client-go v0.18.0 - k8s.io/component-base => k8s.io/component-base v0.18.0 + k8s.io/api => k8s.io/api v0.18.2 + k8s.io/apimachinery => k8s.io/apimachinery v0.18.2 + k8s.io/client-go => k8s.io/client-go v0.18.2 + k8s.io/component-base => k8s.io/component-base v0.18.2 ) diff --git a/vendor/k8s.io/client-go/go.mod b/vendor/k8s.io/client-go/go.mod index 444e47cfa..6920f3844 100644 --- a/vendor/k8s.io/client-go/go.mod +++ b/vendor/k8s.io/client-go/go.mod @@ -28,8 +28,8 @@ require ( golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 google.golang.org/appengine v1.5.0 // indirect - k8s.io/api v0.18.0 - k8s.io/apimachinery v0.18.0 + k8s.io/api v0.18.2 + k8s.io/apimachinery v0.18.2 k8s.io/klog v1.0.0 k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89 sigs.k8s.io/yaml v1.2.0 @@ -38,6 +38,6 @@ require ( replace ( golang.org/x/sys => golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a // pinned to release-branch.go1.13 golang.org/x/tools => golang.org/x/tools v0.0.0-20190821162956-65e3620a7ae7 // pinned to release-branch.go1.13 - k8s.io/api => k8s.io/api v0.18.0 - k8s.io/apimachinery => k8s.io/apimachinery v0.18.0 + k8s.io/api => k8s.io/api v0.18.2 + k8s.io/apimachinery => k8s.io/apimachinery v0.18.2 ) diff --git a/vendor/k8s.io/client-go/rest/request.go b/vendor/k8s.io/client-go/rest/request.go index 1acd189ea..c5bc6a898 100644 --- a/vendor/k8s.io/client-go/rest/request.go +++ b/vendor/k8s.io/client-go/rest/request.go @@ -655,7 +655,7 @@ func (r *Request) Watch(ctx context.Context) (watch.Interface, error) { if err != nil { // The watch stream mechanism handles many common partial data errors, so closed // connections can be retried in many cases. - if net.IsProbableEOF(err) { + if net.IsProbableEOF(err) || net.IsTimeout(err) { return watch.NewEmptyWatch(), nil } return nil, err