Remove the retries on error in remote resources.Get
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 10 Dec 2021 08:55:41 +0000 (09:55 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 10 Dec 2021 10:10:41 +0000 (11:10 +0100)
Fixes #9271
See  #9259

cache/filecache/filecache.go
cache/filecache/filecache_config.go
cache/filecache/filecache_test.go
tpl/data/resources_test.go

index 055d34e1835bb20b8aef040025fea5bf212c8963..5a87382aeaf3dbde7e1a6520547b69903d656fb8 100644 (file)
@@ -48,9 +48,6 @@ type Cache struct {
        // 0 is effectively turning this cache off.
        maxAge time.Duration
 
-       // Number of retries on create error.
-       retries int
-
        // When set, we just remove this entire root directory on expiration.
        pruneAllRootDir string
 
@@ -87,12 +84,11 @@ type ItemInfo struct {
 }
 
 // NewCache creates a new file cache with the given filesystem and max age.
-func NewCache(fs afero.Fs, maxAge time.Duration, retries int, pruneAllRootDir string) *Cache {
+func NewCache(fs afero.Fs, maxAge time.Duration, pruneAllRootDir string) *Cache {
        return &Cache{
                Fs:              fs,
                nlocker:         &lockTracker{Locker: locker.NewLocker(), seen: make(map[string]struct{})},
                maxAge:          maxAge,
-               retries:         retries,
                pruneAllRootDir: pruneAllRootDir,
        }
 }
@@ -184,14 +180,7 @@ func (c *Cache) GetOrCreate(id string, create func() (io.ReadCloser, error)) (It
                err error
        )
 
-       for i := -1; i < c.retries; i++ {
-               r, err = create()
-               if err == nil || c.retries == 0 {
-                       break
-               }
-               time.Sleep(1 * time.Second)
-       }
-
+       r, err = create()
        if err != nil {
                return info, nil, err
        }
@@ -227,14 +216,7 @@ func (c *Cache) GetOrCreateBytes(id string, create func() ([]byte, error)) (Item
                err error
        )
 
-       for i := -1; i < c.retries; i++ {
-               b, err = create()
-               if err == nil || c.retries == 0 {
-                       break
-               }
-               time.Sleep(1 * time.Second)
-       }
-
+       b, err = create()
        if err != nil {
                return info, nil, err
        }
@@ -388,7 +370,7 @@ func NewCaches(p *helpers.PathSpec) (Caches, error) {
                        pruneAllRootDir = "pkg"
                }
 
-               m[k] = NewCache(bfs, v.MaxAge, v.retries, pruneAllRootDir)
+               m[k] = NewCache(bfs, v.MaxAge, pruneAllRootDir)
        }
 
        return m, nil
index 60c25fc4da7e3ae3ca1f70643c74aef001c0d0b6..816c6b8a6d9d8eab867123f8c7cfb07552e344ec 100644 (file)
@@ -73,9 +73,8 @@ var defaultCacheConfigs = Configs{
                Dir:    resourcesGenDir,
        },
        cacheKeyGetResource: Config{
-               MaxAge:  -1, // Never expire
-               Dir:     cacheDirProject,
-               retries: 3, // Retries on error getting the remote resource.
+               MaxAge: -1, // Never expire
+               Dir:    cacheDirProject,
        },
 }
 
@@ -91,10 +90,6 @@ type Config struct {
        // Will resources/_gen will get its own composite filesystem that
        // also checks any theme.
        isResourceDir bool
-
-       // Number of retries when errors occurs when creating the element,
-       // only used for remote resources.
-       retries int
 }
 
 // GetJSONCache gets the file cache for getJSON.
index 6ac36a5c127a3bd2885fe2f2f04e9bf363e00ded..6a051a264950384b1892e939e208cb0b28acbd7a 100644 (file)
@@ -276,7 +276,7 @@ func TestFileCacheReadOrCreateErrorInRead(t *testing.T) {
                }
        }
 
-       cache := NewCache(afero.NewMemMapFs(), 100*time.Hour, 0, "")
+       cache := NewCache(afero.NewMemMapFs(), 100*time.Hour, "")
 
        const id = "a32"
 
index a1ce9ecb657a99ae07cc153657a7213ca3421e0f..8425bf87a0e69827371e2160e2b31022ca83e629 100644 (file)
@@ -86,7 +86,7 @@ func TestScpGetRemote(t *testing.T) {
        t.Parallel()
        c := qt.New(t)
        fs := new(afero.MemMapFs)
-       cache := filecache.NewCache(fs, 100, 0, "")
+       cache := filecache.NewCache(fs, 100, "")
 
        tests := []struct {
                path    string