Skip to content

Commit 6b06bf0

Browse files
committed
Lint
1 parent e0d2d76 commit 6b06bf0

File tree

3 files changed

+90
-52
lines changed

3 files changed

+90
-52
lines changed

synapse/config/experimental.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -446,9 +446,7 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None:
446446
# MSC4140: Delayed events
447447
# The maximum allowed duration for delayed events.
448448
try:
449-
self.msc4140_max_delay = int(
450-
experimental["msc4140_max_delay"]
451-
)
449+
self.msc4140_max_delay = int(experimental["msc4140_max_delay"])
452450
if self.msc4140_max_delay < 0:
453451
raise ValueError
454452
except ValueError:
@@ -457,9 +455,7 @@ def read_config(self, config: JsonDict, **kwargs: Any) -> None:
457455
("experimental", "msc4140_max_delay"),
458456
)
459457
except KeyError:
460-
self.msc4140_max_delay = (
461-
10 * 365 * 24 * 60 * 60 * 1000
462-
) # 10 years
458+
self.msc4140_max_delay = 10 * 365 * 24 * 60 * 60 * 1000 # 10 years
463459

464460
# MSC4151: Report room API (Client-Server API)
465461
self.msc4151_enabled: bool = experimental.get("msc4151_enabled", False)

synapse/handlers/delayed_events.py

Lines changed: 56 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
)
3131

3232
import attr
33+
3334
from twisted.internet.interfaces import IDelayedCall
3435

3536
from synapse.api.constants import EventTypes
@@ -38,14 +39,21 @@
3839
from synapse.logging.opentracing import set_tag
3940
from synapse.metrics.background_process_metrics import run_as_background_process
4041
from synapse.storage.databases.main.delayed_events import (
41-
EventType,
4242
Delay,
4343
DelayID,
44+
EventType,
4445
StateKey,
4546
Timestamp,
4647
UserLocalpart,
4748
)
48-
from synapse.types import JsonDict, Requester, RoomID, StateMap, UserID, create_requester
49+
from synapse.types import (
50+
JsonDict,
51+
Requester,
52+
RoomID,
53+
StateMap,
54+
UserID,
55+
create_requester,
56+
)
4957
from synapse.util.async_helpers import Linearizer, ReadWriteLock
5058
from synapse.util.stringutils import random_string
5159

@@ -89,7 +97,9 @@ def __init__(self, hs: "HomeServer"):
8997

9098
async def _schedule_db_events() -> None:
9199
# TODO: Sync all state first, so that affected delayed state events will be cancelled
92-
events, remaining_timeout_delays = await self.store.process_all_delays(self._get_current_ts())
100+
events, remaining_timeout_delays = await self.store.process_all_delays(
101+
self._get_current_ts()
102+
)
93103
for args in events:
94104
await self._send_event(*args)
95105

@@ -104,7 +114,9 @@ async def _schedule_db_events() -> None:
104114
"_schedule_db_events", _schedule_db_events
105115
)
106116

