diff --git a/vendor/k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator/pkg/controllers/status/available_controller.go b/vendor/k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator/pkg/controllers/status/available_controller.go index 73305af424d7..ecfc8b0ea94e 100644 --- a/vendor/k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator/pkg/controllers/status/available_controller.go +++ b/vendor/k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator/pkg/controllers/status/available_controller.go @@ -204,7 +204,21 @@ func (c *AvailableConditionController) sync(key string) error { } ctx, _ := context.WithTimeout(req.Context(), 5*time.Second) req.WithContext(ctx) - resp, err := httpClient.Do(req) + var requestErr error + go func() { + var resp *http.Response + resp, requestErr = httpClient.Do(req) + if resp != nil { + resp.Body.Close() + } + }() + + // wait for the request to finish to be cancelled, then check the error + <-ctx.Done() + err = ctx.Err() + if err == nil { + err = requestErr + } if err != nil { availableCondition.Status = apiregistration.ConditionFalse availableCondition.Reason = "FailedDiscoveryCheck" @@ -218,7 +232,6 @@ func (c *AvailableConditionController) sync(key string) error { // along with other requeues done via service change, endpoint change, and resync return err } - resp.Body.Close() } availableCondition.Reason = "Passed" diff --git a/vendor/k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator/pkg/controllers/status/available_controller_test.go b/vendor/k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator/pkg/controllers/status/available_controller_test.go index 20a4ee8be8bc..416374de4c72 100644 --- a/vendor/k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator/pkg/controllers/status/available_controller_test.go +++ b/vendor/k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator/pkg/controllers/status/available_controller_test.go @@ -146,7 +146,7 @@ func TestSync(t *testing.T) { Type: apiregistration.Available, Status: apiregistration.ConditionFalse, Reason: "FailedDiscoveryCheck", - Message: `no response from https:///apis: Get https:///apis: http: no Host in request URL`, + Message: `no response from https:///apis: context deadline exceeded`, }, }, }