Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 9b7ac03

Browse files
authored
Convert calls of async database methods to async (#8166)
1 parent c9fa696 commit 9b7ac03

File tree

14 files changed

+114
-84
lines changed

14 files changed

+114
-84
lines changed

changelog.d/8166.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Convert various parts of the codebase to async/await.

synapse/federation/persistence.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121

2222
import logging
2323

24+
from synapse.federation.units import Transaction
2425
from synapse.logging.utils import log_function
26+
from synapse.types import JsonDict
2527

2628
logger = logging.getLogger(__name__)
2729

@@ -49,15 +51,15 @@ def have_responded(self, origin, transaction):
4951
return self.store.get_received_txn_response(transaction.transaction_id, origin)
5052

5153
@log_function
52-
def set_response(self, origin, transaction, code, response):
54+
async def set_response(
55+
self, origin: str, transaction: Transaction, code: int, response: JsonDict
56+
) -> None:
5357
""" Persist how we responded to a transaction.
54-
55-
Returns:
56-
Deferred
5758
"""
58-
if not transaction.transaction_id:
59+
transaction_id = transaction.transaction_id # type: ignore
60+
if not transaction_id:
5961
raise RuntimeError("Cannot persist a transaction with no transaction_id")
6062

61-
return self.store.set_received_txn_response(
62-
transaction.transaction_id, origin, code, response
63+
await self.store.set_received_txn_response(
64+
transaction_id, origin, code, response
6365
)

synapse/federation/units.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,7 @@ def __init__(self, transaction_id=None, pdus=[], **kwargs):
107107
if "edus" in kwargs and not kwargs["edus"]:
108108
del kwargs["edus"]
109109

110-
super(Transaction, self).__init__(
111-
transaction_id=transaction_id, pdus=pdus, **kwargs
112-
)
110+
super().__init__(transaction_id=transaction_id, pdus=pdus, **kwargs)
113111

114112
@staticmethod
115113
def create_new(pdus, **kwargs):

synapse/storage/databases/main/appservice.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,16 +161,14 @@ async def get_appservice_state(self, service):
161161
return result.get("state")
162162
return None
163163

164-
def set_appservice_state(self, service, state):
164+
async def set_appservice_state(self, service, state) -> None:
165165
"""Set the application service state.
166166
167167
Args:
168168
service(ApplicationService): The service whose state to set.
169169
state(ApplicationServiceState): The connectivity state to apply.
170-
Returns:
171-
An Awaitable which resolves when the state was set successfully.
172170
"""
173-
return self.db_pool.simple_upsert(
171+
await self.db_pool.simple_upsert(
174172
"application_services_state", {"as_id": service.id}, {"state": state}
175173
)
176174

synapse/storage/databases/main/devices.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -716,11 +716,11 @@ async def get_user_ids_requiring_device_list_resync(
716716

717717
return {row["user_id"] for row in rows}
718718

719-
def mark_remote_user_device_cache_as_stale(self, user_id: str):
719+
async def mark_remote_user_device_cache_as_stale(self, user_id: str) -> None:
720720
"""Records that the server has reason to believe the cache of the devices
721721
for the remote users is out of date.
722722
"""
723-
return self.db_pool.simple_upsert(
723+
await self.db_pool.simple_upsert(
724724
table="device_lists_remote_resync",
725725
keyvalues={"user_id": user_id},
726726
values={},

synapse/storage/databases/main/group_server.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,13 @@ def remove_room_from_summary(self, group_id, room_id, category_id):
742742
desc="remove_room_from_summary",
743743
)
744744

745-
def upsert_group_category(self, group_id, category_id, profile, is_public):
745+
async def upsert_group_category(
746+
self,
747+
group_id: str,
748+
category_id: str,
749+
profile: Optional[JsonDict],
750+
is_public: Optional[bool],
751+
) -> None:
746752
"""Add/update room category for group
747753
"""
748754
insertion_values = {}
@@ -758,7 +764,7 @@ def upsert_group_category(self, group_id, category_id, profile, is_public):
758764
else:
759765
update_values["is_public"] = is_public
760766

761-
return self.db_pool.simple_upsert(
767+
await self.db_pool.simple_upsert(
762768
table="group_room_categories",
763769
keyvalues={"group_id": group_id, "category_id": category_id},
764770
values=update_values,
@@ -773,7 +779,13 @@ def remove_group_category(self, group_id, category_id):
773779
desc="remove_group_category",
774780
)
775781

776-
def upsert_group_role(self, group_id, role_id, profile, is_public):
782+
async def upsert_group_role(
783+
self,
784+
group_id: str,
785+
role_id: str,
786+
profile: Optional[JsonDict],
787+
is_public: Optional[bool],
788+
) -> None:
777789
"""Add/remove user role
778790
"""
779791
insertion_values = {}
@@ -789,7 +801,7 @@ def upsert_group_role(self, group_id, role_id, profile, is_public):
789801
else:
790802
update_values["is_public"] = is_public
791803

792-
return self.db_pool.simple_upsert(
804+
await self.db_pool.simple_upsert(
793805
table="group_roles",
794806
keyvalues={"group_id": group_id, "role_id": role_id},
795807
values=update_values,
@@ -938,10 +950,10 @@ def remove_user_from_summary(self, group_id, user_id, role_id):
938950
desc="remove_user_from_summary",
939951
)
940952

941-
def add_group_invite(self, group_id, user_id):
953+
async def add_group_invite(self, group_id: str, user_id: str) -> None:
942954
"""Record that the group server has invited a user
943955
"""
944-
return self.db_pool.simple_insert(
956+
await self.db_pool.simple_insert(
945957
table="group_invites",
946958
values={"group_id": group_id, "user_id": user_id},
947959
desc="add_group_invite",
@@ -1044,8 +1056,10 @@ def _remove_user_from_group_txn(txn):
10441056
"remove_user_from_group", _remove_user_from_group_txn
10451057
)
10461058

1047-
def add_room_to_group(self, group_id, room_id, is_public):
1048-
return self.db_pool.simple_insert(
1059+
async def add_room_to_group(
1060+
self, group_id: str, room_id: str, is_public: bool
1061+
) -> None:
1062+
await self.db_pool.simple_insert(
10491063
table="group_rooms",
10501064
values={"group_id": group_id, "room_id": room_id, "is_public": is_public},
10511065
desc="add_room_to_group",

synapse/storage/databases/main/keys.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -140,22 +140,28 @@ async def store_server_verify_keys(
140140
for i in invalidations:
141141
invalidate((i,))
142142

143-
def store_server_keys_json(
144-
self, server_name, key_id, from_server, ts_now_ms, ts_expires_ms, key_json_bytes
145-
):
143+
async def store_server_keys_json(
144+
self,
145+
server_name: str,
146+
key_id: str,
147+
from_server: str,
148+
ts_now_ms: int,
149+
ts_expires_ms: int,
150+
key_json_bytes: bytes,
151+
) -> None:
146152
"""Stores the JSON bytes for a set of keys from a server
147153
The JSON should be signed by the originating server, the intermediate
148154
server, and by this server. Updates the value for the
149155
(server_name, key_id, from_server) triplet if one already existed.
150156
Args:
151-
server_name (str): The name of the server.
152-
key_id (str): The identifer of the key this JSON is for.
153-
from_server (str): The server this JSON was fetched from.
154-
ts_now_ms (int): The time now in milliseconds.
155-
ts_valid_until_ms (int): The time when this json stops being valid.
156-
key_json (bytes): The encoded JSON.
157+
server_name: The name of the server.
158+
key_id: The identifer of the key this JSON is for.
159+
from_server: The server this JSON was fetched from.
160+
ts_now_ms: The time now in milliseconds.
161+
ts_valid_until_ms: The time when this json stops being valid.
162+
key_json_bytes: The encoded JSON.
157163
"""
158-
return self.db_pool.simple_upsert(
164+
await self.db_pool.simple_upsert(
159165
table="server_keys_json",
160166
keyvalues={
161167
"server_name": server_name,

synapse/storage/databases/main/media_repository.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ async def get_local_media(self, media_id: str) -> Optional[Dict[str, Any]]:
6060
desc="get_local_media",
6161
)
6262

63-
def store_local_media(
63+
async def store_local_media(
6464
self,
6565
media_id,
6666
media_type,
@@ -69,8 +69,8 @@ def store_local_media(
6969
media_length,
7070
user_id,
7171
url_cache=None,
72-
):
73-
return self.db_pool.simple_insert(
72+
) -> None:
73+
await self.db_pool.simple_insert(
7474
"local_media_repository",
7575
{
7676
"media_id": media_id,
@@ -141,10 +141,10 @@ def get_url_cache_txn(txn):
141141

142142
return self.db_pool.runInteraction("get_url_cache", get_url_cache_txn)
143143

144-
def store_url_cache(
144+
async def store_url_cache(
145145
self, url, response_code, etag, expires_ts, og, media_id, download_ts
146146
):
147-
return self.db_pool.simple_insert(
147+
await self.db_pool.simple_insert(
148148
"local_media_repository_url_cache",
149149
{
150150
"url": url,
@@ -172,7 +172,7 @@ async def get_local_media_thumbnails(self, media_id: str) -> List[Dict[str, Any]
172172
desc="get_local_media_thumbnails",
173173
)
174174

175-
def store_local_thumbnail(
175+
async def store_local_thumbnail(
176176
self,
177177
media_id,
178178
thumbnail_width,
@@ -181,7 +181,7 @@ def store_local_thumbnail(
181181
thumbnail_method,
182182
thumbnail_length,
183183
):
184-
return self.db_pool.simple_insert(
184+
await self.db_pool.simple_insert(
185185
"local_media_repository_thumbnails",
186186
{
187187
"media_id": media_id,
@@ -212,7 +212,7 @@ async def get_cached_remote_media(
212212
desc="get_cached_remote_media",
213213
)
214214

215-
def store_cached_remote_media(
215+
async def store_cached_remote_media(
216216
self,
217217
origin,
218218
media_id,
@@ -222,7 +222,7 @@ def store_cached_remote_media(
222222
upload_name,
223223
filesystem_id,
224224
):
225-
return self.db_pool.simple_insert(
225+
await self.db_pool.simple_insert(
226226
"remote_media_cache",
227227
{
228228
"media_origin": origin,
@@ -288,7 +288,7 @@ async def get_remote_media_thumbnails(
288288
desc="get_remote_media_thumbnails",
289289
)
290290

291-
def store_remote_media_thumbnail(
291+
async def store_remote_media_thumbnail(
292292
self,
293293
origin,
294294
media_id,
@@ -299,7 +299,7 @@ def store_remote_media_thumbnail(
299299
thumbnail_method,
300300
thumbnail_length,
301301
):
302-
return self.db_pool.simple_insert(
302+
await self.db_pool.simple_insert(
303303
"remote_media_cache_thumbnails",
304304
{
305305
"media_origin": origin,

synapse/storage/databases/main/openid.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33

44
class OpenIdStore(SQLBaseStore):
5-
def insert_open_id_token(self, token, ts_valid_until_ms, user_id):
6-
return self.db_pool.simple_insert(
5+
async def insert_open_id_token(
6+
self, token: str, ts_valid_until_ms: int, user_id: str
7+
) -> None:
8+
await self.db_pool.simple_insert(
79
table="open_id_tokens",
810
values={
911
"token": token,

synapse/storage/databases/main/profile.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ async def get_from_remote_profile_cache(
6666
desc="get_from_remote_profile_cache",
6767
)
6868

69-
def create_profile(self, user_localpart):
70-
return self.db_pool.simple_insert(
69+
async def create_profile(self, user_localpart: str) -> None:
70+
await self.db_pool.simple_insert(
7171
table="profiles", values={"user_id": user_localpart}, desc="create_profile"
7272
)
7373

@@ -93,13 +93,15 @@ async def set_profile_avatar_url(
9393

9494

9595
class ProfileStore(ProfileWorkerStore):
96-
def add_remote_profile_cache(self, user_id, displayname, avatar_url):
96+
async def add_remote_profile_cache(
97+
self, user_id: str, displayname: str, avatar_url: str
98+
) -> None:
9799
"""Ensure we are caching the remote user's profiles.
98100
99101
This should only be called when `is_subscribed_remote_profile_for_user`
100102
would return true for the user.
101103
"""
102-
return self.db_pool.simple_upsert(
104+
await self.db_pool.simple_upsert(
103105
table="remote_profile_cache",
104106
keyvalues={"user_id": user_id},
105107
values={

synapse/storage/databases/main/registration.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import logging
1919
import re
20-
from typing import Any, Awaitable, Dict, List, Optional
20+
from typing import Any, Dict, List, Optional
2121

2222
from synapse.api.constants import UserTypes
2323
from synapse.api.errors import Codes, StoreError, SynapseError, ThreepidValidationError
@@ -549,23 +549,22 @@ def user_delete_threepids(self, user_id: str):
549549
desc="user_delete_threepids",
550550
)
551551

552-
def add_user_bound_threepid(self, user_id, medium, address, id_server):
552+
async def add_user_bound_threepid(
553+
self, user_id: str, medium: str, address: str, id_server: str
554+
):
553555
"""The server proxied a bind request to the given identity server on
554556
behalf of the given user. We need to remember this in case the user
555557
asks us to unbind the threepid.
556558
557559
Args:
558-
user_id (str)
559-
medium (str)
560-
address (str)
561-
id_server (str)
562-
563-
Returns:
564-
Awaitable
560+
user_id
561+
medium
562+
address
563+
id_server
565564
"""
566565
# We need to use an upsert, in case they user had already bound the
567566
# threepid
568-
return self.db_pool.simple_upsert(
567+
await self.db_pool.simple_upsert(
569568
table="user_threepid_id_server",
570569
keyvalues={
571570
"user_id": user_id,
@@ -1083,17 +1082,17 @@ def _register_user(
10831082

10841083
self._invalidate_cache_and_stream(txn, self.get_user_by_id, (user_id,))
10851084

1086-
def record_user_external_id(
1085+
async def record_user_external_id(
10871086
self, auth_provider: str, external_id: str, user_id: str
1088-
) -> Awaitable:
1087+
) -> None:
10891088
"""Record a mapping from an external user id to a mxid
10901089
10911090
Args:
10921091
auth_provider: identifier for the remote auth provider
10931092
external_id: id on that system
10941093
user_id: complete mxid that it is mapped to
10951094
"""
1096-
return self.db_pool.simple_insert(
1095+
await self.db_pool.simple_insert(
10971096
table="user_external_ids",
10981097
values={
10991098
"auth_provider": auth_provider,
@@ -1237,12 +1236,12 @@ async def is_guest(self, user_id: str) -> bool:
12371236

12381237
return res if res else False
12391238

1240-
def add_user_pending_deactivation(self, user_id):
1239+
async def add_user_pending_deactivation(self, user_id: str) -> None:
12411240
"""
12421241
Adds a user to the table of users who need to be parted from all the rooms they're
12431242
in
12441243
"""
1245-
return self.db_pool.simple_insert(
1244+
await self.db_pool.simple_insert(
12461245
"users_pending_deactivation",
12471246
values={"user_id": user_id},
12481247
desc="add_user_pending_deactivation",

0 commit comments

Comments
 (0)