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 <nmordech@redhat.com>
This commit is contained in:
Nitzan Mordechai 2024-07-02 08:31:38 +00:00
parent 21b4b89e52
commit a035b5a22f
5 changed files with 48 additions and 8 deletions

View File

@ -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):
"""
Stop the thrasher
"""
self.stopping = True
def join(self):
"""
Break out of this Ceph loop
"""
self.stopping = True
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

View File

@ -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))

View File

@ -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)

View File

@ -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()

View File

@ -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))