From 2ae4ce79996097fb0a403abbb9be9ef7b5c02d80 Mon Sep 17 00:00:00 2001
From: Paul Holzinger <pholzing@redhat.com>
Date: Mon, 12 Sep 2022 14:22:27 +0200
Subject: fix race where podman events exits to early

In order to display all events we have to read until the event channel
is closed.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
---
 cmd/podman/system/events.go | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

(limited to 'cmd/podman')

diff --git a/cmd/podman/system/events.go b/cmd/podman/system/events.go
index 57279bb02..693af3e60 100644
--- a/cmd/podman/system/events.go
+++ b/cmd/podman/system/events.go
@@ -101,12 +101,12 @@ func eventsCmd(cmd *cobra.Command, _ []string) error {
 
 	for {
 		select {
-		case err := <-errChannel:
-			return err
-		case event := <-eventChannel:
+		case event, ok := <-eventChannel:
+			if !ok {
+				// channel was closed we can exit
+				return nil
+			}
 			switch {
-			case event == nil:
-				// no-op
 			case doJSON:
 				jsonStr, err := event.ToJSONString()
 				if err != nil {
@@ -121,6 +121,12 @@ func eventsCmd(cmd *cobra.Command, _ []string) error {
 			default:
 				fmt.Println(event.ToHumanReadable(!noTrunc))
 			}
+		case err := <-errChannel:
+			// only exit in case of an error,
+			// otherwise keep reading events until the event channel is closed
+			if err != nil {
+				return err
+			}
 		}
 	}
 }
-- 
cgit v1.2.3-54-g00ecf