diff options
author | Erik Johnston <erik@matrix.org> | 2017-01-16 15:33:22 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2017-01-16 15:33:22 +0000 |
commit | 6d00213e80fa51380c8ad7b339e7420edec27f9a (patch) | |
tree | 3190bbea77dd1ef7821ba2d8cf853a5d2fa0d927 | |
parent | Up cache max entries for state (diff) | |
download | synapse-6d00213e80fa51380c8ad7b339e7420edec27f9a.tar.xz |
Use OrderedDict in ExpiringCache
-rw-r--r-- | synapse/util/caches/expiringcache.py | 14 |
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: |