From a7ee201ee85c95afb8556323d79e32cf9e2d8737 Mon Sep 17 00:00:00 2001 From: Alexandr Morozov Date: Mon, 22 Sep 2014 10:55:46 +0400 Subject: [PATCH] Close logs pipes and catch write errors Signed-off-by: Alexandr Morozov --- daemon/logs.go | 2 ++ pkg/jsonlog/jsonlog.go | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/daemon/logs.go b/daemon/logs.go index b5cf86fcb6..6925cabacb 100644 --- a/daemon/logs.go +++ b/daemon/logs.go @@ -114,12 +114,14 @@ func (daemon *Daemon) ContainerLogs(job *engine.Job) engine.Status { errors := make(chan error, 2) if stdout { stdoutPipe := container.StdoutLogPipe() + defer stdoutPipe.Close() go func() { errors <- jsonlog.WriteLog(stdoutPipe, job.Stdout, format) }() } if stderr { stderrPipe := container.StderrLogPipe() + defer stderrPipe.Close() go func() { errors <- jsonlog.WriteLog(stderrPipe, job.Stderr, format) }() diff --git a/pkg/jsonlog/jsonlog.go b/pkg/jsonlog/jsonlog.go index ce9c1bb767..16d015fcd1 100644 --- a/pkg/jsonlog/jsonlog.go +++ b/pkg/jsonlog/jsonlog.go @@ -40,6 +40,8 @@ func WriteLog(src io.Reader, dst io.Writer, format string) error { if err != nil { return err } - fmt.Fprintf(dst, "%s", line) + if _, err := io.WriteString(dst, line); err != nil { + return err + } } }