From 712144e7688333d24e2d6a650d6d9e6676de90fc Mon Sep 17 00:00:00 2001 From: "Olivier Wilkinson (reivilibre)" Date: Tue, 20 Dec 2022 17:56:57 +0000 Subject: Batch up the DB writes when marking failures --- synapse/handlers/device.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'synapse/handlers/device.py') diff --git a/synapse/handlers/device.py b/synapse/handlers/device.py index 0a74e4d266..68a0c8ccb4 100644 --- a/synapse/handlers/device.py +++ b/synapse/handlers/device.py @@ -1212,9 +1212,18 @@ class DeviceListUpdater(DeviceListWorkerUpdater): raise InvalidAPICallError(f"Only one origin permitted, got {origins!r}") result = {} + failed = set() # TODO(Perf): Actually batch these up for user_id in user_ids: - result[user_id] = await self.user_device_resync(user_id) + user_result, user_failed = await self._user_device_resync_returning_failed( + user_id + ) + result[user_id] = user_result + if user_failed: + failed.add(user_id) + + if mark_failed_as_stale: + await self.store.mark_remote_users_device_caches_as_stale(failed) return result @@ -1226,7 +1235,7 @@ class DeviceListUpdater(DeviceListWorkerUpdater): if failed and mark_failed_as_stale: # Mark the remote user's device list as stale so we know we need to retry # it later. - await self.store.mark_remote_user_device_cache_as_stale(user_id) + await self.store.mark_remote_users_device_caches_as_stale((user_id,)) return result -- cgit 1.5.1