1
0
mirror of https://github.com/docker/cli.git synced 2026-01-13 18:22:35 +03:00

Merge pull request #29456 from cpuguy83/fix_client_events_race

Fixes a race condition in client events monitoring
Upstream-commit: 8a8416ccbdaf08598f4ac38255e4267859682bb9
Component: engine
This commit is contained in:
Tõnis Tiigi
2016-12-16 17:07:43 -08:00
committed by GitHub

View File

@@ -22,17 +22,20 @@ func (cli *Client) Events(ctx context.Context, options types.EventsOptions) (<-c
messages := make(chan events.Message)
errs := make(chan error, 1)
started := make(chan struct{})
go func() {
defer close(errs)
query, err := buildEventsQueryParams(cli.version, options)
if err != nil {
close(started)
errs <- err
return
}
resp, err := cli.get(ctx, "/events", query, nil)
if err != nil {
close(started)
errs <- err
return
}
@@ -40,6 +43,7 @@ func (cli *Client) Events(ctx context.Context, options types.EventsOptions) (<-c
decoder := json.NewDecoder(resp.body)
close(started)
for {
select {
case <-ctx.Done():
@@ -61,6 +65,7 @@ func (cli *Client) Events(ctx context.Context, options types.EventsOptions) (<-c
}
}
}()
<-started
return messages, errs
}