From ed1444e47f5cc65129a2d8330fb98d08f48f5200 Mon Sep 17 00:00:00 2001 From: Ron Lai Date: Wed, 15 Jun 2016 16:54:14 -0700 Subject: [PATCH] Log all image deletion errors instead of just the last one --- pkg/kubelet/image_manager.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/kubelet/image_manager.go b/pkg/kubelet/image_manager.go index ba5239c8419..478d1246063 100644 --- a/pkg/kubelet/image_manager.go +++ b/pkg/kubelet/image_manager.go @@ -28,6 +28,7 @@ import ( "k8s.io/kubernetes/pkg/kubelet/cadvisor" "k8s.io/kubernetes/pkg/kubelet/container" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" + "k8s.io/kubernetes/pkg/util/errors" "k8s.io/kubernetes/pkg/util/sets" "k8s.io/kubernetes/pkg/util/wait" ) @@ -273,7 +274,7 @@ func (im *realImageManager) freeSpace(bytesToFree int64, freeTime time.Time) (in sort.Sort(byLastUsedAndDetected(images)) // Delete unused images until we've freed up enough space. - var lastErr error + var deletionErrors []error spaceFreed := int64(0) for _, image := range images { glog.V(5).Infof("Evaluating image ID %s for possible garbage collection", image.id) @@ -295,7 +296,7 @@ func (im *realImageManager) freeSpace(bytesToFree int64, freeTime time.Time) (in glog.Infof("[ImageManager]: Removing image %q to free %d bytes", image.id, image.size) err := im.runtime.RemoveImage(container.ImageSpec{Image: image.id}) if err != nil { - lastErr = err + deletionErrors = append(deletionErrors, err) continue } delete(im.imageRecords, image.id) @@ -306,7 +307,10 @@ func (im *realImageManager) freeSpace(bytesToFree int64, freeTime time.Time) (in } } - return spaceFreed, lastErr + if len(deletionErrors) > 0 { + return spaceFreed, fmt.Errorf("wanted to free %d, but freed %d space with errors in image deletion: %v", bytesToFree, spaceFreed, errors.NewAggregate(deletionErrors)) + } + return spaceFreed, nil } type evictionInfo struct {