From 0834dc489a624d55ed1e06882010f3a8585a0dc1 Mon Sep 17 00:00:00 2001 From: Minhan Xia Date: Tue, 24 May 2016 14:18:28 -0700 Subject: [PATCH] do not return error if TearDownPod is called twice --- pkg/kubelet/network/kubenet/kubenet_linux.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/network/kubenet/kubenet_linux.go b/pkg/kubelet/network/kubenet/kubenet_linux.go index c274e9b56b4..ca123357192 100644 --- a/pkg/kubelet/network/kubenet/kubenet_linux.go +++ b/pkg/kubelet/network/kubenet/kubenet_linux.go @@ -339,7 +339,8 @@ func (plugin *kubenetNetworkPlugin) TearDownPod(namespace string, name string, i } // no cached CIDR is Ok during teardown - if cidr, ok := plugin.podCIDRs[id]; ok { + cidr, hasCIDR := plugin.podCIDRs[id] + if hasCIDR { glog.V(5).Infof("Removing pod CIDR %s from shaper", cidr) // shaper wants /32 if addr, _, err := net.ParseCIDR(cidr); err != nil { @@ -349,6 +350,11 @@ func (plugin *kubenetNetworkPlugin) TearDownPod(namespace string, name string, i } } if err := plugin.delContainerFromNetwork(plugin.netConfig, network.DefaultInterfaceName, namespace, name, id); err != nil { + // This is to prevent returning error when TearDownPod is called twice on the same pod. This helps to reduce event pollution. + if !hasCIDR { + glog.Warningf("Failed to delete container from kubenet: %v", err) + return nil + } return err } delete(plugin.podCIDRs, id)