diff options
author | David Robertson <davidr@element.io> | 2021-09-22 14:21:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-22 14:21:58 +0100 |
commit | 724aef9a878cebc137c81f3b261bafb9302fb592 (patch) | |
tree | 3cb2a487de6407a2ce5e1991e6ca8945171d0f61 /synapse/util/caches/lrucache.py | |
parent | Extend ModuleApi with the methods we'll need to reject spam based on …IP - ... (diff) | |
download | synapse-724aef9a878cebc137c81f3b261bafb9302fb592.tar.xz |
Opt out of cache expiry for `get_users_who_share_room_with_user` (#10826)
* Allow LruCaches to opt out of time-based expiry * Don't expire `get_users_who_share_room` & friends
Diffstat (limited to '')
-rw-r--r-- | synapse/util/caches/lrucache.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/synapse/util/caches/lrucache.py b/synapse/util/caches/lrucache.py index ea6e8dc8d1..4ff62b403f 100644 --- a/synapse/util/caches/lrucache.py +++ b/synapse/util/caches/lrucache.py @@ -202,10 +202,11 @@ class _Node: cache: "weakref.ReferenceType[LruCache]", clock: Clock, callbacks: Collection[Callable[[], None]] = (), + prune_unread_entries: bool = True, ): self._list_node = ListNode.insert_after(self, root) - self._global_list_node = None - if USE_GLOBAL_LIST: + self._global_list_node: Optional[_TimedListNode] = None + if USE_GLOBAL_LIST and prune_unread_entries: self._global_list_node = _TimedListNode.insert_after(self, GLOBAL_ROOT) self._global_list_node.update_last_access(clock) @@ -314,6 +315,7 @@ class LruCache(Generic[KT, VT]): metrics_collection_callback: Optional[Callable[[], None]] = None, apply_cache_factor_from_config: bool = True, clock: Optional[Clock] = None, + prune_unread_entries: bool = True, ): """ Args: @@ -427,7 +429,15 @@ class LruCache(Generic[KT, VT]): self.len = synchronized(cache_len) def add_node(key, value, callbacks: Collection[Callable[[], None]] = ()): - node = _Node(list_root, key, value, weak_ref_to_self, real_clock, callbacks) + node = _Node( + list_root, + key, + value, + weak_ref_to_self, + real_clock, + callbacks, + prune_unread_entries, + ) cache[key] = node if size_callback: |