From 4e05bc70354d5147203836cde1ba44074c5204e7 Mon Sep 17 00:00:00 2001 From: Gao Zheng Date: Wed, 29 Apr 2015 10:14:33 +0800 Subject: [PATCH 1/2] Fixes issue #7352 readinessProbe calls livenessProbe.Exec.Command which cause "invalid memory address or nil pointer dereference". --- pkg/kubelet/probe.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/kubelet/probe.go b/pkg/kubelet/probe.go index 7c3bf235128..9aaab07c19a 100644 --- a/pkg/kubelet/probe.go +++ b/pkg/kubelet/probe.go @@ -154,7 +154,7 @@ func (pb *prober) runProbe(p *api.Probe, pod *api.Pod, status api.PodStatus, con timeout := time.Duration(p.TimeoutSeconds) * time.Second if p.Exec != nil { glog.V(4).Infof("Exec-Probe Pod: %v, Container: %v", pod, container) - return pb.exec.Probe(pb.newExecInContainer(pod, container, containerID)) + return pb.exec.Probe(pb.newExecInContainer(pod, container, containerID, p.Exec.Command)) } if p.HTTPGet != nil { port, err := extractPort(p.HTTPGet.Port, container) @@ -227,9 +227,9 @@ type execInContainer struct { run func() ([]byte, error) } -func (p *prober) newExecInContainer(pod *api.Pod, container api.Container, containerID string) exec.Cmd { +func (p *prober) newExecInContainer(pod *api.Pod, container api.Container, containerID string, cmd []string) exec.Cmd { return execInContainer{func() ([]byte, error) { - return p.runner.RunInContainer(containerID, container.LivenessProbe.Exec.Command) + return p.runner.RunInContainer(containerID, cmd) }} } From 28da2ef7311b242a5ca89ac9f21aa0f01e366635 Mon Sep 17 00:00:00 2001 From: Gao Zheng Date: Thu, 30 Apr 2015 09:11:42 +0800 Subject: [PATCH 2/2] Update probe.go change log when cannot find probe builder to avoid 'invalid memory access' --- pkg/kubelet/probe.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/kubelet/probe.go b/pkg/kubelet/probe.go index 9aaab07c19a..042a4004baf 100644 --- a/pkg/kubelet/probe.go +++ b/pkg/kubelet/probe.go @@ -173,7 +173,7 @@ func (pb *prober) runProbe(p *api.Probe, pod *api.Pod, status api.PodStatus, con glog.V(4).Infof("TCP-Probe PodIP: %v, Port: %v, Timeout: %v", status.PodIP, port, timeout) return pb.tcp.Probe(status.PodIP, port, timeout) } - glog.Warningf("Failed to find probe builder for %s %+v", container.Name, container.LivenessProbe) + glog.Warningf("Failed to find probe builder for container: %v", container) return probe.Unknown, nil }