Skip to content

Commit

Permalink
Reduce work of calculating outbound device pokes (element-hq#17211)
Browse files Browse the repository at this point in the history
  • Loading branch information
erikjohnston authored and Mic92 committed Jun 14, 2024
1 parent e40814b commit 7d32075
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 0 deletions.
1 change: 1 addition & 0 deletions changelog.d/17211.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Reduce work of calculating outbound device lists updates.
7 changes: 7 additions & 0 deletions synapse/handlers/device.py
Original file line number Diff line number Diff line change
Expand Up @@ -906,6 +906,13 @@ async def _handle_new_device_update_async(self) -> None:
context=opentracing_context,
)

await self.store.mark_redundant_device_lists_pokes(
user_id=user_id,
device_id=device_id,
room_id=room_id,
converted_upto_stream_id=stream_id,
)

# Notify replication that we've updated the device list stream.
self.notifier.notify_replication()

Expand Down
24 changes: 24 additions & 0 deletions synapse/storage/databases/main/devices.py
Original file line number Diff line number Diff line change
Expand Up @@ -2161,6 +2161,30 @@ def _add_device_outbound_poke_to_stream_txn(
},
)

async def mark_redundant_device_lists_pokes(
self,
user_id: str,
device_id: str,
room_id: str,
converted_upto_stream_id: int,
) -> None:
"""If we've calculated the outbound pokes for a given room/device list
update, mark any subsequent changes as already converted"""

sql = """
UPDATE device_lists_changes_in_room
SET converted_to_destinations = true
WHERE stream_id > ? AND user_id = ? AND device_id = ?
AND room_id = ? AND NOT converted_to_destinations
"""

def mark_redundant_device_lists_pokes_txn(txn: LoggingTransaction) -> None:
txn.execute(sql, (converted_upto_stream_id, user_id, device_id, room_id))

return await self.db_pool.runInteraction(
"mark_redundant_device_lists_pokes", mark_redundant_device_lists_pokes_txn
)

def _add_device_outbound_room_poke_txn(
self,
txn: LoggingTransaction,
Expand Down

0 comments on commit 7d32075

Please sign in to comment.