diff --git a/pkg/kubelet/container/image_puller.go b/pkg/kubelet/container/image_puller.go index 07a313f150d..280b737a0da 100644 --- a/pkg/kubelet/container/image_puller.go +++ b/pkg/kubelet/container/image_puller.go @@ -99,7 +99,7 @@ func (puller *imagePuller) PullImage(pod *api.Pod, container *api.Container, pul } } - backOffKey := fmt.Sprintf("%s_%s", pod.Name, container.Image) + backOffKey := fmt.Sprintf("%s_%s", pod.UID, container.Image) if puller.backOff.IsInBackOffSinceUpdate(backOffKey, puller.backOff.Clock.Now()) { msg := fmt.Sprintf("Back-off pulling image %q", container.Image) puller.logIt(ref, api.EventTypeNormal, BackOffPullImage, logPrefix, msg, glog.Info) @@ -117,6 +117,7 @@ func (puller *imagePuller) PullImage(pod *api.Pod, container *api.Container, pul } } puller.logIt(ref, api.EventTypeNormal, "Pulled", logPrefix, fmt.Sprintf("Successfully pulled image %q", container.Image), glog.Info) + puller.backOff.DeleteEntry(backOffKey) puller.backOff.GC() return nil, "" } diff --git a/pkg/util/backoff.go b/pkg/util/backoff.go index 1426590ac59..44210920379 100644 --- a/pkg/util/backoff.go +++ b/pkg/util/backoff.go @@ -120,6 +120,12 @@ func (p *Backoff) GC() { } } +func (p *Backoff) DeleteEntry(id string) { + p.Lock() + defer p.Unlock() + delete(p.perItemBackoff, id) +} + // Take a lock on *Backoff, before calling initEntryUnsafe func (p *Backoff) initEntryUnsafe(id string) *backoffEntry { entry := &backoffEntry{backoff: p.defaultDuration}