mirror of
https://gitea.com/gitea/runner.git
synced 2026-07-08 16:06:49 +08:00
fix: avoid race condition by not running exec/start twice (#702)
ContainerExecAttach implicitly runs ContainerExecStart while attaching to stdout/stderr. Ref: https://github.com/moby/moby/blob/e02bc91dcbf6ab70ab39352f3577a4394b0f863a/client/container_exec.go#L40 Calling both can lead to a race condition as observed in #627 Fixes: #627 Co-authored-by: Markus Wolf <markus.wolf@new-work.se> Co-authored-by: Markus Wolf <markus.wolf@new-work.se>
This commit is contained in:
@@ -456,13 +456,6 @@ func (cr *containerReference) exec(cmd []string, env map[string]string, user str
|
||||
errWriter = os.Stderr
|
||||
}
|
||||
|
||||
err = cr.cli.ContainerExecStart(ctx, idResp.ID, types.ExecStartCheck{
|
||||
Tty: isTerminal,
|
||||
})
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
if !isTerminal || os.Getenv("NORAW") != "" {
|
||||
_, err = stdcopy.StdCopy(outWriter, errWriter, resp.Reader)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user