diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-10-11 16:11:50 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-10-11 16:11:50 -0700 |
| commit | b530f12327ef2dbf0048c2ce1623b77144d47bb7 (patch) | |
| tree | c4c4950593a409f9c9176befa94931e47cabae20 | |
| parent | 84d2e1bdd099550aaba494c88324c8c0dbc08776 (diff) | |
| download | seaweedfs-b530f12327ef2dbf0048c2ce1623b77144d47bb7.tar.xz seaweedfs-b530f12327ef2dbf0048c2ce1623b77144d47bb7.zip | |
volume: find a non-empty offset when binary searching by timestamp
fix https://github.com/chrislusf/seaweedfs/issues/2364
| -rw-r--r-- | weed/storage/volume_backup.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/weed/storage/volume_backup.go b/weed/storage/volume_backup.go index 500f48b23..7aad2b971 100644 --- a/weed/storage/volume_backup.go +++ b/weed/storage/volume_backup.go @@ -194,6 +194,16 @@ func (v *Volume) BinarySearchByAppendAtNs(sinceNs uint64) (offset Offset, isLast err = fmt.Errorf("read entry %d: %v", m, err) return } + for ; offset.IsZero() && m < h; m++ { + offset, err = v.readOffsetFromIndex(m) + if err != nil { + err = fmt.Errorf("read entry %d: %v", m, err) + return + } + } + if offset.IsZero() { + return Offset{}, true, nil + } mNs, nsReadErr := v.readAppendAtNs(offset) if nsReadErr != nil { |
