Merge pull request #92537 from wojtek-t/fix_reflector_not_making_progress

Fix bug in reflector not recovering from "Too large resource version"…

Kubernetes-commit: ed06981eab5e037b7d5b090b257054abb4d42ea0
This commit is contained in:
Kubernetes Publisher 2020-07-01 00:07:47 -07:00
commit 62ce3afea6
4 changed files with 19 additions and 24 deletions

6
Godeps/Godeps.json generated
View File

@ -672,15 +672,15 @@
},
{
"ImportPath": "k8s.io/apimachinery",
"Rev": "4149bbf8192b"
"Rev": "3c7bc0acc576"
},
{
"ImportPath": "k8s.io/client-go",
"Rev": "03667fd6b18f"
"Rev": "5f4e5d88ae20"
},
{
"ImportPath": "k8s.io/component-base",
"Rev": "f52a9b7250e8"
"Rev": "d18546f5347c"
},
{
"ImportPath": "k8s.io/gengo",

12
go.mod
View File

@ -42,9 +42,9 @@ require (
gopkg.in/square/go-jose.v2 v2.2.2
gopkg.in/yaml.v2 v2.2.8
k8s.io/api v0.0.0-20200630090439-aaebd44608df
k8s.io/apimachinery v0.0.0-20200630203207-4149bbf8192b
k8s.io/client-go v0.0.0-20200630090720-03667fd6b18f
k8s.io/component-base v0.0.0-20200626131333-f52a9b7250e8
k8s.io/apimachinery v0.0.0-20200701090254-3c7bc0acc576
k8s.io/client-go v0.0.0-20200701090722-5f4e5d88ae20
k8s.io/component-base v0.0.0-20200701091302-d18546f5347c
k8s.io/klog/v2 v2.1.0
k8s.io/kube-openapi v0.0.0-20200427153329-656914f816f9
k8s.io/utils v0.0.0-20200619165400-6e3d28b6ed19
@ -55,7 +55,7 @@ require (
replace (
k8s.io/api => k8s.io/api v0.0.0-20200630090439-aaebd44608df
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20200630203207-4149bbf8192b
k8s.io/client-go => k8s.io/client-go v0.0.0-20200630090720-03667fd6b18f
k8s.io/component-base => k8s.io/component-base v0.0.0-20200626131333-f52a9b7250e8
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20200701090254-3c7bc0acc576
k8s.io/client-go => k8s.io/client-go v0.0.0-20200701090722-5f4e5d88ae20
k8s.io/component-base => k8s.io/component-base v0.0.0-20200701091302-d18546f5347c
)

6
go.sum
View File

@ -507,9 +507,9 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
k8s.io/api v0.0.0-20200630090439-aaebd44608df/go.mod h1:cQk/DBCsCL81chJRAZjSBZ4suDeNugUZE3LqnYmbQ8Q=
k8s.io/apimachinery v0.0.0-20200630203207-4149bbf8192b/go.mod h1:m5QoVMHU94aieNFPfLqf7WmU8HLVLm3JasG64COkSXQ=
k8s.io/client-go v0.0.0-20200630090720-03667fd6b18f/go.mod h1:emGJ1Ok1wvvwJsDNayMzuFecdtLv6Yr7HJnpojOq+AI=
k8s.io/component-base v0.0.0-20200626131333-f52a9b7250e8/go.mod h1:c8B2Gs7ipNKY0Hn4SBgCBsMo38vovG9B2E90kf+Fg1E=
k8s.io/apimachinery v0.0.0-20200701090254-3c7bc0acc576/go.mod h1:m5QoVMHU94aieNFPfLqf7WmU8HLVLm3JasG64COkSXQ=
k8s.io/client-go v0.0.0-20200701090722-5f4e5d88ae20/go.mod h1:Y5OYSw+CsoY5JMltVhj6q9JT4Z34smh50YxF7mGFK50=
k8s.io/component-base v0.0.0-20200701091302-d18546f5347c/go.mod h1:pGD8AyabkKuFECRDD6O/tqp75/EWa7AtVGYuU1zPLy8=
k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
k8s.io/klog/v2 v2.0.0 h1:Foj74zO6RbjjP4hBEKjnYtjjAhGg4jNynUdYF6fJrok=
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=

View File

@ -177,7 +177,12 @@ var tooLargeResourceVersionCauseMsg = "Too large resource version"
// a minimum resource version that is larger than the largest currently available resource version for a requested resource.
func NewTooLargeResourceVersionError(minimumResourceVersion, currentRevision uint64, retrySeconds int) error {
err := errors.NewTimeoutError(fmt.Sprintf("Too large resource version: %d, current: %d", minimumResourceVersion, currentRevision), retrySeconds)
err.ErrStatus.Details.Causes = []metav1.StatusCause{{Message: tooLargeResourceVersionCauseMsg}}
err.ErrStatus.Details.Causes = []metav1.StatusCause{
{
Type: metav1.CauseTypeResourceVersionTooLarge,
Message: tooLargeResourceVersionCauseMsg,
},
}
return err
}
@ -186,15 +191,5 @@ func IsTooLargeResourceVersion(err error) bool {
if !errors.IsTimeout(err) {
return false
}
switch t := err.(type) {
case errors.APIStatus:
if d := t.Status().Details; d != nil {
for _, cause := range d.Causes {
if cause.Message == tooLargeResourceVersionCauseMsg {
return true
}
}
}
}
return false
return errors.HasStatusCause(err, metav1.CauseTypeResourceVersionTooLarge)
}