From 361e7ebc7430a7ab9d7f72fee1c79836eb0c9ce5 Mon Sep 17 00:00:00 2001 From: wyang Date: Mon, 2 Sep 2024 21:17:41 +0800 Subject: [PATCH] fix volume.move io.EOF (#5960) --- weed/storage/volume_backup.go | 13 ++++++++++--- 1 file 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)