repository: make reloading broken files explicit

This commit is contained in:
Michael Eischer
2024-05-09 15:26:41 +02:00
parent e9390352a7
commit 2ace242f36
4 changed files with 45 additions and 51 deletions

View File

@@ -55,14 +55,12 @@ func (c *Cache) load(h backend.Handle, length int, offset int64) (io.ReadCloser,
size := fi.Size()
if size <= int64(crypto.CiphertextLength(0)) {
_ = f.Close()
_ = c.remove(h)
return nil, errors.Errorf("cached file %v is truncated, removing", h)
return nil, errors.Errorf("cached file %v is truncated", h)
}
if size < offset+int64(length) {
_ = f.Close()
_ = c.remove(h)
return nil, errors.Errorf("cached file %v is too short, removing", h)
return nil, errors.Errorf("cached file %v is too short", h)
}
if offset > 0 {
@@ -139,6 +137,10 @@ func (c *Cache) save(h backend.Handle, rd io.Reader) error {
return errors.WithStack(err)
}
func (c *Cache) Forget(h backend.Handle) error {
return c.remove(h)
}
// remove deletes a file. When the file is not cached, no error is returned.
func (c *Cache) remove(h backend.Handle) error {
if !c.canBeCached(h.Type) {