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

Commit da77520

Browse files
authored
Convert additional databases to async/await part 2 (#8200)
1 parent bbb3c86 commit da77520

File tree

15 files changed

+111
-81
lines changed

15 files changed

+111
-81
lines changed

changelog.d/8200.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/events/builder.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
15-
from typing import Optional
15+
from typing import Any, Dict, List, Optional, Tuple, Union
1616

1717
import attr
1818
from nacl.signing import SigningKey
@@ -97,14 +97,14 @@ def state_key(self):
9797
def is_state(self):
9898
return self._state_key is not None
9999

100-
async def build(self, prev_event_ids):
100+
async def build(self, prev_event_ids: List[str]) -> EventBase:
101101
"""Transform into a fully signed and hashed event
102102
103103
Args:
104-
prev_event_ids (list[str]): The event IDs to use as the prev events
104+
prev_event_ids: The event IDs to use as the prev events
105105
106106
Returns:
107-
FrozenEvent
107+
The signed and hashed event.
108108
"""
109109

110110
state_ids = await self._state.get_current_state_ids(
@@ -114,8 +114,13 @@ async def build(self, prev_event_ids):
114114

115115
format_version = self.room_version.event_format
116116
if format_version == EventFormatVersions.V1:
117-
auth_events = await self._store.add_event_hashes(auth_ids)
118-
prev_events = await self._store.add_event_hashes(prev_event_ids)
117+
# The types of auth/prev events changes between event versions.
118+
auth_events = await self._store.add_event_hashes(
119+
auth_ids
120+
) # type: Union[List[str], List[Tuple[str, Dict[str, str]]]]
121+
prev_events = await self._store.add_event_hashes(
122+
prev_event_ids
123+
) # type: Union[List[str], List[Tuple[str, Dict[str, str]]]]
119124
else:
120125
auth_events = auth_ids
121126
prev_events = prev_event_ids
@@ -138,7 +143,7 @@ async def build(self, prev_event_ids):
138143
"unsigned": self.unsigned,
139144
"depth": depth,
140145
"prev_state": [],
141-
}
146+
} # type: Dict[str, Any]
142147

143148
if self.is_state():
144149
event_dict["state_key"] = self._state_key

synapse/handlers/message.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,7 @@
4949
from synapse.replication.http.send_event import ReplicationSendEventRestServlet
5050
from synapse.storage.databases.main.events_worker import EventRedactBehaviour
5151
from synapse.storage.state import StateFilter
52-
from synapse.types import (
53-
Collection,
54-
Requester,
55-
RoomAlias,
56-
StreamToken,
57-
UserID,
58-
create_requester,
59-
)
52+
from synapse.types import Requester, RoomAlias, StreamToken, UserID, create_requester
6053
from synapse.util import json_decoder
6154
from synapse.util.async_helpers import Linearizer
6255
from synapse.util.frozenutils import frozendict_json_encoder
@@ -446,7 +439,7 @@ async def create_event(
446439
event_dict: dict,
447440
token_id: Optional[str] = None,
448441
txn_id: Optional[str] = None,
449-
prev_event_ids: Optional[Collection[str]] = None,
442+
prev_event_ids: Optional[List[str]] = None,
450443
require_consent: bool = True,
451444
) -> Tuple[EventBase, EventContext]:
452445
"""
@@ -786,7 +779,7 @@ async def create_new_client_event(
786779
self,
787780
builder: EventBuilder,
788781
requester: Optional[Requester] = None,
789-
prev_event_ids: Optional[Collection[str]] = None,
782+
prev_event_ids: Optional[List[str]] = None,
790783
) -> Tuple[EventBase, EventContext]:
791784
"""Create a new event for a local client
792785

synapse/handlers/room_member.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,7 @@
3838
from synapse.events.snapshot import EventContext
3939
from synapse.events.validator import EventValidator
4040
from synapse.storage.roommember import RoomsForUser
41-
from synapse.types import (
42-
Collection,
43-
JsonDict,
44-
Requester,
45-
RoomAlias,
46-
RoomID,
47-
StateMap,
48-
UserID,
49-
)
41+
from synapse.types import JsonDict, Requester, RoomAlias, RoomID, StateMap, UserID
5042
from synapse.util.async_helpers import Linearizer
5143
from synapse.util.distributor import user_joined_room, user_left_room
5244

