Let ReadLogs return when there is a read error.

pull/6/head
Random-Liu 2017-02-07 15:43:48 -08:00
parent 3ce49346a7
commit 65190e2a72
1 changed files with 8 additions and 0 deletions

View File

@ -191,6 +191,7 @@ func ReadLogs(path string, apiOpts *v1.PodLogOptions, stdout, stderr io.Writer)
return nil return nil
} }
glog.Errorf("Failed with err %v when writing log for log file %q: %+v", err, path, msg) glog.Errorf("Failed with err %v when writing log for log file %q: %+v", err, path, msg)
return err
} }
} }
} }
@ -299,6 +300,9 @@ type logWriter struct {
// errMaximumWrite is returned when all bytes have been written. // errMaximumWrite is returned when all bytes have been written.
var errMaximumWrite = errors.New("maximum write") var errMaximumWrite = errors.New("maximum write")
// errShortWrite is returned when the message is not fully written.
var errShortWrite = errors.New("short write")
func newLogWriter(stdout io.Writer, stderr io.Writer, opts *logOptions) *logWriter { func newLogWriter(stdout io.Writer, stderr io.Writer, opts *logOptions) *logWriter {
w := &logWriter{ w := &logWriter{
stdout: stdout, stdout: stdout,
@ -342,6 +346,10 @@ func (w *logWriter) write(msg *logMessage) error {
if err != nil { if err != nil {
return err return err
} }
// If the line has not been fully written, return errShortWrite
if n < len(line) {
return errShortWrite
}
// If there are no more bytes left, return errMaximumWrite // If there are no more bytes left, return errMaximumWrite
if w.remain <= 0 { if w.remain <= 0 {
return errMaximumWrite return errMaximumWrite