summary refs log tree commit diff
path: root/synapse/util/lrucache.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2015-05-21 17:16:10 +0100
committerErik Johnston <erik@matrix.org>2015-05-21 17:16:10 +0100
commit51f5d36f4fcb9b5bd3b1afbf2dcb9d823f2cf84a (patch)
treea44a6260e7b7f5622785d615a46184e19d21d2ca /synapse/util/lrucache.py
parentMerge branch 'hotfixes-v0.9.0-r4' of github.com:matrix-org/synapse (diff)
parentBump version (diff)
downloadsynapse-51f5d36f4fcb9b5bd3b1afbf2dcb9d823f2cf84a.tar.xz
Merge branch 'hotfixes-v0.9.0-r5' of github.com:matrix-org/synapse
Diffstat (limited to 'synapse/util/lrucache.py')
-rw-r--r--synapse/util/lrucache.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/synapse/util/lrucache.py b/synapse/util/lrucache.py
index 96163c90f1..cacd7e45fa 100644
--- a/synapse/util/lrucache.py
+++ b/synapse/util/lrucache.py
@@ -20,7 +20,6 @@ import threading
 
 class LruCache(object):
     """Least-recently-used cache."""
-    # TODO(mjark) Add mutex for linked list for thread safety.
     def __init__(self, max_size):
         cache = {}
         list_root = []
@@ -106,6 +105,12 @@ class LruCache(object):
                 return default
 
         @synchronized
+        def cache_clear():
+            list_root[NEXT] = list_root
+            list_root[PREV] = list_root
+            cache.clear()
+
+        @synchronized
         def cache_len():
             return len(cache)
 
@@ -120,6 +125,7 @@ class LruCache(object):
         self.pop = cache_pop
         self.len = cache_len
         self.contains = cache_contains
+        self.clear = cache_clear
 
     def __getitem__(self, key):
         result = self.get(key, self.sentinel)