aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/filer2/reader_at.go10
-rw-r--r--weed/filer2/reader_at_test.go11
2 files changed, 11 insertions, 10 deletions
diff --git a/weed/filer2/reader_at.go b/weed/filer2/reader_at.go
index 09d99dfb8..84915f3f2 100644
--- a/weed/filer2/reader_at.go
+++ b/weed/filer2/reader_at.go
@@ -108,12 +108,10 @@ func (c *ChunkReadAt) doReadAt(p []byte, offset int64) (n int, err error) {
glog.V(4).Infof("doReadAt [%d,%d), n:%v, err:%v", offset, offset+int64(len(p)), n, err)
- if remaining > 0 {
- glog.V(4).Infof("zero2 [%d,%d)", n, n+int(remaining))
- n += int(remaining)
- if n > int(c.fileSize - offset){
- n = int(c.fileSize - offset)
- }
+ if remaining > 0 && c.fileSize > startOffset {
+ delta := int(min(remaining, c.fileSize - startOffset))
+ glog.V(4).Infof("zero2 [%d,%d)", n, n+delta)
+ n += delta
}
if offset+int64(n) >= c.fileSize {
diff --git a/weed/filer2/reader_at_test.go b/weed/filer2/reader_at_test.go
index 2a42cfd49..581436c70 100644
--- a/weed/filer2/reader_at_test.go
+++ b/weed/filer2/reader_at_test.go
@@ -77,6 +77,11 @@ func testReadAt(t *testing.T, readerAt *ChunkReadAt, offset int64, size int, exp
data := make([]byte, size)
n, err := readerAt.ReadAt(data, offset)
+ for _, d := range data {
+ fmt.Printf("%x", d)
+ }
+ fmt.Println()
+
if expected != n {
t.Errorf("unexpected read size: %d, expect: %d", n, expected)
}
@@ -84,10 +89,6 @@ func testReadAt(t *testing.T, readerAt *ChunkReadAt, offset int64, size int, exp
t.Errorf("unexpected read error: %v, expect: %v", err, expectedErr)
}
- for _, d := range data {
- fmt.Printf("%x", d)
- }
- fmt.Println()
}
func TestReaderAt0(t *testing.T) {
@@ -119,4 +120,6 @@ func TestReaderAt0(t *testing.T) {
testReadAt(t, readerAt, 3, 16, 7, io.EOF)
testReadAt(t, readerAt, 3, 5, 5, nil)
+ testReadAt(t, readerAt, 11, 5, 0, io.EOF)
+
}