From a74dc78c65ba8d6ca59df280b1b80d725469df92 Mon Sep 17 00:00:00 2001 From: sharifelgamal Date: Wed, 14 Nov 2018 11:20:16 -0800 Subject: [PATCH 1/2] create cache directory if it doesn't already exist --- cmd/warmer/cmd/root.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmd/warmer/cmd/root.go b/cmd/warmer/cmd/root.go index 0e4908d2b2..345bd2aa5a 100644 --- a/cmd/warmer/cmd/root.go +++ b/cmd/warmer/cmd/root.go @@ -51,6 +51,12 @@ var RootCmd = &cobra.Command{ return nil }, Run: func(cmd *cobra.Command, args []string) { + if _, err := os.Stat(opts.CacheDir); os.IsNotExist(err) { + err = os.MkdirAll(opts.CacheDir, 0755) + if err != nil { + exit(errors.Wrap(err, "Failed to create cache directory")) + } + } if err := cache.WarmCache(opts); err != nil { exit(errors.Wrap(err, "Failed warming cache")) } From 8a24115b6afa62db87827d6988328b9fa2ff415d Mon Sep 17 00:00:00 2001 From: Sharif Elgamal Date: Fri, 2 Aug 2019 13:25:20 -0700 Subject: [PATCH 2/2] Prevent panic on nil image --- pkg/cache/cache.go | 2 +- pkg/cache/warm.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go index 6ec9d0ce7e..d7e17be2c1 100644 --- a/pkg/cache/cache.go +++ b/pkg/cache/cache.go @@ -88,7 +88,7 @@ func (rc *RegistryCache) RetrieveLayer(ck string) (v1.Image, error) { // Layer is stale, rebuild it. if expiry.Before(time.Now()) { logrus.Infof("Cache entry expired: %s", cache) - return nil, errors.New(fmt.Sprintf("Cache entry expired: %s", cache)) + return nil, fmt.Errorf("Cache entry expired: %s", cache) } // Force the manifest to be populated diff --git a/pkg/cache/warm.go b/pkg/cache/warm.go index c03746e0bc..3a78716a37 100644 --- a/pkg/cache/warm.go +++ b/pkg/cache/warm.go @@ -29,6 +29,7 @@ import ( "github.com/sirupsen/logrus" ) +// WarmCache populates the cache func WarmCache(opts *config.WarmerOptions) error { cacheDir := opts.CacheDir images := opts.Images @@ -41,7 +42,7 @@ func WarmCache(opts *config.WarmerOptions) error { return errors.Wrap(err, fmt.Sprintf("Failed to verify image name: %s", image)) } img, err := remote.Image(cacheRef) - if err != nil { + if err != nil || img == nil { return errors.Wrap(err, fmt.Sprintf("Failed to retrieve image: %s", image)) }