From 090687916da727c22cbac994906f07b735fbb7f9 Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Tue, 24 Apr 2018 16:58:51 -0400 Subject: [PATCH] Correctly handle reading from events channel Signed-off-by: Michael Crosby --- cmd/ctr/commands/events/events.go | 48 +++++++++++++++---------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/cmd/ctr/commands/events/events.go b/cmd/ctr/commands/events/events.go index 083ee041f..507de4459 100644 --- a/cmd/ctr/commands/events/events.go +++ b/cmd/ctr/commands/events/events.go @@ -42,38 +42,36 @@ var Command = cli.Command{ defer cancel() eventsClient := client.EventService() eventsCh, errCh := eventsClient.Subscribe(ctx, context.Args()...) - for { + open := true + for open { var e *events.Envelope select { - case evt, closed := <-eventsCh: - if closed { - return nil - } - e = evt - case err := <-errCh: + case e = <-eventsCh: + case err, open = <-errCh: return err } - - var out []byte - if e.Event != nil { - v, err := typeurl.UnmarshalAny(e.Event) - if err != nil { + if e != nil { + var out []byte + if e.Event != nil { + v, err := typeurl.UnmarshalAny(e.Event) + if err != nil { + return err + } + out, err = json.Marshal(v) + if err != nil { + return err + } + } + if _, err := fmt.Println( + e.Timestamp, + e.Namespace, + e.Topic, + string(out), + ); err != nil { return err } - out, err = json.Marshal(v) - if err != nil { - return err - } - } - - if _, err := fmt.Println( - e.Timestamp, - e.Namespace, - e.Topic, - string(out), - ); err != nil { - return err } } + return nil }, }