aboutsummaryrefslogtreecommitdiff
path: root/weed/storage/volume_checking.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2024-11-21 00:37:38 -0800
committerchrislu <chris.lu@gmail.com>2024-11-21 00:37:38 -0800
commitc9f344869246ca4d5c72f97f63226b41e0e9c190 (patch)
tree42eca3055ffed84d8331aa5b5fa109df97dadf73 /weed/storage/volume_checking.go
parentbe09d08eb6bfb41266107e9ac3e29b2e60677680 (diff)
downloadseaweedfs-c9f344869246ca4d5c72f97f63226b41e0e9c190.tar.xz
seaweedfs-c9f344869246ca4d5c72f97f63226b41e0e9c190.zip
ReadAt may return io.EOF t end of file
related to https://github.com/seaweedfs/seaweedfs/issues/6219
Diffstat (limited to 'weed/storage/volume_checking.go')
-rw-r--r--weed/storage/volume_checking.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/weed/storage/volume_checking.go b/weed/storage/volume_checking.go
index 9bd432f85..6d2335f70 100644
--- a/weed/storage/volume_checking.go
+++ b/weed/storage/volume_checking.go
@@ -80,7 +80,11 @@ func readIndexEntryAtOffset(indexFile *os.File, offset int64) (bytes []byte, err
return
}
bytes = make([]byte, NeedleMapEntrySize)
- _, err = indexFile.ReadAt(bytes, offset)
+ var readCount int
+ readCount, err = indexFile.ReadAt(bytes, offset)
+ if err == io.EOF && readCount == NeedleMapEntrySize {
+ err = nil
+ }
return
}
@@ -97,7 +101,11 @@ func verifyNeedleIntegrity(datFile backend.BackendStorageFile, v needle.Version,
}
if v == needle.Version3 {
bytes := make([]byte, TimestampSize)
- _, err = datFile.ReadAt(bytes, offset+NeedleHeaderSize+int64(size)+needle.NeedleChecksumSize)
+ var readCount int
+ readCount, err = datFile.ReadAt(bytes, offset+NeedleHeaderSize+int64(size)+needle.NeedleChecksumSize)
+ if err == io.EOF && readCount == TimestampSize {
+ err = nil
+ }
if err == io.EOF {
return 0, err
}