diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2018-06-22 14:01:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-22 14:01:55 +0100 |
commit | bb018d0b5be0f6584ea2b5b274ea4093de47809f (patch) | |
tree | bc4da02b414bd4d193b414522d894a63b452548e /synapse/util | |
parent | Merge pull request #3382 from matrix-org/rav/optimise_state_groups (diff) | |
parent | Disable partial state group caching for wildcard lookups (diff) | |
download | synapse-bb018d0b5be0f6584ea2b5b274ea4093de47809f.tar.xz |
Merge pull request #3383 from matrix-org/rav/hacky_speedup_state_group_cache
Improve StateGroupCache efficiency for wildcard lookups
Diffstat (limited to 'synapse/util')
-rw-r--r-- | synapse/util/caches/dictionary_cache.py | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/synapse/util/caches/dictionary_cache.py b/synapse/util/caches/dictionary_cache.py index bdc21e348f..95793d466d 100644 --- a/synapse/util/caches/dictionary_cache.py +++ b/synapse/util/caches/dictionary_cache.py @@ -107,29 +107,28 @@ class DictionaryCache(object): self.sequence += 1 self.cache.clear() - def update(self, sequence, key, value, full=False, known_absent=None): + def update(self, sequence, key, value, fetched_keys=None): """Updates the entry in the cache Args: sequence - key - value (dict): The value to update the cache with. - full (bool): Whether the given value is the full dict, or just a - partial subset there of. If not full then any existing entries - for the key will be updated. - known_absent (set): Set of keys that we know don't exist in the full - dict. + key (K) + value (dict[X,Y]): The value to update the cache with. + fetched_keys (None|set[X]): All of the dictionary keys which were + fetched from the database. + + If None, this is the complete value for key K. Otherwise, it + is used to infer a list of keys which we know don't exist in + the full dict. """ self.check_thread() if self.sequence == sequence: # Only update the cache if the caches sequence number matches the # number that the cache had before the SELECT was started (SYN-369) - if known_absent is None: - known_absent = set() - if full: - self._insert(key, value, known_absent) + if fetched_keys is None: + self._insert(key, value, set()) else: - self._update_or_insert(key, value, known_absent) + self._update_or_insert(key, value, fetched_keys) def _update_or_insert(self, key, value, known_absent): # We pop and reinsert as we need to tell the cache the size may have |