diff --git a/synapse/module_api/__init__.py b/synapse/module_api/__init__.py
index a885076282..16ca86b7bc 100644
--- a/synapse/module_api/__init__.py
+++ b/synapse/module_api/__init__.py
@@ -81,7 +81,7 @@ class PublicRoomListManager:
await self._store.set_room_is_public(room_id, False)
-class ModuleApi(object):
+class ModuleApi:
"""A proxy object that gets passed to various plugin modules so they
can register new users etc if necessary.
"""
@@ -220,8 +220,10 @@ class ModuleApi(object):
external_id: id on that system
user_id: complete mxid that it is mapped to
"""
- return self._store.record_user_external_id(
- auth_provider_id, remote_user_id, registered_user_id
+ return defer.ensureDeferred(
+ self._store.record_user_external_id(
+ auth_provider_id, remote_user_id, registered_user_id
+ )
)
def generate_short_term_login_token(
@@ -247,12 +249,16 @@ class ModuleApi(object):
synapse.api.errors.AuthError: the access token is invalid
"""
# see if the access token corresponds to a device
- user_info = yield self._auth.get_user_by_access_token(access_token)
+ user_info = yield defer.ensureDeferred(
+ self._auth.get_user_by_access_token(access_token)
+ )
device_id = user_info.get("device_id")
user_id = user_info["user"].to_string()
if device_id:
# delete the device, which will also delete its access tokens
- yield self._hs.get_device_handler().delete_device(user_id, device_id)
+ yield defer.ensureDeferred(
+ self._hs.get_device_handler().delete_device(user_id, device_id)
+ )
else:
# no associated device. Just delete the access token.
yield defer.ensureDeferred(
@@ -272,7 +278,9 @@ class ModuleApi(object):
Returns:
Deferred[object]: result of func
"""
- return self._store.db.runInteraction(desc, func, *args, **kwargs)
+ return defer.ensureDeferred(
+ self._store.db_pool.runInteraction(desc, func, *args, **kwargs)
+ )
def complete_sso_login(
self, registered_user_id: str, request: SynapseRequest, client_redirect_url: str
|