forked from MirrorHub/synapse
Don't report anything from GaugeBucketCollector metrics until data is present (#8926)
This PR modifies `GaugeBucketCollector` to only report data once it has been updated, rather than initially reporting a value of 0. Fixes zero values being reported for some metrics on startup until a background job to update the metric's value runs later.
This commit is contained in:
parent
04819239ba
commit
0d87c6bd12
2 changed files with 14 additions and 3 deletions
1
changelog.d/8926.bugfix
Normal file
1
changelog.d/8926.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Prevent `synapse_forward_extremities` and `synapse_excess_extremity_events` Prometheus metrics from initially reporting zero-values after startup.
|
|
@ -214,7 +214,12 @@ class GaugeBucketCollector:
|
|||
Prometheus, and optimise for that case.
|
||||
"""
|
||||
|
||||
__slots__ = ("_name", "_documentation", "_bucket_bounds", "_metric")
|
||||
__slots__ = (
|
||||
"_name",
|
||||
"_documentation",
|
||||
"_bucket_bounds",
|
||||
"_metric",
|
||||
)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
@ -242,10 +247,15 @@ class GaugeBucketCollector:
|
|||
if self._bucket_bounds[-1] != float("inf"):
|
||||
self._bucket_bounds.append(float("inf"))
|
||||
|
||||
self._metric = self._values_to_metric([])
|
||||
# We initially set this to None. We won't report metrics until
|
||||
# this has been initialised after a successful data update
|
||||
self._metric = None # type: Optional[GaugeHistogramMetricFamily]
|
||||
|
||||
registry.register(self)
|
||||
|
||||
def collect(self):
|
||||
# Don't report metrics unless we've already collected some data
|
||||
if self._metric is not None:
|
||||
yield self._metric
|
||||
|
||||
def update_data(self, values: Iterable[float]):
|
||||
|
|
Loading…
Reference in a new issue