4.1.3: Concurrency limits module, and support in Helidon WebServer #9384
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.
Backport of #9295 to Helidon 4.1.3
Description
Resolves #8897
Resolves #9229
Documentation
This PR introduces
common/concurrency/limits
that provides API and SPI for concurrency limit implementations, and a couple of default implementations (AIMD, Fixed).webserver/concurrency-limits
that provides feature with a filter to impose limits within a filter in routingwebserver/webserver
to use aLimit
instead of aSemaphore
in connection handlers (backward compatible)Configuration reference will be in the generated documentation.
Configure limits on WebServer
This will configure limit for a server listener (configurable per listener), enforced on the connection level (i.e. outside of routing and filters).
The default behavior is the same (unlimited).
If
server.max-concurrent-requests
is configured (value is not-1
), it will be used andconcurrency-limit
configuration for the listener will be ignored.Configuration:
Configure limits for routing
This will configure limit for as a server feature, enforced in an HTTP filter.
Configuration: