internal/pkg: cancel on scanner error
All checks were successful
Test / Create distribution (push) Successful in 59s
Test / Sandbox (push) Successful in 2m37s
Test / Hakurei (push) Successful in 3m35s
Test / ShareFS (push) Successful in 3m43s
Test / Sandbox (race detector) (push) Successful in 5m0s
Test / Hakurei (race detector) (push) Successful in 5m51s
Test / Flake checks (push) Successful in 1m29s
All checks were successful
Test / Create distribution (push) Successful in 59s
Test / Sandbox (push) Successful in 2m37s
Test / Hakurei (push) Successful in 3m35s
Test / ShareFS (push) Successful in 3m43s
Test / Sandbox (race detector) (push) Successful in 5m0s
Test / Hakurei (race detector) (push) Successful in 5m51s
Test / Flake checks (push) Successful in 1m29s
This avoids discarding output thus appearing unresponsive. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -361,6 +361,7 @@ const (
|
|||||||
// scanVerbose prefixes program output for a verbose [message.Msg].
|
// scanVerbose prefixes program output for a verbose [message.Msg].
|
||||||
func scanVerbose(
|
func scanVerbose(
|
||||||
msg message.Msg,
|
msg message.Msg,
|
||||||
|
cancel context.CancelFunc,
|
||||||
done chan<- struct{},
|
done chan<- struct{},
|
||||||
prefix string,
|
prefix string,
|
||||||
r io.Reader,
|
r io.Reader,
|
||||||
@@ -375,6 +376,7 @@ func scanVerbose(
|
|||||||
msg.Verbose(prefix, s.Text())
|
msg.Verbose(prefix, s.Text())
|
||||||
}
|
}
|
||||||
if err := s.Err(); err != nil && !errors.Is(err, os.ErrClosed) {
|
if err := s.Err(); err != nil && !errors.Is(err, os.ErrClosed) {
|
||||||
|
cancel()
|
||||||
msg.Verbose("*"+prefix, err)
|
msg.Verbose("*"+prefix, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -433,8 +435,8 @@ func (a *execArtifact) cure(f *FContext, hostNet bool) (err error) {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
stdoutDone, stderrDone := make(chan struct{}), make(chan struct{})
|
stdoutDone, stderrDone := make(chan struct{}), make(chan struct{})
|
||||||
go scanVerbose(msg, stdoutDone, "("+a.name+":1)", stdout)
|
go scanVerbose(msg, cancel, stdoutDone, "("+a.name+":1)", stdout)
|
||||||
go scanVerbose(msg, stderrDone, "("+a.name+":2)", stderr)
|
go scanVerbose(msg, cancel, stderrDone, "("+a.name+":2)", stderr)
|
||||||
defer func() { <-stdoutDone; <-stderrDone }()
|
defer func() { <-stdoutDone; <-stderrDone }()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user