aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2022-01-17 23:02:30 -0800
committerchrislu <chris.lu@gmail.com>2022-01-17 23:02:30 -0800
commitb2acfd75e9155d49f32eea8d6247d0c8661ec998 (patch)
tree233f7e5b9b96abde346504474d9e5d739d0ff3b3
parentf4ad63528a35b8602060eb4d741532c840e4b2c2 (diff)
downloadseaweedfs-b2acfd75e9155d49f32eea8d6247d0c8661ec998.tar.xz
seaweedfs-b2acfd75e9155d49f32eea8d6247d0c8661ec998.zip
ensure entry view cache is invalidated
-rw-r--r--weed/filesys/file.go8
-rw-r--r--weed/filesys/filehandle.go2
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)