From ad27532b6c9c657c7aecaca4bcccb5baa6576839 Mon Sep 17 00:00:00 2001
From: Daniel J Walsh <dwalsh@redhat.com>
Date: Tue, 5 May 2020 10:56:40 -0400
Subject: Eliminate race condition on podman info

There is a potential of a race condition where
a container is removed while podman is looking
up information on the total containers.  This can
cause podman info to fail with an error
"no such container".

This change ignores the failure.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
---
 libpod/info.go | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

(limited to 'libpod')

diff --git a/libpod/info.go b/libpod/info.go
index d7ed5bb16..4007e0ce7 100644
--- a/libpod/info.go
+++ b/libpod/info.go
@@ -198,9 +198,15 @@ func (r *Runtime) getContainerStoreInfo() (define.ContainerStore, error) {
 	if err != nil {
 		return cs, err
 	}
+	cs.Number = len(cons)
 	for _, con := range cons {
 		state, err := con.State()
 		if err != nil {
+			if errors.Cause(err) == define.ErrNoSuchCtr {
+				// container was probably removed
+				cs.Number--
+				continue
+			}
 			return cs, err
 		}
 		switch state {
@@ -212,7 +218,6 @@ func (r *Runtime) getContainerStoreInfo() (define.ContainerStore, error) {
 			stopped += 1
 		}
 	}
-	cs.Number = len(cons)
 	cs.Paused = paused
 	cs.Stopped = stopped
 	cs.Running = running
-- 
cgit v1.2.3-54-g00ecf