From 65190e2a72936dbe7f7081ac6f41d77f2071e061 Mon Sep 17 00:00:00 2001 From: Random-Liu Date: Tue, 7 Feb 2017 15:43:48 -0800 Subject: [PATCH] Let ReadLogs return when there is a read error. --- pkg/kubelet/kuberuntime/kuberuntime_logs.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/kubelet/kuberuntime/kuberuntime_logs.go b/pkg/kubelet/kuberuntime/kuberuntime_logs.go index 21d81bc6a04..25a507f368c 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_logs.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_logs.go @@ -191,6 +191,7 @@ func ReadLogs(path string, apiOpts *v1.PodLogOptions, stdout, stderr io.Writer) return nil } 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. 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 { w := &logWriter{ stdout: stdout, @@ -342,6 +346,10 @@ func (w *logWriter) write(msg *logMessage) error { if err != nil { 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 w.remain <= 0 { return errMaximumWrite