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)