From f49789bfd046f8ce7eec5c8b9ea7f720fbe90833 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Tue, 20 May 2025 13:03:49 -0500 Subject: [PATCH] Fix `LruCache` `@overload` --- synapse/federation/federation_server.py | 11 ++++++++--- synapse/storage/databases/main/client_ips.py | 4 +++- synapse/util/caches/lrucache.py | 5 +---- tests/util/test_lrucache.py | 7 ++++++- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/synapse/federation/federation_server.py b/synapse/federation/federation_server.py index 61cd4a85e4..41d54dfde9 100644 --- a/synapse/federation/federation_server.py +++ b/synapse/federation/federation_server.py @@ -141,7 +141,10 @@ class FederationServer(FederationBase): # We cache results for transaction with the same ID self._transaction_resp_cache: ResponseCache[Tuple[str, str]] = ResponseCache( - hs.get_clock(), "fed_txn_handler", timeout_ms=30000 + hs.get_clock(), + hs.get_cache_manager(), + "fed_txn_handler", + timeout_ms=30000, ) self.transaction_actions = TransactionActions(self.store) @@ -154,13 +157,15 @@ class FederationServer(FederationBase): ResponseCache( hs.get_clock(), hs.get_cache_manager(), - hs.get_cache_manager(), "state_resp", timeout_ms=30000, ) ) self._state_ids_resp_cache: ResponseCache[Tuple[str, str]] = ResponseCache( - hs.get_clock(), hs.get_cache_manager(), "state_ids_resp", timeout_ms=30000 + hs.get_clock(), + hs.get_cache_manager(), + "state_ids_resp", + timeout_ms=30000, ) self._federation_metrics_domains = ( diff --git a/synapse/storage/databases/main/client_ips.py b/synapse/storage/databases/main/client_ips.py index e8c322ab5c..1798ac00f3 100644 --- a/synapse/storage/databases/main/client_ips.py +++ b/synapse/storage/databases/main/client_ips.py @@ -434,7 +434,9 @@ class ClientIpWorkerStore(ClientIpBackgroundUpdateStore, MonthlyActiveUsersWorke # (user_id, access_token, ip,) -> last_seen self.client_ip_last_seen = LruCache[Tuple[str, str, str], int]( - cache_name="client_ip_last_seen", max_size=50000 + max_size=50000, + cache_name="client_ip_last_seen", + cache_manager=hs.get_cache_manager(), ) if hs.config.worker.run_background_tasks and self.user_ips_max_age: diff --git a/synapse/util/caches/lrucache.py b/synapse/util/caches/lrucache.py index 0a87a79228..0bbcd49382 100644 --- a/synapse/util/caches/lrucache.py +++ b/synapse/util/caches/lrucache.py @@ -397,15 +397,12 @@ class LruCache(Generic[KT, VT]): ): ... # If you're *not* providing in the `cache_name`, then you shouldn't provide the - # `cache_manager` + # `cache_manager` or the `metrics_collection_callback` @overload def __init__( self, max_size: int, *, - cache_name: Literal[None], - cache_manager: Literal[None], - metrics_collection_callback: Literal[None], cache_type: Type[Union[dict, TreeCache]] = dict, size_callback: Optional[Callable[[VT], int]] = None, apply_cache_factor_from_config: bool = True, diff --git a/tests/util/test_lrucache.py b/tests/util/test_lrucache.py index af9bb15f9e..2a8b3804b9 100644 --- a/tests/util/test_lrucache.py +++ b/tests/util/test_lrucache.py @@ -96,7 +96,12 @@ class LruCacheTestCase(unittest.HomeserverTestCase): @override_config({"caches": {"per_cache_factors": {"mycache": 10}}}) def test_special_size(self) -> None: - cache: LruCache = LruCache(10, "mycache") + cache: LruCache = LruCache( + 10, + cache_name="mycache", + # TODO + # cache_manager=TODO + ) self.assertEqual(cache.max_size, 100)