From 952c38e7b359ea8d147aa1150f3073688f2e7603 Mon Sep 17 00:00:00 2001 From: Amir Raminfar Date: Wed, 5 Dec 2018 06:57:37 -0800 Subject: [PATCH] Fixes messages possible deadlock --- docker/client.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docker/client.go b/docker/client.go index 40052f0f..0a7c3f42 100644 --- a/docker/client.go +++ b/docker/client.go @@ -84,12 +84,12 @@ func (d *dockerClient) ContainerLogs(ctx context.Context, id string) (<-chan str return nil, errChannel } + messages := make(chan string) go func() { <-ctx.Done() reader.Close() }() - messages := make(chan string) go func() { defer close(messages) defer close(errChannel) @@ -109,7 +109,10 @@ func (d *dockerClient) ContainerLogs(ctx context.Context, id string) (<-chan str errChannel <- err break } - messages <- buffer.String() + select { + case messages <- buffer.String(): + case <-ctx.Done(): + } buffer.Reset() } }()