diff --git a/internal/fuse/file.go b/internal/fuse/file.go index 6152c9122..5190febbb 100644 --- a/internal/fuse/file.go +++ b/internal/fuse/file.go @@ -96,20 +96,14 @@ func (f *file) Open(_ context.Context, _ *fuse.OpenRequest, _ *fuse.OpenResponse } func (f *openFile) getBlobAt(ctx context.Context, i int) (blob []byte, err error) { - - blob, ok := f.root.blobCache.Get(f.node.Content[i]) - if ok { - return blob, nil - } - - blob, err = f.root.repo.LoadBlob(ctx, restic.DataBlob, f.node.Content[i], nil) + blob, err = f.root.blobCache.GetOrCompute(f.node.Content[i], func() ([]byte, error) { + return f.root.repo.LoadBlob(ctx, restic.DataBlob, f.node.Content[i], nil) + }) if err != nil { debug.Log("LoadBlob(%v, %v) failed: %v", f.node.Name, f.node.Content[i], err) return nil, unwrapCtxCanceled(err) } - f.root.blobCache.Add(f.node.Content[i], blob) - return blob, nil }