diff --git a/synapse/handlers/device.py b/synapse/handlers/device.py index 6b17d9162210..3dd5709aae4e 100644 --- a/synapse/handlers/device.py +++ b/synapse/handlers/device.py @@ -1012,6 +1012,7 @@ def __init__(self, hs: "HomeServer", device_handler: DeviceHandler): self._notifier = hs.get_notifier() self._remote_edu_linearizer = Linearizer(name="remote_device_list") + self._resync_linearizer = Linearizer(name="remote_device_resync") # user_id -> list of updates waiting to be handled. self._pending_updates: Dict[ @@ -1274,9 +1275,11 @@ async def multi_user_device_resync( failed = set() # TODO(Perf): Actually batch these up for user_id in user_ids: - user_result, user_failed = await self._user_device_resync_returning_failed( - user_id - ) + async with self._resync_linearizer.queue(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)