cache: fix race condition in cache cleanup
Fix multiple restic processes executing concurrently and racing to remove obsolete snapshots. Co-authored-by: Michael Eischer <michael.eischer@fau.de>
This commit is contained in:
parent
c1532179d4
commit
4795143d6d
2 changed files with 11 additions and 0 deletions
4
internal/backend/cache/file.go
vendored
4
internal/backend/cache/file.go
vendored
|
@ -210,6 +210,10 @@ func (c *Cache) list(t restic.FileType) (restic.IDSet, error) {
|
|||
dir := filepath.Join(c.path, cacheLayoutPaths[t])
|
||||
err := filepath.Walk(dir, func(name string, fi os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
// ignore ErrNotExist to gracefully handle multiple processes clearing the cache
|
||||
if errors.Is(err, os.ErrNotExist) {
|
||||
return nil
|
||||
}
|
||||
return errors.Wrap(err, "Walk")
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue