diff --git a/pkg/kubelet/images/image_gc_manager.go b/pkg/kubelet/images/image_gc_manager.go index 9caeeb0af41..d064e4b8016 100644 --- a/pkg/kubelet/images/image_gc_manager.go +++ b/pkg/kubelet/images/image_gc_manager.go @@ -124,7 +124,7 @@ func (i *imageCache) set(images []container.Image) { func (i *imageCache) get() []container.Image { i.RLock() defer i.RUnlock() - return i.images + return append([]container.Image{}, i.images...) } // Information about the images we track. diff --git a/pkg/kubelet/images/image_gc_manager_test.go b/pkg/kubelet/images/image_gc_manager_test.go index c74e1185640..523baae94cc 100644 --- a/pkg/kubelet/images/image_gc_manager_test.go +++ b/pkg/kubelet/images/image_gc_manager_test.go @@ -548,6 +548,16 @@ func TestValidateImageGCPolicy(t *testing.T) { } } +func TestImageCacheReturnCopiedList(t *testing.T) { + cache := &imageCache{} + testList := []container.Image{{ID: "1"}, {ID: "2"}} + cache.set(testList) + list := cache.get() + assert.Len(t, list, 2) + list[0].ID = "3" + assert.Equal(t, cache.get(), testList) +} + func uint64Ptr(i uint64) *uint64 { return &i }