mirror of https://github.com/docker/cli.git
Revert "plugins: run plugin with new process group ID"
This reverts commit ef5e5fa03f
.
Running new plugins under a new pgid isn't a viable solution due to
it causing issues with plugin processes attempting to read from the
TTY (see: https://github.com/moby/moby/issues/47073).
Signed-off-by: Laura Brehm <laurabrehm@hey.com>
This commit is contained in:
parent
077d07c4f0
commit
26560ff93c
|
@ -233,7 +233,6 @@ func PluginRunCommand(dockerCli command.Cli, name string, rootcmd *cobra.Command
|
|||
cmd.Stdin = os.Stdin
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
configureOSSpecificCommand(cmd)
|
||||
|
||||
cmd.Env = os.Environ()
|
||||
cmd.Env = append(cmd.Env, ReexecEnvvar+"="+os.Args[0])
|
||||
|
|
|
@ -2,21 +2,7 @@
|
|||
|
||||
package manager
|
||||
|
||||
import (
|
||||
"os/exec"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
var defaultSystemPluginDirs = []string{
|
||||
"/usr/local/lib/docker/cli-plugins", "/usr/local/libexec/docker/cli-plugins",
|
||||
"/usr/lib/docker/cli-plugins", "/usr/libexec/docker/cli-plugins",
|
||||
}
|
||||
|
||||
func configureOSSpecificCommand(cmd *exec.Cmd) {
|
||||
// Spawn the plugin process in a new process group, so that signals are not forwarded by the OS.
|
||||
// The foreground process group is e.g. sent a SIGINT when Ctrl-C is input to the TTY, but we
|
||||
// implement our own job control for the plugin.
|
||||
cmd.SysProcAttr = &syscall.SysProcAttr{
|
||||
Setpgid: true,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@ package manager
|
|||
|
||||
import (
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
|
@ -10,7 +9,3 @@ var defaultSystemPluginDirs = []string{
|
|||
filepath.Join(os.Getenv("ProgramData"), "Docker", "cli-plugins"),
|
||||
filepath.Join(os.Getenv("ProgramFiles"), "Docker", "cli-plugins"),
|
||||
}
|
||||
|
||||
func configureOSSpecificCommand(cmd *exec.Cmd) {
|
||||
// no-op
|
||||
}
|
||||
|
|
|
@ -240,16 +240,12 @@ func tryPluginRun(dockerCli command.Cli, cmd *cobra.Command, subcommand string,
|
|||
// we send a SIGKILL to the plugin process and exit
|
||||
go func() {
|
||||
retries := 0
|
||||
for s := range signals {
|
||||
for range signals {
|
||||
if conn != nil {
|
||||
if err := conn.Close(); err != nil {
|
||||
_, _ = fmt.Fprintf(dockerCli.Err(), "failed to signal plugin to close: %v\n", err)
|
||||
}
|
||||
conn = nil
|
||||
} else {
|
||||
// When the plugin is communicating via socket with the host CLI, we perform job control via the socket.
|
||||
// However, if the plugin is an old version that is not socket-aware, we need to explicitly forward termination signals.
|
||||
plugincmd.Process.Signal(s)
|
||||
}
|
||||
retries++
|
||||
if retries >= exitLimit {
|
||||
|
|
Loading…
Reference in New Issue