Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/erikj/fix_cache_size' into msg…
Browse files Browse the repository at this point in the history
…s.tk
  • Loading branch information
krombel committed Mar 18, 2018
2 parents ee9eb18 + 7c7706f commit 8cee539
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
6 changes: 5 additions & 1 deletion synapse/util/caches/dictionary_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,9 +132,13 @@ def update(self, sequence, key, value, full=False, known_absent=None):
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)
8 changes: 4 additions & 4 deletions synapse/util/caches/lrucache.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,14 +154,14 @@ def cache_get(key, default=None, callbacks=[]):
def cache_set(key, value, callbacks=[]):
node = cache.get(key, None)
if node is not None:
if value != node.value:
if node.callbacks and value != node.value:
for cb in node.callbacks:
cb()
node.callbacks.clear()

if size_callback:
cached_cache_len[0] -= size_callback(node.value)
cached_cache_len[0] += size_callback(value)
if size_callback:
cached_cache_len[0] -= size_callback(node.value)
cached_cache_len[0] += size_callback(value)

node.callbacks.update(callbacks)

Expand Down

0 comments on commit 8cee539

Please sign in to comment.