|
30 | 30 | ) |
31 | 31 |
|
32 | 32 | import attr |
33 | | -from twisted.internet import defer |
34 | 33 | from twisted.internet.interfaces import IDelayedCall |
35 | 34 |
|
36 | 35 | from synapse.api.constants import EventTypes |
37 | 36 | from synapse.api.errors import Codes, NotFoundError, ShadowBanError, SynapseError |
38 | 37 | from synapse.events import EventBase |
39 | | -from synapse.logging.context import make_deferred_yieldable |
40 | 38 | from synapse.logging.opentracing import set_tag |
41 | 39 | from synapse.metrics.background_process_metrics import run_as_background_process |
42 | 40 | from synapse.storage.databases.main.delayed_events import ( |
@@ -92,15 +90,8 @@ def __init__(self, hs: "HomeServer"): |
92 | 90 | async def _schedule_db_events() -> None: |
93 | 91 | # TODO: Sync all state first, so that affected delayed state events will be cancelled |
94 | 92 | events, remaining_timeout_delays = await self.store.process_all_delays(self._get_current_ts()) |
95 | | - await make_deferred_yieldable( |
96 | | - defer.gatherResults( |
97 | | - [ |
98 | | - run_as_background_process("_send_event", self._send_event, *args) |
99 | | - for args in events |
100 | | - ], |
101 | | - consumeErrors=True, |
102 | | - ) |
103 | | - ) |
| 93 | + for args in events: |
| 94 | + await self._send_event(*args) |
104 | 95 |
|
105 | 96 | for delay_id, user_localpart, relative_delay in remaining_timeout_delays: |
106 | 97 | self._schedule(delay_id, user_localpart, relative_delay) |
@@ -243,14 +234,11 @@ async def update(self, requester: Requester, delay_id: str, action: str) -> None |
243 | 234 | self._schedule(delay_id, user_localpart, delay) |
244 | 235 |
|
245 | 236 | elif enum_action == _UpdateDelayedEventAction.SEND: |
246 | | - await self._send_now(delay_id, user_localpart) |
247 | | - |
248 | | - async def _send_now(self, delay_id: DelayID, user_localpart: UserLocalpart) -> None: |
249 | | - args, removed_timeout_delay_ids = await self.store.pop_event(delay_id, user_localpart) |
| 237 | + args, removed_timeout_delay_ids = await self.store.pop_event(delay_id, user_localpart) |
250 | 238 |
|
251 | | - for timeout_delay_id in removed_timeout_delay_ids: |
252 | | - self._unschedule(timeout_delay_id, user_localpart) |
253 | | - await self._send_event(user_localpart, *args) |
| 239 | + for timeout_delay_id in removed_timeout_delay_ids: |
| 240 | + self._unschedule(timeout_delay_id, user_localpart) |
| 241 | + await self._send_event(user_localpart, *args) |
254 | 242 |
|
255 | 243 | async def _send_on_timeout(self, delay_id: DelayID, user_localpart: UserLocalpart) -> None: |
256 | 244 | del self._delayed_calls[_DelayedCallKey(delay_id, user_localpart)] |
|
0 commit comments