aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Holzinger <pholzing@redhat.com>2022-09-12 14:22:27 +0200
committerPaul Holzinger <pholzing@redhat.com>2022-09-12 18:05:18 +0200
commit2ae4ce79996097fb0a403abbb9be9ef7b5c02d80 (patch)
tree54615dd393b1759a10ba8f271627d972517d795c
parentb3212a6802b9a9dd5311dcbebe68c9c67fd96218 (diff)
downloadpodman-2ae4ce79996097fb0a403abbb9be9ef7b5c02d80.tar.gz
podman-2ae4ce79996097fb0a403abbb9be9ef7b5c02d80.tar.bz2
podman-2ae4ce79996097fb0a403abbb9be9ef7b5c02d80.zip
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>
-rw-r--r--cmd/podman/system/events.go16
-rw-r--r--test/system/090-events.bats1
2 files changed, 12 insertions, 5 deletions
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
+ }
}
}
}
diff --git a/test/system/090-events.bats b/test/system/090-events.bats
index 509e7a306..3fac51938 100644
--- a/test/system/090-events.bats
+++ b/test/system/090-events.bats
@@ -74,6 +74,7 @@ load helpers
.*image tag $imageID $tag
.*image untag $imageID $tag:latest
.*image tag $imageID $tag
+.*image untag $imageID $IMAGE
.*image untag $imageID $tag:latest
.*image remove $imageID $imageID" \
"podman events"