mirror of
https://github.com/pgsty/minio.git
synced 2026-08-07 16:21:14 +03:00
Improving EncoderStream to return error only upon non io.EOF.
io.EOF is okay since io.ReadFull will not have read any bytes at all. Also making error channel receive only for go routine.
This commit is contained in:
+3
-4
@@ -447,14 +447,13 @@ func (b bucket) writeObjectData(k, m uint8, writers []io.WriteCloser, objectData
|
||||
}
|
||||
for blockIndex, block := range encodedBlocks {
|
||||
errCh := make(chan error, 1)
|
||||
go func(writer io.Writer, reader io.Reader) {
|
||||
// FIXME: this closes the errCh in the outer scope
|
||||
go func(writer io.Writer, reader io.Reader, errCh chan<- error) {
|
||||
defer close(errCh)
|
||||
_, err := io.Copy(writer, reader)
|
||||
errCh <- err
|
||||
}(writers[blockIndex], bytes.NewReader(block))
|
||||
}(writers[blockIndex], bytes.NewReader(block), errCh)
|
||||
if err := <-errCh; err != nil {
|
||||
// FIXME: fix premature return in case of err != nil
|
||||
// Returning error is fine here CleanupErrors() would cleanup writers
|
||||
return 0, 0, iodine.New(err, nil)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user