@@ -184,7 +176,7 @@ async def _local_membership_update(
184176
target: UserID,
185177
room_id: str,
186178
membership: str,
187-
prev_event_ids: Collection[str],
179+
prev_event_ids: List[str],
188180
txn_id: Optional[str] = None,
189181
ratelimit: bool = True,
190182
content: Optional[dict] = None,

synapse/storage/databases/main/client_ips.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ async def insert_client_ip(
396396
self._batch_row_update[key] = (user_agent, device_id, now)
397397

398398
@wrap_as_background_process("update_client_ips")
399-
def _update_client_ips_batch(self):
399+
async def _update_client_ips_batch(self) -> None:
400400

401401
# If the DB pool has already terminated, don't try updating
402402
if not self.db_pool.is_running():
@@ -405,7 +405,7 @@ def _update_client_ips_batch(self):
405405
to_update = self._batch_row_update
406406
self._batch_row_update = {}
407407

408-
return self.db_pool.runInteraction(
408+
await self.db_pool.runInteraction(
409409
"_update_client_ips_batch", self._update_client_ips_batch_txn, to_update
410410
)
411411

synapse/storage/databases/main/directory.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,9 @@ def _delete_room_alias_txn(self, txn, room_alias: RoomAlias) -> str:
159159

160160
return room_id
161161

162-
def update_aliases_for_room(
162+
async def update_aliases_for_room(
163163
self, old_room_id: str, new_room_id: str, creator: Optional[str] = None,
164-
):
164+
) -> None:
165165
"""Repoint all of the aliases for a given room, to a different room.
166166
167167
Args:
@@ -189,6 +189,6 @@ def _update_aliases_for_room_txn(txn):
189189
txn, self.get_aliases_for_room, (new_room_id,)
190190
)
191191

192-
return self.db_pool.runInteraction(
192+
await self.db_pool.runInteraction(
193193
"_update_aliases_for_room_txn", _update_aliases_for_room_txn
194194
)

synapse/storage/databases/main/filtering.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
from synapse.api.errors import Codes, SynapseError
1919
from synapse.storage._base import SQLBaseStore, db_to_json
20+
from synapse.types import JsonDict
2021
from synapse.util.caches.descriptors import cached
2122

2223

@@ -40,7 +41,7 @@ async def get_user_filter(self, user_localpart, filter_id):
4041

4142
return db_to_json(def_json)
4243

43-
def add_user_filter(self, user_localpart, user_filter):
44+
async def add_user_filter(self, user_localpart: str, user_filter: JsonDict) -> str:
4445
def_json = encode_canonical_json(user_filter)
4546

4647
# Need an atomic transaction to SELECT the maximal ID so far then
@@ -71,4 +72,4 @@ def _do_txn(txn):
7172

7273
return filter_id
7374

74-
return self.db_pool.runInteraction("add_user_filter", _do_txn)
75+
return await self.db_pool.runInteraction("add_user_filter", _do_txn)

synapse/storage/databases/main/openid.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import Optional
2+
13
from synapse.storage._base import SQLBaseStore
24

35

@@ -15,7 +17,9 @@ async def insert_open_id_token(
1517
desc="insert_open_id_token",
1618
)
1719

18-
def get_user_id_for_open_id_token(self, token, ts_now_ms):
20+
async def get_user_id_for_open_id_token(
21+
self, token: str, ts_now_ms: int
22+
) -> Optional[str]:
1923
def get_user_id_for_token_txn(txn):
2024
sql = (
2125
"SELECT user_id FROM open_id_tokens"
@@ -30,6 +34,6 @@ def get_user_id_for_token_txn(txn):
3034
else:
3135
return rows[0][0]
3236

33-
return self.db_pool.runInteraction(
37+
return await self.db_pool.runInteraction(
3438
"get_user_id_for_token", get_user_id_for_token_txn
3539
)

synapse/storage/databases/main/profile.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,9 @@ async def maybe_delete_remote_profile_cache(self, user_id):
138138
desc="delete_remote_profile_cache",
139139
)
140140

141-
def get_remote_profile_cache_entries_that_expire(self, last_checked):
141+
async def get_remote_profile_cache_entries_that_expire(
142+
self, last_checked: int
143+
) -> Dict[str, str]:
142144
"""Get all users who haven't been checked since `last_checked`
143145
"""
144146

@@ -153,7 +155,7 @@ def _get_remote_profile_cache_entries_that_expire_txn(txn):
153155

154156
return self.db_pool.cursor_to_dict(txn)
155157

156-
return self.db_pool.runInteraction(
158+
return await self.db_pool.runInteraction(
157159
"get_remote_profile_cache_entries_that_expire",
158160
_get_remote_profile_cache_entries_that_expire_txn,
159161
)

synapse/storage/databases/main/push_rule.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
import logging
1919
from typing import List, Tuple, Union
2020

21-
from twisted.internet import defer
22-
2321
from synapse.push.baserules import list_with_base_rules
2422
from synapse.replication.slave.storage._slaved_id_tracker import SlavedIdTracker
2523
from synapse.storage._base import SQLBaseStore, db_to_json
@@ -149,9 +147,11 @@ async def get_push_rules_enabled_for_user(self, user_id):
149147
)
150148
return {r["rule_id"]: False if r["enabled"] == 0 else True for r in results}
151149

152-
def have_push_rules_changed_for_user(self, user_id, last_id):
150+
async def have_push_rules_changed_for_user(
151+
self, user_id: str, last_id: int
152+
) -> bool:
153153
if not self.push_rules_stream_cache.has_entity_changed(user_id, last_id):
154-
return defer.succeed(False)
154+
return False
155155
else:
156156

157157
def have_push_rules_changed_txn(txn):
@@ -163,7 +163,7 @@ def have_push_rules_changed_txn(txn):
163163
(count,) = txn.fetchone()
164164
return bool(count)
165165

166-
return self.db_pool.runInteraction(
166+
return await self.db_pool.runInteraction(
167167
"have_push_rules_changed", have_push_rules_changed_txn
168168
)
169169

0 commit comments

Comments
 (0)