Przeglądaj źródła

Fix a memory leak when running the unit tests. (#13798)

tags/v1.68.0rc1
reivilibre 1 rok temu
committed by GitHub
rodzic
commit
cf65433de2
Nie znaleziono w bazie danych klucza dla tego podpisu ID klucza GPG: 4AEE18F83AFDEB23
3 zmienionych plików z 8 dodań i 6 usunięć
  1. +1
    -0
      changelog.d/13798.misc
  2. +2
    -1
      synapse/util/caches/__init__.py
  3. +5
    -5
      synapse/util/metrics.py

+ 1
- 0
changelog.d/13798.misc Wyświetl plik

@@ -0,0 +1 @@
Fix a memory leak when running the unit tests.

+ 2
- 1
synapse/util/caches/__init__.py Wyświetl plik

@@ -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




+ 5
- 5
synapse/util/metrics.py Wyświetl plik

@@ -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

Ładowanie…
Anuluj
Zapisz