From c7e7ecdf2c1e1d2a12fb74275665b825084cd364 Mon Sep 17 00:00:00 2001 From: Victor Marmol Date: Fri, 27 Feb 2015 16:32:40 -0800 Subject: [PATCH] Handle crash in per-pod thread and container killer. --- pkg/kubelet/kubelet.go | 1 + pkg/kubelet/pod_workers.go | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index d04edc397a0..c218dab5232 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -974,6 +974,7 @@ func (kl *Kubelet) killContainersInPod(pod *api.BoundPod, dockerContainers docke count++ wg.Add(1) go func() { + defer util.HandleCrash() err := kl.killContainer(dockerContainer) if err != nil { glog.Errorf("Failed to delete container: %v; Skipping pod %q", err, podFullName) diff --git a/pkg/kubelet/pod_workers.go b/pkg/kubelet/pod_workers.go index 6815ad3b63f..0f812c5566a 100644 --- a/pkg/kubelet/pod_workers.go +++ b/pkg/kubelet/pod_workers.go @@ -23,6 +23,7 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/client/record" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/dockertools" "github.com/GoogleCloudPlatform/kubernetes/pkg/types" + "github.com/GoogleCloudPlatform/kubernetes/pkg/util" "github.com/golang/glog" ) @@ -104,7 +105,10 @@ func (p *podWorkers) UpdatePod(pod *api.BoundPod, updateComplete func()) { // update of this pod is being processed are ignored. podUpdates = make(chan workUpdate, 1) p.podUpdates[uid] = podUpdates - go p.managePodLoop(podUpdates) + go func() { + defer util.HandleCrash() + p.managePodLoop(podUpdates) + }() } // TODO(wojtek-t): Consider changing to the following model: // - add a cache of "desired" pod state