From 4031e18d05dec12cb8e4c465d9eefbc1fc483db3 Mon Sep 17 00:00:00 2001 From: Nikolay Vasiliev Date: Thu, 20 Feb 2020 16:08:37 +0100 Subject: [PATCH] provide a way to reset metrics after fork --- prometheus_client/values.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/prometheus_client/values.py b/prometheus_client/values.py index f572dcf7..8172f860 100644 --- a/prometheus_client/values.py +++ b/prometheus_client/values.py @@ -48,13 +48,14 @@ class MmapedValue(object): """A float protected by a mutex backed by a per-process mmaped file.""" _multiprocess = True + global_metric_values = values def __init__(self, typ, metric_name, name, labelnames, labelvalues, multiprocess_mode='', **kwargs): self._params = typ, metric_name, name, labelnames, labelvalues, multiprocess_mode with lock: self.__check_for_pid_change() self.__reset() - values.append(self) + self.global_metric_values.append(self) def __reset(self): typ, metric_name, name, labelnames, labelvalues, multiprocess_mode = self._params @@ -80,7 +81,7 @@ def __check_for_pid_change(self): for f in files.values(): f.close() files.clear() - for value in values: + for value in self.global_metric_values: value.__reset() def inc(self, amount): @@ -115,3 +116,7 @@ def get_value_class(): ValueClass = get_value_class() + + +def clear_child_metrics_after_fork(): + del ValueClass.global_metric_values[:] \ No newline at end of file