aboutsummaryrefslogtreecommitdiff
path: root/weed/storage/volume_backup.go
diff options
context:
space:
mode:
authorwyang <wings.wyang@gmail.com>2024-09-02 21:17:41 +0800
committerGitHub <noreply@github.com>2024-09-02 06:17:41 -0700
commit361e7ebc7430a7ab9d7f72fee1c79836eb0c9ce5 (patch)
tree677ca31a0dd7293e27737923ff5f31d5ead31cad /weed/storage/volume_backup.go
parent282867a71ea0cdb1d13c751fe32936f409523ee6 (diff)
downloadseaweedfs-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.go13
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)