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
|
@@ -18,18 +18,59 @@
|
|
|
18
18
|
|
|
19
19
|
#include "src/core/telemetry/call_tracer.h"
|
|
20
20
|
|
|
21
|
-
#include <grpc/support/port_platform.h>
|
|
22
|
-
|
|
23
21
|
#include <memory>
|
|
22
|
+
#include <string>
|
|
24
23
|
#include <utility>
|
|
25
24
|
#include <vector>
|
|
26
25
|
|
|
26
|
+
#include "src/core/call/message.h"
|
|
27
|
+
#include "src/core/call/metadata_batch.h"
|
|
28
|
+
#include "src/core/lib/channel/channel_args.h"
|
|
29
|
+
#include "src/core/lib/experiments/experiments.h"
|
|
30
|
+
#include "src/core/lib/iomgr/error.h"
|
|
27
31
|
#include "src/core/lib/promise/context.h"
|
|
32
|
+
#include "src/core/lib/resource_quota/arena.h"
|
|
33
|
+
#include "src/core/lib/transport/call_final_info.h"
|
|
28
34
|
#include "src/core/telemetry/tcp_tracer.h"
|
|
29
35
|
#include "src/core/util/grpc_check.h"
|
|
36
|
+
#include "src/core/util/ref_counted_string.h"
|
|
37
|
+
#include "absl/functional/function_ref.h"
|
|
38
|
+
#include "absl/status/status.h"
|
|
39
|
+
#include "absl/strings/string_view.h"
|
|
40
|
+
#include "absl/types/span.h"
|
|
30
41
|
|
|
31
42
|
namespace grpc_core {
|
|
32
43
|
|
|
44
|
+
std::string SendInitialMetadataAnnotation::ToString() const {
|
|
45
|
+
return "SendInitialMetadata";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
void SendInitialMetadataAnnotation::ForEachKeyValue(
|
|
49
|
+
absl::FunctionRef<void(absl::string_view, ValueType)> f) const {
|
|
50
|
+
metadata_->Log([f](absl::string_view key, absl::string_view value) {
|
|
51
|
+
if (IsMetadataKeyAllowedInDebugOutput(key)) {
|
|
52
|
+
f(key, value);
|
|
53
|
+
} else {
|
|
54
|
+
f(key, "[REDACTED]");
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
std::string SendTrailingMetadataAnnotation::ToString() const {
|
|
60
|
+
return "SendTrailingMetadata";
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
void SendTrailingMetadataAnnotation::ForEachKeyValue(
|
|
64
|
+
absl::FunctionRef<void(absl::string_view, ValueType)> f) const {
|
|
65
|
+
metadata_->Log([f](absl::string_view key, absl::string_view value) {
|
|
66
|
+
if (IsMetadataKeyAllowedInDebugOutput(key)) {
|
|
67
|
+
f(key, value);
|
|
68
|
+
} else {
|
|
69
|
+
f(key, "[REDACTED]");
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
33
74
|
CallTracerInterface::TransportByteSize&
|
|
34
75
|
CallTracerInterface::TransportByteSize::operator+=(
|
|
35
76
|
const CallTracerInterface::TransportByteSize& other) {
|
|
@@ -95,12 +136,24 @@ class DelegatingClientCallTracer : public ClientCallTracerInterface {
|
|
|
95
136
|
tracer->RecordSendInitialMetadata(send_initial_metadata);
|
|
96
137
|
}
|
|
97
138
|
}
|
|
139
|
+
void MutateSendInitialMetadata(
|
|
140
|
+
grpc_metadata_batch* send_initial_metadata) override {
|
|
141
|
+
for (auto* tracer : tracers_) {
|
|
142
|
+
tracer->MutateSendInitialMetadata(send_initial_metadata);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
98
145
|
void RecordSendTrailingMetadata(
|
|
99
146
|
grpc_metadata_batch* send_trailing_metadata) override {
|
|
100
147
|
for (auto* tracer : tracers_) {
|
|
101
148
|
tracer->RecordSendTrailingMetadata(send_trailing_metadata);
|
|
102
149
|
}
|
|
103
150
|
}
|
|
151
|
+
void MutateSendTrailingMetadata(
|
|
152
|
+
grpc_metadata_batch* send_trailing_metadata) override {
|
|
153
|
+
for (auto* tracer : tracers_) {
|
|
154
|
+
tracer->MutateSendTrailingMetadata(send_trailing_metadata);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
104
157
|
void RecordSendMessage(const Message& send_message) override {
|
|
105
158
|
for (auto* tracer : tracers_) {
|
|
106
159
|
tracer->RecordSendMessage(send_message);
|
|
@@ -249,12 +302,24 @@ class DelegatingServerCallTracer : public ServerCallTracerInterface {
|
|
|
249
302
|
tracer->RecordSendInitialMetadata(send_initial_metadata);
|
|
250
303
|
}
|
|
251
304
|
}
|
|
305
|
+
void MutateSendInitialMetadata(
|
|
306
|
+
grpc_metadata_batch* send_initial_metadata) override {
|
|
307
|
+
for (auto* tracer : tracers_) {
|
|
308
|
+
tracer->MutateSendInitialMetadata(send_initial_metadata);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
252
311
|
void RecordSendTrailingMetadata(
|
|
253
312
|
grpc_metadata_batch* send_trailing_metadata) override {
|
|
254
313
|
for (auto* tracer : tracers_) {
|
|
255
314
|
tracer->RecordSendTrailingMetadata(send_trailing_metadata);
|
|
256
315
|
}
|
|
257
316
|
}
|
|
317
|
+
void MutateSendTrailingMetadata(
|
|
318
|
+
grpc_metadata_batch* send_trailing_metadata) override {
|
|
319
|
+
for (auto* tracer : tracers_) {
|
|
320
|
+
tracer->MutateSendTrailingMetadata(send_trailing_metadata);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
258
323
|
void RecordSendMessage(const Message& send_message) override {
|
|
259
324
|
for (auto* tracer : tracers_) {
|
|
260
325
|
tracer->RecordSendMessage(send_message);
|
|
@@ -339,6 +404,26 @@ class DelegatingServerCallTracer : public ServerCallTracerInterface {
|
|
|
339
404
|
std::vector<ServerCallTracerInterface*> tracers_;
|
|
340
405
|
};
|
|
341
406
|
|
|
407
|
+
void CallTracer::RecordSendInitialMetadata(
|
|
408
|
+
grpc_metadata_batch* send_initial_metadata) {
|
|
409
|
+
if (IsCallTracerSendInitialMetadataIsAnAnnotationEnabled()) {
|
|
410
|
+
RecordAnnotation(SendInitialMetadataAnnotation(send_initial_metadata));
|
|
411
|
+
interface_->MutateSendInitialMetadata(send_initial_metadata);
|
|
412
|
+
} else {
|
|
413
|
+
interface_->RecordSendInitialMetadata(send_initial_metadata);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
void CallTracer::RecordSendTrailingMetadata(
|
|
418
|
+
grpc_metadata_batch* send_trailing_metadata) {
|
|
419
|
+
if (IsCallTracerSendTrailingMetadataIsAnAnnotationEnabled()) {
|
|
420
|
+
RecordAnnotation(SendTrailingMetadataAnnotation(send_trailing_metadata));
|
|
421
|
+
interface_->MutateSendTrailingMetadata(send_trailing_metadata);
|
|
422
|
+
} else {
|
|
423
|
+
interface_->RecordSendTrailingMetadata(send_trailing_metadata);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
342
427
|
void SetClientCallTracer(Arena* arena,
|
|
343
428
|
absl::Span<ClientCallTracerInterface* const> tracer) {
|
|
344
429
|
GRPC_DCHECK_EQ(arena->GetContext<CallSpan>(), nullptr);
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
#include <grpc/support/time.h>
|
|
24
24
|
|
|
25
25
|
#include <memory>
|
|
26
|
-
#include <optional>
|
|
27
26
|
#include <string>
|
|
27
|
+
#include <variant>
|
|
28
28
|
|
|
29
29
|
#include "src/core/call/message.h"
|
|
30
30
|
#include "src/core/call/metadata_batch.h"
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
#include "src/core/lib/iomgr/error.h"
|
|
33
33
|
#include "src/core/lib/promise/context.h"
|
|
34
34
|
#include "src/core/lib/resource_quota/arena.h"
|
|
35
|
-
#include "src/core/lib/slice/slice_buffer.h"
|
|
36
35
|
#include "src/core/lib/transport/call_final_info.h"
|
|
37
36
|
#include "src/core/telemetry/tcp_tracer.h"
|
|
38
37
|
#include "src/core/util/ref_counted_string.h"
|
|
38
|
+
#include "absl/functional/function_ref.h"
|
|
39
39
|
#include "absl/status/status.h"
|
|
40
40
|
#include "absl/strings/string_view.h"
|
|
41
41
|
|
|
@@ -70,15 +70,21 @@ class CallTracerAnnotationInterface {
|
|
|
70
70
|
enum class AnnotationType {
|
|
71
71
|
kMetadataSizes,
|
|
72
72
|
kHttpTransport,
|
|
73
|
+
kSendInitialMetadata,
|
|
74
|
+
kSendTrailingMetadata,
|
|
73
75
|
kDoNotUse_MustBeLast,
|
|
74
76
|
};
|
|
75
77
|
|
|
76
78
|
// Base class to define a new type of annotation.
|
|
77
79
|
class Annotation {
|
|
78
80
|
public:
|
|
81
|
+
using ValueType = std::variant<bool, int64_t, double, absl::string_view>;
|
|
82
|
+
|
|
79
83
|
explicit Annotation(AnnotationType type) : type_(type) {}
|
|
80
84
|
AnnotationType type() const { return type_; }
|
|
81
85
|
virtual std::string ToString() const = 0;
|
|
86
|
+
virtual void ForEachKeyValue(
|
|
87
|
+
absl::FunctionRef<void(absl::string_view, ValueType)>) const = 0;
|
|
82
88
|
virtual ~Annotation() = default;
|
|
83
89
|
|
|
84
90
|
private:
|
|
@@ -100,6 +106,38 @@ class CallTracerAnnotationInterface {
|
|
|
100
106
|
virtual bool IsDelegatingTracer() { return false; }
|
|
101
107
|
};
|
|
102
108
|
|
|
109
|
+
class SendInitialMetadataAnnotation final
|
|
110
|
+
: public CallTracerAnnotationInterface::Annotation {
|
|
111
|
+
public:
|
|
112
|
+
explicit SendInitialMetadataAnnotation(grpc_metadata_batch* metadata)
|
|
113
|
+
: Annotation(CallTracerAnnotationInterface::AnnotationType::
|
|
114
|
+
kSendInitialMetadata),
|
|
115
|
+
metadata_(metadata) {}
|
|
116
|
+
const grpc_metadata_batch* metadata() const { return metadata_; }
|
|
117
|
+
std::string ToString() const override;
|
|
118
|
+
void ForEachKeyValue(
|
|
119
|
+
absl::FunctionRef<void(absl::string_view, ValueType)> f) const override;
|
|
120
|
+
|
|
121
|
+
private:
|
|
122
|
+
const grpc_metadata_batch* metadata_;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
class SendTrailingMetadataAnnotation final
|
|
126
|
+
: public CallTracerAnnotationInterface::Annotation {
|
|
127
|
+
public:
|
|
128
|
+
explicit SendTrailingMetadataAnnotation(grpc_metadata_batch* metadata)
|
|
129
|
+
: Annotation(CallTracerAnnotationInterface::AnnotationType::
|
|
130
|
+
kSendTrailingMetadata),
|
|
131
|
+
metadata_(metadata) {}
|
|
132
|
+
const grpc_metadata_batch* metadata() const { return metadata_; }
|
|
133
|
+
std::string ToString() const override;
|
|
134
|
+
void ForEachKeyValue(
|
|
135
|
+
absl::FunctionRef<void(absl::string_view, ValueType)> f) const override;
|
|
136
|
+
|
|
137
|
+
private:
|
|
138
|
+
const grpc_metadata_batch* metadata_;
|
|
139
|
+
};
|
|
140
|
+
|
|
103
141
|
// The base class for CallAttemptTracer and ServerCallTracer.
|
|
104
142
|
// TODO(yashykt): What's a better name for this?
|
|
105
143
|
class CallTracerInterface : public CallTracerAnnotationInterface {
|
|
@@ -109,8 +147,12 @@ class CallTracerInterface : public CallTracerAnnotationInterface {
|
|
|
109
147
|
// arguments.
|
|
110
148
|
virtual void RecordSendInitialMetadata(
|
|
111
149
|
grpc_metadata_batch* send_initial_metadata) = 0;
|
|
150
|
+
virtual void MutateSendInitialMetadata(
|
|
151
|
+
grpc_metadata_batch* send_initial_metadata) = 0;
|
|
112
152
|
virtual void RecordSendTrailingMetadata(
|
|
113
153
|
grpc_metadata_batch* send_trailing_metadata) = 0;
|
|
154
|
+
virtual void MutateSendTrailingMetadata(
|
|
155
|
+
grpc_metadata_batch* send_trailing_metadata) = 0;
|
|
114
156
|
virtual void RecordSendMessage(const Message& send_message) = 0;
|
|
115
157
|
// Only invoked if message was actually compressed.
|
|
116
158
|
virtual void RecordSendCompressedMessage(
|
|
@@ -282,12 +324,8 @@ class CallTracer : public CallSpan {
|
|
|
282
324
|
explicit CallTracer(CallTracerInterface* interface)
|
|
283
325
|
: CallSpan(interface), interface_(interface) {}
|
|
284
326
|
|
|
285
|
-
void RecordSendInitialMetadata(grpc_metadata_batch* send_initial_metadata)
|
|
286
|
-
|
|
287
|
-
}
|
|
288
|
-
void RecordSendTrailingMetadata(grpc_metadata_batch* send_trailing_metadata) {
|
|
289
|
-
interface_->RecordSendTrailingMetadata(send_trailing_metadata);
|
|
290
|
-
}
|
|
327
|
+
void RecordSendInitialMetadata(grpc_metadata_batch* send_initial_metadata);
|
|
328
|
+
void RecordSendTrailingMetadata(grpc_metadata_batch* send_trailing_metadata);
|
|
291
329
|
void RecordSendMessage(const Message& send_message) {
|
|
292
330
|
interface_->RecordSendMessage(send_message);
|
|
293
331
|
}
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
#include "src/core/channelz/channelz.h"
|
|
31
31
|
#include "src/core/channelz/property_list.h"
|
|
32
32
|
#include "src/core/telemetry/histogram.h"
|
|
33
|
+
#include "src/core/util/bitset.h"
|
|
33
34
|
#include "src/core/util/grpc_check.h"
|
|
34
35
|
#include "src/core/util/match.h"
|
|
35
36
|
#include "src/core/util/ref_counted_ptr.h"
|
|
@@ -45,9 +46,71 @@
|
|
|
45
46
|
#include "absl/strings/str_join.h"
|
|
46
47
|
#include "absl/strings/string_view.h"
|
|
47
48
|
#include "absl/types/span.h"
|
|
48
|
-
|
|
49
49
|
namespace grpc_core {
|
|
50
50
|
|
|
51
|
+
std::atomic<const std::string*>* InstrumentLabel::GetLabels() {
|
|
52
|
+
static std::atomic<const std::string*>* static_labels = new std::atomic<
|
|
53
|
+
const std::string*>[InstrumentLabel::kMaxLabelsPerProcess] {};
|
|
54
|
+
return static_labels;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
std::string InstrumentLabel::RegistrationDebugString() {
|
|
58
|
+
return absl::StrJoin(
|
|
59
|
+
absl::MakeSpan(GetLabels(), kMaxLabelsPerProcess), ", ",
|
|
60
|
+
[](std::string* s, const std::atomic<const std::string*>& p) {
|
|
61
|
+
auto* loaded_p = p.load(std::memory_order_acquire);
|
|
62
|
+
if (loaded_p == nullptr) {
|
|
63
|
+
s->append("<null>");
|
|
64
|
+
} else {
|
|
65
|
+
s->append(*loaded_p);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
InstrumentLabel::InstrumentLabel(absl::string_view label) {
|
|
71
|
+
auto* labels = GetLabels();
|
|
72
|
+
std::unique_ptr<std::string> label_copy;
|
|
73
|
+
for (size_t i = 0; i < InstrumentLabel::kMaxLabelsPerProcess; ++i) {
|
|
74
|
+
auto* current_value = labels[i].load(std::memory_order_acquire);
|
|
75
|
+
while (current_value == nullptr) {
|
|
76
|
+
if (label_copy == nullptr) {
|
|
77
|
+
label_copy = std::make_unique<std::string>(label);
|
|
78
|
+
}
|
|
79
|
+
if (!labels[i].compare_exchange_weak(current_value, label_copy.get(),
|
|
80
|
+
std::memory_order_acq_rel)) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
std::ignore = label_copy.release();
|
|
84
|
+
index_ = i;
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
GRPC_CHECK(current_value != nullptr);
|
|
88
|
+
if (*current_value == label) {
|
|
89
|
+
index_ = i;
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
GRPC_CHECK(false) << "Too many instrument labels registered";
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
InstrumentLabelList InstrumentLabelSet::ToList() const {
|
|
97
|
+
InstrumentLabelList list;
|
|
98
|
+
for (size_t i = 0; i < InstrumentLabel::kMaxLabelsPerProcess; ++i) {
|
|
99
|
+
if (set_.is_set(i)) list.Append(InstrumentLabel::FromIndex(i));
|
|
100
|
+
}
|
|
101
|
+
return list;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
std::string InstrumentLabelList::DebugString() const {
|
|
105
|
+
return absl::StrJoin(absl::MakeSpan(labels_, count_), ", ",
|
|
106
|
+
[](std::string* s, const InstrumentLabel& label) {
|
|
107
|
+
s->append(label.label());
|
|
108
|
+
s->append("[idx=");
|
|
109
|
+
s->append(std::to_string(label.index()));
|
|
110
|
+
s->append("]");
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
51
114
|
namespace {
|
|
52
115
|
struct Hook {
|
|
53
116
|
HistogramCollectionHook hook;
|
|
@@ -81,8 +144,8 @@ void CallHistogramCollectionHooks(
|
|
|
81
144
|
|
|
82
145
|
namespace {
|
|
83
146
|
std::vector<std::string> FilterLabels(
|
|
84
|
-
|
|
85
|
-
|
|
147
|
+
InstrumentLabelList domain_label_names,
|
|
148
|
+
InstrumentLabelSet scope_labels_of_interest,
|
|
86
149
|
absl::Span<const std::string> full_label_values) {
|
|
87
150
|
std::vector<std::string> result;
|
|
88
151
|
result.reserve(domain_label_names.size());
|
|
@@ -99,10 +162,10 @@ std::vector<std::string> FilterLabels(
|
|
|
99
162
|
|
|
100
163
|
CollectionScope::CollectionScope(
|
|
101
164
|
std::vector<RefCountedPtr<CollectionScope>> parents,
|
|
102
|
-
|
|
165
|
+
InstrumentLabelSet labels_of_interest, size_t child_shards_count,
|
|
103
166
|
size_t storage_shards_count)
|
|
104
167
|
: parents_(std::move(parents)),
|
|
105
|
-
labels_of_interest_(
|
|
168
|
+
labels_of_interest_(labels_of_interest),
|
|
106
169
|
child_shards_(child_shards_count),
|
|
107
170
|
storage_shards_(storage_shards_count) {
|
|
108
171
|
// Sort parents (by address) and then remove any duplicates.
|
|
@@ -110,8 +173,7 @@ CollectionScope::CollectionScope(
|
|
|
110
173
|
parents_.erase(std::unique(parents_.begin(), parents_.end()), parents_.end());
|
|
111
174
|
for (const auto& parent : parents_) {
|
|
112
175
|
if (parent != nullptr) {
|
|
113
|
-
labels_of_interest_.
|
|
114
|
-
parent->labels_of_interest_.end());
|
|
176
|
+
labels_of_interest_.Merge(parent->labels_of_interest_);
|
|
115
177
|
auto& shard = parent->child_shard(this);
|
|
116
178
|
MutexLock lock(&shard.mu);
|
|
117
179
|
shard.children.insert(this);
|
|
@@ -191,7 +253,7 @@ void CollectionScope::TestOnlyReset() {
|
|
|
191
253
|
|
|
192
254
|
RefCountedPtr<CollectionScope> CreateCollectionScope(
|
|
193
255
|
std::vector<RefCountedPtr<CollectionScope>> parents,
|
|
194
|
-
|
|
256
|
+
InstrumentLabelSet labels, size_t child_shards_count,
|
|
195
257
|
size_t storage_shards_count) {
|
|
196
258
|
return MakeRefCounted<CollectionScope>(
|
|
197
259
|
std::move(parents), labels, child_shards_count, storage_shards_count);
|
|
@@ -227,9 +289,9 @@ MetricsQuery& MetricsQuery::WithLabelEq(absl::string_view label,
|
|
|
227
289
|
}
|
|
228
290
|
|
|
229
291
|
MetricsQuery& MetricsQuery::CollapseLabels(
|
|
230
|
-
absl::Span<const
|
|
292
|
+
absl::Span<const InstrumentLabel> labels) {
|
|
231
293
|
for (const auto& label : labels) {
|
|
232
|
-
collapsed_labels_.
|
|
294
|
+
collapsed_labels_.Set(label);
|
|
233
295
|
}
|
|
234
296
|
return *this;
|
|
235
297
|
}
|
|
@@ -336,7 +398,7 @@ void MetricsQuery::Run(RefCountedPtr<CollectionScope> scope,
|
|
|
336
398
|
}
|
|
337
399
|
}
|
|
338
400
|
|
|
339
|
-
void MetricsQuery::Apply(
|
|
401
|
+
void MetricsQuery::Apply(InstrumentLabelList label_names,
|
|
340
402
|
absl::FunctionRef<void(MetricsSink&)> fn,
|
|
341
403
|
MetricsSink& sink) const {
|
|
342
404
|
if (collapsed_labels_.empty()) {
|
|
@@ -344,11 +406,11 @@ void MetricsQuery::Apply(absl::Span<const std::string> label_names,
|
|
|
344
406
|
return;
|
|
345
407
|
}
|
|
346
408
|
std::vector<size_t> include_labels;
|
|
347
|
-
|
|
409
|
+
InstrumentLabelList label_keys;
|
|
348
410
|
for (size_t i = 0; i < label_names.size(); ++i) {
|
|
349
411
|
if (!collapsed_labels_.contains(label_names[i])) {
|
|
350
412
|
include_labels.push_back(i);
|
|
351
|
-
label_keys.
|
|
413
|
+
label_keys.Append(label_names[i]);
|
|
352
414
|
}
|
|
353
415
|
}
|
|
354
416
|
if (include_labels.size() == label_names.size()) {
|
|
@@ -358,22 +420,22 @@ void MetricsQuery::Apply(absl::Span<const std::string> label_names,
|
|
|
358
420
|
class Filter final : public MetricsSink {
|
|
359
421
|
public:
|
|
360
422
|
explicit Filter(absl::Span<const size_t> include_labels,
|
|
361
|
-
|
|
423
|
+
InstrumentLabelList label_keys)
|
|
362
424
|
: include_labels_(include_labels), label_keys_(label_keys) {}
|
|
363
425
|
|
|
364
|
-
void Counter(
|
|
426
|
+
void Counter(InstrumentLabelList /* label_keys */,
|
|
365
427
|
absl::Span<const std::string> label_values,
|
|
366
428
|
absl::string_view name, uint64_t value) override {
|
|
367
429
|
uint64_counters_[ConstructKey(label_values, name)] += value;
|
|
368
430
|
}
|
|
369
431
|
|
|
370
|
-
void UpDownCounter(
|
|
432
|
+
void UpDownCounter(InstrumentLabelList /* label_keys */,
|
|
371
433
|
absl::Span<const std::string> label_values,
|
|
372
434
|
absl::string_view name, uint64_t value) override {
|
|
373
435
|
uint64_up_down_counters_[ConstructKey(label_values, name)] += value;
|
|
374
436
|
}
|
|
375
437
|
|
|
376
|
-
void Histogram(
|
|
438
|
+
void Histogram(InstrumentLabelList /* label_keys */,
|
|
377
439
|
absl::Span<const std::string> label_values,
|
|
378
440
|
absl::string_view name, HistogramBuckets bounds,
|
|
379
441
|
absl::Span<const uint64_t> counts) override {
|
|
@@ -395,17 +457,17 @@ void MetricsQuery::Apply(absl::Span<const std::string> label_names,
|
|
|
395
457
|
}
|
|
396
458
|
}
|
|
397
459
|
|
|
398
|
-
void DoubleGauge(
|
|
460
|
+
void DoubleGauge(InstrumentLabelList /* label_keys */,
|
|
399
461
|
absl::Span<const std::string>, absl::string_view,
|
|
400
462
|
double) override {
|
|
401
463
|
// Not aggregatable
|
|
402
464
|
}
|
|
403
|
-
void IntGauge(
|
|
465
|
+
void IntGauge(InstrumentLabelList /* label_keys */,
|
|
404
466
|
absl::Span<const std::string>, absl::string_view,
|
|
405
467
|
int64_t) override {
|
|
406
468
|
// Not aggregatable
|
|
407
469
|
}
|
|
408
|
-
void UintGauge(
|
|
470
|
+
void UintGauge(InstrumentLabelList /* label_keys */,
|
|
409
471
|
absl::Span<const std::string>, absl::string_view,
|
|
410
472
|
uint64_t) override {
|
|
411
473
|
// Not aggregatable
|
|
@@ -438,7 +500,7 @@ void MetricsQuery::Apply(absl::Span<const std::string> label_names,
|
|
|
438
500
|
}
|
|
439
501
|
|
|
440
502
|
absl::Span<const size_t> include_labels_;
|
|
441
|
-
|
|
503
|
+
InstrumentLabelList label_keys_;
|
|
442
504
|
absl::flat_hash_map<std::tuple<std::vector<std::string>, absl::string_view>,
|
|
443
505
|
uint64_t>
|
|
444
506
|
uint64_counters_;
|
|
@@ -460,7 +522,7 @@ void MetricsQuery::Apply(absl::Span<const std::string> label_names,
|
|
|
460
522
|
filter.Publish(sink);
|
|
461
523
|
}
|
|
462
524
|
|
|
463
|
-
void MetricsQuery::ApplyLabelChecks(
|
|
525
|
+
void MetricsQuery::ApplyLabelChecks(InstrumentLabelList label_names,
|
|
464
526
|
absl::FunctionRef<void(MetricsSink&)> fn,
|
|
465
527
|
MetricsSink& sink) const {
|
|
466
528
|
if (label_eqs_.empty()) {
|
|
@@ -486,21 +548,21 @@ void MetricsQuery::ApplyLabelChecks(absl::Span<const std::string> label_names,
|
|
|
486
548
|
absl::Span<const LabelEq> inclusion_checks)
|
|
487
549
|
: inclusion_checks_(inclusion_checks), sink_(sink) {}
|
|
488
550
|
|
|
489
|
-
void Counter(
|
|
551
|
+
void Counter(InstrumentLabelList label_keys,
|
|
490
552
|
absl::Span<const std::string> label_values,
|
|
491
553
|
absl::string_view name, uint64_t value) override {
|
|
492
554
|
if (!Matches(label_values)) return;
|
|
493
555
|
sink_.Counter(label_keys, label_values, name, value);
|
|
494
556
|
}
|
|
495
557
|
|
|
496
|
-
void UpDownCounter(
|
|
558
|
+
void UpDownCounter(InstrumentLabelList label_keys,
|
|
497
559
|
absl::Span<const std::string> label_values,
|
|
498
560
|
absl::string_view name, uint64_t value) override {
|
|
499
561
|
if (!Matches(label_values)) return;
|
|
500
562
|
sink_.UpDownCounter(label_keys, label_values, name, value);
|
|
501
563
|
}
|
|
502
564
|
|
|
503
|
-
void Histogram(
|
|
565
|
+
void Histogram(InstrumentLabelList label_keys,
|
|
504
566
|
absl::Span<const std::string> label_values,
|
|
505
567
|
absl::string_view name, HistogramBuckets bounds,
|
|
506
568
|
absl::Span<const uint64_t> counts) override {
|
|
@@ -508,19 +570,19 @@ void MetricsQuery::ApplyLabelChecks(absl::Span<const std::string> label_names,
|
|
|
508
570
|
sink_.Histogram(label_keys, label_values, name, bounds, counts);
|
|
509
571
|
}
|
|
510
572
|
|
|
511
|
-
void DoubleGauge(
|
|
573
|
+
void DoubleGauge(InstrumentLabelList label_keys,
|
|
512
574
|
absl::Span<const std::string> label_values,
|
|
513
575
|
absl::string_view name, double value) override {
|
|
514
576
|
if (!Matches(label_values)) return;
|
|
515
577
|
sink_.DoubleGauge(label_keys, label_values, name, value);
|
|
516
578
|
}
|
|
517
|
-
void IntGauge(
|
|
579
|
+
void IntGauge(InstrumentLabelList label_keys,
|
|
518
580
|
absl::Span<const std::string> label_values,
|
|
519
581
|
absl::string_view name, int64_t value) override {
|
|
520
582
|
if (!Matches(label_values)) return;
|
|
521
583
|
sink_.IntGauge(label_keys, label_values, name, value);
|
|
522
584
|
}
|
|
523
|
-
void UintGauge(
|
|
585
|
+
void UintGauge(InstrumentLabelList label_keys,
|
|
524
586
|
absl::Span<const std::string> label_values,
|
|
525
587
|
absl::string_view name, uint64_t value) override {
|
|
526
588
|
if (!Matches(label_values)) return;
|
|
@@ -599,7 +661,7 @@ void DomainStorage::AddData(channelz::DataSink sink) {
|
|
|
599
661
|
channelz::PropertyGrid grid;
|
|
600
662
|
for (size_t i = 0; i < label_.size(); ++i) {
|
|
601
663
|
grid.SetRow(
|
|
602
|
-
domain_->label_names()[i],
|
|
664
|
+
domain_->label_names()[i].label(),
|
|
603
665
|
channelz::PropertyList().Set("value", label_[i]));
|
|
604
666
|
}
|
|
605
667
|
return grid;
|
|
@@ -893,9 +955,9 @@ class GlobalCollectionScopeManager {
|
|
|
893
955
|
return *manager;
|
|
894
956
|
}
|
|
895
957
|
|
|
896
|
-
RefCountedPtr<CollectionScope> CreateRootScope(
|
|
897
|
-
|
|
898
|
-
|
|
958
|
+
RefCountedPtr<CollectionScope> CreateRootScope(InstrumentLabelSet labels,
|
|
959
|
+
size_t child_shards_count,
|
|
960
|
+
size_t storage_shards_count) {
|
|
899
961
|
MutexLock lock(&mu_);
|
|
900
962
|
if (auto* building = std::get_if<Building>(&state_); building != nullptr) {
|
|
901
963
|
auto scope = CreateCollectionScope({}, labels, child_shards_count,
|
|
@@ -905,15 +967,15 @@ class GlobalCollectionScopeManager {
|
|
|
905
967
|
} else {
|
|
906
968
|
// Global scope is already created, we can no longer subset labels.
|
|
907
969
|
auto& published = std::get<Published>(state_);
|
|
908
|
-
std::vector<
|
|
909
|
-
for (const auto& label : labels) {
|
|
970
|
+
std::vector<absl::string_view> missing_labels;
|
|
971
|
+
for (const auto& label : labels.ToList()) {
|
|
910
972
|
if (!published.global_scope->ObservesLabel(label)) {
|
|
911
|
-
missing_labels.push_back(label);
|
|
973
|
+
missing_labels.push_back(label.label());
|
|
912
974
|
}
|
|
913
975
|
}
|
|
914
976
|
if (missing_labels.empty()) {
|
|
915
977
|
LOG(ERROR) << "Attempt to create a root scope with labels ["
|
|
916
|
-
<< absl::StrJoin(labels, ", ")
|
|
978
|
+
<< absl::StrJoin(labels.ToList(), ", ")
|
|
917
979
|
<< "] after the global scope was already created. "
|
|
918
980
|
"All requested labels are collected by the global scope, "
|
|
919
981
|
"so this scope will be returned instead. "
|
|
@@ -922,7 +984,7 @@ class GlobalCollectionScopeManager {
|
|
|
922
984
|
"to GlobalCollectionScope().";
|
|
923
985
|
} else {
|
|
924
986
|
LOG(ERROR) << "Attempt to create a root scope with labels ["
|
|
925
|
-
<< absl::StrJoin(labels, ", ")
|
|
987
|
+
<< absl::StrJoin(labels.ToList(), ", ")
|
|
926
988
|
<< "] after the global scope was already created. "
|
|
927
989
|
"The following labels are not collected by the global "
|
|
928
990
|
"scope, and so will not be available: ["
|
|
@@ -939,8 +1001,8 @@ class GlobalCollectionScopeManager {
|
|
|
939
1001
|
RefCountedPtr<CollectionScope> GetGlobalScope() {
|
|
940
1002
|
MutexLock lock(&mu_);
|
|
941
1003
|
if (auto* building = std::get_if<Building>(&state_); building != nullptr) {
|
|
942
|
-
auto global_scope =
|
|
943
|
-
|
|
1004
|
+
auto global_scope = CreateCollectionScope(building->root_scopes,
|
|
1005
|
+
InstrumentLabelSet(), 32, 32);
|
|
944
1006
|
state_ = Published{global_scope};
|
|
945
1007
|
return global_scope;
|
|
946
1008
|
} else {
|
|
@@ -974,7 +1036,7 @@ class GlobalCollectionScopeManager {
|
|
|
974
1036
|
};
|
|
975
1037
|
|
|
976
1038
|
RefCountedPtr<CollectionScope> CreateRootCollectionScope(
|
|
977
|
-
|
|
1039
|
+
InstrumentLabelSet labels, size_t child_shards_count,
|
|
978
1040
|
size_t storage_shards_count) {
|
|
979
1041
|
return GlobalCollectionScopeManager::Get().CreateRootScope(
|
|
980
1042
|
labels, child_shards_count, storage_shards_count);
|