From e605ae2e747f6fad3248b308f852cece35774104 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Sun, 24 Dec 2023 11:20:43 +0000 Subject: [PATCH 1/2] Split up deleting devices into batches --- synapse/storage/databases/main/devices.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/synapse/storage/databases/main/devices.py b/synapse/storage/databases/main/devices.py index 66fabf4f764..ae914298fbc 100644 --- a/synapse/storage/databases/main/devices.py +++ b/synapse/storage/databases/main/devices.py @@ -1794,7 +1794,7 @@ async def delete_devices(self, user_id: str, device_ids: List[str]) -> None: device_ids: The IDs of the devices to delete """ - def _delete_devices_txn(txn: LoggingTransaction) -> None: + def _delete_devices_txn(txn: LoggingTransaction, device_ids: List[str]) -> None: self.db_pool.simple_delete_many_txn( txn, table="devices", @@ -1811,7 +1811,11 @@ def _delete_devices_txn(txn: LoggingTransaction) -> None: keyvalues={"user_id": user_id}, ) - await self.db_pool.runInteraction("delete_devices", _delete_devices_txn) + for batch in batch_iter(device_ids, 100): + await self.db_pool.runInteraction( + "delete_devices", _delete_devices_txn, batch + ) + for device_id in device_ids: self.device_id_exists_cache.invalidate((user_id, device_id)) From ae3761a5e9738d5b3c202fd43f7e60dad7483d8d Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Sun, 24 Dec 2023 11:21:41 +0000 Subject: [PATCH 2/2] Newsfile --- changelog.d/16766.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/16766.misc diff --git a/changelog.d/16766.misc b/changelog.d/16766.misc new file mode 100644 index 00000000000..ded77a11c40 --- /dev/null +++ b/changelog.d/16766.misc @@ -0,0 +1 @@ +Split up deleting devices into batches.