From 2f215217ec34a1d1f2399ab1002fd03e7dc38fb1 Mon Sep 17 00:00:00 2001 From: Aishwarya Mathuria Date: Thu, 26 Oct 2023 13:14:10 +0000 Subject: [PATCH] mgr/pg_autoscaler: add check for norecover flag The PG autoscaler should not be active when the norecover flag is set. As each newly split PG will need to be backfilled, it does not make sense to have the autoscaler active if the norecover flag is set. Fixes: https://tracker.ceph.com/issues/63334 Signed-off-by: Aishwarya Mathuria (cherry picked from commit 009832f07abe2bf051965097f550d8695e9cebd4) --- src/pybind/mgr/pg_autoscaler/module.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/pybind/mgr/pg_autoscaler/module.py b/src/pybind/mgr/pg_autoscaler/module.py index 9099d96756b5..2ac89f56975f 100644 --- a/src/pybind/mgr/pg_autoscaler/module.py +++ b/src/pybind/mgr/pg_autoscaler/module.py @@ -260,6 +260,13 @@ class PgAutoscaler(MgrModule): else: return False + def has_norecover_flag(self) -> bool: + flags = self.get_osdmap().dump().get('flags', '') + if 'norecover' in flags: + return True + else: + return False + @CLIWriteCommand("osd pool get noautoscale") def get_noautoscale(self) -> Tuple[int, str, str]: """ @@ -321,7 +328,7 @@ class PgAutoscaler(MgrModule): def serve(self) -> None: self.config_notify() while not self._shutdown.is_set(): - if not self.has_noautoscale_flag(): + if not self.has_noautoscale_flag() and not self.has_norecover_flag(): osdmap = self.get_osdmap() pools = osdmap.get_pools_by_name() self._maybe_adjust(osdmap, pools) -- 2.47.3