aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2022-07-08 01:04:15 -0700
committerchrislu <chris.lu@gmail.com>2022-07-08 01:04:15 -0700
commite2ecf137a21b27c34c3b163f09f3660745daceeb (patch)
treef95152be198d8c57073f0ef7aa4ec1cb24a2b4c2
parent185332b91f5c3dd8f32dd8573eec843dda9c29c2 (diff)
downloadseaweedfs-e2ecf137a21b27c34c3b163f09f3660745daceeb.tar.xz
seaweedfs-e2ecf137a21b27c34c3b163f09f3660745daceeb.zip
fix resetting fh.reader
-rw-r--r--weed/mount/filehandle.go5
-rw-r--r--weed/mount/filehandle_read.go10
2 files changed, 6 insertions, 9 deletions
diff --git a/weed/mount/filehandle.go b/weed/mount/filehandle.go
index f0cf2a380..0dfcbd7f6 100644
--- a/weed/mount/filehandle.go
+++ b/weed/mount/filehandle.go
@@ -98,16 +98,15 @@ func (fh *FileHandle) AddChunks(chunks []*filer_pb.FileChunk) {
fh.entryViewCache = nil
}
-func (fh *FileHandle) SetReader(reader *filer.ChunkReadAt) {
+func (fh *FileHandle) CloseReader() {
if fh.reader != nil {
fh.reader.Close()
}
- fh.reader = reader
}
func (fh *FileHandle) Release() {
fh.dirtyPages.Destroy()
- fh.SetReader(nil)
+ fh.CloseReader()
}
func lessThan(a, b *filer_pb.FileChunk) bool {
diff --git a/weed/mount/filehandle_read.go b/weed/mount/filehandle_read.go
index 202730e88..45fc10a0b 100644
--- a/weed/mount/filehandle_read.go
+++ b/weed/mount/filehandle_read.go
@@ -62,21 +62,19 @@ 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.SetReader(nil)
+ fh.CloseReader()
}
- reader := fh.reader
- if reader == nil {
+ if fh.reader == nil {
chunkViews := filer.ViewFromVisibleIntervals(fh.entryViewCache, 0, fileSize)
glog.V(4).Infof("file handle read %s [%d,%d) from %d views", fileFullPath, offset, offset+int64(len(buff)), len(chunkViews))
for _, chunkView := range chunkViews {
glog.V(4).Infof(" read %s [%d,%d) from chunk %+v", fileFullPath, chunkView.LogicOffset, chunkView.LogicOffset+int64(chunkView.Size), chunkView.FileId)
}
- reader = filer.NewChunkReaderAtFromClient(fh.wfs.LookupFn(), chunkViews, fh.wfs.chunkCache, fileSize)
+ fh.reader = filer.NewChunkReaderAtFromClient(fh.wfs.LookupFn(), chunkViews, fh.wfs.chunkCache, fileSize)
}
- fh.SetReader(reader)
- totalRead, err := reader.ReadAt(buff, offset)
+ totalRead, err := fh.reader.ReadAt(buff, offset)
if err != nil && err != io.EOF {
glog.Errorf("file handle read %s: %v", fileFullPath, err)