grpc 1.78.0 → 1.80.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +22 -8
- data/include/grpc/credentials.h +47 -37
- data/include/grpc/credentials_cpp.h +39 -0
- data/include/grpc/event_engine/event_engine.h +8 -3
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/impl/call.h +9 -0
- data/include/grpc/impl/channel_arg_names.h +7 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/private_key_signer.h +104 -0
- data/include/grpc/support/port_platform.h +6 -0
- data/src/core/call/call_filters.h +101 -78
- data/src/core/call/call_spine.h +91 -68
- data/src/core/call/call_state.h +60 -4
- data/src/core/call/client_call.cc +9 -9
- data/src/core/call/client_call.h +1 -1
- data/src/core/call/metadata_batch.cc +2 -0
- data/src/core/call/metadata_batch.h +48 -1
- data/src/core/call/metadata_info.cc +35 -0
- data/src/core/call/metadata_info.h +2 -0
- data/src/core/call/simple_slice_based_metadata.h +2 -1
- data/src/core/channelz/channelz.cc +9 -6
- data/src/core/channelz/channelz.h +7 -4
- data/src/core/channelz/property_list.h +5 -0
- data/src/core/channelz/v2tov1/convert.cc +1 -1
- data/src/core/channelz/v2tov1/legacy_api.cc +164 -307
- data/src/core/client_channel/buffered_call.cc +7 -3
- data/src/core/client_channel/buffered_call.h +11 -5
- data/src/core/client_channel/client_channel.cc +106 -44
- data/src/core/client_channel/client_channel.h +3 -6
- data/src/core/client_channel/client_channel_filter.cc +90 -64
- data/src/core/client_channel/client_channel_filter.h +3 -6
- data/src/core/client_channel/client_channel_internal.h +5 -0
- data/src/core/client_channel/config_selector.h +17 -12
- data/src/core/client_channel/dynamic_filters.cc +8 -7
- data/src/core/client_channel/dynamic_filters.h +7 -5
- data/src/core/client_channel/retry_filter.cc +1 -1
- data/src/core/client_channel/retry_filter.h +2 -2
- data/src/core/client_channel/subchannel.cc +1682 -266
- data/src/core/client_channel/subchannel.h +411 -134
- data/src/core/client_channel/subchannel_stream_client.cc +22 -18
- data/src/core/client_channel/subchannel_stream_client.h +8 -9
- data/src/core/client_channel/subchannel_stream_limiter.cc +76 -0
- data/src/core/client_channel/subchannel_stream_limiter.h +51 -0
- data/src/core/config/config_vars.cc +9 -1
- data/src/core/config/config_vars.h +6 -0
- data/src/core/credentials/call/call_creds_registry.h +51 -22
- data/src/core/credentials/call/call_creds_registry_init.cc +86 -2
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +2 -2
- data/src/core/credentials/call/external/external_account_credentials.cc +11 -4
- data/src/core/credentials/call/external/file_external_account_credentials.cc +2 -2
- data/src/core/credentials/transport/channel_creds_registry.h +71 -20
- data/src/core/credentials/transport/channel_creds_registry_init.cc +338 -29
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +43 -24
- data/src/core/credentials/transport/ssl/ssl_credentials.h +7 -1
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +2 -8
- data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +25 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +7 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +181 -109
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +55 -42
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +28 -23
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.h +26 -23
- data/src/core/credentials/transport/tls/spiffe_utils.cc +2 -2
- data/src/core/credentials/transport/tls/ssl_utils.cc +18 -18
- data/src/core/credentials/transport/tls/ssl_utils.h +12 -10
- data/src/core/credentials/transport/tls/tls_security_connector.cc +106 -74
- data/src/core/credentials/transport/tls/tls_security_connector.h +12 -8
- data/src/core/credentials/transport/xds/xds_credentials.cc +76 -32
- data/src/core/credentials/transport/xds/xds_credentials.h +4 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +117 -35
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +42 -4
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +58 -29
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +19 -11
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +82 -25
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +28 -3
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +9 -7
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +1 -1
- data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +7 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +117 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +2 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +11 -1
- data/src/core/ext/transport/chttp2/transport/frame.cc +2 -15
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/goaway.cc +17 -2
- data/src/core/ext/transport/chttp2/transport/goaway.h +27 -6
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +8 -21
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +101 -40
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +95 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +923 -772
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +406 -423
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +8 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +25 -13
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +71 -24
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +25 -49
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +29 -9
- data/src/core/ext/transport/chttp2/transport/internal.h +6 -2
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +14 -20
- data/src/core/ext/transport/chttp2/transport/keepalive.h +9 -6
- data/src/core/ext/transport/chttp2/transport/parsing.cc +11 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +34 -74
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +123 -79
- data/src/core/ext/transport/chttp2/transport/security_frame.h +233 -3
- data/src/core/ext/transport/chttp2/transport/stream.h +152 -73
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +155 -85
- data/src/core/ext/transport/chttp2/transport/transport_common.h +0 -5
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +8 -7
- data/src/core/ext/transport/chttp2/transport/write_cycle.cc +86 -0
- data/src/core/ext/transport/chttp2/transport/write_cycle.h +355 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +31 -29
- data/src/core/ext/upb-gen/cel/expr/checked.upb.h +1875 -0
- data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c +409 -0
- data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h +56 -0
- data/src/core/ext/upb-gen/cel/expr/syntax.upb.h +2223 -0
- data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c +489 -0
- data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h +60 -0
- data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +2 -1
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +130 -18
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +18 -13
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +70 -38
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +20 -17
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +26 -10
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +8 -7
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h +495 -0
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c +114 -0
- data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +26 -10
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +8 -7
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h +121 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c +54 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +143 -9
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +18 -6
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +112 -11
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +22 -9
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +276 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +60 -5
- data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +4 -0
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +72 -0
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +23 -2
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +129 -13
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +36 -10
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +30 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +5 -3
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +16 -0
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +4 -3
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +31 -0
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +5 -3
- data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +2 -1
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +63 -0
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +12 -7
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +97 -81
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +40 -23
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +604 -228
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +146 -100
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +30 -0
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +5 -3
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +35 -3
- data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +7 -4
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +66 -14
- data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +22 -11
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +87 -0
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +29 -2
- data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +20 -4
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +5 -4
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +239 -60
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +59 -28
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h +89 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c +50 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h +135 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c +53 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h +105 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c +51 -0
- data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +32 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +6 -3
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +206 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +41 -8
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +64 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +4 -3
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +64 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +31 -5
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +283 -14
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +48 -11
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +144 -6
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +35 -7
- data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +42 -21
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +9 -8
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +164 -1
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +37 -6
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +2 -0
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +0 -1
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +26 -11
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +8 -8
- data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +33 -0
- data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +14 -3
- data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +90 -10
- data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +18 -7
- data/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.c +248 -0
- data/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.h +97 -0
- data/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.c +283 -0
- data/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.h +107 -0
- data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +213 -211
- data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +635 -614
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +1012 -1000
- data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +276 -273
- data/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.c +152 -0
- data/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.h +47 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +149 -144
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +367 -370
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.h +37 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +297 -284
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +492 -469
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +74 -43
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +60 -59
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +202 -184
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +354 -339
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +28 -19
- data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +30 -27
- data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +71 -66
- data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +94 -91
- data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +386 -369
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +60 -57
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +1974 -1884
- data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +119 -112
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +62 -51
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +109 -88
- data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +54 -36
- data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +78 -84
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +48 -46
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +1041 -984
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +304 -290
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +94 -77
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +246 -193
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +37 -23
- data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +4 -5
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +113 -87
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +6 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +25 -30
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +14 -20
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +180 -183
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +56 -47
- data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +69 -47
- data/src/core/filter/filter_chain.h +95 -0
- data/src/core/handshaker/http_connect/{http_connect_handshaker.cc → http_connect_client_handshaker.cc} +32 -31
- data/src/core/handshaker/http_connect/{http_connect_handshaker.h → http_connect_client_handshaker.h} +4 -4
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +1 -1
- data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +1 -1
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +14 -13
- data/src/core/handshaker/security/secure_endpoint.cc +282 -68
- data/src/core/handshaker/security/secure_endpoint.h +0 -7
- data/src/core/lib/channel/channel_args.h +1 -1
- data/src/core/lib/channel/promise_based_filter.cc +17 -4
- data/src/core/lib/channel/promise_based_filter.h +3 -2
- data/src/core/lib/debug/trace_flags.cc +2 -0
- data/src/core/lib/debug/trace_flags.h +1 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +35 -8
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +1 -2
- data/src/core/lib/event_engine/event_engine.cc +9 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +0 -3
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +34 -9
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +24 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -3
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +141 -14
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +19 -2
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +7 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +21 -3
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +16 -0
- data/src/core/lib/experiments/experiments.cc +309 -201
- data/src/core/lib/experiments/experiments.h +141 -80
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
- data/src/core/lib/iomgr/resolve_address.h +0 -2
- data/src/core/lib/iomgr/resolved_address.h +0 -2
- data/src/core/lib/iomgr/tcp_posix.cc +13 -5
- data/src/core/lib/iomgr/tcp_server.cc +0 -5
- data/src/core/lib/iomgr/tcp_server.h +0 -7
- data/src/core/lib/iomgr/tcp_server_posix.cc +0 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -3
- data/src/core/lib/iomgr/tcp_server_windows.cc +12 -51
- data/src/core/lib/promise/all_ok.h +17 -12
- data/src/core/lib/promise/cancel_callback.h +12 -13
- data/src/core/lib/promise/detail/join_state.h +626 -0
- data/src/core/lib/promise/detail/promise_factory.h +14 -14
- data/src/core/lib/promise/for_each.h +32 -8
- data/src/core/lib/promise/if.h +9 -7
- data/src/core/lib/promise/loop.h +18 -16
- data/src/core/lib/promise/map.h +54 -47
- data/src/core/lib/promise/mpsc.h +11 -10
- data/src/core/lib/promise/observable.h +6 -6
- data/src/core/lib/promise/party.h +25 -19
- data/src/core/lib/promise/poll.h +5 -5
- data/src/core/lib/promise/prioritized_race.h +10 -7
- data/src/core/lib/promise/promise.h +16 -11
- data/src/core/lib/promise/race.h +6 -5
- data/src/core/lib/promise/seq.h +109 -74
- data/src/core/lib/promise/try_join.h +14 -6
- data/src/core/lib/promise/try_seq.h +76 -60
- data/src/core/lib/resource_quota/api.cc +7 -0
- data/src/core/lib/resource_quota/arena.h +1 -1
- data/src/core/lib/resource_quota/memory_quota.cc +4 -1
- data/src/core/lib/resource_quota/resource_quota.cc +2 -1
- data/src/core/lib/resource_quota/resource_quota.h +3 -0
- data/src/core/lib/resource_quota/stream_quota.cc +77 -1
- data/src/core/lib/resource_quota/stream_quota.h +64 -1
- data/src/core/lib/resource_quota/telemetry.h +1 -1
- data/src/core/lib/surface/call.cc +13 -0
- data/src/core/lib/surface/call_utils.h +58 -43
- data/src/core/lib/surface/channel.h +1 -4
- data/src/core/lib/surface/completion_queue.cc +13 -6
- data/src/core/lib/surface/validate_metadata.cc +20 -15
- data/src/core/lib/surface/validate_metadata.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +1 -1
- data/src/core/lib/transport/promise_endpoint.h +1 -1
- data/src/core/lib/transport/transport.h +5 -0
- data/src/core/load_balancing/health_check_client.cc +1 -15
- data/src/core/load_balancing/health_check_client_internal.h +0 -2
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/oob_backend_metric_internal.h +0 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +12 -9
- data/src/core/plugin_registry/grpc_plugin_registry.cc +3 -2
- data/src/core/resolver/xds/xds_resolver.cc +162 -116
- data/src/core/server/server.cc +18 -1
- data/src/core/server/server.h +2 -0
- data/src/core/server/xds_server_config_fetcher.cc +4 -4
- data/src/core/telemetry/call_tracer.cc +87 -2
- data/src/core/telemetry/call_tracer.h +46 -8
- data/src/core/telemetry/instrument.cc +102 -40
- data/src/core/telemetry/instrument.h +246 -65
- data/src/core/tsi/fake_transport_security.cc +3 -1
- data/src/core/tsi/ssl_transport_security.cc +516 -137
- data/src/core/tsi/ssl_transport_security.h +28 -22
- data/src/core/tsi/ssl_transport_security_utils.cc +2 -2
- data/src/core/tsi/ssl_transport_security_utils.h +2 -2
- data/src/core/util/bitset.h +6 -0
- data/src/core/util/function_signature.h +3 -1
- data/src/core/util/http_client/httpcli_security_connector.cc +2 -1
- data/src/core/util/json/json_reader.cc +0 -4
- data/src/core/xds/grpc/certificate_provider_store.cc +2 -1
- data/src/core/xds/grpc/certificate_provider_store.h +3 -17
- data/src/core/xds/grpc/certificate_provider_store_interface.h +61 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +48 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +18 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +7 -2
- data/src/core/xds/grpc/xds_certificate_provider.h +13 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +13 -6
- data/src/core/xds/grpc/xds_client_grpc.h +10 -7
- data/src/core/xds/grpc/xds_cluster.cc +18 -4
- data/src/core/xds/grpc/xds_cluster.h +17 -2
- data/src/core/xds/grpc/xds_cluster_parser.cc +36 -11
- data/src/core/xds/grpc/xds_common_types.cc +45 -0
- data/src/core/xds/grpc/xds_common_types.h +31 -0
- data/src/core/xds/grpc/xds_common_types_parser.cc +274 -16
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_fault_filter.cc +128 -24
- data/src/core/xds/grpc/xds_http_fault_filter.h +19 -10
- data/src/core/xds/grpc/xds_http_filter.cc +38 -0
- data/src/core/xds/grpc/xds_http_filter.h +70 -47
- data/src/core/xds/grpc/xds_http_filter_registry.cc +48 -14
- data/src/core/xds/grpc/xds_http_filter_registry.h +29 -15
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +88 -22
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +22 -11
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +36 -20
- data/src/core/xds/grpc/xds_http_rbac_filter.h +19 -10
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +143 -26
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +19 -10
- data/src/core/xds/grpc/xds_listener.cc +4 -1
- data/src/core/xds/grpc/xds_listener.h +10 -2
- data/src/core/xds/grpc/xds_listener_parser.cc +23 -18
- data/src/core/xds/grpc/xds_matcher.cc +40 -5
- data/src/core/xds/grpc/xds_matcher.h +13 -0
- data/src/core/xds/grpc/xds_matcher_action.h +1 -1
- data/src/core/xds/grpc/xds_matcher_parse.cc +60 -40
- data/src/core/xds/grpc/xds_matcher_parse.h +2 -1
- data/src/core/xds/grpc/xds_route_config.cc +12 -1
- data/src/core/xds/grpc/xds_route_config.h +15 -2
- data/src/core/xds/grpc/xds_route_config_parser.cc +11 -5
- data/src/core/xds/grpc/xds_routing.cc +181 -6
- data/src/core/xds/grpc/xds_routing.h +57 -0
- data/src/core/xds/grpc/xds_server_grpc.cc +55 -43
- data/src/core/xds/grpc/xds_server_grpc.h +13 -6
- data/src/core/xds/grpc/xds_server_grpc_interface.h +3 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +12 -6
- data/src/core/xds/grpc/xds_transport_grpc.h +5 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +18 -12
- data/src/ruby/lib/grpc/grpc.rb +7 -9
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -1
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_spec.rb +3 -4
- data/src/ruby/spec/spec_helper.rb +1 -1
- metadata +64 -14
- data/src/core/ext/transport/chttp2/transport/security_frame.cc +0 -31
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +0 -597
|
@@ -91,9 +91,10 @@
|
|
|
91
91
|
//
|
|
92
92
|
// 1. `using Backend = ...;`: Specifies the backend type (e.g.,
|
|
93
93
|
// `LowContentionBackend`, `HighContentionBackend`).
|
|
94
|
-
// 2. `
|
|
95
|
-
// of the labels for this domain
|
|
96
|
-
//
|
|
94
|
+
// 2. `GRPC_INSTRUMENT_DOMAIN_LABELS("label1", "label2", ...);`: Defines the
|
|
95
|
+
// names of the labels for this domain via a macro that generates a
|
|
96
|
+
// static `Labels()` method. The types of the labels are inferred from
|
|
97
|
+
// the arguments passed to `GetStorage()`.
|
|
97
98
|
//
|
|
98
99
|
// Instruments are registered as static members within the domain class using
|
|
99
100
|
// the `Register*` methods.
|
|
@@ -102,7 +103,7 @@
|
|
|
102
103
|
// class MyDomain : public InstrumentDomain<MyDomain> {
|
|
103
104
|
// public:
|
|
104
105
|
// using Backend = LowContentionBackend;
|
|
105
|
-
//
|
|
106
|
+
// GRPC_INSTRUMENT_DOMAIN_LABELS("my_label", "another_label");
|
|
106
107
|
//
|
|
107
108
|
// // Register a counter:
|
|
108
109
|
// static inline const auto kMyCounter = RegisterCounter(
|
|
@@ -179,6 +180,7 @@
|
|
|
179
180
|
#include <atomic>
|
|
180
181
|
#include <cstddef>
|
|
181
182
|
#include <cstdint>
|
|
183
|
+
#include <initializer_list>
|
|
182
184
|
#include <memory>
|
|
183
185
|
#include <optional>
|
|
184
186
|
#include <string>
|
|
@@ -191,6 +193,7 @@
|
|
|
191
193
|
#include "src/core/channelz/channelz.h"
|
|
192
194
|
#include "src/core/telemetry/histogram.h"
|
|
193
195
|
#include "src/core/util/avl.h"
|
|
196
|
+
#include "src/core/util/bitset.h"
|
|
194
197
|
#include "src/core/util/dual_ref_counted.h"
|
|
195
198
|
#include "src/core/util/grpc_check.h"
|
|
196
199
|
#include "src/core/util/per_cpu.h"
|
|
@@ -222,6 +225,165 @@ class QueryableDomain;
|
|
|
222
225
|
class DomainStorage;
|
|
223
226
|
} // namespace instrument_detail
|
|
224
227
|
|
|
228
|
+
class InstrumentLabel {
|
|
229
|
+
public:
|
|
230
|
+
static constexpr size_t kMaxLabelsPerProcess = 63;
|
|
231
|
+
static constexpr size_t kMaxLabelsPerDomain = 15;
|
|
232
|
+
|
|
233
|
+
InstrumentLabel() : index_(kSentinelIndex) {}
|
|
234
|
+
explicit InstrumentLabel(absl::string_view label);
|
|
235
|
+
explicit InstrumentLabel(const char* label)
|
|
236
|
+
: InstrumentLabel(absl::string_view(label)) {}
|
|
237
|
+
|
|
238
|
+
static InstrumentLabel FromIndex(uint8_t index) {
|
|
239
|
+
InstrumentLabel label;
|
|
240
|
+
label.index_ = index;
|
|
241
|
+
return label;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
uint8_t index() const { return index_; }
|
|
245
|
+
absl::string_view label() const {
|
|
246
|
+
CHECK_NE(index_, kSentinelIndex);
|
|
247
|
+
std::atomic<const std::string*>* labels = GetLabels();
|
|
248
|
+
const std::string* label = labels[index_].load(std::memory_order_acquire);
|
|
249
|
+
CHECK_NE(label, nullptr)
|
|
250
|
+
<< "Label index " << static_cast<int>(index_) << " is out of range";
|
|
251
|
+
return *label;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
template <typename Sink>
|
|
255
|
+
friend void AbslStringify(Sink& sink, InstrumentLabel label) {
|
|
256
|
+
sink.Append(label.label());
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
template <typename H>
|
|
260
|
+
friend H AbslHashValue(H h, InstrumentLabel label) {
|
|
261
|
+
return H::combine(std::move(h), label.index_);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
friend bool operator==(InstrumentLabel a, InstrumentLabel b) {
|
|
265
|
+
return a.index_ == b.index_;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
friend bool operator!=(InstrumentLabel a, InstrumentLabel b) {
|
|
269
|
+
return a.index_ != b.index_;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
friend bool operator<(InstrumentLabel a, InstrumentLabel b) {
|
|
273
|
+
return a.index_ < b.index_;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
friend bool operator>(InstrumentLabel a, InstrumentLabel b) {
|
|
277
|
+
return a.index_ > b.index_;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
static std::string RegistrationDebugString();
|
|
281
|
+
static std::atomic<const std::string*>* GetLabels();
|
|
282
|
+
|
|
283
|
+
private:
|
|
284
|
+
static constexpr uint8_t kSentinelIndex = 255;
|
|
285
|
+
uint8_t index_ = kSentinelIndex;
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
class InstrumentLabelList;
|
|
289
|
+
|
|
290
|
+
class InstrumentLabelSet {
|
|
291
|
+
public:
|
|
292
|
+
InstrumentLabelSet() = default;
|
|
293
|
+
InstrumentLabelSet(std::initializer_list<absl::string_view> labels) {
|
|
294
|
+
for (const auto& label : labels) {
|
|
295
|
+
set_.set(InstrumentLabel(label).index());
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
void Set(InstrumentLabel label) { set_.set(label.index()); }
|
|
300
|
+
bool empty() const { return set_.none(); }
|
|
301
|
+
bool contains(InstrumentLabel label) const {
|
|
302
|
+
return set_.is_set(label.index());
|
|
303
|
+
}
|
|
304
|
+
void Merge(InstrumentLabelSet other) { set_.Merge(other.set_); }
|
|
305
|
+
InstrumentLabelList ToList() const;
|
|
306
|
+
|
|
307
|
+
private:
|
|
308
|
+
BitSet<InstrumentLabel::kMaxLabelsPerProcess> set_;
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
class InstrumentLabelList {
|
|
312
|
+
public:
|
|
313
|
+
InstrumentLabelList() = default;
|
|
314
|
+
InstrumentLabelList(std::initializer_list<absl::string_view> labels) {
|
|
315
|
+
for (const auto& label : labels) {
|
|
316
|
+
Append(InstrumentLabel(label));
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
void Append(InstrumentLabel label) {
|
|
321
|
+
GRPC_DCHECK_LT(count_, InstrumentLabel::kMaxLabelsPerProcess);
|
|
322
|
+
labels_[count_++] = label;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
bool empty() const { return count_ == 0; }
|
|
326
|
+
size_t size() const { return count_; }
|
|
327
|
+
|
|
328
|
+
InstrumentLabel operator[](size_t i) const {
|
|
329
|
+
DCHECK_LT(i, count_);
|
|
330
|
+
return labels_[i];
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
InstrumentLabelList Remove(InstrumentLabelSet labels);
|
|
334
|
+
|
|
335
|
+
const InstrumentLabel* begin() const { return labels_; }
|
|
336
|
+
const InstrumentLabel* end() const { return labels_ + count_; }
|
|
337
|
+
|
|
338
|
+
std::string DebugString() const;
|
|
339
|
+
|
|
340
|
+
private:
|
|
341
|
+
uint8_t count_ = 0;
|
|
342
|
+
InstrumentLabel labels_[InstrumentLabel::kMaxLabelsPerProcess];
|
|
343
|
+
};
|
|
344
|
+
|
|
345
|
+
template <size_t kNumLabels>
|
|
346
|
+
class FixedInstrumentLabelList {
|
|
347
|
+
public:
|
|
348
|
+
template <typename... Args>
|
|
349
|
+
explicit FixedInstrumentLabelList(Args&&... args)
|
|
350
|
+
: labels_{InstrumentLabel(std::forward<Args>(args))...} {
|
|
351
|
+
static_assert(kNumLabels == sizeof...(args));
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
InstrumentLabel operator[](size_t i) const {
|
|
355
|
+
CHECK_LT(i, kNumLabels);
|
|
356
|
+
return labels_[i];
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
static constexpr size_t count() { return kNumLabels; }
|
|
360
|
+
|
|
361
|
+
InstrumentLabelList ToList() const {
|
|
362
|
+
InstrumentLabelList list;
|
|
363
|
+
for (size_t i = 0; i < kNumLabels; ++i) {
|
|
364
|
+
list.Append(labels_[i]);
|
|
365
|
+
}
|
|
366
|
+
return list;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
private:
|
|
370
|
+
InstrumentLabel labels_[kNumLabels];
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
template <>
|
|
374
|
+
class FixedInstrumentLabelList<0> {
|
|
375
|
+
public:
|
|
376
|
+
explicit FixedInstrumentLabelList() {}
|
|
377
|
+
|
|
378
|
+
InstrumentLabel operator[](size_t i) const {
|
|
379
|
+
LOG(FATAL) << "Index out of bounds: " << i << " for label list of size 0";
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
static constexpr size_t count() { return 0; }
|
|
383
|
+
|
|
384
|
+
InstrumentLabelList ToList() const { return InstrumentLabelList(); }
|
|
385
|
+
};
|
|
386
|
+
|
|
225
387
|
class CollectionScope;
|
|
226
388
|
|
|
227
389
|
class InstrumentMetadata {
|
|
@@ -278,7 +440,7 @@ void RegisterHistogramCollectionHook(HistogramCollectionHook hook);
|
|
|
278
440
|
class CollectionScope : public RefCounted<CollectionScope> {
|
|
279
441
|
public:
|
|
280
442
|
CollectionScope(std::vector<RefCountedPtr<CollectionScope>> parents,
|
|
281
|
-
|
|
443
|
+
InstrumentLabelSet labels_of_interest,
|
|
282
444
|
size_t child_shards_count, size_t storage_shards_count);
|
|
283
445
|
~CollectionScope() override;
|
|
284
446
|
|
|
@@ -287,7 +449,7 @@ class CollectionScope : public RefCounted<CollectionScope> {
|
|
|
287
449
|
void ForEachUniqueStorage(
|
|
288
450
|
absl::FunctionRef<void(instrument_detail::DomainStorage*)> cb);
|
|
289
451
|
|
|
290
|
-
bool ObservesLabel(
|
|
452
|
+
bool ObservesLabel(InstrumentLabel label) const {
|
|
291
453
|
return labels_of_interest_.contains(label);
|
|
292
454
|
}
|
|
293
455
|
|
|
@@ -316,7 +478,7 @@ class CollectionScope : public RefCounted<CollectionScope> {
|
|
|
316
478
|
}
|
|
317
479
|
|
|
318
480
|
std::vector<RefCountedPtr<CollectionScope>> parents_;
|
|
319
|
-
|
|
481
|
+
InstrumentLabelSet labels_of_interest_;
|
|
320
482
|
std::vector<ChildShard> child_shards_;
|
|
321
483
|
std::vector<StorageShard> storage_shards_;
|
|
322
484
|
|
|
@@ -378,6 +540,7 @@ class DomainStorage : public DualRefCounted<DomainStorage>,
|
|
|
378
540
|
|
|
379
541
|
virtual uint64_t SumCounter(size_t index) = 0;
|
|
380
542
|
virtual void Add(DomainStorage* other) = 0;
|
|
543
|
+
virtual void FillGaugeStorage(GaugeStorage& gauge_storage) = 0;
|
|
381
544
|
|
|
382
545
|
// Returns the label values of the CollectionScope that owns this storage.
|
|
383
546
|
// This is the full set of labels published by the domain, with unused labels
|
|
@@ -385,8 +548,6 @@ class DomainStorage : public DualRefCounted<DomainStorage>,
|
|
|
385
548
|
absl::Span<const std::string> label() const { return label_; }
|
|
386
549
|
QueryableDomain* domain() const { return domain_; }
|
|
387
550
|
|
|
388
|
-
virtual void FillGaugeStorage(GaugeStorage& gauge_storage) = 0;
|
|
389
|
-
|
|
390
551
|
void AddData(channelz::DataSink sink) override;
|
|
391
552
|
|
|
392
553
|
private:
|
|
@@ -436,7 +597,7 @@ class QueryableDomain {
|
|
|
436
597
|
absl::FunctionRef<void(const InstrumentMetadata::Description*)> fn);
|
|
437
598
|
|
|
438
599
|
// Returns the names of the labels in the domain.
|
|
439
|
-
|
|
600
|
+
InstrumentLabelList label_names() const { return label_names_; }
|
|
440
601
|
|
|
441
602
|
// Reset the internal state of all domains. For test use only.
|
|
442
603
|
static void TestOnlyResetAll();
|
|
@@ -471,9 +632,9 @@ class QueryableDomain {
|
|
|
471
632
|
}
|
|
472
633
|
|
|
473
634
|
protected:
|
|
474
|
-
QueryableDomain(std::string name,
|
|
635
|
+
QueryableDomain(std::string name, InstrumentLabelList label_names,
|
|
475
636
|
size_t map_shards_size)
|
|
476
|
-
: label_names_(
|
|
637
|
+
: label_names_(label_names),
|
|
477
638
|
map_shards_size_(label_names_.empty() ? 1 : map_shards_size),
|
|
478
639
|
map_shards_(std::make_unique<MapShard[]>(map_shards_size_)),
|
|
479
640
|
name_(std::move(name)) {}
|
|
@@ -550,7 +711,7 @@ class QueryableDomain {
|
|
|
550
711
|
static inline QueryableDomain* last_ = nullptr;
|
|
551
712
|
QueryableDomain* prev_ = nullptr;
|
|
552
713
|
|
|
553
|
-
const
|
|
714
|
+
const InstrumentLabelList label_names_;
|
|
554
715
|
std::vector<const InstrumentMetadata::Description*> metrics_;
|
|
555
716
|
uint64_t allocated_counter_slots_ = 0;
|
|
556
717
|
uint64_t allocated_double_gauge_slots_ = 0;
|
|
@@ -587,6 +748,7 @@ class InstrumentHandle {
|
|
|
587
748
|
absl::string_view name() const { return description_->name; }
|
|
588
749
|
absl::string_view description() const { return description_->description; }
|
|
589
750
|
absl::string_view unit() const { return description_->unit; }
|
|
751
|
+
uint64_t offset() const { return offset_; }
|
|
590
752
|
|
|
591
753
|
private:
|
|
592
754
|
friend Domain;
|
|
@@ -605,12 +767,6 @@ class InstrumentHandle {
|
|
|
605
767
|
const InstrumentMetadata::Description* description_ = nullptr;
|
|
606
768
|
};
|
|
607
769
|
|
|
608
|
-
template <typename T>
|
|
609
|
-
using StdString = std::string;
|
|
610
|
-
|
|
611
|
-
template <typename T>
|
|
612
|
-
using AbslStringView = absl::string_view;
|
|
613
|
-
|
|
614
770
|
} // namespace instrument_detail
|
|
615
771
|
|
|
616
772
|
// A domain backend for low contention domains.
|
|
@@ -670,23 +826,23 @@ class MetricsSink {
|
|
|
670
826
|
public:
|
|
671
827
|
// Called once per label per metric, with the value of that metric for that
|
|
672
828
|
// label.
|
|
673
|
-
virtual void Counter(
|
|
829
|
+
virtual void Counter(InstrumentLabelList label_keys,
|
|
674
830
|
absl::Span<const std::string> label_values,
|
|
675
831
|
absl::string_view name, uint64_t value) = 0;
|
|
676
|
-
virtual void UpDownCounter(
|
|
832
|
+
virtual void UpDownCounter(InstrumentLabelList label_keys,
|
|
677
833
|
absl::Span<const std::string> label_values,
|
|
678
834
|
absl::string_view name, uint64_t value) = 0;
|
|
679
|
-
virtual void Histogram(
|
|
835
|
+
virtual void Histogram(InstrumentLabelList label_keys,
|
|
680
836
|
absl::Span<const std::string> label_values,
|
|
681
837
|
absl::string_view name, HistogramBuckets bounds,
|
|
682
838
|
absl::Span<const uint64_t> counts) = 0;
|
|
683
|
-
virtual void DoubleGauge(
|
|
839
|
+
virtual void DoubleGauge(InstrumentLabelList label_keys,
|
|
684
840
|
absl::Span<const std::string> label_values,
|
|
685
841
|
absl::string_view name, double value) = 0;
|
|
686
|
-
virtual void IntGauge(
|
|
842
|
+
virtual void IntGauge(InstrumentLabelList label_keys,
|
|
687
843
|
absl::Span<const std::string> label_values,
|
|
688
844
|
absl::string_view name, int64_t value) = 0;
|
|
689
|
-
virtual void UintGauge(
|
|
845
|
+
virtual void UintGauge(InstrumentLabelList label_keys,
|
|
690
846
|
absl::Span<const std::string> label_values,
|
|
691
847
|
absl::string_view name, uint64_t value) = 0;
|
|
692
848
|
|
|
@@ -707,7 +863,7 @@ class MetricsQuery {
|
|
|
707
863
|
MetricsQuery& WithLabelEq(absl::string_view label, std::string value);
|
|
708
864
|
// Collapse labels, effectively omitting them. Counters are summed over the
|
|
709
865
|
// remaining dimensions, etc.
|
|
710
|
-
MetricsQuery& CollapseLabels(absl::Span<const
|
|
866
|
+
MetricsQuery& CollapseLabels(absl::Span<const InstrumentLabel> labels);
|
|
711
867
|
// Only include metrics that are in `metrics`.
|
|
712
868
|
MetricsQuery& OnlyMetrics(std::vector<std::string> metrics);
|
|
713
869
|
|
|
@@ -722,16 +878,16 @@ class MetricsQuery {
|
|
|
722
878
|
private:
|
|
723
879
|
// Adapts `sink` by including the filtering requested, and then calls `fn`
|
|
724
880
|
// with the filtering sink. This is mainly an implementation detail.
|
|
725
|
-
void Apply(
|
|
881
|
+
void Apply(InstrumentLabelList label_names,
|
|
726
882
|
absl::FunctionRef<void(MetricsSink&)> fn, MetricsSink& sink) const;
|
|
727
883
|
|
|
728
|
-
void ApplyLabelChecks(
|
|
884
|
+
void ApplyLabelChecks(InstrumentLabelList label_names,
|
|
729
885
|
absl::FunctionRef<void(MetricsSink&)> fn,
|
|
730
886
|
MetricsSink& sink) const;
|
|
731
887
|
|
|
732
|
-
absl::flat_hash_map<
|
|
888
|
+
absl::flat_hash_map<InstrumentLabel, std::string> label_eqs_;
|
|
733
889
|
std::optional<std::vector<std::string>> only_metrics_;
|
|
734
|
-
|
|
890
|
+
InstrumentLabelSet collapsed_labels_;
|
|
735
891
|
};
|
|
736
892
|
|
|
737
893
|
namespace instrument_detail {
|
|
@@ -861,6 +1017,15 @@ class InstrumentDomainImpl final : public QueryableDomain {
|
|
|
861
1017
|
backend_.Add(handle.offset_ + handle.shape_->BucketFor(value), 1);
|
|
862
1018
|
}
|
|
863
1019
|
|
|
1020
|
+
uint64_t SumCounter(size_t offset) override { return backend_.Sum(offset); }
|
|
1021
|
+
void FillGaugeStorage(GaugeStorage& storage) override {
|
|
1022
|
+
GaugeSink sink(storage);
|
|
1023
|
+
MutexLock lock(&gauge_providers_mu_);
|
|
1024
|
+
for (auto* provider : gauge_providers_) {
|
|
1025
|
+
provider->PopulateGaugeData(sink);
|
|
1026
|
+
}
|
|
1027
|
+
}
|
|
1028
|
+
|
|
864
1029
|
private:
|
|
865
1030
|
friend class InstrumentDomainImpl<Backend, N, Tag>;
|
|
866
1031
|
friend class GaugeProvider;
|
|
@@ -870,8 +1035,6 @@ class InstrumentDomainImpl final : public QueryableDomain {
|
|
|
870
1035
|
: DomainStorage(instrument_domain, std::move(labels)),
|
|
871
1036
|
backend_(instrument_domain->allocated_counter_slots()) {}
|
|
872
1037
|
|
|
873
|
-
uint64_t SumCounter(size_t offset) override { return backend_.Sum(offset); }
|
|
874
|
-
|
|
875
1038
|
void RegisterGaugeProvider(GaugeProvider* provider) {
|
|
876
1039
|
MutexLock lock(&gauge_providers_mu_);
|
|
877
1040
|
gauge_providers_.push_back(provider);
|
|
@@ -884,14 +1047,6 @@ class InstrumentDomainImpl final : public QueryableDomain {
|
|
|
884
1047
|
gauge_providers_.end());
|
|
885
1048
|
}
|
|
886
1049
|
|
|
887
|
-
void FillGaugeStorage(GaugeStorage& storage) override {
|
|
888
|
-
GaugeSink sink(storage);
|
|
889
|
-
MutexLock lock(&gauge_providers_mu_);
|
|
890
|
-
for (auto* provider : gauge_providers_) {
|
|
891
|
-
provider->PopulateGaugeData(sink);
|
|
892
|
-
}
|
|
893
|
-
}
|
|
894
|
-
|
|
895
1050
|
Backend backend_;
|
|
896
1051
|
Mutex gauge_providers_mu_;
|
|
897
1052
|
std::vector<GaugeProvider*> gauge_providers_
|
|
@@ -899,10 +1054,9 @@ class InstrumentDomainImpl final : public QueryableDomain {
|
|
|
899
1054
|
};
|
|
900
1055
|
|
|
901
1056
|
GPR_ATTRIBUTE_NOINLINE explicit InstrumentDomainImpl(
|
|
902
|
-
std::string name,
|
|
1057
|
+
std::string name, FixedInstrumentLabelList<N> labels,
|
|
903
1058
|
size_t map_shards = std::min(16u, gpr_cpu_num_cores()))
|
|
904
|
-
: QueryableDomain(std::move(name),
|
|
905
|
-
GRPC_CHECK_EQ(this->label_names().size(), N);
|
|
1059
|
+
: QueryableDomain(std::move(name), labels.ToList(), map_shards) {
|
|
906
1060
|
Constructed();
|
|
907
1061
|
}
|
|
908
1062
|
|
|
@@ -980,30 +1134,20 @@ class InstrumentDomainImpl final : public QueryableDomain {
|
|
|
980
1134
|
~InstrumentDomainImpl() = delete;
|
|
981
1135
|
};
|
|
982
1136
|
|
|
983
|
-
class MakeLabel {
|
|
984
|
-
public:
|
|
985
|
-
template <typename... LabelNames>
|
|
986
|
-
auto operator()(LabelNames... t) {
|
|
987
|
-
return std::vector<std::string>{absl::StrCat(t)...};
|
|
988
|
-
}
|
|
989
|
-
};
|
|
990
|
-
|
|
991
|
-
template <typename... LabelNames>
|
|
992
|
-
GPR_ATTRIBUTE_NOINLINE auto MakeLabelFromTuple(
|
|
993
|
-
std::tuple<LabelNames...> t) noexcept {
|
|
994
|
-
return std::apply(MakeLabel(), t);
|
|
995
|
-
}
|
|
996
1137
|
} // namespace instrument_detail
|
|
997
1138
|
|
|
998
1139
|
template <class Derived>
|
|
999
1140
|
class InstrumentDomain {
|
|
1000
1141
|
public:
|
|
1001
1142
|
static auto* Domain() {
|
|
1002
|
-
static auto
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1143
|
+
static const auto labels = Derived::Labels();
|
|
1144
|
+
static auto* domain =
|
|
1145
|
+
new instrument_detail::InstrumentDomainImpl<typename Derived::Backend,
|
|
1146
|
+
labels.count(), Derived>(
|
|
1147
|
+
absl::StrCat(Derived::kName), labels);
|
|
1148
|
+
for (size_t i = 0; i < labels.count(); ++i) {
|
|
1149
|
+
GRPC_DCHECK_EQ(domain->label_names()[i], labels[i]);
|
|
1150
|
+
}
|
|
1007
1151
|
return domain;
|
|
1008
1152
|
}
|
|
1009
1153
|
|
|
@@ -1017,8 +1161,28 @@ class InstrumentDomain {
|
|
|
1017
1161
|
|
|
1018
1162
|
protected:
|
|
1019
1163
|
template <typename... Label>
|
|
1020
|
-
static
|
|
1021
|
-
|
|
1164
|
+
static FixedInstrumentLabelList<sizeof...(Label)> MakeLabels(
|
|
1165
|
+
Label... labels) {
|
|
1166
|
+
if constexpr (sizeof...(Label) == 0) {
|
|
1167
|
+
return FixedInstrumentLabelList<0>();
|
|
1168
|
+
} else {
|
|
1169
|
+
InstrumentLabel l[] = {InstrumentLabel(labels)...};
|
|
1170
|
+
for (size_t i = 0; i < sizeof...(Label); ++i) {
|
|
1171
|
+
for (size_t j = i + 1; j < sizeof...(Label); ++j) {
|
|
1172
|
+
GRPC_CHECK_NE(l[i], l[j]);
|
|
1173
|
+
}
|
|
1174
|
+
}
|
|
1175
|
+
auto list = FixedInstrumentLabelList<sizeof...(Label)>(
|
|
1176
|
+
std::forward<Label>(labels)...);
|
|
1177
|
+
const std::vector<std::string> label_names{std::string(labels)...};
|
|
1178
|
+
for (size_t i = 0; i < sizeof...(Label); ++i) {
|
|
1179
|
+
CHECK_EQ(label_names[i], list[i].label());
|
|
1180
|
+
for (size_t j = i + 1; j < sizeof...(Label); ++j) {
|
|
1181
|
+
GRPC_CHECK_NE(list[i], list[j]);
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
return list;
|
|
1185
|
+
}
|
|
1022
1186
|
}
|
|
1023
1187
|
|
|
1024
1188
|
static auto RegisterCounter(absl::string_view name,
|
|
@@ -1091,15 +1255,32 @@ void TestOnlyResetInstruments();
|
|
|
1091
1255
|
// parameters for sharding internal data structures.
|
|
1092
1256
|
RefCountedPtr<CollectionScope> CreateCollectionScope(
|
|
1093
1257
|
std::vector<RefCountedPtr<CollectionScope>> parents,
|
|
1094
|
-
|
|
1258
|
+
InstrumentLabelSet labels, size_t child_shards_count = 1,
|
|
1095
1259
|
size_t storage_shards_count = 1);
|
|
1096
1260
|
|
|
1097
1261
|
RefCountedPtr<CollectionScope> CreateRootCollectionScope(
|
|
1098
|
-
|
|
1262
|
+
InstrumentLabelSet labels, size_t child_shards_count = 1,
|
|
1099
1263
|
size_t storage_shards_count = 1);
|
|
1100
1264
|
|
|
1101
1265
|
RefCountedPtr<CollectionScope> GlobalCollectionScope();
|
|
1102
1266
|
|
|
1103
1267
|
} // namespace grpc_core
|
|
1104
1268
|
|
|
1269
|
+
#define GRPC_INSTRUMENT_DOMAIN_LABELS_NUM_LABELS(...) \
|
|
1270
|
+
(std::tuple_size<decltype(std::tuple(__VA_ARGS__))>::value)
|
|
1271
|
+
|
|
1272
|
+
#define GRPC_INSTRUMENT_DOMAIN_LABELS(...) \
|
|
1273
|
+
static grpc_core::FixedInstrumentLabelList< \
|
|
1274
|
+
GRPC_INSTRUMENT_DOMAIN_LABELS_NUM_LABELS(__VA_ARGS__)> \
|
|
1275
|
+
Labels() { \
|
|
1276
|
+
return MakeLabels(__VA_ARGS__); \
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1279
|
+
// GCC-8 has trouble compiling `GRPC_INSTRUMENT_DOMAIN_LABELS()`, so use this
|
|
1280
|
+
// instead if there are no labels for a domain.
|
|
1281
|
+
#define GRPC_EMPTY_INSTRUMENT_DOMAIN_LABELS() \
|
|
1282
|
+
static grpc_core::FixedInstrumentLabelList<0> Labels() { \
|
|
1283
|
+
return grpc_core::FixedInstrumentLabelList<0>(); \
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1105
1286
|
#endif // GRPC_SRC_CORE_TELEMETRY_INSTRUMENT_H
|
|
@@ -396,7 +396,9 @@ static tsi_result fake_protector_unprotect(
|
|
|
396
396
|
}
|
|
397
397
|
|
|
398
398
|
// Now process the protected_bytes.
|
|
399
|
-
if (
|
|
399
|
+
if (*protected_frames_bytes_size == 0) {
|
|
400
|
+
return TSI_OK;
|
|
401
|
+
}
|
|
400
402
|
result = tsi_fake_frame_decode(protected_frames_bytes,
|
|
401
403
|
protected_frames_bytes_size, frame,
|
|
402
404
|
/*error=*/nullptr);
|