cache: Drop cache entry if it cannot be processed

Failing to process data requested from the cache usually indicates a
problem with the returned data. Assume that the cache entry is somehow
damaged and retry downloading it once.
This commit is contained in:
Michael Eischer 2021-09-20 22:12:00 +02:00
parent aa3b1925b4
commit 34c1a83340
2 changed files with 41 additions and 1 deletions

View file

@ -161,7 +161,12 @@ func (b *Backend) Load(ctx context.Context, h restic.Handle, length int, offset
// try loading from cache without checking that the handle is actually cached
inCache, err := b.loadFromCache(ctx, h, length, offset, consumer)
if inCache {
return err
if err == nil {
return nil
}
// drop from cache and retry once
_ = b.Cache.remove(h)
}
debug.Log("error loading %v from cache: %v", h, err)