Let image manager return a copy of image list.

This commit is contained in:
Lantao Liu 2018-02-26 19:16:07 +00:00
parent 8d406bf48b
commit 1fb91cc8be
2 changed files with 11 additions and 1 deletions

View File

@ -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.

View File

@ -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
}