cache: Fix recheck logic, remove channel from inProgress

This commit is contained in:
Alexander Neumann 2018-10-04 17:09:43 +02:00
parent 19725954ee
commit 5971650f77

View file

@ -107,16 +107,17 @@ func (b *Backend) cacheFile(ctx context.Context, h restic.Handle) error {
} }
// test again, maybe the file was cached in the meantime // test again, maybe the file was cached in the meantime
if b.Cache.Has(h) { if !b.Cache.Has(h) {
return nil
}
err := b.Backend.Load(ctx, h, 0, 0, func(rd io.Reader) error { // nope, it's still not in the cache, pull it from the repo and save it
return b.Cache.Save(h, rd)
}) err := b.Backend.Load(ctx, h, 0, 0, func(rd io.Reader) error {
if err != nil { return b.Cache.Save(h, rd)
// try to remove from the cache, ignore errors })
_ = b.Cache.Remove(h) if err != nil {
// try to remove from the cache, ignore errors
_ = b.Cache.Remove(h)
}
} }
// signal other waiting goroutines that the file may now be cached // signal other waiting goroutines that the file may now be cached