From b2acfd75e9155d49f32eea8d6247d0c8661ec998 Mon Sep 17 00:00:00 2001 From: chrislu Date: Mon, 17 Jan 2022 23:02:30 -0800 Subject: [PATCH] ensure entry view cache is invalidated --- weed/filesys/file.go | 8 ++++++++ weed/filesys/filehandle.go | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/weed/filesys/file.go b/weed/filesys/file.go index e971aa2e0..48a024f20 100644 --- a/weed/filesys/file.go +++ b/weed/filesys/file.go @@ -140,7 +140,15 @@ func (file *File) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *f } } } + // set the new chunks and reset entry cache entry.Chunks = chunks + file.wfs.handlesLock.Lock() + existingHandle, found := file.wfs.handles[file.Id()] + file.wfs.handlesLock.Unlock() + if found { + existingHandle.entryViewCache = nil + } + } entry.Attributes.Mtime = time.Now().Unix() entry.Attributes.FileSize = req.Size diff --git a/weed/filesys/filehandle.go b/weed/filesys/filehandle.go index d3b37a5b9..86ea20806 100644 --- a/weed/filesys/filehandle.go +++ b/weed/filesys/filehandle.go @@ -147,7 +147,7 @@ func (fh *FileHandle) readFromChunks(buff []byte, offset int64) (int64, error) { } var chunkResolveErr error - if true || fh.entryViewCache == nil { + if fh.entryViewCache == nil { fh.entryViewCache, chunkResolveErr = filer.NonOverlappingVisibleIntervals(fh.f.wfs.LookupFn(), entry.Chunks, 0, math.MaxInt64) if chunkResolveErr != nil { return 0, fmt.Errorf("fail to resolve chunk manifest: %v", chunkResolveErr)