qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v2 04/16] tests/docker: reduce scary warnings from failed inspect


From: Alex Bennée
Subject: [PATCH v2 04/16] tests/docker: reduce scary warnings from failed inspect
Date: Thu, 19 Sep 2019 18:10:03 +0100

There is a race here in the clean-up code so lets just accept that
sometimes the active task we just looked up might have finished before
we got to inspect it.

Signed-off-by: Alex Bennée <address@hidden>
---
 tests/docker/docker.py | 32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/tests/docker/docker.py b/tests/docker/docker.py
index 29613afd489..4dca6006d2f 100755
--- a/tests/docker/docker.py
+++ b/tests/docker/docker.py
@@ -235,20 +235,24 @@ class Docker(object):
         if not only_active:
             cmd.append("-a")
         for i in self._output(cmd).split():
-            resp = self._output(["inspect", i])
-            labels = json.loads(resp)[0]["Config"]["Labels"]
-            active = json.loads(resp)[0]["State"]["Running"]
-            if not labels:
-                continue
-            instance_uuid = labels.get("com.qemu.instance.uuid", None)
-            if not instance_uuid:
-                continue
-            if only_known and instance_uuid not in self._instances:
-                continue
-            print("Terminating", i)
-            if active:
-                self._do(["kill", i])
-            self._do(["rm", i])
+            try:
+                resp = self._output(["inspect", i])
+                labels = json.loads(resp)[0]["Config"]["Labels"]
+                active = json.loads(resp)[0]["State"]["Running"]
+                if not labels:
+                    continue
+                instance_uuid = labels.get("com.qemu.instance.uuid", None)
+                if not instance_uuid:
+                    continue
+                if only_known and instance_uuid not in self._instances:
+                    continue
+                print("Terminating", i)
+                if active:
+                    self._do(["kill", i])
+                    self._do(["rm", i])
+            except subprocess.CalledProcessError:
+                # i likely finished running before we got here
+                pass
 
     def clean(self):
         self._do_kill_instances(False, False)
-- 
2.20.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]