mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Fix a memory leak when running the unit tests. (#13798)
This commit is contained in:
parent
eaed4e6113
commit
cf65433de2
1
changelog.d/13798.misc
Normal file
1
changelog.d/13798.misc
Normal file
@ -0,0 +1 @@
|
||||
Fix a memory leak when running the unit tests.
|
@ -205,8 +205,9 @@ def register_cache(
|
||||
add_resizable_cache(cache_name, resize_callback)
|
||||
|
||||
metric = CacheMetric(cache, cache_type, cache_name, collect_callback)
|
||||
metric_name = "cache_%s_%s" % (cache_type, cache_name)
|
||||
caches_by_name[cache_name] = cache
|
||||
CACHE_METRIC_REGISTRY.register_hook(metric.collect)
|
||||
CACHE_METRIC_REGISTRY.register_hook(metric_name, metric.collect)
|
||||
return metric
|
||||
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
import logging
|
||||
from functools import wraps
|
||||
from types import TracebackType
|
||||
from typing import Awaitable, Callable, Generator, List, Optional, Type, TypeVar
|
||||
from typing import Awaitable, Callable, Dict, Generator, Optional, Type, TypeVar
|
||||
|
||||
from prometheus_client import CollectorRegistry, Counter, Metric
|
||||
from typing_extensions import Concatenate, ParamSpec, Protocol
|
||||
@ -220,21 +220,21 @@ class DynamicCollectorRegistry(CollectorRegistry):
|
||||
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self._pre_update_hooks: List[Callable[[], None]] = []
|
||||
self._pre_update_hooks: Dict[str, Callable[[], None]] = {}
|
||||
|
||||
def collect(self) -> Generator[Metric, None, None]:
|
||||
"""
|
||||
Collects metrics, calling pre-update hooks first.
|
||||
"""
|
||||
|
||||
for pre_update_hook in self._pre_update_hooks:
|
||||
for pre_update_hook in self._pre_update_hooks.values():
|
||||
pre_update_hook()
|
||||
|
||||
yield from super().collect()
|
||||
|
||||
def register_hook(self, hook: Callable[[], None]) -> None:
|
||||
def register_hook(self, metric_name: str, hook: Callable[[], None]) -> None:
|
||||
"""
|
||||
Registers a hook that is called before metric collection.
|
||||
"""
|
||||
|
||||
self._pre_update_hooks.append(hook)
|
||||
self._pre_update_hooks[metric_name] = hook
|
||||
|
Loading…
Reference in New Issue
Block a user