Fix for readers closing in erasure early

This commit is contained in:
Frederick F. Kautz IV 2015-03-27 23:49:04 -07:00
parent e8d0d4f4d8
commit c901d0fb32
1 changed files with 2 additions and 1 deletions

View File

@ -15,6 +15,7 @@ import (
"github.com/minio-io/minio/pkg/encoding/erasure"
"github.com/minio-io/minio/pkg/utils/split"
"hash"
"log"
)
// getErasureTechnique - convert technique string into Technique type
@ -75,6 +76,7 @@ func erasureReader(readers []io.ReadCloser, donutMetadata map[string]string, wri
}
encoder := erasure.NewEncoder(params)
for i := 0; i < totalChunks; i++ {
log.Println(i)
totalLeft, err = decodeChunk(writer, readers, encoder, hasher, k, m, totalLeft, blockSize)
if err != nil {
errParams := map[string]string{
@ -106,7 +108,6 @@ func decodeChunk(writer *io.PipeWriter, readers []io.ReadCloser, encoder *erasur
curChunkSize := erasure.GetEncodedBlockLen(curBlockSize, uint8(k))
encodedBytes := make([][]byte, 16)
for i, reader := range readers {
defer reader.Close()
var bytesBuffer bytes.Buffer
written, err := io.CopyN(&bytesBuffer, reader, int64(curChunkSize))
if err != nil {