-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
ratelimit: add dynamic metadata to ratelimit response #14508
Conversation
Signed-off-by: John Esmet <[email protected]>
CC @envoyproxy/api-shepherds: Your approval is needed for changes made to |
Signed-off-by: John Esmet <[email protected]>
Signed-off-by: John Esmet <[email protected]>
…n every implementation for consistency. Signed-off-by: John Esmet <[email protected]>
Signed-off-by: John Esmet <[email protected]>
Signed-off-by: John Esmet <[email protected]>
Signed-off-by: John Esmet <[email protected]>
Signed-off-by: John Esmet <[email protected]>
I fixed the docs CI job (in theory) so this should be all ready to review now. |
Signed-off-by: John Esmet <[email protected]>
Signed-off-by: John Esmet <[email protected]>
/lgtm api |
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.
Thanks LGTM with small comment.
/wait
// TODO(esmet): This dynamic metadata copy is probably unnecessary, but let's just following the | ||
// existing pattern of copying parameters over as unique pointers for now. | ||
DynamicMetadataPtr dynamic_metadata = | ||
std::make_unique<ProtobufWkt::Struct>(response->dynamic_metadata()); |
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.
We should avoid allocating here if there is no metadata which will be most cases. Can you guard this with has_dynamic_metadata()
?
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.
Yeah that's fair. By doing that, we probably don't even need to optimize away the copy when there is metadata, since the common case is still zero copy/alloc.
So, I'll add the guard and remove the comment.
Signed-off-by: John Esmet <[email protected]>
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.
Thanks!
/retest |
Retrying Azure Pipelines: |
* master: (48 commits) Resolve 14506, avoid libidn2 for our curl dependency (envoyproxy#14601) fix new/free mismatch in Mainthread utility (envoyproxy#14596) opencensus: deprecate Zipkin configuration. (envoyproxy#14576) upstream: clean up code location (envoyproxy#14580) configuration impl: add cast for ios compilation (envoyproxy#14590) buffer impl: add cast for android compilation (envoyproxy#14589) ratelimit: add dynamic metadata to ratelimit response (envoyproxy#14508) tcp_proxy: wait for CONNECT response before start streaming data (envoyproxy#14317) stream info: cleanup address handling (envoyproxy#14432) [deps] update upb to latest commit (envoyproxy#14582) Add utility to check whether the execution is in main thread. (envoyproxy#14457) listener: undeprecate bind_to_port (envoyproxy#14480) Fix data race in overload integration test (envoyproxy#14586) deps: update PGV (envoyproxy#14571) dependencies: update cve_scan.py for some libcurl 7.74.0 false positives. (envoyproxy#14572) Network::Connection: Add L4 crash dumping support (envoyproxy#14509) ssl: remember stat names for configured ciphers. (envoyproxy#14534) formatter: add custom date formatting to downstream cert start and end dates (envoyproxy#14502) feat(lua): allow setting response body when the upstream response body is empty (envoyproxy#14486) Generalize the gRPC access logger base classes (envoyproxy#14469) ... Signed-off-by: Michael Puncel <[email protected]>
Supports setting dynamic metdata from ratelimit responses, similar to ext_authz.
Commit Message: ratelimit: add dynamic-metadata to ratelimit response
Additional Description:
Risk Level: Low (new, opt-in functionality to an extension)
Testing: Expanded existing unit tests for network, http, and thrift filters to include a dynamic metadata case
Docs Changes: API protos documented
Release Notes: ratelimit: added :ref:
dynamic_metadata <envoy_v3_api_field_service.ratelimit.v3.RateLimitResponse.dynamic_metadata>
field to support setting dynamic metadata from the ratelimit service.Platform Specific Features:
Fixes #14507