Merge pull request #4761 from MichaelEischer/fix-cache-race

cache: ignore ErrNotExist during cleanup of old files
This commit is contained in:
Michael Eischer authored and GitHub committed 2024-04-22 21:46:06 +02:00
commit 2e6c43c695
2 files changed
+10 -1

No files matched your search

+8
View File
@@ -0,0 +1,8 @@
Bugfix: Fix possible error on concurrent cache cleanup
If multiple restic processes concurrently cleaned up no longer existing files
from the cache, this could cause some of the processes to fail with an `no such
file or directory` error. This has been fixed.
https://github.com/restic/restic/issues/4760
https://github.com/restic/restic/pull/4761
+2 -1
View File
@@ -165,7 +165,8 @@ func (c *Cache) Clear(t restic.FileType, valid restic.IDSet) error {
continue
}
if err = fs.Remove(c.filename(backend.Handle{Type: t, Name: id.String()})); err != nil {
// ignore ErrNotExist to gracefully handle multiple processes running Clear() concurrently
if err = fs.Remove(c.filename(backend.Handle{Type: t, Name: id.String()})); err != nil && !errors.Is(err, os.ErrNotExist) {
return err
}
}