diff options
| author | wyang <wings.wyang@gmail.com> | 2024-09-02 21:17:41 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-02 06:17:41 -0700 |
| commit | 361e7ebc7430a7ab9d7f72fee1c79836eb0c9ce5 (patch) | |
| tree | 677ca31a0dd7293e27737923ff5f31d5ead31cad /weed/storage/volume_backup.go | |
| parent | 282867a71ea0cdb1d13c751fe32936f409523ee6 (diff) | |
| download | seaweedfs-361e7ebc7430a7ab9d7f72fee1c79836eb0c9ce5.tar.xz seaweedfs-361e7ebc7430a7ab9d7f72fee1c79836eb0c9ce5.zip | |
fix volume.move io.EOF (#5960)
Diffstat (limited to 'weed/storage/volume_backup.go')
| -rw-r--r-- | weed/storage/volume_backup.go | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/weed/storage/volume_backup.go b/weed/storage/volume_backup.go index 8456594d3..e3215d919 100644 --- a/weed/storage/volume_backup.go +++ b/weed/storage/volume_backup.go @@ -3,10 +3,11 @@ package storage import ( "context" "fmt" - "github.com/seaweedfs/seaweedfs/weed/pb" "io" "os" + "github.com/seaweedfs/seaweedfs/weed/pb" + "google.golang.org/grpc" "github.com/seaweedfs/seaweedfs/weed/operation" @@ -200,7 +201,7 @@ func (v *Volume) BinarySearchByAppendAtNs(sinceNs uint64) (offset Offset, isLast err = leftErr return } - rightIndex, rightOffset, rightNs, rightErr := v.readRightNs(m) + rightIndex, rightOffset, rightNs, rightErr := v.readRightNs(m, entryCount) if rightErr != nil { err = rightErr return @@ -249,10 +250,13 @@ func (v *Volume) BinarySearchByAppendAtNs(sinceNs uint64) (offset Offset, isLast } -func (v *Volume) readRightNs(m int64) (index int64, offset Offset, ts uint64, err error) { +func (v *Volume) readRightNs(m, max int64) (index int64, offset Offset, ts uint64, err error) { index = m for offset.IsZero() { index++ + if index >= max { + return + } offset, err = v.readOffsetFromIndex(index) if err != nil { err = fmt.Errorf("read left entry at %d: %v", index, err) @@ -269,6 +273,9 @@ func (v *Volume) readLeftNs(m int64) (index int64, offset Offset, ts uint64, err index = m for offset.IsZero() { index-- + if index < 0 { + return + } offset, err = v.readOffsetFromIndex(index) if err != nil { err = fmt.Errorf("read right entry at %d: %v", index, err) |
