From e1e9ee53113413a1038a3f12c87acc61baaf726b Mon Sep 17 00:00:00 2001 From: Haowei Cai Date: Tue, 26 Feb 2019 14:42:55 -0800 Subject: [PATCH] honor timeout when dispatch --- .../pkg/admission/plugin/webhook/mutating/dispatcher.go | 6 +++++- .../pkg/admission/plugin/webhook/validating/dispatcher.go | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/mutating/dispatcher.go b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/mutating/dispatcher.go index 44490d1b4f0..a2b36749557 100644 --- a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/mutating/dispatcher.go +++ b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/mutating/dispatcher.go @@ -101,7 +101,11 @@ func (a *mutatingDispatcher) callAttrMutatingHook(ctx context.Context, h *v1beta return &webhook.ErrCallingWebhook{WebhookName: h.Name, Reason: err} } response := &admissionv1beta1.AdmissionReview{} - if err := client.Post().Context(ctx).Body(&request).Do().Into(response); err != nil { + r := client.Post().Context(ctx).Body(&request) + if h.TimeoutSeconds != nil { + r = r.Timeout(time.Duration(*h.TimeoutSeconds) * time.Second) + } + if err := r.Do().Into(response); err != nil { return &webhook.ErrCallingWebhook{WebhookName: h.Name, Reason: err} } diff --git a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/validating/dispatcher.go b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/validating/dispatcher.go index d779be7b835..2a70e4e64e5 100644 --- a/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/validating/dispatcher.go +++ b/staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/validating/dispatcher.go @@ -115,7 +115,11 @@ func (d *validatingDispatcher) callHook(ctx context.Context, h *v1beta1.Webhook, return &webhook.ErrCallingWebhook{WebhookName: h.Name, Reason: err} } response := &admissionv1beta1.AdmissionReview{} - if err := client.Post().Context(ctx).Body(&request).Do().Into(response); err != nil { + r := client.Post().Context(ctx).Body(&request) + if h.TimeoutSeconds != nil { + r = r.Timeout(time.Duration(*h.TimeoutSeconds) * time.Second) + } + if err := r.Do().Into(response); err != nil { return &webhook.ErrCallingWebhook{WebhookName: h.Name, Reason: err} }