Skip to content

Commit 94c6004

Browse files
Michal Tichákknopers8
authored andcommitted
[core] part of OCTRL-1076, fixing leaked logging goroutines
1 parent 8eb6755 commit 94c6004

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

executor/executable/basictaskcommon.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,13 @@ import (
2828
"bytes"
2929
"encoding/json"
3030
"errors"
31-
"github.com/AliceO2Group/Control/common/utils"
3231
"io"
3332
"os/exec"
3433
"syscall"
3534
"time"
3635

36+
"github.com/AliceO2Group/Control/common/utils"
37+
3738
"github.com/AliceO2Group/Control/common/controlmode"
3839
"github.com/AliceO2Group/Control/common/event"
3940
"github.com/AliceO2Group/Control/common/logger/infologger"
@@ -73,6 +74,8 @@ func (t *basicTaskBase) startBasicTask() (err error) {
7374
var errStdout, errStderr error
7475
var stdoutBuf, stderrBuf bytes.Buffer
7576
var stdout, stderr io.Writer
77+
// To be closed after task is done
78+
var stdoutLog, stderrLog *io.PipeWriter
7679

7780
if t.Tci.Stdout == nil {
7881
none := "none"
@@ -85,7 +88,7 @@ func (t *basicTaskBase) startBasicTask() (err error) {
8588

8689
switch *t.Tci.Stdout {
8790
case "stdout":
88-
stdoutLog := log.WithPrefix("task-stdout").
91+
stdoutLog = log.WithPrefix("task-stdout").
8992
WithField("level", infologger.IL_Support).
9093
WithField("partition", t.knownEnvironmentId.String()).
9194
WithField("detector", t.knownDetector).
@@ -97,7 +100,7 @@ func (t *basicTaskBase) startBasicTask() (err error) {
97100
stdout = io.MultiWriter(stdoutLog, &stdoutBuf)
98101

99102
case "all":
100-
stdoutLog := log.WithPrefix("task-stdout").
103+
stdoutLog = log.WithPrefix("task-stdout").
101104
WithField("level", infologger.IL_Support).
102105
WithField("partition", t.knownEnvironmentId.String()).
103106
WithField("detector", t.knownDetector).
@@ -112,7 +115,7 @@ func (t *basicTaskBase) startBasicTask() (err error) {
112115

113116
switch *t.Tci.Stderr {
114117
case "stdout":
115-
stderrLog := log.WithPrefix("task-stderr").
118+
stderrLog = log.WithPrefix("task-stderr").
116119
WithField("level", infologger.IL_Support).
117120
WithField("partition", t.knownEnvironmentId.String()).
118121
WithField("detector", t.knownDetector).
@@ -124,7 +127,7 @@ func (t *basicTaskBase) startBasicTask() (err error) {
124127
stderr = io.MultiWriter(stderrLog, &stderrBuf)
125128

126129
case "all":
127-
stderrLog := log.WithPrefix("task-stderr").
130+
stderrLog = log.WithPrefix("task-stderr").
128131
WithField("level", infologger.IL_Support).
129132
WithField("partition", t.knownEnvironmentId.String()).
130133
WithField("detector", t.knownDetector).
@@ -142,7 +145,6 @@ func (t *basicTaskBase) startBasicTask() (err error) {
142145
stderrIn, _ := t.taskCmd.StderrPipe()
143146

144147
err = t.taskCmd.Start()
145-
146148
if err != nil {
147149
log.WithField("partition", t.knownEnvironmentId.String()).
148150
WithFields(logrus.Fields{
@@ -172,6 +174,13 @@ func (t *basicTaskBase) startBasicTask() (err error) {
172174
err = taskCmd.Wait()
173175
// ^ when this unblocks, the task is done
174176

177+
if stdoutLog != nil {
178+
stdoutLog.Close()
179+
}
180+
if stderrLog != nil {
181+
stderrLog.Close()
182+
}
183+
175184
pendingState := mesos.TASK_FINISHED
176185
var tciCommandStr string
177186
if t.Tci.Value != nil {

0 commit comments

Comments
 (0)