@cached() annotate get_user_by_token() - achieves a minor DB performance improvement

This commit is contained in:
Paul "LeoNerd" Evans 2015-03-17 17:24:51 +00:00
parent 1489521ee5
commit 93978c5e2b
2 changed files with 7 additions and 2 deletions

View File

@ -388,7 +388,7 @@ class Auth(object):
AuthError if no user by that token exists or the token is invalid. AuthError if no user by that token exists or the token is invalid.
""" """
try: try:
ret = yield self.store.get_user_by_token(token=token) ret = yield self.store.get_user_by_token(token)
if not ret: if not ret:
raise StoreError(400, "Unknown token") raise StoreError(400, "Unknown token")
user_info = { user_info = {

View File

@ -19,7 +19,7 @@ from sqlite3 import IntegrityError
from synapse.api.errors import StoreError, Codes from synapse.api.errors import StoreError, Codes
from ._base import SQLBaseStore from ._base import SQLBaseStore, cached
class RegistrationStore(SQLBaseStore): class RegistrationStore(SQLBaseStore):
@ -91,6 +91,11 @@ class RegistrationStore(SQLBaseStore):
"get_user_by_id", self.cursor_to_dict, query, user_id "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): def get_user_by_token(self, token):
"""Get a user from the given access token. """Get a user from the given access token.