From 8f8e69faaed6cefd2025d8d20bb8ea33e326667b Mon Sep 17 00:00:00 2001 From: Nicolas Carlier Date: Sun, 18 Aug 2024 07:17:28 +0000 Subject: [PATCH] fix: bufio.Scanner: token too long close #98 --- pkg/hook/job.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/pkg/hook/job.go b/pkg/hook/job.go index ebdcfb9..3a78883 100644 --- a/pkg/hook/job.go +++ b/pkg/hook/job.go @@ -242,9 +242,17 @@ func (job *Job) Run() error { // Write script output to log file and the work message channel go func(reader io.Reader) { - scanner := bufio.NewScanner(reader) - for scanner.Scan() { - line := scanner.Text() + r := bufio.NewReader(reader) + for { + line, err := r.ReadString('\n') + if err != nil { + if err == io.EOF { + break + } + slog.Error("error while reading hook std[out/err]", "hook", job.name, "id", job.id, "err", err) + break + } + line, _ = strings.CutSuffix(line, "\r") // writing to the work channel if !job.IsTerminated() { job.MessageChan <- []byte(line) @@ -266,9 +274,6 @@ func (job *Job) Run() error { break } } - if err := scanner.Err(); err != nil { - slog.Error("hook is unable to read script stdout", "hook", job.name, "id", job.id, "err", err) - } wg.Done() }(cmdReader)