From e8b23d685247249dd083e93bf8f9b7a3f0039fa7 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Fri, 2 Jun 2017 14:41:26 +0800 Subject: [PATCH] qa/tasks: add a blacklist for flush_pg_stats() so we don't wait for marked out osds. Signed-off-by: Kefu Chai --- qa/tasks/ceph_manager.py | 11 ++++++++++- qa/tasks/osd_recovery.py | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/qa/tasks/ceph_manager.py b/qa/tasks/ceph_manager.py index 1fceb9b9529..99d6221637d 100644 --- a/qa/tasks/ceph_manager.py +++ b/qa/tasks/ceph_manager.py @@ -1148,12 +1148,17 @@ class CephManager: "-w"], wait=False, stdout=StringIO(), stdin=run.PIPE) - def flush_pg_stats(self, osds, wait_for_mon=3*5): + def flush_pg_stats(self, osds, no_wait=None, wait_for_mon=3*5): """ Flush pg stats from a list of OSD ids, ensuring they are reflected all the way to the monitor. Luminous and later only. :param osds: list of OSDs to flush + :param no_wait: list of OSDs not to wait for seq id. by default, we + wait for all specified osds, but some of them could be + moved out of osdmap, so we cannot get their updated + stat seq from monitor anymore. in that case, you need + to pass a blacklist. :param wait_for_mon: wait for mon to be synced with mgr. 0 to disable it. (3 * mon_mgr_digest_period, by default) """ @@ -1161,7 +1166,11 @@ class CephManager: for osd in osds} if not wait_for_mon: return + if no_wait is None: + no_wait = [] for osd, need in seq.iteritems(): + if osd in no_wait: + continue got = 0 while wait_for_mon > 0: got = self.raw_cluster_cmd('osd', 'last-stat-seq', 'osd.%d' % osd) diff --git a/qa/tasks/osd_recovery.py b/qa/tasks/osd_recovery.py index 02a1cc1ba92..41e86d6555b 100644 --- a/qa/tasks/osd_recovery.py +++ b/qa/tasks/osd_recovery.py @@ -141,7 +141,7 @@ def test_incomplete_pgs(ctx, config): # move data off of osd.0, osd.1 manager.raw_cluster_cmd('osd', 'out', '0', '1') - manager.flush_pg_stats([0, 1, 2, 3]) + manager.flush_pg_stats([0, 1, 2, 3], [0, 1]) manager.wait_for_clean() # lots of objects in rbd (no pg log, will backfill) @@ -160,7 +160,7 @@ def test_incomplete_pgs(ctx, config): manager.raw_cluster_cmd('osd', 'in', '0', '1') manager.raw_cluster_cmd('osd', 'out', '2', '3') time.sleep(10) - manager.flush_pg_stats([0, 1, 2, 3]) + manager.flush_pg_stats([0, 1, 2, 3], [2, 3]) time.sleep(10) manager.wait_for_active() -- 2.47.3