]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
qa: fix proc exit status check 37690/head
authorPatrick Donnelly <pdonnell@redhat.com>
Mon, 28 Sep 2020 18:03:21 +0000 (11:03 -0700)
committerNathan Cutler <ncutler@suse.com>
Thu, 3 Dec 2020 17:45:40 +0000 (18:45 +0100)
Fixes: f30a84b6a7a21670d8b5c5a7fe19df70e4371260
Fixes: https://tracker.ceph.com/issues/47677
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit eb95dabc3f5cac18c4efd33f595bbf9799901f33)

qa/tasks/ceph.py

index 60afccc215e4a1b0bed2f5909901dc01409b0a04..fa463c562fba988e2550d9ebef3645033f66f769 100644 (file)
@@ -155,12 +155,12 @@ def ceph_log(ctx, config):
             while not self.stop_event.is_set():
                 self.stop_event.wait(timeout=30)
                 try:
-                    p = ctx.cluster.run(
-                        args=['sudo', 'logrotate', '/etc/logrotate.d/ceph-test.conf'],
-                        wait=False,
-                        stderr=StringIO()
+                    procs = ctx.cluster.run(
+                          args=['sudo', 'logrotate', '/etc/logrotate.d/ceph-test.conf'],
+                          wait=False,
+                          stderr=StringIO()
                     )
-                    run.wait(p)
+                    run.wait(procs)
                 except exceptions.ConnectionLostError as e:
                     # Some tests may power off nodes during test, in which
                     # case we will see connection errors that we should ignore.
@@ -175,11 +175,13 @@ def ceph_log(ctx, config):
                 except SSHException:
                     log.debug("Missed logrotate, SSHException")
                 except run.CommandFailedError as e:
-                    err = p.stderr.getvalue()
-                    if 'error: error renaming temp state file' in err:
-                        log.info('ignoring transient state error: %s', e)
-                    else:
-                        raise
+                    for p in procs:
+                        if p.finished and p.exitstatus != 0:
+                            err = p.stderr.getvalue()
+                            if 'error: error renaming temp state file' in err:
+                                log.info('ignoring transient state error: %s', e)
+                            else:
+                                raise
                 except socket.error as e:
                     if e.errno in (errno.EHOSTUNREACH, errno.ECONNRESET):
                         log.debug("Missed logrotate, host unreachable")