plugins: don't handle signal/notify if TTY

In order to solve the "double notification" issue (see:
https://github.com/docker/cli/commit/ef5e5fa03f0603f48678bfd7039c5b8121d98df1)
without running the plugin process under a new pgid (see:
https://github.com/moby/moby/issues/47073) we instead check if we're
attached to a TTY, and if so skip signalling the plugin process since it
will already be signalled.

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
This commit is contained in:
Laura Brehm
2024-01-15 13:30:17 +00:00
parent 26560ff93c
commit 5f6c55a724
+5
View File
@@ -241,6 +241,11 @@ func tryPluginRun(dockerCli command.Cli, cmd *cobra.Command, subcommand string,
go func() {
retries := 0
for range signals {
if dockerCli.Out().IsTerminal() {
// running attached to a terminal, so the plugin will already
// receive signals due to sharing a pgid with the parent CLI
continue
}
if conn != nil {
if err := conn.Close(); err != nil {
_, _ = fmt.Fprintf(dockerCli.Err(), "failed to signal plugin to close: %v\n", err)