diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-03-22 16:22:19 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-03-22 16:22:19 -0700 |
| commit | 288369cfc78b2e8d9d2f64a6769c9ce3f5e8ecc9 (patch) | |
| tree | f82639a4fa29330f03746be020f13a30c5deb520 /weed/filesys/filehandle.go | |
| parent | 5d931eff2727be10ad01cd2920f8e47cf034e895 (diff) | |
| download | seaweedfs-288369cfc78b2e8d9d2f64a6769c9ce3f5e8ecc9.tar.xz seaweedfs-288369cfc78b2e8d9d2f64a6769c9ce3f5e8ecc9.zip | |
mount: release resources when Forget() is called
address https://github.com/chrislusf/seaweedfs/issues/1929
Diffstat (limited to 'weed/filesys/filehandle.go')
| -rw-r--r-- | weed/filesys/filehandle.go | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/weed/filesys/filehandle.go b/weed/filesys/filehandle.go index 25eaf7033..53c1c23d5 100644 --- a/weed/filesys/filehandle.go +++ b/weed/filesys/filehandle.go @@ -130,7 +130,7 @@ func (fh *FileHandle) readFromChunks(buff []byte, offset int64) (int64, error) { if chunkResolveErr != nil { return 0, fmt.Errorf("fail to resolve chunk manifest: %v", chunkResolveErr) } - fh.f.reader = nil + fh.f.setReader(nil) } reader := fh.f.reader @@ -138,7 +138,7 @@ func (fh *FileHandle) readFromChunks(buff []byte, offset int64) (int64, error) { chunkViews := filer.ViewFromVisibleIntervals(fh.f.entryViewCache, 0, math.MaxInt64) reader = filer.NewChunkReaderAtFromClient(fh.f.wfs.LookupFn(), chunkViews, fh.f.wfs.chunkCache, fileSize) } - fh.f.reader = reader + fh.f.setReader(reader) totalRead, err := reader.ReadAt(buff, offset) @@ -207,12 +207,7 @@ func (fh *FileHandle) Release(ctx context.Context, req *fuse.ReleaseRequest) err fh.f.isOpen-- fh.f.wfs.ReleaseHandle(fh.f.fullpath(), fuse.HandleID(fh.handle)) - if closer, ok := fh.f.reader.(io.Closer); ok { - if closer != nil { - closer.Close() - } - } - fh.f.reader = nil + fh.f.setReader(nil) } return nil |
