@@ -276,11 +276,13 @@ func waitForPluginTimeout(timeout time.Duration, p pluginExecutor, waitChannel c
276
276
func waitForResponseFromPlugin (r io.Reader , waitChannel chan waitSignalValue , logpath string ) {
277
277
lp := strings .TrimSuffix (logpath , filepath .Ext (logpath ))
278
278
lf , _ := os .OpenFile (lp + ".stdout" , os .O_WRONLY | os .O_CREATE | os .O_TRUNC , 0666 )
279
+ defer lf .Close ()
279
280
logger := log .New (lf , "" , log .Ldate | log .Ltime )
280
281
processedResponse := false
281
282
scanner := bufio .NewScanner (r )
282
283
resp := new (Response )
283
284
// scan until we get a response or reader is closed
285
+ OK:
284
286
for scanner .Scan () {
285
287
if ! processedResponse {
286
288
// Get bytes
@@ -303,16 +305,34 @@ func waitForResponseFromPlugin(r io.Reader, waitChannel chan waitSignalValue, lo
303
305
logger .Println (scanner .Text ())
304
306
}
305
307
}
308
+ if err := scanner .Err (); err != nil {
309
+ if err == bufio .ErrTooLong {
310
+ reader := bufio .NewReader (r )
311
+ logger .Println (reader .ReadLine ())
312
+ goto OK
313
+ }
314
+ logger .Println (err )
315
+ }
306
316
}
307
317
308
318
func logStdErr (r io.Reader , logpath string ) {
309
319
lp := strings .TrimSuffix (logpath , filepath .Ext (logpath ))
310
320
lf , _ := os .OpenFile (lp + ".stderr" , os .O_WRONLY | os .O_CREATE | os .O_TRUNC , 0666 )
321
+ defer lf .Close ()
311
322
logger := log .New (lf , "" , log .Ldate | log .Ltime )
312
323
scanner := bufio .NewScanner (r )
324
+ OK:
313
325
for scanner .Scan () {
314
326
logger .Println (scanner .Text ())
315
327
}
328
+ if err := scanner .Err (); err != nil {
329
+ if err == bufio .ErrTooLong {
330
+ reader := bufio .NewReader (r )
331
+ logger .Println (reader .ReadLine ())
332
+ goto OK
333
+ }
334
+ logger .Println (err )
335
+ }
316
336
}
317
337
318
338
func waitForKilledPlugin (p pluginExecutor , waitChannel chan waitSignalValue ) {
0 commit comments