summary refs log tree commit diff
path: root/synapse/util/caches/dictionary_cache.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-08-12 10:13:35 +0100
committerErik Johnston <erik@matrix.org>2015-08-12 10:13:35 +0100
commit4807616e1615bdaaee56f800ba682d0d019de610 (patch)
tree568f2ada12f2cb6c2f23672ee74818ff14e92433 /synapse/util/caches/dictionary_cache.py
parentMove all the caches into their own package, synapse.util.caches (diff)
downloadsynapse-4807616e1615bdaaee56f800ba682d0d019de610.tar.xz
Wire up the dictionarycache to the metrics
Diffstat (limited to 'synapse/util/caches/dictionary_cache.py')
-rw-r--r--synapse/util/caches/dictionary_cache.py56
1 files changed, 25 insertions, 31 deletions
diff --git a/synapse/util/caches/dictionary_cache.py b/synapse/util/caches/dictionary_cache.py
index 26d464f4f7..e69adf62fe 100644
--- a/synapse/util/caches/dictionary_cache.py
+++ b/synapse/util/caches/dictionary_cache.py
@@ -15,6 +15,7 @@
 
 from synapse.util.caches.lrucache import LruCache
 from collections import namedtuple
+from . import caches_by_name, cache_counter
 import threading
 import logging
 
@@ -42,6 +43,7 @@ class DictionaryCache(object):
             __slots__ = []
 
         self.sentinel = Sentinel()
+        caches_by_name[name] = self.cache
 
     def check_thread(self):
         expected_thread = self.thread
@@ -54,25 +56,21 @@ class DictionaryCache(object):
                 )
 
     def get(self, key, dict_keys=None):
-        try:
-            entry = self.cache.get(key, self.sentinel)
-            if entry is not self.sentinel:
-                # cache_counter.inc_hits(self.name)
-
-                if dict_keys is None:
-                    return DictionaryEntry(entry.full, dict(entry.value))
-                else:
-                    return DictionaryEntry(entry.full, {
-                        k: entry.value[k]
-                        for k in dict_keys
-                        if k in entry.value
-                    })
-
-            # cache_counter.inc_misses(self.name)
-            return DictionaryEntry(False, {})
-        except:
-            logger.exception("get failed")
-            raise
+        entry = self.cache.get(key, self.sentinel)
+        if entry is not self.sentinel:
+            cache_counter.inc_hits(self.name)
+
+            if dict_keys is None:
+                return DictionaryEntry(entry.full, dict(entry.value))
+            else:
+                return DictionaryEntry(entry.full, {
+                    k: entry.value[k]
+                    for k in dict_keys
+                    if k in entry.value
+                })
+
+        cache_counter.inc_misses(self.name)
+        return DictionaryEntry(False, {})
 
     def invalidate(self, key):
         self.check_thread()
@@ -88,18 +86,14 @@ class DictionaryCache(object):
         self.cache.clear()
 
     def update(self, sequence, key, value, full=False):
-        try:
-            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 full:
-                    self._insert(key, value)
-                else:
-                    self._update_or_insert(key, value)
-        except:
-            logger.exception("update failed")
-            raise
+        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 full:
+                self._insert(key, value)
+            else:
+                self._update_or_insert(key, value)
 
     def _update_or_insert(self, key, value):
         entry = self.cache.setdefault(key, DictionaryEntry(False, {}))