diff options
author | Neil Johnson <neil@matrix.org> | 2018-10-25 16:33:40 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-25 16:33:40 +0100 |
commit | 95ad12885134ab1cdd0b21f1e0274e588220f681 (patch) | |
tree | 754bb889ef44463125e6dc9c4dceb07c9949fa81 /synapse/storage/registration.py | |
parent | Merge pull request #3975 from matrix-org/matthew/autocreate_autojoin (diff) | |
parent | add new line (diff) | |
download | synapse-95ad12885134ab1cdd0b21f1e0274e588220f681.tar.xz |
Merge pull request #4081 from matrix-org/neilj/fix_mau_init
fix race condiftion in calling initialise_reserved_users
Diffstat (limited to 'synapse/storage/registration.py')
-rw-r--r-- | synapse/storage/registration.py | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/synapse/storage/registration.py b/synapse/storage/registration.py index 2dd14aba1c..80d76bf9d7 100644 --- a/synapse/storage/registration.py +++ b/synapse/storage/registration.py @@ -474,17 +474,44 @@ class RegistrationStore(RegistrationWorkerStore, @defer.inlineCallbacks def get_user_id_by_threepid(self, medium, address): - ret = yield self._simple_select_one( + """Returns user id from threepid + + Args: + medium (str): threepid medium e.g. email + address (str): threepid address e.g. me@example.com + + Returns: + Deferred[str|None]: user id or None if no user id/threepid mapping exists + """ + user_id = yield self.runInteraction( + "get_user_id_by_threepid", self.get_user_id_by_threepid_txn, + medium, address + ) + defer.returnValue(user_id) + + def get_user_id_by_threepid_txn(self, txn, medium, address): + """Returns user id from threepid + + Args: + txn (cursor): + medium (str): threepid medium e.g. email + address (str): threepid address e.g. me@example.com + + Returns: + str|None: user id or None if no user id/threepid mapping exists + """ + ret = self._simple_select_one_txn( + txn, "user_threepids", { "medium": medium, "address": address }, - ['user_id'], True, 'get_user_id_by_threepid' + ['user_id'], True ) if ret: - defer.returnValue(ret['user_id']) - defer.returnValue(None) + return ret['user_id'] + return None def user_delete_threepid(self, user_id, medium, address): return self._simple_delete( |