aboutsummaryrefslogtreecommitdiff
path: root/weed/util/chunk_cache/on_disk_cache_layer.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2022-02-25 21:55:04 -0800
committerchrislu <chris.lu@gmail.com>2022-02-25 21:55:04 -0800
commit3ad5fa6f6f513df152ff155b1fdd93a3c411b6ca (patch)
treef8547d0111603a2765c0179a0f00c1817a0ea9f9 /weed/util/chunk_cache/on_disk_cache_layer.go
parentfc7a4957eae6a3f58fb52c88210019e4af89a290 (diff)
downloadseaweedfs-3ad5fa6f6f513df152ff155b1fdd93a3c411b6ca.tar.xz
seaweedfs-3ad5fa6f6f513df152ff155b1fdd93a3c411b6ca.zip
chunk cache adds function ReadChunkAt
Diffstat (limited to 'weed/util/chunk_cache/on_disk_cache_layer.go')
-rw-r--r--weed/util/chunk_cache/on_disk_cache_layer.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/weed/util/chunk_cache/on_disk_cache_layer.go b/weed/util/chunk_cache/on_disk_cache_layer.go
index 3a656110e..9115b1bb1 100644
--- a/weed/util/chunk_cache/on_disk_cache_layer.go
+++ b/weed/util/chunk_cache/on_disk_cache_layer.go
@@ -108,6 +108,26 @@ func (c *OnDiskCacheLayer) getChunkSlice(needleId types.NeedleId, offset, length
}
+func (c *OnDiskCacheLayer) readChunkAt(buffer []byte, needleId types.NeedleId, offset uint64) (n int, err error) {
+
+ for _, diskCache := range c.diskCaches {
+ n, err = diskCache.readNeedleSliceAt(buffer, needleId, offset)
+ if err == storage.ErrorNotFound {
+ continue
+ }
+ if err != nil {
+ glog.Warningf("failed to read cache file %s id %d: %v", diskCache.fileName, needleId, err)
+ continue
+ }
+ if n > 0 {
+ return
+ }
+ }
+
+ return
+
+}
+
func (c *OnDiskCacheLayer) shutdown() {
for _, diskCache := range c.diskCaches {