Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions synapse/handlers/delayed_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,15 @@ async def _handle_state_deltas(self, deltas: List[StateDelta]) -> None:
Process current state deltas to cancel other users' pending delayed events
that target the same state.
"""
# Get the senders of each delta's state event (as sender information is
# not currently stored in the `current_state_deltas` table).
event_id_and_sender_dict = await self._store.get_senders_for_event_ids(
[delta.event_id for delta in deltas if delta.event_id is not None]
)

# Note: No need to batch as `get_current_state_deltas` will only ever
# return 100 rows at a time.
earliest_next_send_ts = None
for delta in deltas:
if delta.event_id is None:
logger.debug(
Expand All @@ -215,10 +224,7 @@ async def _handle_state_deltas(self, deltas: List[StateDelta]) -> None:
"Handling: %r %r, %s", delta.event_type, delta.state_key, delta.event_id
)

event = await self._store.get_event(delta.event_id, allow_none=True)
if not event:
continue
sender = UserID.from_string(event.sender)
sender = UserID.from_string(event_id_and_sender_dict[delta.event_id])

next_send_ts = await self._store.cancel_delayed_state_events(
room_id=delta.room_id,
Expand Down