107-
async def on_new_event(self, event: EventBase, _state_events: StateMap[EventBase]) -> None:
117+
async def on_new_event(
118+
self, event: EventBase, _state_events: StateMap[EventBase]
119+
) -> None:
108120
"""
109121
Checks if a received event is a state event, and if so,
110122
cancels any delayed events that target the same state.
@@ -209,7 +221,7 @@ async def update(self, requester: Requester, delay_id: str, action: str) -> None
209221
except ValueError:
210222
raise SynapseError(
211223
HTTPStatus.BAD_REQUEST,
212-
f"'action' is not one of {', '.join(map(lambda m: m.value, _UpdateDelayedEventAction))}",
224+
f"'action' is not one of {', '.join(m.value for m in _UpdateDelayedEventAction)}",
213225
Codes.INVALID_PARAM,
214226
)
215227

@@ -220,7 +232,9 @@ async def update(self, requester: Requester, delay_id: str, action: str) -> None
220232

221233
async with self._get_delay_context(delay_id, user_localpart):
222234
if enum_action == _UpdateDelayedEventAction.CANCEL:
223-
for removed_timeout_delay_id in await self.store.remove(delay_id, user_localpart):
235+
for removed_timeout_delay_id in await self.store.remove(
236+
delay_id, user_localpart
237+
):
224238
self._unschedule(removed_timeout_delay_id, user_localpart)
225239

226240
elif enum_action == _UpdateDelayedEventAction.RESTART:
@@ -234,22 +248,29 @@ async def update(self, requester: Requester, delay_id: str, action: str) -> None
234248
self._schedule(delay_id, user_localpart, delay)
235249

236250
elif enum_action == _UpdateDelayedEventAction.SEND:
237-
args, removed_timeout_delay_ids = await self.store.pop_event(delay_id, user_localpart)
251+
args, removed_timeout_delay_ids = await self.store.pop_event(
252+
delay_id, user_localpart
253+
)
238254

239255
for timeout_delay_id in removed_timeout_delay_ids:
240256
self._unschedule(timeout_delay_id, user_localpart)
241257
await self._send_event(user_localpart, *args)
242258

243-
async def _send_on_timeout(self, delay_id: DelayID, user_localpart: UserLocalpart) -> None:
259+
async def _send_on_timeout(
260+
self, delay_id: DelayID, user_localpart: UserLocalpart
261+
) -> None:
244262
del self._delayed_calls[_DelayedCallKey(delay_id, user_localpart)]
245263

246264
async with self._get_delay_context(delay_id, user_localpart):
247265
try:
248-
args, removed_timeout_delay_ids = await self.store.pop_event(delay_id, user_localpart)
266+
args, removed_timeout_delay_ids = await self.store.pop_event(
267+
delay_id, user_localpart
268+
)
249269
except NotFoundError:
250270
logger.debug(
251271
"delay_id %s for local user %s was removed after it timed out, but before it was sent on timeout",
252-
delay_id, user_localpart,
272+
delay_id,
273+
user_localpart,
253274
)
254275
return
255276

@@ -268,27 +289,36 @@ def _schedule(
268289
delay_sec = delay / 1000
269290

270291
logger.info(
271-
"Scheduling delayed event %s for local user %s to be sent in %.3fs", delay_id, user_localpart, delay_sec
272-
)
273-
274-
self._delayed_calls[_DelayedCallKey(delay_id, user_localpart)] = self.clock.call_later(
275-
delay_sec,
276-
run_as_background_process,
277-
"_send_on_timeout",
278-
self._send_on_timeout,
292+
"Scheduling delayed event %s for local user %s to be sent in %.3fs",
279293
delay_id,
280294
user_localpart,
295+
delay_sec,
296+
)
297+
298+
self._delayed_calls[_DelayedCallKey(delay_id, user_localpart)] = (
299+
self.clock.call_later(
300+
delay_sec,
301+
run_as_background_process,
302+
"_send_on_timeout",
303+
self._send_on_timeout,
304+
delay_id,
305+
user_localpart,
306+
)
281307
)
282308

283309
def _unschedule(self, delay_id: DelayID, user_localpart: UserLocalpart) -> None:
284-
delayed_call = self._delayed_calls.pop(_DelayedCallKey(delay_id, user_localpart))
310+
delayed_call = self._delayed_calls.pop(
311+
_DelayedCallKey(delay_id, user_localpart)
312+
)
285313
self.clock.cancel_call_later(delayed_call)
286314

287315
async def get_all_for_user(self, requester: Requester) -> List[JsonDict]:
288316
"""Return all pending delayed events requested by the given user."""
289317
await self.request_ratelimiter.ratelimit(requester)
290318
await self._initialized_from_db
291-
return await self.store.get_all_for_user(UserLocalpart(requester.user.localpart))
319+
return await self.store.get_all_for_user(
320+
UserLocalpart(requester.user.localpart)
321+
)
292322

293323
async def _send_event(
294324
self,
@@ -350,13 +380,14 @@ def _get_current_ts(self) -> Timestamp:
350380
return Timestamp(self.clock.time_msec())
351381

352382
@asynccontextmanager
353-
async def _get_delay_context(self, delay_id: DelayID, user_localpart: UserLocalpart) -> AsyncIterator[None]:
383+
async def _get_delay_context(
384+
self, delay_id: DelayID, user_localpart: UserLocalpart
385+
) -> AsyncIterator[None]:
354386
await self._initialized_from_db
355387
# TODO: Use parenthesized context manager once the minimum supported Python version is 3.10
356-
async with\
357-
self._state_lock.read(_STATE_LOCK_KEY),\
358-
self._linearizer.queue(_DelayedCallKey(delay_id, user_localpart))\
359-
:
388+
async with self._state_lock.read(_STATE_LOCK_KEY), self._linearizer.queue(
389+
_DelayedCallKey(delay_id, user_localpart)
390+
):
360391
yield
361392

362393
def _get_state_context(self) -> AsyncContextManager:

synapse/storage/databases/main/delayed_events.py

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,15 @@
1818

1919
from binascii import crc32
2020
from http import HTTPStatus
21-
from typing import (
22-
TYPE_CHECKING,
23-
Any,
24-
Dict,
25-
List,
26-
NewType,
27-
Optional,
28-
Set,
29-
Tuple,
21+
from typing import TYPE_CHECKING, Any, Dict, List, NewType, Optional, Set, Tuple
22+
23+
from synapse.api.errors import (
24+
Codes,
25+
InvalidAPICallError,
26+
NotFoundError,
27+
StoreError,
28+
SynapseError,
3029
)
31-
32-
from synapse.api.errors import Codes, InvalidAPICallError, NotFoundError, StoreError, SynapseError
3330
from synapse.storage._base import SQLBaseStore, db_to_json
3431
from synapse.storage.database import (
3532
DatabasePool,
@@ -127,8 +124,13 @@ def add_txn(txn: LoggingTransaction) -> DelayID:
127124
txn.execute(
128125
sql,
129126
(
130-
delay_id, user_localpart, current_ts,
131-
room_id.to_string(), event_type, state_key, origin_server_ts,
127+
delay_id,
128+
user_localpart,
129+
current_ts,
130+
room_id.to_string(),
131+
event_type,
132+
state_key,
133+
origin_server_ts,
132134
json_encoder.encode(content),
133135
),
134136
)
@@ -151,7 +153,10 @@ def add_txn(txn: LoggingTransaction) -> DelayID:
151153
FROM delayed_events
152154
WHERE delay_id = ? AND user_localpart = ?
153155
""",
154-
(delay_id, user_localpart,)
156+
(
157+
delay_id,
158+
user_localpart,
159+
),
155160
)
156161
row = txn.fetchone()
157162
assert row is not None
@@ -185,7 +190,8 @@ def add_txn(txn: LoggingTransaction) -> DelayID:
185190
""",
186191
(
187192
delay_rowid,
188-
parent_id, user_localpart,
193+
parent_id,
194+
user_localpart,
189195
),
190196
)
191197
except Exception as e:
@@ -355,14 +361,19 @@ def process_all_delays_txn(txn: LoggingTransaction) -> Tuple[
355361
""",
356362
(current_ts,),
357363
)
358-
remaining_timeout_delays = [(
359-
DelayID(row[0]),
360-
UserLocalpart(row[1]),
361-
Delay(row[2]),
362-
) for row in txn]
364+
remaining_timeout_delays = [
365+
(
366+
DelayID(row[0]),
367+
UserLocalpart(row[1]),
368+
Delay(row[2]),
369+
)
370+
for row in txn
371+
]
363372
return events, remaining_timeout_delays
364373

365-
return await self.db_pool.runInteraction("process_all_delays", process_all_delays_txn)
374+
return await self.db_pool.runInteraction(
375+
"process_all_delays", process_all_delays_txn
376+
)
366377

367378
async def pop_event(
368379
self,

0 commit comments

Comments
 (0)