Always retry network connection error in webhook
Signed-off-by: Mik Vyatskov <vmik@google.com> Kubernetes-commit: 59bacba0565b3849d939e9330ffd4da2ae19f0e1
This commit is contained in:
		
							parent
							
								
									300ee26646
								
							
						
					
					
						commit
						470942c90d
					
				|  | @ -16,6 +16,7 @@ go_library( | |||
|         "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", | ||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", | ||||
|         "//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", | ||||
|         "//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library", | ||||
|         "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", | ||||
|         "//vendor/k8s.io/client-go/rest:go_default_library", | ||||
|         "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", | ||||
|  |  | |||
|  | @ -27,6 +27,7 @@ import ( | |||
| 	"k8s.io/apimachinery/pkg/runtime/schema" | ||||
| 	"k8s.io/apimachinery/pkg/runtime/serializer" | ||||
| 	runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" | ||||
| 	"k8s.io/apimachinery/pkg/util/net" | ||||
| 	"k8s.io/apimachinery/pkg/util/wait" | ||||
| 	"k8s.io/client-go/rest" | ||||
| 	"k8s.io/client-go/tools/clientcmd" | ||||
|  | @ -104,17 +105,14 @@ func WithExponentialBackoff(initialBackoff time.Duration, webhookFn func() error | |||
| 	var err error | ||||
| 	wait.ExponentialBackoff(backoff, func() (bool, error) { | ||||
| 		err = webhookFn() | ||||
| 		// these errors indicate a need to retry an authentication check
 | ||||
| 		if apierrors.IsServerTimeout(err) || apierrors.IsTimeout(err) || apierrors.IsTooManyRequests(err) { | ||||
| 		// these errors indicate a transient error that should be retried.
 | ||||
| 		if net.IsConnectionReset(err) || apierrors.IsInternalError(err) || apierrors.IsTimeout(err) || apierrors.IsTooManyRequests(err) { | ||||
| 			return false, nil | ||||
| 		} | ||||
| 		// if the error sends the Retry-After header, we respect it as an explicit confirmation we should retry.
 | ||||
| 		if _, shouldRetry := apierrors.SuggestsClientDelay(err); shouldRetry { | ||||
| 			return false, nil | ||||
| 		} | ||||
| 		if apierrors.IsInternalError(err) { | ||||
| 			return false, nil | ||||
| 		} | ||||
| 		if err != nil { | ||||
| 			return false, err | ||||
| 		} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue