]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
cache: Fix --gc failure on Windows
authorOleksandr Redko <oleksandr.red+github@gmail.com>
Sat, 4 Mar 2023 14:49:25 +0000 (16:49 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 4 Mar 2023 17:47:43 +0000 (18:47 +0100)
Fixes "Error: failed to prune cache" on Windows and removes
work around from ec1c97e7e9d62ce5245135e0906fdedf14af0cae.

Follows #10781.

cache/filecache/filecache_pruner.go
cache/filecache/integration_test.go

index 41aec15d3cdcbb8d942fe7d5eb79ed70fc7ba191..b8aa76c150f0ec32b0a140701a088f310e7fc049 100644 (file)
@@ -17,8 +17,6 @@ import (
        "fmt"
        "io"
        "os"
-       "runtime"
-       "strings"
 
        "github.com/gohugoio/hugo/common/herrors"
        "github.com/gohugoio/hugo/hugofs"
@@ -73,8 +71,8 @@ func (c *Cache) Prune(force bool) (int, error) {
                                // This cache dir may not exist.
                                return nil
                        }
-                       defer f.Close()
                        _, err = f.Readdirnames(1)
+                       f.Close()
                        if err == io.EOF {
                                // Empty dir.
                                if name == "." {
@@ -82,18 +80,6 @@ func (c *Cache) Prune(force bool) (int, error) {
                                        err = nil
                                } else {
                                        err = c.Fs.Remove(name)
-                                       if err != nil {
-                                               if runtime.GOOS == "windows" {
-                                                       if strings.Contains(err.Error(), "used by another process") {
-                                                               // See https://github.com/gohugoio/hugo/issues/10781
-                                                               // This is a known issue on Windows with Go 1.20.
-                                                               // There's not much we can do about it.
-                                                               // So just return nil.
-                                                               err = nil
-
-                                                       }
-                                               }
-                                       }
                                }
                        }
 
index eaddf9da681d669ccfed0f7431160840960f06b9..26653fc351e609ad9e7b86bc86acae6a5aa328f7 100644 (file)
@@ -15,7 +15,6 @@ package filecache_test
 
 import (
        "path/filepath"
-       "runtime"
        "testing"
        "time"
 
@@ -90,12 +89,8 @@ iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAA
        b.Assert(b.GCCount, qt.Equals, 1)
        // Build it again to GC the empty a dir.
        b.Build()
-       if runtime.GOOS != "windows" {
-               // See issue #58860 -- this sometimes fails on Windows,
-               // but the empty directory will be removed on the next run.
-               _, err = b.H.BaseFs.ResourcesCache.Stat(filepath.Join(imagesCacheDir, "a"))
-               b.Assert(err, qt.Not(qt.IsNil))
-       }
+       _, err = b.H.BaseFs.ResourcesCache.Stat(filepath.Join(imagesCacheDir, "a"))
+       b.Assert(err, qt.Not(qt.IsNil))
        _, err = b.H.BaseFs.ResourcesCache.Stat(imagesCacheDir)
        b.Assert(err, qt.IsNil)