From 1fb91cc8be5d9cd6eb1bd96ca7476641e297eeaf Mon Sep 17 00:00:00 2001 From: Lantao Liu Date: Mon, 26 Feb 2018 19:16:07 +0000 Subject: [PATCH] Let image manager return a copy of image list. --- pkg/kubelet/images/image_gc_manager.go | 2 +- pkg/kubelet/images/image_gc_manager_test.go | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/images/image_gc_manager.go b/pkg/kubelet/images/image_gc_manager.go index 15b8780bd86..8e0184a2682 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 }