Lift pausing on ratelimited requests to http layer#18595
Merged
erikjohnston merged 4 commits intodevelopfrom Jun 25, 2025
Merged
Lift pausing on ratelimited requests to http layer#18595erikjohnston merged 4 commits intodevelopfrom
erikjohnston merged 4 commits intodevelopfrom
Conversation
anoadragon453
approved these changes
Jun 25, 2025
Comment on lines
+403
to
+405
| def __init__( | ||
| self, clock: Clock, canonical_json: bool = False, extract_context: bool = False | ||
| ): |
Member
There was a problem hiding this comment.
It turns out that we expose DirectServeJsonResource in the module API, and this change is backward-incompatible for modules that expose endpoints.
Unfortunately therefore I think we need to revert it/find a way to achieve a similar result while remaining backwards-compatible.
erikjohnston
added a commit
that referenced
this pull request
Jun 26, 2025
As that appears in the module API. Broke in #18595.
erikjohnston
added a commit
that referenced
this pull request
Jun 26, 2025
As that appears in the module API. Broke in #18595.
3 tasks
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When a request gets ratelimited we (optionally) wait ~500ms before returning to mitigate clients that like to tightloop on request failures. However, this is currently implemented by pausing request processing when we check for ratelimits, which might be deep within request processing, and e.g. while locks are held. Instead, let's hoist the pause to the very top of the HTTP handler.
Hopefully, this mitigates the issue where a user sending lots of events to a single room can see their requests time out due to the combination of the linearizer and the pausing of the request. Instead, they should see the requests 429 after ~500ms.
The first commit is a refactor to pass the
ClocktoAsyncResource, the second commit is the behavioural change.