aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-04-12 01:13:57 -0700
committerChris Lu <chris.lu@gmail.com>2020-04-12 01:13:57 -0700
commite613695af794e5509ea454920f78063f453f16f2 (patch)
tree190f3cf62c862002112ddeafd088b0081b0fa0bf
parent2a1f396df5abd47e7fc4a58c3bc39675e1e84e4f (diff)
downloadseaweedfs-e613695af794e5509ea454920f78063f453f16f2.tar.xz
seaweedfs-e613695af794e5509ea454920f78063f453f16f2.zip
a little optimization
-rw-r--r--weed/filer2/reader_at.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/weed/filer2/reader_at.go b/weed/filer2/reader_at.go
index 2782cc204..c1ad1677f 100644
--- a/weed/filer2/reader_at.go
+++ b/weed/filer2/reader_at.go
@@ -105,9 +105,11 @@ func (c *ChunkReadAt) fetchChunkData(chunkView *ChunkView) (data []byte, err err
// fmt.Printf("fetching %s [%d,%d)\n", chunkView.FileId, chunkView.LogicOffset, chunkView.LogicOffset+int64(chunkView.Size))
+ hasDataInCache := false
chunkData := c.chunkCache.GetChunk(chunkView.FileId)
if chunkData != nil {
glog.V(3).Infof("cache hit %s [%d,%d)", chunkView.FileId, chunkView.LogicOffset, chunkView.LogicOffset+int64(chunkView.Size))
+ hasDataInCache = true
} else {
chunkData, err = c.doFetchFullChunkData(chunkView.FileId, chunkView.CipherKey, chunkView.IsGzipped)
if err != nil {
@@ -121,7 +123,9 @@ func (c *ChunkReadAt) fetchChunkData(chunkView *ChunkView) (data []byte, err err
data = chunkData[chunkView.Offset : chunkView.Offset+int64(chunkView.Size)]
- c.chunkCache.SetChunk(chunkView.FileId, chunkData)
+ if !hasDataInCache {
+ c.chunkCache.SetChunk(chunkView.FileId, chunkData)
+ }
return data, nil
}