Skip to content

Commit

Permalink
Also forward exec output when failing to demultiplex
Browse files Browse the repository at this point in the history
  • Loading branch information
m90 committed Feb 29, 2024
1 parent 5abfe5b commit b96e57a
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion cmd/backup/exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,22 @@ func (s *script) exec(containerRef string, command string, user string) ([]byte,
var outBuf, errBuf bytes.Buffer
outputDone := make(chan error)

var buf bytes.Buffer
tee := io.TeeReader(resp.Reader, &buf)

go func() {
_, err := stdcopy.StdCopy(&outBuf, &errBuf, resp.Reader)
_, err := stdcopy.StdCopy(&outBuf, &errBuf, tee)
outputDone <- err
}()

if err := <-outputDone; err != nil {
if body, bErr := io.ReadAll(&buf); bErr == nil {
// if possible, try to append the exec output to the error
// as it's likely to be more relevant for users than the error from
// calling stdcopy.Copy
err = errwrap.Wrap(errors.New(string(body)), err.Error())
return nil, nil, errwrap.Wrap(err, "error demultiplexing output")
}
return nil, nil, errwrap.Wrap(err, "error demultiplexing output")
}

Expand Down

0 comments on commit b96e57a

Please sign in to comment.