Pārlūkot izejas kodu

Merge pull request #39862 from vikramhh/39748_review_comments

Implement code review comments in 39748
Sebastiaan van Stijn 5 gadi atpakaļ
vecāks
revīzija
9842431ee0
1 mainītis faili ar 31 papildinājumiem un 23 dzēšanām
  1. 31 23
      layer/filestore.go

+ 31 - 23
layer/filestore.go

@@ -14,7 +14,7 @@ import (
 
 	"github.com/docker/distribution"
 	"github.com/docker/docker/pkg/ioutils"
-	"github.com/opencontainers/go-digest"
+	digest "github.com/opencontainers/go-digest"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
 )
@@ -317,32 +317,40 @@ func (fms *fileMetadataStore) getOrphan() ([]roLayer, error) {
 		}
 
 		for _, fi := range fileInfos {
-			if fi.IsDir() && strings.Contains(fi.Name(), "-removing") {
-				nameSplit := strings.Split(fi.Name(), "-")
-				dgst := digest.NewDigestFromEncoded(algorithm, nameSplit[0])
-				if err := dgst.Validate(); err != nil {
-					logrus.Debugf("Ignoring invalid digest %s:%s", algorithm, nameSplit[0])
-				} else {
-					chainID := ChainID(dgst)
-					chainFile := filepath.Join(fms.root, string(algorithm), fi.Name(), "cache-id")
-					contentBytes, err := ioutil.ReadFile(chainFile)
-					if err != nil {
-						logrus.WithError(err).WithField("digest", dgst).Error("cannot get cache ID")
-					}
-					cacheID := strings.TrimSpace(string(contentBytes))
-					if cacheID == "" {
-						logrus.Errorf("invalid cache id value")
-					}
-
-					l := &roLayer{
-						chainID: chainID,
-						cacheID: cacheID,
-					}
-					orphanLayers = append(orphanLayers, *l)
+			if !fi.IsDir() || !strings.HasSuffix(fi.Name(), "-removing") {
+				continue
+			}
+			// At this stage, fi.Name value looks like <digest>-<random>-removing
+			// Split on '-' to get the digest value.
+			nameSplit := strings.Split(fi.Name(), "-")
+			dgst := digest.NewDigestFromEncoded(algorithm, nameSplit[0])
+			if err := dgst.Validate(); err != nil {
+				logrus.WithError(err).WithField("digest", string(algorithm)+":"+nameSplit[0]).Debug("ignoring invalid digest")
+				continue
+			}
+
+			chainFile := filepath.Join(fms.root, string(algorithm), fi.Name(), "cache-id")
+			contentBytes, err := ioutil.ReadFile(chainFile)
+			if err != nil {
+				if !os.IsNotExist(err) {
+					logrus.WithError(err).WithField("digest", dgst).Error("failed to read cache ID")
 				}
+				continue
+			}
+			cacheID := strings.TrimSpace(string(contentBytes))
+			if cacheID == "" {
+				logrus.Error("invalid cache ID")
+				continue
 			}
+
+			l := &roLayer{
+				chainID: ChainID(dgst),
+				cacheID: cacheID,
+			}
+			orphanLayers = append(orphanLayers, *l)
 		}
 	}
+
 	return orphanLayers, nil
 }