diff --git a/changelog.d/18763.bugfix b/changelog.d/18763.bugfix new file mode 100644 index 000000000..97bb50376 --- /dev/null +++ b/changelog.d/18763.bugfix @@ -0,0 +1 @@ +Fix an issue that could cause logcontexts to be lost on rate-limited requests. Found by @realtyem. \ No newline at end of file diff --git a/synapse/http/server.py b/synapse/http/server.py index 395d82fd1..f8f58ec6d 100644 --- a/synapse/http/server.py +++ b/synapse/http/server.py @@ -337,7 +337,7 @@ class _AsyncResource(resource.Resource, metaclass=abc.ABCMeta): callback_return = await self._async_render(request) except LimitExceededError as e: if e.pause: - self._clock.sleep(e.pause) + await self._clock.sleep(e.pause) raise if callback_return is not None: diff --git a/synapse/storage/databases/main/deviceinbox.py b/synapse/storage/databases/main/deviceinbox.py index c9a8d106d..c10e2d261 100644 --- a/synapse/storage/databases/main/deviceinbox.py +++ b/synapse/storage/databases/main/deviceinbox.py @@ -1031,7 +1031,7 @@ class DeviceInboxWorkerStore(SQLBaseStore): # We sleep a bit so that we don't hammer the database in a tight # loop first time we run this. - self._clock.sleep(1) + await self._clock.sleep(1) async def get_devices_with_messages( self, user_id: str, device_ids: StrCollection