From 9ca304f096ce425e3556bbd05745f896f5e0b268 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Sat, 7 Feb 2026 19:07:44 +0100 Subject: vm/vmimpl: refactor Merger error processing Introduce an Error() method to avoid capturing the errors of already overridden decoders. --- vm/vmimpl/vmimpl.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'vm/vmimpl/vmimpl.go') diff --git a/vm/vmimpl/vmimpl.go b/vm/vmimpl/vmimpl.go index f54e4e2b5..b1745d192 100644 --- a/vm/vmimpl/vmimpl.go +++ b/vm/vmimpl/vmimpl.go @@ -190,6 +190,8 @@ func Multiplex(ctx context.Context, cmd *exec.Cmd, merger *OutputMerger, config } } go func() { + errCtx, cancel := context.WithCancel(context.Background()) + defer cancel() select { case <-ctx.Done(): signal(ErrTimeout) @@ -198,7 +200,7 @@ func Multiplex(ctx context.Context, cmd *exec.Cmd, merger *OutputMerger, config log.Logf(0, "instance closed") } signal(fmt.Errorf("instance closed")) - case err := <-merger.Err: + case err := <-merger.Errors(errCtx): // EOF is not always in perfect sync with exit, so we should wait a bit. if cmdErr := waitAndKill(ctx, cmd); cmdErr == nil { // If the command exited successfully, we got EOF error from merger. -- cgit mrf-deployment