From e8a1da0ca95d200886db6b8a89d3becf053845f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Tich=C3=A1k?= Date: Fri, 12 Dec 2025 11:01:15 +0100 Subject: [PATCH] [executor] properly closing pipes in basic common task when in error --- executor/executable/basictaskcommon.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/executor/executable/basictaskcommon.go b/executor/executable/basictaskcommon.go index 014d640b..068752ae 100644 --- a/executor/executable/basictaskcommon.go +++ b/executor/executable/basictaskcommon.go @@ -155,6 +155,8 @@ func (t *basicTaskBase) startBasicTask() (err error) { }). Error("failed to run basic task") + closePipeWriters(stdoutLog, stderrLog) + return err } log.WithField("partition", t.knownEnvironmentId.String()). @@ -174,12 +176,7 @@ func (t *basicTaskBase) startBasicTask() (err error) { err = taskCmd.Wait() // ^ when this unblocks, the task is done - if stdoutLog != nil { - stdoutLog.Close() - } - if stderrLog != nil { - stderrLog.Close() - } + closePipeWriters(stdoutLog, stderrLog) pendingState := mesos.TASK_FINISHED var tciCommandStr string @@ -252,6 +249,15 @@ func (t *basicTaskBase) startBasicTask() (err error) { return err } +func closePipeWriters(stdoutLog *io.PipeWriter, stderrLog *io.PipeWriter) { + if stdoutLog != nil { + stdoutLog.Close() + } + if stderrLog != nil { + stderrLog.Close() + } +} + func (t *basicTaskBase) ensureBasicTaskKilled() (err error) { if t.taskCmd == nil { return nil