diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2026-02-07 19:07:44 +0100 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2026-02-17 14:55:28 +0000 |
| commit | 9ca304f096ce425e3556bbd05745f896f5e0b268 (patch) | |
| tree | f17ce5341faa2f56bc7a6a1f1b34aad6e7442525 /vm/vmimpl/vmimpl.go | |
| parent | f4288eed9c51fed44b853c252711c00de8761336 (diff) | |
vm/vmimpl: refactor Merger error processing
Introduce an Error() method to avoid capturing the errors of already
overridden decoders.
Diffstat (limited to 'vm/vmimpl/vmimpl.go')
| -rw-r--r-- | vm/vmimpl/vmimpl.go | 4 |
1 files changed, 3 insertions, 1 deletions
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. |
