From: Sage Weil Date: Mon, 4 Feb 2019 13:13:07 +0000 (-0600) Subject: mgr/progress: prune completed events X-Git-Tag: v14.1.0~160^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bc8580b22b65a37588241606bd3b0acdbf3a35eb;p=ceph.git mgr/progress: prune completed events We don't want these to grow unbounded! Signed-off-by: Sage Weil --- diff --git a/src/pybind/mgr/progress/module.py b/src/pybind/mgr/progress/module.py index 72f73d1fe9f9..7ac9c97b0ddd 100644 --- a/src/pybind/mgr/progress/module.py +++ b/src/pybind/mgr/progress/module.py @@ -242,6 +242,16 @@ class Module(MgrModule): "perm": "rw"} ] + MODULE_OPTIONS = [ + { + 'name': 'max_completed_events', + 'default': 50, + 'type': 'int', + 'desc': 'number of past completed events to remember', + 'runtime': True, + }, + ] + def __init__(self, *args, **kwargs): super(Module, self).__init__(*args, **kwargs) @@ -257,6 +267,13 @@ class Module(MgrModule): self._dirty = False + def config_notify(self): + for opt in self.MODULE_OPTIONS: + setattr(self, + opt['name'], + self.get_module_option(opt['name'])) + self.log.debug(' %s = %s', opt['name'], getattr(self, opt['name'])) + def _osd_out(self, old_map, old_dump, new_map, osd_id): affected_pgs = [] unmoved_pgs = [] @@ -399,7 +416,16 @@ class Module(MgrModule): for ev in decoded['events']: self._completed_events.append(GhostEvent(ev['id'], ev['message'], ev['refs'])) + self._prune_completed_events() + + def _prune_completed_events(self): + l = len(self._completed_events) + if l > self.max_completed_events: + self._completed_events = self._completed_events[l - self.max_completed_events : l] + self._dirty = True + def serve(self): + self.config_notify() self.log.info("Loading...") self._load() @@ -449,6 +475,7 @@ class Module(MgrModule): self._completed_events.append( GhostEvent(ev.id, ev.message, ev.refs)) del self._events[ev.id] + self._prune_completed_events() self._dirty = True def complete(self, ev_id):