File tree Expand file tree Collapse file tree 1 file changed +22
-6
lines changed Expand file tree Collapse file tree 1 file changed +22
-6
lines changed Original file line number Diff line number Diff line change @@ -96,17 +96,33 @@ func (p *runningJob) logPipe(reader io.Reader) {
96
96
defer p .logWG .Done ()
97
97
98
98
scanner := bufio .NewScanner (reader )
99
+ const maxCapacity = 10 * 1024 * 1024 // 10 MB
100
+ buf := make ([]byte , maxCapacity )
101
+ scanner .Buffer (buf , maxCapacity )
99
102
100
103
for scanner .Scan () {
101
104
line := scanner .Text ()
102
105
p .Log (line )
103
106
}
104
107
105
- if scanner .Err () != nil && scanner .Err ().Error () != "EOF" {
106
- //don't panic on these errors, sometimes it throws not dangerous "read |0: file already closed" error
107
- log .WithError (scanner .Err ()).WithFields (log.Fields {
108
- "context" : "task_log" ,
109
- "task_id" : p .job .Task .ID ,
110
- }).Debug ("failed to read log" )
108
+ msg := "Failed to read TaskRunner output"
109
+
110
+ switch scanner .Err ().Error () {
111
+ case "EOF" ,
112
+ "os: process already finished" ,
113
+ "read |0: file already closed" :
114
+ return // it is ok
115
+ case "bufio.Scanner: token too long" :
116
+ msg = "TaskRunner output exceeds the maximum allowed size of 10MB"
117
+ break
111
118
}
119
+
120
+ p .job .Kill () // kill the job because stdout cannot be read.
121
+
122
+ log .WithError (scanner .Err ()).WithFields (log.Fields {
123
+ "task_id" : p .job .Task .ID ,
124
+ "context" : "job" ,
125
+ }).Error (msg )
126
+
127
+ p .Log ("Fatal error: " + msg )
112
128
}
You can’t perform that action at this time.
0 commit comments