mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2024-12-25 11:09:21 -05:00
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
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.
|
Prometheus, and optimise for that case.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__slots__ = ("_name", "_documentation", "_bucket_bounds", "_metric")
|
__slots__ = (
|
||||||
|
"_name",
|
||||||
|
"_documentation",
|
||||||
|
"_bucket_bounds",
|
||||||
|
"_metric",
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@ -242,11 +247,16 @@ class GaugeBucketCollector:
|
|||||||
if self._bucket_bounds[-1] != float("inf"):
|
if self._bucket_bounds[-1] != float("inf"):
|
||||||
self._bucket_bounds.append(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)
|
registry.register(self)
|
||||||
|
|
||||||
def collect(self):
|
def collect(self):
|
||||||
yield self._metric
|
# 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]):
|
def update_data(self, values: Iterable[float]):
|
||||||
"""Update the data to be reported by the metric
|
"""Update the data to be reported by the metric
|
||||||
|
Loading…
Reference in New Issue
Block a user