浏览代码

Make sure the cache lookup returns always the same result

Guillaume J. Charmes 11 年之前
父节点
当前提交
1d4b7d8fa1
共有 1 个文件被更改,包括 5 次插入7 次删除
  1. 5 7
      server.go

+ 5 - 7
server.go

@@ -21,6 +21,7 @@ import (
 	"path"
 	"path/filepath"
 	"runtime"
+	"sort"
 	"strconv"
 	"strings"
 	"sync"
@@ -1694,16 +1695,13 @@ func (srv *Server) ImageGetCached(imgID string, config *Config) (*Image, error)
 	}
 
 	// Store the tree in a map of map (map[parentId][childId])
-	imageMap := make(map[string]map[string]struct{})
+	imageMap := make(map[string][]string)
 	for _, img := range images {
-		if _, exists := imageMap[img.Parent]; !exists {
-			imageMap[img.Parent] = make(map[string]struct{})
-		}
-		imageMap[img.Parent][img.ID] = struct{}{}
+		imageMap[img.Parent] = append(imageMap[img.Parent], img.ID)
 	}
-
+	sort.Strings(imageMap[imgID])
 	// Loop on the children of the given image and check the config
-	for elem := range imageMap[imgID] {
+	for _, elem := range imageMap[imgID] {
 		img, err := srv.runtime.graph.Get(elem)
 		if err != nil {
 			return nil, err