diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-11-08 22:40:28 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-11-08 22:41:02 -0800 |
| commit | 6cc9e0d788722e3b78767db0acf33519a7b28645 (patch) | |
| tree | 1197e974f29489dafb792b3f273127e67e0fb63f /weed/server/volume_grpc_erasure_coding.go | |
| parent | 926abf9115681cdc56076871b8778e778693e601 (diff) | |
| download | seaweedfs-6cc9e0d788722e3b78767db0acf33519a7b28645.tar.xz seaweedfs-6cc9e0d788722e3b78767db0acf33519a7b28645.zip | |
volume: fix ec shard reading
fix https://github.com/chrislusf/seaweedfs/issues/1106
Diffstat (limited to 'weed/server/volume_grpc_erasure_coding.go')
| -rw-r--r-- | weed/server/volume_grpc_erasure_coding.go | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/weed/server/volume_grpc_erasure_coding.go b/weed/server/volume_grpc_erasure_coding.go index 8140a06f6..242480197 100644 --- a/weed/server/volume_grpc_erasure_coding.go +++ b/weed/server/volume_grpc_erasure_coding.go @@ -252,9 +252,14 @@ func (vs *VolumeServer) VolumeEcShardRead(req *volume_server_pb.VolumeEcShardRea startOffset, bytesToRead := req.Offset, req.Size for bytesToRead > 0 { - bytesread, err := ecShard.ReadAt(buffer, startOffset) + // min of bytesToRead and bufSize + bufferSize := bufSize + if bufferSize > bytesToRead { + bufferSize = bytesToRead + } + bytesread, err := ecShard.ReadAt(buffer[0:bufferSize], startOffset) - // println(fileName, "read", bytesread, "bytes, with target", bytesToRead) + // println("read", ecShard.FileName(), "startOffset", startOffset, bytesread, "bytes, with target", bufferSize) if bytesread > 0 { if int64(bytesread) > bytesToRead { @@ -268,6 +273,7 @@ func (vs *VolumeServer) VolumeEcShardRead(req *volume_server_pb.VolumeEcShardRea return err } + startOffset += int64(bytesread) bytesToRead -= int64(bytesread) } |
