From a035b5a22fb87794e65d112c0d21dcbd28b728ad Mon Sep 17 00:00:00 2001 From: Nitzan Mordechai Date: Tue, 2 Jul 2024 08:31:38 +0000 Subject: [PATCH] thrashers: standardize stop and join method names Thrashers that do not inherit from ThrasherGreenlet previously used a method called do_join, which combined stop and join functionality. To ensure consistency and clarity, we want all thrashers to use separate stop, join, and stop_and_join methods. This commit renames methods and implements missing stop and stop_and_join methods in thrashers that did not inherit from ThrasherGreenlet. Fixes: https://tracker.ceph.com/issues/66698 Signed-off-by: Nitzan Mordechai --- qa/tasks/ceph_manager.py | 16 ++++++++++++++-- qa/tasks/mon_thrash.py | 17 +++++++++++++++-- qa/tasks/scrub.py | 14 +++++++++++--- qa/tasks/thrasher.py | 7 +++++++ qa/tasks/thrashosds.py | 2 +- 5 files changed, 48 insertions(+), 8 deletions(-) diff --git a/qa/tasks/ceph_manager.py b/qa/tasks/ceph_manager.py index af68381829716..3416703fef3a8 100644 --- a/qa/tasks/ceph_manager.py +++ b/qa/tasks/ceph_manager.py @@ -870,11 +870,16 @@ class OSDThrasher(Thrasher): self.ceph_manager.raw_cluster_cmd('osd', 'primary-affinity', str(osd), str(1)) - def do_join(self): + def stop(self): """ - Break out of this Ceph loop + Stop the thrasher """ self.stopping = True + + def join(self): + """ + Break out of this Ceph loop + """ self.thread.get() if self.sighup_delay: self.log("joining the do_sighup greenlet") @@ -889,6 +894,13 @@ class OSDThrasher(Thrasher): self.log("joining the do_noscrub_toggle greenlet") self.noscrub_toggle_thread.join() + def stop_and_join(self): + """ + Stop and join the thrasher + """ + self.stop() + return self.join() + def grow_pool(self): """ Increase the size of the pool diff --git a/qa/tasks/mon_thrash.py b/qa/tasks/mon_thrash.py index d2bcaf3f08798..34aa1f9cc9e24 100644 --- a/qa/tasks/mon_thrash.py +++ b/qa/tasks/mon_thrash.py @@ -157,13 +157,26 @@ class MonitorThrasher(Thrasher): """ self.logger.info(x) - def do_join(self): + def stop(self): + """ + Stop the thrashing process. + """ + self.stopping = True + + def join(self): """ Break out of this processes thrashing loop. """ self.stopping.set() self.thread.get() + def stop_and_join(self): + """ + Stop the thrashing process and join the thread. + """ + self.stop() + return self.join() + def should_thrash_store(self): """ If allowed, indicate that we should thrash a certain percentage of @@ -450,6 +463,6 @@ def task(ctx, config): yield finally: log.info('joining mon_thrasher') - thrash_proc.do_join() + thrash_proc.stop_and_join() mons = _get_mons(ctx) manager.wait_for_mon_quorum_size(len(mons)) diff --git a/qa/tasks/scrub.py b/qa/tasks/scrub.py index ddc1a9164cfc8..74a2fcd2b2020 100644 --- a/qa/tasks/scrub.py +++ b/qa/tasks/scrub.py @@ -59,7 +59,7 @@ def task(ctx, config): yield finally: log.info('joining scrub') - scrub_proc.do_join() + scrub_proc.stop_and_join() class Scrubber: """ @@ -91,11 +91,19 @@ class Scrubber: self.thread = gevent.spawn(self.do_scrub) - def do_join(self): - """Scrubbing thread finished""" + def stop(self): + """Stop scrubbing""" self.stopping = True + + def join(self): + """Scrubbing thread finished""" self.thread.get() + def stop_and_join(self): + """Stop scrubbing thread""" + self.stop() + return self.join() + def do_scrub(self): """Perform the scrub operation""" frequency = self.config.get("frequency", 30) diff --git a/qa/tasks/thrasher.py b/qa/tasks/thrasher.py index e8fc14e404891..d8a0509d54cc2 100644 --- a/qa/tasks/thrasher.py +++ b/qa/tasks/thrasher.py @@ -19,6 +19,9 @@ class Thrasher(object): def set_thrasher_exception(self, e): self._exception = e + def stop(self): + raise NotImplementedError("Subclasses didn't implement this method.") + class ThrasherGreenlet(Thrasher, Greenlet): class Stopped(Exception): ... @@ -46,3 +49,7 @@ class ThrasherGreenlet(Thrasher, Greenlet): if self.is_stopped and raise_stopped: raise self.Stopped() return not self.is_stopped + + def stop_and_join(self): + self.stop() + return self.join() diff --git a/qa/tasks/thrashosds.py b/qa/tasks/thrashosds.py index 476e0e4755a75..1b3e65b266a87 100644 --- a/qa/tasks/thrashosds.py +++ b/qa/tasks/thrashosds.py @@ -214,7 +214,7 @@ def task(ctx, config): yield finally: log.info('joining thrashosds') - thrash_proc.do_join() + thrash_proc.stop_and_join() cluster_manager.wait_for_all_osds_up() cluster_manager.flush_all_pg_stats() cluster_manager.wait_for_recovery(config.get('timeout', 360)) -- 2.39.5