diff --git a/changelog.d/18763.bugfix b/changelog.d/18763.bugfix new file mode 100644 index 00000000000..97bb50376a1 --- /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 395d82fd168..f8f58ec6d01 100644 --- a/synapse/http/server.py +++ b/synapse/http/server.py @@ -337,7 +337,7 @@ async def _async_render_wrapper(self, request: "SynapseRequest") -> None: 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 c9a8d106dc9..c10e2d26113 100644 --- a/synapse/storage/databases/main/deviceinbox.py +++ b/synapse/storage/databases/main/deviceinbox.py @@ -1031,7 +1031,7 @@ def _delete_old_federation_inbox_rows_txn(txn: LoggingTransaction) -> bool: # 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