diff --git a/pkg/client/kubelet.go b/pkg/client/kubelet.go index ec3d0efd46..16f433cf22 100644 --- a/pkg/client/kubelet.go +++ b/pkg/client/kubelet.go @@ -111,7 +111,7 @@ func (c *HTTPKubeletClient) GetPodStatus(host, podNamespace, podID string) (api. status := api.PodStatusResult{} query := url.Values{"podID": {podID}, "podNamespace": {podNamespace}} response, err := c.getEntity(host, "/api/v1beta1/podInfo", query.Encode(), &status) - if response.StatusCode == http.StatusNotFound { + if response != nil && response.StatusCode == http.StatusNotFound { return status, ErrPodInfoNotAvailable } return status, err @@ -124,6 +124,7 @@ func (c *HTTPKubeletClient) GetNodeInfo(host string) (api.NodeInfo, error) { return info, err } +// getEntity might return a nil response. func (c *HTTPKubeletClient) getEntity(host, path, query string, entity runtime.Object) (*http.Response, error) { request, err := http.NewRequest("GET", c.url(host, path, query), nil) if err != nil { diff --git a/pkg/master/pod_cache.go b/pkg/master/pod_cache.go index b835bb1209..a146e0ddf7 100644 --- a/pkg/master/pod_cache.go +++ b/pkg/master/pod_cache.go @@ -23,6 +23,7 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/client" "github.com/GoogleCloudPlatform/kubernetes/pkg/labels" "github.com/GoogleCloudPlatform/kubernetes/pkg/registry/pod" + "github.com/GoogleCloudPlatform/kubernetes/pkg/util" "github.com/golang/glog" ) @@ -264,6 +265,7 @@ func (p *PodCache) UpdateAllContainers() { pod := &pods.Items[i] wg.Add(1) go func() { + defer util.HandleCrash() defer wg.Done() err := p.updatePodStatus(pod) if err != nil && err != client.ErrPodInfoNotAvailable {