diff options
| author | chrislu <chris.lu@gmail.com> | 2022-01-17 23:02:30 -0800 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2022-01-17 23:02:30 -0800 |
| commit | b2acfd75e9155d49f32eea8d6247d0c8661ec998 (patch) | |
| tree | 233f7e5b9b96abde346504474d9e5d739d0ff3b3 | |
| parent | f4ad63528a35b8602060eb4d741532c840e4b2c2 (diff) | |
| download | seaweedfs-b2acfd75e9155d49f32eea8d6247d0c8661ec998.tar.xz seaweedfs-b2acfd75e9155d49f32eea8d6247d0c8661ec998.zip | |
ensure entry view cache is invalidated
| -rw-r--r-- | weed/filesys/file.go | 8 | ||||
| -rw-r--r-- | weed/filesys/filehandle.go | 2 |
2 files changed, 9 insertions, 1 deletions
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) |
