From 41dfb20253dc5e4a3013e812a67a2dfa32f73dba Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Tue, 24 Jun 2025 13:58:32 -0500 Subject: [PATCH] Update `measure_func` to support `HasClockAndMetricsManager` --- synapse/util/metrics.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/synapse/util/metrics.py b/synapse/util/metrics.py index 70d342f0f7..898a3f3dd8 100644 --- a/synapse/util/metrics.py +++ b/synapse/util/metrics.py @@ -54,8 +54,11 @@ P = ParamSpec("P") R = TypeVar("R") -class HasClock(Protocol): +class HasClockAndMetricsManager(Protocol): + # Used to measure functions clock: Clock + # Used to namespace the metrics to the given homeserver + metrics_manager: HomeserverMetricsManager def measure_func( @@ -81,12 +84,14 @@ def measure_func( """ def wrapper( - func: Callable[Concatenate[HasClock, P], Awaitable[R]], + func: Callable[Concatenate[HasClockAndMetricsManager, P], Awaitable[R]], ) -> Callable[P, Awaitable[R]]: block_name = func.__name__ if name is None else name @wraps(func) - async def measured_func(self: HasClock, *args: P.args, **kwargs: P.kwargs) -> R: + async def measured_func( + self: HasClockAndMetricsManager, *args: P.args, **kwargs: P.kwargs + ) -> R: with Measure(self.clock, self.metrics_manager, block_name): r = await func(self, *args, **kwargs) return r