avoid empty chunk view

This commit is contained in:
Chris Lu 2018-05-24 23:19:56 -07:00
parent d773e11c7a
commit e18c7e160c
2 changed files with 15 additions and 1 deletions

View file

@ -66,7 +66,7 @@ func ReadFromChunks(chunks []*filer_pb.FileChunk, offset int64, size int) (views
stop := offset + int64(size) stop := offset + int64(size)
for _, chunk := range visibles { for _, chunk := range visibles {
if chunk.start <= offset && offset < chunk.stop { if chunk.start <= offset && offset < chunk.stop && offset < stop {
views = append(views, &ChunkView{ views = append(views, &ChunkView{
FileId: chunk.fileId, FileId: chunk.fileId,
Offset: offset - chunk.start, // offset is the data starting location in this file id Offset: offset - chunk.start, // offset is the data starting location in this file id

View file

@ -249,6 +249,20 @@ func TestChunksReading(t *testing.T) {
{Offset: 0, Size: 100, FileId: "abc", LogicOffset:0}, {Offset: 0, Size: 100, FileId: "abc", LogicOffset:0},
}, },
}, },
// case 7: edge cases
{
Chunks: []*filer_pb.FileChunk{
{Offset: 0, Size: 100, FileId: "abc", Mtime: 123},
{Offset: 100, Size: 100, FileId: "asdf", Mtime: 134},
{Offset: 200, Size: 100, FileId: "fsad", Mtime: 353},
},
Offset: 0,
Size: 200,
Expected: []*ChunkView{
{Offset: 0, Size: 100, FileId: "abc", LogicOffset:0},
{Offset: 0, Size: 100, FileId: "asdf", LogicOffset:100},
},
},
} }
for i, testcase := range testcases { for i, testcase := range testcases {