Skip to content

http: add server factory only factory support to ratelimit#46228

Open
wbpcode wants to merge 1 commit into
envoyproxy:mainfrom
wbpcode:route-factory-ratelimit
Open

http: add server factory only factory support to ratelimit#46228
wbpcode wants to merge 1 commit into
envoyproxy:mainfrom
wbpcode:route-factory-ratelimit

Conversation

@wbpcode

@wbpcode wbpcode commented Jul 17, 2026

Copy link
Copy Markdown
Member

Commit Message: http: add server factory only factory support to ratelimit
Additional Description:
This adds the server-factory-context-only filter factory creation method
(createHttpFilterFactoryFromProtoTyped taking only a ServerFactoryContext,
introduced in #45989) to the ratelimit HTTP filter(s).

This allows these filters to be created in contexts where only a
ServerFactoryContext is available (e.g. route/virtual-host level filter
configuration) rather than requiring the full downstream FactoryContext.
The existing downstream FactoryContext path is preserved and now delegates
to a shared helper, so behavior for existing use cases is unchanged.

Generative AI (Claude) was used to assist with this change. The author fully
understands the code.
Risk Level: Low
Testing: Existing/added unit config tests; CI.
Docs Changes: N/A
Release Notes: N/A
Platform Specific Features: N/A

@repokitteh-read-only

Copy link
Copy Markdown

As a reminder, PRs marked as draft will not be automatically assigned reviewers,
or be handled by maintainer-oncall triage.

Please mark your PR as ready when you want it to be reviewed!

🐱

Caused by: #46228 was opened by wbpcode.

see: more, trace.

Comment on lines -157 to +164
ClientPtr rateLimitClient(Server::Configuration::FactoryContext& context,
ClientPtr rateLimitClient(Server::Configuration::ServerFactoryContext& context,
const Grpc::GrpcServiceConfigWithHashKey& config_with_hash_key,
const std::optional<std::chrono::milliseconds>& timeout) {
// TODO(ramaraochavali): register client to singleton when GrpcClientImpl supports concurrent
// requests.
auto client_or_error =
context.serverFactoryContext()
.clusterManager()
.grpcAsyncClientManager()
.getOrCreateRawAsyncClientWithHashKey(config_with_hash_key, context.scope(), true);
context.clusterManager().grpcAsyncClientManager().getOrCreateRawAsyncClientWithHashKey(
config_with_hash_key, context.scope(), true);

@wbpcode wbpcode Jul 18, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Although this changed the scope that be used to create the client from listener level to server level. But note, grpc client will always create a new scope based on existing scope and listener level scope also have no prefix.
So, finally, no any behavior be changed in the implementation.

… factory context

Signed-off-by: wbpcode <wbphub@gmail.com>
@wbpcode
wbpcode force-pushed the route-factory-ratelimit branch from 87d013b to add052d Compare July 18, 2026 02:15
@wbpcode
wbpcode marked this pull request as ready for review July 18, 2026 02:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant