summary refs log tree commit diff
path: root/synapse/util
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2017-01-16 15:33:22 +0000
committerErik Johnston <erik@matrix.org>2017-01-16 15:33:22 +0000
commit6d00213e80fa51380c8ad7b339e7420edec27f9a (patch)
tree3190bbea77dd1ef7821ba2d8cf853a5d2fa0d927 /synapse/util
parentUp cache max entries for state (diff)
downloadsynapse-6d00213e80fa51380c8ad7b339e7420edec27f9a.tar.xz
Use OrderedDict in ExpiringCache
Diffstat (limited to 'synapse/util')
-rw-r--r--synapse/util/caches/expiringcache.py14
1 files changed, 4 insertions, 10 deletions
diff --git a/synapse/util/caches/expiringcache.py b/synapse/util/caches/expiringcache.py

index 9b44b3fab3..b9ead9cbd5 100644 --- a/synapse/util/caches/expiringcache.py +++ b/synapse/util/caches/expiringcache.py
@@ -15,6 +15,7 @@ from synapse.util.caches import register_cache +from collections import OrderedDict import logging @@ -49,7 +50,7 @@ class ExpiringCache(object): self._reset_expiry_on_get = reset_expiry_on_get - self._cache = {} + self._cache = OrderedDict() self.metrics = register_cache(cache_name, self) @@ -70,15 +71,8 @@ class ExpiringCache(object): self._cache[key] = _CacheEntry(now, value) # Evict if there are now too many items - if self._max_len and len(self) > self._max_len: - sorted_entries = sorted( - self._cache.keys(), - key=lambda item: item[1].time, - ) - - while len(self) > self._max_len and sorted_entries: - key = sorted_entries.pop() - self._cache.pop(key) + while self._max_len and len(self) > self._max_len: + self._cache.popitem(last=False) def __getitem__(self, key): try: