summary refs log tree commit diff
path: root/synapse/util/caches/dictionary_cache.py
diff options
context:
space:
mode:
authorKrombel <krombel@krombel.de>2018-03-28 14:45:28 +0200
committerKrombel <krombel@krombel.de>2018-03-28 14:45:28 +0200
commit6152e253d842eb4f72be975850450f00c0662e43 (patch)
tree5fa7c6cef720825e05076190c7d0e1f45565a4b5 /synapse/util/caches/dictionary_cache.py
parentmove handling of auto_join_rooms to RegisterHandler (diff)
parentMerge pull request #3042 from matrix-org/fix_locally_failing_tests (diff)
downloadsynapse-6152e253d842eb4f72be975850450f00c0662e43.tar.xz
Merge branch 'develop' of into allow_auto_join_rooms
Diffstat (limited to 'synapse/util/caches/dictionary_cache.py')
-rw-r--r--synapse/util/caches/dictionary_cache.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/synapse/util/caches/dictionary_cache.py b/synapse/util/caches/dictionary_cache.py
index d4105822b3..1709e8b429 100644
--- a/synapse/util/caches/dictionary_cache.py
+++ b/synapse/util/caches/dictionary_cache.py
@@ -132,9 +132,13 @@ class DictionaryCache(object):
                 self._update_or_insert(key, value, known_absent)
 
     def _update_or_insert(self, key, value, known_absent):
-        entry = self.cache.setdefault(key, DictionaryEntry(False, set(), {}))
+        # We pop and reinsert as we need to tell the cache the size may have
+        # changed
+
+        entry = self.cache.pop(key, DictionaryEntry(False, set(), {}))
         entry.value.update(value)
         entry.known_absent.update(known_absent)
+        self.cache[key] = entry
 
     def _insert(self, key, value, known_absent):
         self.cache[key] = DictionaryEntry(True, known_absent, value)