summary refs log tree commit diff
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <paul@matrix.org>2015-03-17 17:24:51 +0000
committerPaul "LeoNerd" Evans <paul@matrix.org>2015-03-17 17:24:51 +0000
commit93978c5e2beb22b097061e58182777e9c2257228 (patch)
tree7abf35f400a4f83f3534f22213641fc6c228b963
parentBe polite and ensure we use @functools.wraps() when creating a function decor... (diff)
downloadsynapse-93978c5e2beb22b097061e58182777e9c2257228.tar.xz
@cached() annotate get_user_by_token() - achieves a minor DB performance improvement
Diffstat (limited to '')
-rw-r--r--synapse/api/auth.py2
-rw-r--r--synapse/storage/registration.py7
2 files changed, 7 insertions, 2 deletions
diff --git a/synapse/api/auth.py b/synapse/api/auth.py
index 90f9eb6847..64f605b962 100644
--- a/synapse/api/auth.py
+++ b/synapse/api/auth.py
@@ -388,7 +388,7 @@ class Auth(object):
             AuthError if no user by that token exists or the token is invalid.
         """
         try:
-            ret = yield self.store.get_user_by_token(token=token)
+            ret = yield self.store.get_user_by_token(token)
             if not ret:
                 raise StoreError(400, "Unknown token")
             user_info = {
diff --git a/synapse/storage/registration.py b/synapse/storage/registration.py
index adc8fc0794..3c2f1d6a15 100644
--- a/synapse/storage/registration.py
+++ b/synapse/storage/registration.py
@@ -19,7 +19,7 @@ from sqlite3 import IntegrityError
 
 from synapse.api.errors import StoreError, Codes
 
-from ._base import SQLBaseStore
+from ._base import SQLBaseStore, cached
 
 
 class RegistrationStore(SQLBaseStore):
@@ -91,6 +91,11 @@ class RegistrationStore(SQLBaseStore):
             "get_user_by_id", self.cursor_to_dict, query, user_id
         )
 
+    @cached()
+    # TODO(paul): Currently there's no code to invalidate this cache. That
+    #   means if/when we ever add internal ways to invalidate access tokens or
+    #   change whether a user is a server admin, those will need to invoke
+    #      store.get_user_by_token.invalidate(token)
     def get_user_by_token(self, token):
         """Get a user from the given access token.