From b539b54c9e4cde0f0eeade749a14e7c98388186c Mon Sep 17 00:00:00 2001 From: Seth Hoenig Date: Thu, 17 Oct 2024 11:41:29 -0500 Subject: [PATCH] docker: close hijacked write connection when exec ends (#24244) --- .changelog/24244.txt | 3 +++ drivers/docker/driver.go | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changelog/24244.txt diff --git a/.changelog/24244.txt b/.changelog/24244.txt new file mode 100644 index 000000000..c4668f6e6 --- /dev/null +++ b/.changelog/24244.txt @@ -0,0 +1,3 @@ +```release-note:bug +docker: Fixed a bug where alloc exec could leak a goroutine +``` diff --git a/drivers/docker/driver.go b/drivers/docker/driver.go index c2e64567d..e410cc3df 100644 --- a/drivers/docker/driver.go +++ b/drivers/docker/driver.go @@ -1836,7 +1836,11 @@ func (d *Driver) ExecTaskStreaming(ctx context.Context, taskID string, opts *dri if err != nil { return nil, fmt.Errorf("failed to attach to exec: %v", err) } - defer resp.Close() + defer func() { + opts.Stdin.Close() // close stdin + resp.CloseWrite() // close hijacked write connection + resp.Close() // close read connection + }() go func() { if !opts.Tty {