mirror of
https://github.com/offen/docker-volume-backup.git
synced 2024-11-24 22:20:28 +01:00
Also forward exec output when failing to demultiplex (#379)
This commit is contained in:
parent
5abfe5bb39
commit
2d3e79cf5e
@ -45,15 +45,23 @@ func (s *script) exec(containerRef string, command string, user string) ([]byte,
|
|||||||
}
|
}
|
||||||
defer resp.Close()
|
defer resp.Close()
|
||||||
|
|
||||||
var outBuf, errBuf bytes.Buffer
|
var outBuf, errBuf, fullRespBuf bytes.Buffer
|
||||||
outputDone := make(chan error)
|
outputDone := make(chan error)
|
||||||
|
|
||||||
|
tee := io.TeeReader(resp.Reader, &fullRespBuf)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
_, err := stdcopy.StdCopy(&outBuf, &errBuf, resp.Reader)
|
_, err := stdcopy.StdCopy(&outBuf, &errBuf, tee)
|
||||||
outputDone <- err
|
outputDone <- err
|
||||||
}()
|
}()
|
||||||
|
|
||||||
if err := <-outputDone; err != nil {
|
if err := <-outputDone; err != nil {
|
||||||
|
if body, bErr := io.ReadAll(&fullRespBuf); 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")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user