diff --git a/go.mod b/go.mod index 068e5e437..58f3aff3b 100644 --- a/go.mod +++ b/go.mod @@ -33,8 +33,8 @@ require ( k8s.io/api v0.0.0-20240424173406-2676848ed820 k8s.io/apimachinery v0.0.0-20240424173219-03f2f3350dc5 k8s.io/cli-runtime v0.0.0-20240424175805-8ca47d2d6148 - k8s.io/client-go v0.0.0-20240424173636-178bcf2846fe - k8s.io/component-base v0.0.0-20240424174244-e13cfb16afe7 + k8s.io/client-go v0.0.0-20240424213639-6b47d7dcbef7 + k8s.io/component-base v0.0.0-20240425013935-73cb3a739e5b k8s.io/component-helpers v0.0.0-20240424174344-623e3ec725a2 k8s.io/klog/v2 v2.120.1 k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 diff --git a/go.sum b/go.sum index 86a6e6051..c66bd3cfe 100644 --- a/go.sum +++ b/go.sum @@ -282,10 +282,10 @@ k8s.io/apimachinery v0.0.0-20240424173219-03f2f3350dc5 h1:l6ErQDrxBVdvr45UjLjVyv k8s.io/apimachinery v0.0.0-20240424173219-03f2f3350dc5/go.mod h1:Xbr0GEGusNQhkPdkN3/WJL9E50/dq40D+fHHqjG+FL8= k8s.io/cli-runtime v0.0.0-20240424175805-8ca47d2d6148 h1:JyVWRQclarJirMPSVOmlvmTFAz0meV2PUS7DuMsyvuw= k8s.io/cli-runtime v0.0.0-20240424175805-8ca47d2d6148/go.mod h1:ZISE294tQHLpDaYy8BiO8VL4o7f4dbidMl/tp2VjA8A= -k8s.io/client-go v0.0.0-20240424173636-178bcf2846fe h1:IQdT0pQXL7lMUFKmcaTihi5PR/06Pt1KB9iQlNi94f0= -k8s.io/client-go v0.0.0-20240424173636-178bcf2846fe/go.mod h1:ZPkWxMmsYk/QFsT0UVJVWjMScWAjVY80wXZ+xVoairM= -k8s.io/component-base v0.0.0-20240424174244-e13cfb16afe7 h1:5+Mm3LNH2d5Ey7tbDmx4nJUqKZ0ylOzYnr/b1Bv7B78= -k8s.io/component-base v0.0.0-20240424174244-e13cfb16afe7/go.mod h1:XyaS7Q/NW59f7dTJ/dReUyrly0iZclrZGCtnjUgK94c= +k8s.io/client-go v0.0.0-20240424213639-6b47d7dcbef7 h1:N10W+GQ30UTWwkO933EejukDdxhVu/rqy/VtdCekV1U= +k8s.io/client-go v0.0.0-20240424213639-6b47d7dcbef7/go.mod h1:ZPkWxMmsYk/QFsT0UVJVWjMScWAjVY80wXZ+xVoairM= +k8s.io/component-base v0.0.0-20240425013935-73cb3a739e5b h1:5dg5tFXNtbxGwscKSTUyX3NP6cJNytoqYH+A4olraos= +k8s.io/component-base v0.0.0-20240425013935-73cb3a739e5b/go.mod h1:6Oko1NRQ5MyeUcF0JAAUaA5xKzcr5MjtYZpQBBAo5zs= k8s.io/component-helpers v0.0.0-20240424174344-623e3ec725a2 h1:7ZAMF20uvkfYUfPz1MCzWJdywHFKIY1m/rxrMR0rj1k= k8s.io/component-helpers v0.0.0-20240424174344-623e3ec725a2/go.mod h1:h98u50VVdJusKyfzWFQqYrUril5YyAUI2ERw3ibC4C4= k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= diff --git a/pkg/cmd/apply/apply_test.go b/pkg/cmd/apply/apply_test.go index d9de48268..9ed701016 100644 --- a/pkg/cmd/apply/apply_test.go +++ b/pkg/cmd/apply/apply_test.go @@ -2087,6 +2087,9 @@ func TestForceApply(t *testing.T) { "post": 1, } + // Set the patch retry back off period to something low, so the test can run more quickly + patchRetryBackOffPeriod = 1 * time.Millisecond + for _, testingOpenAPISchema := range testingOpenAPISchemas { for _, openAPIFeatureToggle := range applyFeatureToggles { diff --git a/pkg/cmd/apply/patcher.go b/pkg/cmd/apply/patcher.go index cbe3b0307..4903beb81 100644 --- a/pkg/cmd/apply/patcher.go +++ b/pkg/cmd/apply/patcher.go @@ -49,8 +49,6 @@ import ( const ( // maxPatchRetry is the maximum number of conflicts retry for during a patch operation before returning failure maxPatchRetry = 5 - // backOffPeriod is the period to back off when apply patch results in error. - backOffPeriod = 1 * time.Second // how many times we can retry before back off triesBeforeBackOff = 1 // groupVersionKindExtensionKey is the key used to lookup the @@ -59,6 +57,9 @@ const ( groupVersionKindExtensionKey = "x-kubernetes-group-version-kind" ) +// patchRetryBackOffPeriod is the period to back off when apply patch results in error. +var patchRetryBackOffPeriod = 1 * time.Second + var createPatchErrFormat = "creating patch with:\noriginal:\n%s\nmodified:\n%s\ncurrent:\n%s\nfor:" // Patcher defines options to patch OpenAPI objects. @@ -363,7 +364,7 @@ func (p *Patcher) Patch(current runtime.Object, modified []byte, source, namespa } for i := 1; i <= p.Retries && apierrors.IsConflict(err); i++ { if i > triesBeforeBackOff { - p.BackOff.Sleep(backOffPeriod) + p.BackOff.Sleep(patchRetryBackOffPeriod) } current, getErr = p.Helper.Get(namespace, name) if getErr != nil {