mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 16:44:48 -04:00
Combine LruCache.invalidate
and invalidate_many
(#9973)
* Make `invalidate` and `invalidate_many` do the same thing ... so that we can do either over the invalidation replication stream, and also because they always confused me a bit. * Kill off `invalidate_many` * changelog
This commit is contained in:
parent
f42e4c4eb9
commit
224f2f949b
12 changed files with 52 additions and 52 deletions
|
@ -152,7 +152,6 @@ class LruCache(Generic[KT, VT]):
|
|||
"""
|
||||
Least-recently-used cache, supporting prometheus metrics and invalidation callbacks.
|
||||
|
||||
Supports del_multi only if cache_type=TreeCache
|
||||
If cache_type=TreeCache, all keys must be tuples.
|
||||
"""
|
||||
|
||||
|
@ -393,10 +392,16 @@ class LruCache(Generic[KT, VT]):
|
|||
|
||||
@synchronized
|
||||
def cache_del_multi(key: KT) -> None:
|
||||
"""Delete an entry, or tree of entries
|
||||
|
||||
If the LruCache is backed by a regular dict, then "key" must be of
|
||||
the right type for this cache
|
||||
|
||||
If the LruCache is backed by a TreeCache, then "key" must be a tuple, but
|
||||
may be of lower cardinality than the TreeCache - in which case the whole
|
||||
subtree is deleted.
|
||||
"""
|
||||
This will only work if constructed with cache_type=TreeCache
|
||||
"""
|
||||
popped = cache.pop(key)
|
||||
popped = cache.pop(key, None)
|
||||
if popped is None:
|
||||
return
|
||||
# for each deleted node, we now need to remove it from the linked list
|
||||
|
@ -430,11 +435,10 @@ class LruCache(Generic[KT, VT]):
|
|||
self.set = cache_set
|
||||
self.setdefault = cache_set_default
|
||||
self.pop = cache_pop
|
||||
self.del_multi = cache_del_multi
|
||||
# `invalidate` is exposed for consistency with DeferredCache, so that it can be
|
||||
# invalidated by the cache invalidation replication stream.
|
||||
self.invalidate = cache_pop
|
||||
if cache_type is TreeCache:
|
||||
self.del_multi = cache_del_multi
|
||||
self.invalidate = cache_del_multi
|
||||
self.len = synchronized(cache_len)
|
||||
self.contains = cache_contains
|
||||
self.clear = cache_clear
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue