diff options
| author | James Hartig <fastest963@gmail.com> | 2020-07-22 11:38:48 -0400 |
|---|---|---|
| committer | James Hartig <fastest963@gmail.com> | 2020-07-22 15:01:16 -0400 |
| commit | 0be3bb4a87a511bc7d46af67ab82d8ec07481b4b (patch) | |
| tree | f0f078eea260027f920636afc0949326fda249e9 | |
| parent | 7a7e70b6cc2bbcd729bd58824dd16981cacedacb (diff) | |
| download | seaweedfs-0be3bb4a87a511bc7d46af67ab82d8ec07481b4b.tar.xz seaweedfs-0be3bb4a87a511bc7d46af67ab82d8ec07481b4b.zip | |
idx: Switch WalkIndexFile to accept generic io.ReaderAt
This is necessary to use it with in-memory idx files.
| -rw-r--r-- | weed/storage/idx/walk.go | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/weed/storage/idx/walk.go b/weed/storage/idx/walk.go index 90efb75e6..f785ec706 100644 --- a/weed/storage/idx/walk.go +++ b/weed/storage/idx/walk.go @@ -11,11 +11,17 @@ import ( // walks through the index file, calls fn function with each key, offset, size // stops with the error returned by the fn function -func WalkIndexFile(r *os.File, fn func(key types.NeedleId, offset types.Offset, size uint32) error) error { +func WalkIndexFile(r io.ReaderAt, fn func(key types.NeedleId, offset types.Offset, size uint32) error) error { var readerOffset int64 bytes := make([]byte, types.NeedleMapEntrySize*RowsToRead) count, e := r.ReadAt(bytes, readerOffset) - glog.V(3).Infoln("file", r.Name(), "readerOffset", readerOffset, "count", count, "e", e) + var name string + if f, ok := r.(*os.File); ok { + name = f.Name() + } else { + name = "memory" + } + glog.V(3).Infoln("file", name, "readerOffset", readerOffset, "count", count, "e", e) readerOffset += int64(count) var ( key types.NeedleId @@ -35,7 +41,7 @@ func WalkIndexFile(r *os.File, fn func(key types.NeedleId, offset types.Offset, return nil } count, e = r.ReadAt(bytes, readerOffset) - glog.V(3).Infoln("file", r.Name(), "readerOffset", readerOffset, "count", count, "e", e) + glog.V(3).Infoln("file", name, "readerOffset", readerOffset, "count", count, "e", e) readerOffset += int64(count) } return e |
