-
Notifications
You must be signed in to change notification settings - Fork 355
Cap total number of concurrent requests per HTTP/2 connection #592
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Cap total number of concurrent requests per HTTP/2 connection #592
Conversation
|
@arturobernalg I do not like this approach. There is already a command queue built into the |
…ommands per connection and fail fast with RejectedExecutionException when the limit is reached.
de6f206 to
b777f5d
Compare
@ok2c . Sorry about the churn — I’m still getting up to speed on this part of the reactor stack and my previous commit took a wrong turn. I dropped the extra wrapper and enforce the cap via the existing |
| * @since 5.5 | ||
| */ | ||
| default int getPendingCommandCount() { | ||
| return 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@arturobernalg I think the method by default return -1 as not known
| * @return {@code true} if the command was enqueued, {@code false} otherwise. | ||
| * @since 5.5 | ||
| */ | ||
| default boolean enqueue(final Command command, final Command.Priority priority, final int maxPendingCommands) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@arturobernalg I would not do that on the i/o session level. Different protocol handlers may have different restrictions. 10 concurrent requests may be perfectly OK for HTTP/2 and too much for HTTP/1.1. Please move this logic to individual protocol handlers.
This change adds an optional hard cap on the number of pending request execution commands queued per HTTP/2 connection. When the per-connection limit is reached, new submissions fail fast with RejectedExecutionException and the exchange handler releases its resources immediately. The cap is configured via H2MultiplexingRequesterBootstrap and passed into H2MultiplexingRequester at construction time to keep requester configuration immutable and avoid API incompatibilities.