grpc 1.76.0 → 1.78.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 +11 -5
- data/include/grpc/credentials.h +6 -1
- data/include/grpc/event_engine/memory_allocator.h +2 -0
- data/include/grpc/impl/channel_arg_names.h +5 -0
- data/include/grpc/support/metrics.h +7 -1
- data/src/core/call/call_filters.cc +1 -1
- data/src/core/call/call_filters.h +175 -1
- data/src/core/call/call_spine.cc +1 -1
- data/src/core/call/call_spine.h +27 -5
- data/src/core/call/channelz_context.h +30 -0
- data/src/core/call/client_call.cc +43 -5
- data/src/core/call/client_call.h +6 -3
- data/src/core/call/filter_fusion.h +4 -4
- data/src/core/call/interception_chain.h +7 -6
- data/src/core/call/metadata_batch.cc +49 -55
- data/src/core/call/metadata_batch.h +7 -6
- data/src/core/call/metadata_info.cc +1 -1
- data/src/core/call/parsed_metadata.h +2 -2
- data/src/core/call/request_buffer.cc +1 -1
- data/src/core/call/security_context.cc +1 -1
- data/src/core/call/security_context.h +1 -1
- data/src/core/call/server_call.cc +1 -1
- data/src/core/call/server_call.h +5 -3
- data/src/core/call/simple_slice_based_metadata.h +1 -1
- data/src/core/call/status_util.cc +1 -1
- data/src/core/channelz/channel_trace.cc +1 -1
- data/src/core/channelz/channel_trace.h +3 -3
- data/src/core/channelz/channelz.cc +13 -11
- data/src/core/channelz/channelz.h +41 -6
- data/src/core/channelz/channelz_registry.cc +2 -2
- data/src/core/channelz/channelz_registry.h +42 -2
- data/src/core/channelz/property_list.h +6 -4
- data/src/core/channelz/v2tov1/convert.cc +6 -6
- data/src/core/channelz/v2tov1/legacy_api.cc +4 -5
- data/src/core/channelz/v2tov1/property_list.cc +1 -1
- data/src/core/channelz/ztrace_collector.h +14 -2
- data/src/core/client_channel/backup_poller.cc +2 -2
- data/src/core/client_channel/buffered_call.cc +140 -0
- data/src/core/client_channel/buffered_call.h +104 -0
- data/src/core/client_channel/client_channel.cc +124 -71
- data/src/core/client_channel/client_channel.h +8 -11
- data/src/core/client_channel/client_channel_factory.h +1 -1
- data/src/core/client_channel/client_channel_filter.cc +393 -663
- data/src/core/client_channel/client_channel_filter.h +57 -150
- data/src/core/client_channel/client_channel_internal.h +5 -1
- data/src/core/client_channel/client_channel_service_config.cc +43 -3
- data/src/core/client_channel/client_channel_service_config.h +12 -1
- data/src/core/client_channel/config_selector.h +2 -2
- data/src/core/client_channel/connector.h +2 -0
- data/src/core/client_channel/dynamic_filters.cc +2 -2
- data/src/core/client_channel/global_subchannel_pool.h +1 -1
- data/src/core/client_channel/lb_metadata.h +1 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +3 -5
- data/src/core/client_channel/load_balanced_call_destination.h +1 -1
- data/src/core/client_channel/retry_filter.cc +2 -2
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +6 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -8
- data/src/core/client_channel/retry_service_config.cc +3 -3
- data/src/core/client_channel/retry_service_config.h +1 -1
- data/src/core/client_channel/subchannel.cc +106 -17
- data/src/core/client_channel/subchannel.h +24 -8
- data/src/core/client_channel/subchannel_pool_interface.cc +2 -2
- data/src/core/client_channel/subchannel_pool_interface.h +1 -1
- data/src/core/client_channel/subchannel_stream_client.cc +1 -1
- data/src/core/client_channel/subchannel_stream_client.h +3 -3
- data/src/core/config/config_vars.cc +8 -2
- data/src/core/config/config_vars.h +5 -0
- data/src/core/config/core_configuration.h +1 -1
- data/src/core/config/load_config.cc +1 -1
- data/src/core/credentials/call/call_credentials.h +2 -2
- data/src/core/credentials/call/call_creds_registry.h +1 -1
- data/src/core/credentials/call/call_creds_registry_init.cc +2 -2
- data/src/core/credentials/call/call_creds_util.cc +3 -3
- data/src/core/credentials/call/composite/composite_call_credentials.cc +2 -2
- data/src/core/credentials/call/composite/composite_call_credentials.h +1 -1
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +6 -6
- data/src/core/credentials/call/external/aws_external_account_credentials.h +1 -1
- data/src/core/credentials/call/external/external_account_credentials.cc +12 -12
- data/src/core/credentials/call/external/external_account_credentials.h +1 -1
- data/src/core/credentials/call/external/file_external_account_credentials.cc +3 -3
- data/src/core/credentials/call/external/file_external_account_credentials.h +1 -1
- data/src/core/credentials/call/external/url_external_account_credentials.cc +6 -6
- data/src/core/credentials/call/external/url_external_account_credentials.h +1 -1
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +24 -71
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +1 -8
- data/src/core/credentials/call/iam/iam_credentials.cc +2 -2
- data/src/core/credentials/call/iam/iam_credentials.h +1 -1
- data/src/core/credentials/call/json_util.cc +1 -1
- data/src/core/credentials/call/jwt/json_token.cc +4 -4
- data/src/core/credentials/call/jwt/jwt_credentials.cc +3 -3
- data/src/core/credentials/call/jwt/jwt_credentials.h +4 -4
- data/src/core/credentials/call/jwt/jwt_verifier.cc +5 -5
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +2 -2
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +3 -3
- data/src/core/credentials/call/jwt_util.cc +3 -3
- data/src/core/credentials/call/jwt_util.h +1 -1
- data/src/core/credentials/call/oauth2/oauth2_credentials.cc +29 -60
- data/src/core/credentials/call/oauth2/oauth2_credentials.h +3 -9
- data/src/core/credentials/call/plugin/plugin_credentials.cc +4 -4
- data/src/core/credentials/call/plugin/plugin_credentials.h +2 -2
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +46 -0
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +32 -3
- data/src/core/credentials/transport/alts/alts_credentials.cc +3 -3
- data/src/core/credentials/transport/alts/alts_security_connector.cc +3 -3
- data/src/core/credentials/transport/alts/check_gcp_environment_no_op.cc +1 -1
- data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +1 -1
- data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +1 -1
- data/src/core/credentials/transport/channel_creds_registry.h +1 -1
- data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
- data/src/core/credentials/transport/composite/composite_channel_credentials.cc +2 -2
- data/src/core/credentials/transport/composite/composite_channel_credentials.h +1 -1
- data/src/core/credentials/transport/fake/fake_credentials.cc +1 -1
- data/src/core/credentials/transport/fake/fake_credentials.h +1 -1
- data/src/core/credentials/transport/fake/fake_security_connector.cc +5 -5
- data/src/core/credentials/transport/google_default/credentials_generic.cc +2 -2
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +5 -11
- data/src/core/credentials/transport/google_default/google_default_credentials.h +0 -2
- data/src/core/credentials/transport/insecure/insecure_security_connector.h +2 -2
- data/src/core/credentials/transport/local/local_security_connector.cc +5 -5
- data/src/core/credentials/transport/security_connector.cc +1 -1
- data/src/core/credentials/transport/security_connector.h +2 -2
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -1
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +5 -5
- data/src/core/credentials/transport/tls/certificate_provider_factory.h +1 -1
- data/src/core/credentials/transport/tls/certificate_provider_registry.cc +1 -1
- data/src/core/credentials/transport/tls/certificate_provider_registry.h +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_match.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +3 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +3 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +5 -5
- data/src/core/credentials/transport/tls/grpc_tls_crl_provider.h +3 -3
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -1
- data/src/core/credentials/transport/tls/spiffe_utils.cc +10 -8
- data/src/core/credentials/transport/tls/spiffe_utils.h +2 -2
- data/src/core/credentials/transport/tls/ssl_utils.cc +4 -4
- data/src/core/credentials/transport/tls/ssl_utils.h +2 -2
- data/src/core/credentials/transport/tls/tls_credentials.cc +1 -1
- data/src/core/credentials/transport/tls/tls_security_connector.cc +4 -4
- data/src/core/credentials/transport/tls/tls_security_connector.h +3 -3
- data/src/core/credentials/transport/transport_credentials.cc +1 -1
- data/src/core/credentials/transport/transport_credentials.h +2 -2
- data/src/core/credentials/transport/xds/xds_credentials.h +1 -1
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +2 -2
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +4 -1
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +5 -5
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +7 -7
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +6 -3
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +1 -1
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +1 -1
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +6 -3
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +6 -6
- data/src/core/ext/filters/http/client/http_client_filter.h +4 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
- data/src/core/ext/filters/http/client_authority_filter.h +4 -1
- data/src/core/ext/filters/http/http_filters_plugin.cc +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/compression_filter.h +21 -2
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/http/server/http_server_filter.h +4 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +2 -2
- data/src/core/ext/filters/message_size/message_size_filter.h +8 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
- data/src/core/ext/filters/rbac/rbac_filter.h +4 -1
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +3 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -7
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +13 -2
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +50 -37
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -17
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -2
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +210 -60
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +39 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.h +213 -78
- data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +46 -1
- data/src/core/ext/transport/chttp2/transport/frame.cc +147 -21
- data/src/core/ext/transport/chttp2/transport/frame.h +44 -10
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -15
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/goaway.cc +129 -0
- data/src/core/ext/transport/chttp2/transport/goaway.h +350 -0
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +175 -51
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -4
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -4
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1177 -511
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +264 -174
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +6 -4
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +6 -16
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +320 -82
- data/src/core/ext/transport/chttp2/transport/http2_status.h +7 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +286 -7
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +187 -19
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +57 -1
- data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +128 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +25 -5
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +12 -5
- data/src/core/ext/transport/chttp2/transport/keepalive.h +14 -10
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +24 -15
- data/src/core/ext/transport/chttp2/transport/parsing.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +3 -3
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +11 -5
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +7 -3
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/security_frame.cc +31 -0
- data/src/core/ext/transport/chttp2/transport/security_frame.h +32 -0
- data/src/core/ext/transport/chttp2/transport/stream.h +139 -59
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +225 -98
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.h +5 -0
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +27 -11
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +8 -2
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +8 -5
- data/src/core/filter/auth/auth_filters.h +7 -1
- data/src/core/filter/auth/client_auth_filter.cc +2 -2
- data/src/core/filter/auth/server_auth_filter.cc +3 -3
- data/src/core/filter/blackboard.h +2 -2
- data/src/core/filter/filter_args.h +40 -2
- data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +2 -2
- data/src/core/handshaker/handshaker.cc +5 -5
- data/src/core/handshaker/handshaker.h +2 -2
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +5 -5
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +11 -11
- data/src/core/handshaker/http_connect/http_proxy_mapper.h +1 -1
- data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +1 -1
- data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +1 -1
- data/src/core/handshaker/proxy_mapper.h +1 -1
- data/src/core/handshaker/proxy_mapper_registry.h +1 -1
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +4 -4
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +7 -7
- data/src/core/handshaker/security/secure_endpoint.cc +15 -5
- data/src/core/handshaker/security/security_handshaker.cc +8 -5
- data/src/core/handshaker/security/security_handshaker.h +1 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
- data/src/core/lib/address_utils/parse_address.cc +5 -5
- data/src/core/lib/address_utils/parse_address.h +2 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +4 -4
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -1
- data/src/core/lib/channel/channel_args.cc +1 -1
- data/src/core/lib/channel/channel_args.h +2 -2
- data/src/core/lib/channel/channel_stack.cc +22 -21
- data/src/core/lib/channel/channel_stack.h +5 -3
- data/src/core/lib/channel/channel_stack_builder.cc +8 -4
- data/src/core/lib/channel/channel_stack_builder.h +10 -9
- data/src/core/lib/channel/channel_stack_builder_impl.cc +7 -13
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +2 -2
- data/src/core/lib/channel/promise_based_filter.cc +63 -8
- data/src/core/lib/channel/promise_based_filter.h +23 -8
- data/src/core/lib/compression/compression_internal.cc +4 -4
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/compression/message_compress.cc +1 -1
- data/src/core/lib/debug/trace.cc +2 -5
- data/src/core/lib/debug/trace.h +10 -0
- data/src/core/lib/debug/trace_flags.cc +2 -2
- data/src/core/lib/debug/trace_flags.h +1 -1
- data/src/core/lib/event_engine/ares_resolver.cc +8 -8
- data/src/core/lib/event_engine/ares_resolver.h +4 -4
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +1 -1
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +1 -1
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -1
- data/src/core/lib/event_engine/default_event_engine.cc +1 -1
- data/src/core/lib/event_engine/event_engine.cc +1 -1
- data/src/core/lib/event_engine/extensions/channelz.h +1 -1
- data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +1 -1
- data/src/core/lib/event_engine/extensions/tcp_trace.h +8 -1
- data/src/core/lib/event_engine/grpc_polled_fd.h +1 -1
- data/src/core/lib/event_engine/memory_allocator_factory.h +1 -1
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +5 -5
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/event_poller.h +2 -2
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +1 -1
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +4 -4
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +1 -1
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +6 -6
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +7 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +7 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +7 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +1 -1
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
- data/src/core/lib/event_engine/posix_engine/timer.h +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +1 -1
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +1 -1
- data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +4 -4
- data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -4
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -3
- data/src/core/lib/event_engine/utils.cc +3 -3
- data/src/core/lib/event_engine/utils.h +1 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +1 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +2 -2
- data/src/core/lib/event_engine/windows/iocp.cc +1 -1
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +5 -2
- data/src/core/lib/event_engine/windows/win_socket.cc +1 -1
- data/src/core/lib/event_engine/windows/win_socket.h +2 -2
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +5 -5
- data/src/core/lib/event_engine/windows/windows_engine.cc +4 -4
- data/src/core/lib/event_engine/windows/windows_engine.h +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.h +2 -2
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -2
- data/src/core/lib/experiments/config.cc +4 -4
- data/src/core/lib/experiments/experiments.cc +174 -48
- data/src/core/lib/experiments/experiments.h +76 -24
- data/src/core/lib/iomgr/buffer_list.cc +1 -1
- data/src/core/lib/iomgr/call_combiner.cc +1 -1
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/closure.h +2 -2
- data/src/core/lib/iomgr/combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +1 -1
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +1 -1
- data/src/core/lib/iomgr/error.h +2 -2
- data/src/core/lib/iomgr/error_cfstream.cc +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +4 -4
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
- data/src/core/lib/iomgr/ev_posix.cc +3 -3
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -3
- data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -1
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +5 -5
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.cc +3 -3
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/internal_errqueue.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +1 -1
- data/src/core/lib/iomgr/polling_entity.cc +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +1 -1
- data/src/core/lib/iomgr/resolve_address.h +2 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +4 -4
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_posix.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_posix.cc +20 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_windows.cc +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +3 -3
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
- data/src/core/lib/iomgr/vsock.cc +1 -1
- data/src/core/lib/iomgr/vsock.h +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +1 -1
- data/src/core/lib/promise/activity.cc +2 -2
- data/src/core/lib/promise/activity.h +5 -4
- data/src/core/lib/promise/all_ok.h +3 -3
- data/src/core/lib/promise/arena_promise.h +47 -6
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/detail/join_state.h +1 -1
- data/src/core/lib/promise/detail/promise_factory.h +1 -1
- data/src/core/lib/promise/detail/promise_like.h +1 -1
- data/src/core/lib/promise/detail/seq_state.h +3 -3
- data/src/core/lib/promise/detail/status.h +1 -1
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +1 -1
- data/src/core/lib/promise/for_each.h +3 -3
- data/src/core/lib/promise/if.h +1 -1
- data/src/core/lib/promise/inter_activity_latch.h +3 -3
- data/src/core/lib/promise/inter_activity_mutex.h +1 -1
- data/src/core/lib/promise/interceptor_list.h +3 -3
- data/src/core/lib/promise/latch.h +2 -2
- data/src/core/lib/promise/loop.h +2 -2
- data/src/core/lib/promise/map.h +2 -2
- data/src/core/lib/promise/mpsc.cc +5 -4
- data/src/core/lib/promise/observable.h +2 -2
- data/src/core/lib/promise/party.cc +14 -8
- data/src/core/lib/promise/party.h +11 -4
- data/src/core/lib/promise/pipe.h +16 -2
- data/src/core/lib/promise/poll.h +2 -2
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/promise/sleep.h +1 -1
- data/src/core/lib/promise/status_flag.h +2 -2
- data/src/core/lib/promise/try_join.h +3 -3
- data/src/core/lib/promise/try_seq.h +3 -3
- data/src/core/lib/promise/wait_set.h +2 -2
- data/src/core/lib/resource_quota/api.cc +1 -1
- data/src/core/lib/resource_quota/arena.cc +1 -1
- data/src/core/lib/resource_quota/connection_quota.h +1 -1
- data/src/core/lib/resource_quota/memory_quota.cc +3 -3
- data/src/core/lib/resource_quota/memory_quota.h +9 -5
- data/src/core/lib/resource_quota/periodic_update.h +1 -1
- data/src/core/lib/resource_quota/resource_quota.cc +8 -0
- data/src/core/lib/resource_quota/resource_quota.h +2 -1
- data/src/core/lib/resource_quota/stream_quota.cc +22 -0
- data/src/core/lib/resource_quota/stream_quota.h +31 -0
- data/src/core/lib/resource_quota/telemetry.h +1 -0
- data/src/core/lib/resource_quota/thread_quota.h +1 -1
- data/src/core/lib/security/authorization/audit_logging.cc +3 -3
- data/src/core/lib/security/authorization/audit_logging.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +5 -5
- data/src/core/lib/security/authorization/evaluate_args.h +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +4 -1
- data/src/core/lib/security/authorization/matchers.cc +2 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +1 -1
- data/src/core/lib/slice/percent_encoding.cc +1 -1
- data/src/core/lib/slice/slice.cc +1 -1
- data/src/core/lib/slice/slice.h +2 -2
- data/src/core/lib/slice/slice_buffer.cc +1 -1
- data/src/core/lib/slice/slice_internal.h +1 -1
- data/src/core/lib/surface/call.cc +42 -14
- data/src/core/lib/surface/call.h +12 -5
- data/src/core/lib/surface/call_log_batch.cc +2 -2
- data/src/core/lib/surface/call_utils.cc +5 -5
- data/src/core/lib/surface/call_utils.h +83 -18
- data/src/core/lib/surface/channel.cc +2 -1
- data/src/core/lib/surface/channel.h +13 -3
- data/src/core/lib/surface/channel_create.cc +2 -2
- data/src/core/lib/surface/channel_create.h +1 -1
- data/src/core/lib/surface/channel_init.cc +5 -5
- data/src/core/lib/surface/channel_init.h +4 -2
- data/src/core/lib/surface/completion_queue.cc +4 -4
- data/src/core/lib/surface/filter_stack_call.cc +13 -8
- data/src/core/lib/surface/filter_stack_call.h +3 -3
- data/src/core/lib/surface/init.cc +4 -4
- data/src/core/lib/surface/lame_client.cc +2 -2
- data/src/core/lib/surface/lame_client.h +3 -3
- data/src/core/lib/surface/legacy_channel.cc +3 -3
- data/src/core/lib/surface/legacy_channel.h +1 -1
- data/src/core/lib/surface/validate_metadata.cc +2 -2
- data/src/core/lib/surface/validate_metadata.h +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -2
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/connectivity_state.h +2 -2
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/promise_endpoint.cc +1 -1
- data/src/core/lib/transport/promise_endpoint.h +3 -3
- data/src/core/lib/transport/timeout_encoding.cc +1 -1
- data/src/core/lib/transport/transport.cc +3 -3
- data/src/core/lib/transport/transport.h +62 -4
- data/src/core/lib/transport/transport_framing_endpoint_extension.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +2 -2
- data/src/core/load_balancing/address_filtering.cc +1 -1
- data/src/core/load_balancing/address_filtering.h +2 -2
- data/src/core/load_balancing/backend_metric_parser.cc +1 -1
- data/src/core/load_balancing/backend_metric_parser.h +1 -1
- data/src/core/load_balancing/child_policy_handler.cc +4 -4
- data/src/core/load_balancing/child_policy_handler.h +2 -2
- data/src/core/load_balancing/delegating_helper.h +2 -2
- data/src/core/load_balancing/endpoint_list.cc +4 -4
- data/src/core/load_balancing/endpoint_list.h +2 -2
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +7 -5
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +5 -1
- data/src/core/load_balancing/grpclb/grpclb.cc +13 -24
- data/src/core/load_balancing/grpclb/grpclb_client_stats.h +2 -2
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.h +1 -1
- data/src/core/load_balancing/health_check_client.cc +9 -5
- data/src/core/load_balancing/health_check_client_internal.h +3 -3
- data/src/core/load_balancing/lb_policy.h +11 -8
- data/src/core/load_balancing/lb_policy_factory.h +2 -2
- data/src/core/load_balancing/lb_policy_registry.cc +2 -2
- data/src/core/load_balancing/lb_policy_registry.h +2 -2
- data/src/core/load_balancing/oob_backend_metric.cc +7 -3
- data/src/core/load_balancing/oob_backend_metric_internal.h +2 -2
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +7 -15
- data/src/core/load_balancing/pick_first/pick_first.cc +48 -18
- data/src/core/load_balancing/priority/priority.cc +6 -6
- data/src/core/load_balancing/ring_hash/ring_hash.cc +8 -8
- data/src/core/load_balancing/rls/rls.cc +10 -10
- data/src/core/load_balancing/round_robin/round_robin.cc +7 -7
- data/src/core/load_balancing/subchannel_interface.h +2 -2
- data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +1 -1
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +9 -15
- data/src/core/load_balancing/weighted_target/weighted_target.cc +9 -9
- data/src/core/load_balancing/xds/cds.cc +5 -5
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +22 -39
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +6 -6
- data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
- data/src/core/load_balancing/xds/xds_override_host.h +1 -1
- data/src/core/load_balancing/xds/xds_wrr_locality.cc +5 -5
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +8 -8
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +1 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +6 -6
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -2
- data/src/core/resolver/dns/dns_resolver_plugin.cc +2 -2
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +8 -8
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +1 -1
- data/src/core/resolver/dns/event_engine/service_config_helper.cc +2 -2
- data/src/core/resolver/dns/native/dns_resolver.cc +7 -7
- data/src/core/resolver/endpoint_addresses.cc +4 -4
- data/src/core/resolver/endpoint_addresses.h +1 -1
- data/src/core/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.h +3 -3
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +5 -5
- data/src/core/resolver/polling_resolver.cc +5 -5
- data/src/core/resolver/polling_resolver.h +1 -1
- data/src/core/resolver/resolver.h +2 -2
- data/src/core/resolver/resolver_factory.h +2 -2
- data/src/core/resolver/resolver_registry.cc +1 -1
- data/src/core/resolver/resolver_registry.h +1 -1
- data/src/core/resolver/sockaddr/sockaddr_resolver.cc +4 -4
- data/src/core/resolver/xds/xds_config.cc +1 -1
- data/src/core/resolver/xds/xds_config.h +3 -3
- data/src/core/resolver/xds/xds_dependency_manager.cc +2 -2
- data/src/core/resolver/xds/xds_dependency_manager.h +3 -3
- data/src/core/resolver/xds/xds_resolver.cc +16 -13
- data/src/core/resolver/xds/xds_resolver_attributes.h +1 -1
- data/src/core/server/add_port.cc +2 -2
- data/src/core/server/server.cc +9 -5
- data/src/core/server/server.h +8 -7
- data/src/core/server/server_call_tracer_filter.cc +1 -1
- data/src/core/server/server_call_tracer_filter.h +5 -1
- data/src/core/server/server_config_selector.h +2 -2
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/xds_channel_stack_modifier.cc +3 -2
- data/src/core/server/xds_channel_stack_modifier.h +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +10 -10
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_channel_arg_filter.h +4 -1
- data/src/core/service_config/service_config_impl.cc +3 -3
- data/src/core/service_config/service_config_impl.h +2 -2
- data/src/core/service_config/service_config_parser.h +1 -1
- data/src/core/telemetry/call_tracer.h +2 -2
- data/src/core/telemetry/default_tcp_tracer.h +3 -3
- data/src/core/telemetry/histogram.h +1 -1
- data/src/core/telemetry/instrument.cc +550 -270
- data/src/core/telemetry/instrument.h +301 -128
- data/src/core/telemetry/metrics.cc +2 -0
- data/src/core/telemetry/metrics.h +33 -4
- data/src/core/telemetry/stats.h +2 -2
- data/src/core/telemetry/stats_data.cc +1 -1
- data/src/core/telemetry/stats_data.h +2 -2
- data/src/core/transport/auth_context.cc +1 -1
- data/src/core/transport/auth_context.h +2 -1
- data/src/core/transport/auth_context_comparator_registry.h +1 -1
- data/src/core/tsi/alts/crypt/aes_gcm.cc +1 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +2 -2
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +9 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +11 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +10 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +9 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +3 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +15 -2
- data/src/core/tsi/fake_transport_security.cc +2 -1
- data/src/core/tsi/local_transport_security.cc +1 -1
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +1 -1
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +6 -6
- data/src/core/tsi/ssl_transport_security.h +1 -1
- 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/tsi/transport_security_grpc.cc +8 -0
- data/src/core/tsi/transport_security_grpc.h +15 -0
- data/src/core/util/alloc.cc +1 -1
- data/src/core/util/backoff.h +1 -1
- data/src/core/util/crash.h +1 -1
- data/src/core/util/dual_ref_counted.h +2 -2
- data/src/core/util/event_log.cc +1 -1
- data/src/core/util/event_log.h +3 -3
- data/src/core/util/gcp_metadata_query.cc +5 -5
- data/src/core/util/gcp_metadata_query.h +2 -2
- data/src/core/util/grpc_check.cc +2 -0
- data/src/core/util/grpc_check.h +1 -1
- data/src/core/util/grpc_if_nametoindex_posix.cc +1 -1
- data/src/core/util/grpc_if_nametoindex_unsupported.cc +1 -1
- data/src/core/util/http_client/format_request.cc +1 -1
- data/src/core/util/http_client/httpcli.cc +3 -3
- data/src/core/util/http_client/httpcli.h +4 -4
- data/src/core/util/http_client/httpcli_security_connector.cc +4 -4
- data/src/core/util/http_client/parser.cc +1 -1
- data/src/core/util/json/json_channel_args.h +1 -1
- data/src/core/util/json/json_object_loader.h +6 -6
- data/src/core/util/json/json_reader.cc +2 -2
- data/src/core/util/json/json_reader.h +1 -1
- data/src/core/util/json/json_util.h +3 -3
- data/src/core/util/json/json_writer.cc +1 -1
- data/src/core/util/latent_see.cc +45 -24
- data/src/core/util/latent_see.h +192 -24
- data/src/core/util/linux/cpu.cc +1 -1
- data/src/core/util/load_file.cc +1 -1
- data/src/core/util/load_file.h +1 -1
- data/src/core/util/log.cc +3 -3
- data/src/core/util/lru_cache.h +1 -1
- data/src/core/util/matchers.h +1 -1
- data/src/core/util/memory_usage.h +3 -3
- data/src/core/util/mpscq.h +1 -1
- data/src/core/util/notification.h +1 -1
- data/src/core/util/posix/cpu.cc +1 -1
- data/src/core/util/posix/stat.cc +2 -2
- data/src/core/util/posix/thd.cc +2 -2
- data/src/core/util/posix/tmpfile.cc +2 -2
- data/src/core/util/ref_counted.h +2 -2
- data/src/core/util/ref_counted_ptr.h +1 -1
- data/src/core/util/ref_counted_string.h +1 -1
- data/src/core/util/single_set_ptr.h +3 -1
- data/src/core/util/status_helper.cc +8 -8
- data/src/core/util/status_helper.h +1 -1
- data/src/core/util/string.cc +2 -2
- data/src/core/util/sync_abseil.cc +1 -1
- data/src/core/util/table.h +1 -1
- data/src/core/util/time.cc +1 -1
- data/src/core/util/time_precise.cc +1 -1
- data/src/core/util/unique_ptr_with_bitset.h +1 -1
- data/src/core/util/unique_type_name.h +1 -1
- data/src/core/util/upb_utils.h +6 -1
- data/src/core/util/validation_errors.cc +2 -2
- data/src/core/util/validation_errors.h +2 -3
- data/src/core/util/wait_for_single_owner.h +2 -2
- data/src/core/util/windows/directory_reader.cc +1 -1
- data/src/core/util/windows/stat.cc +2 -2
- data/src/core/util/windows/thd.cc +2 -2
- data/src/core/util/windows/time.cc +1 -1
- data/src/core/util/work_serializer.cc +3 -3
- data/src/core/util/work_serializer.h +2 -2
- data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
- data/src/core/xds/grpc/certificate_provider_store.h +2 -2
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
- data/src/core/xds/grpc/xds_audit_logger_registry.cc +3 -3
- data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +7 -7
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +2 -2
- data/src/core/xds/grpc/xds_certificate_provider.cc +1 -1
- data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +5 -5
- data/src/core/xds/grpc/xds_client_grpc.h +2 -2
- data/src/core/xds/grpc/xds_cluster.cc +2 -2
- data/src/core/xds/grpc/xds_cluster.h +1 -1
- data/src/core/xds/grpc/xds_cluster_parser.cc +5 -5
- data/src/core/xds/grpc/xds_cluster_parser.h +1 -1
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
- data/src/core/xds/grpc/xds_common_types.cc +1 -1
- data/src/core/xds/grpc/xds_common_types.h +1 -1
- data/src/core/xds/grpc/xds_common_types_parser.cc +5 -5
- data/src/core/xds/grpc/xds_endpoint.h +2 -2
- data/src/core/xds/grpc/xds_endpoint_parser.cc +5 -5
- data/src/core/xds/grpc/xds_endpoint_parser.h +1 -1
- data/src/core/xds/grpc/xds_health_status.cc +1 -1
- data/src/core/xds/grpc/xds_health_status.h +1 -1
- data/src/core/xds/grpc/xds_http_fault_filter.cc +4 -4
- data/src/core/xds/grpc/xds_http_fault_filter.h +2 -2
- data/src/core/xds/grpc/xds_http_filter.h +3 -3
- data/src/core/xds/grpc/xds_http_filter_registry.h +2 -2
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +3 -3
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +2 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +4 -4
- data/src/core/xds/grpc/xds_http_rbac_filter.h +2 -2
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +3 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +2 -2
- data/src/core/xds/grpc/xds_lb_policy_registry.cc +1 -1
- data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
- data/src/core/xds/grpc/xds_listener.cc +2 -2
- data/src/core/xds/grpc/xds_listener_parser.cc +6 -6
- data/src/core/xds/grpc/xds_listener_parser.h +1 -1
- data/src/core/xds/grpc/xds_matcher.cc +1 -1
- data/src/core/xds/grpc/xds_matcher.h +3 -3
- data/src/core/xds/grpc/xds_matcher_input.h +1 -1
- data/src/core/xds/grpc/xds_metadata.cc +1 -1
- data/src/core/xds/grpc/xds_metadata.h +3 -3
- data/src/core/xds/grpc/xds_metadata_parser.cc +2 -2
- data/src/core/xds/grpc/xds_route_config.cc +3 -3
- data/src/core/xds/grpc/xds_route_config_parser.cc +8 -8
- data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
- data/src/core/xds/grpc/xds_routing.cc +4 -4
- data/src/core/xds/grpc/xds_routing.h +2 -2
- data/src/core/xds/grpc/xds_server_grpc.cc +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +1 -1
- data/src/core/xds/grpc/xds_transport_grpc.h +2 -2
- data/src/core/xds/xds_client/lrs_client.cc +3 -3
- data/src/core/xds/xds_client/lrs_client.h +4 -4
- data/src/core/xds/xds_client/xds_api.h +1 -1
- data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +1 -1
- data/src/core/xds/xds_client/xds_backend_metric_propagation.h +1 -1
- data/src/core/xds/xds_client/xds_client.cc +8 -8
- data/src/core/xds/xds_client/xds_client.h +5 -5
- data/src/core/xds/xds_client/xds_locality.h +2 -2
- data/src/core/xds/xds_client/xds_resource_type.h +2 -2
- data/src/core/xds/xds_client/xds_resource_type_impl.h +1 -1
- data/src/core/xds/xds_client/xds_transport.h +2 -2
- data/src/ruby/ext/grpc/extconf.rb +14 -12
- data/src/ruby/ext/grpc/rb_call.c +0 -1
- data/src/ruby/ext/grpc/rb_channel_args.c +0 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- metadata +16 -6
|
@@ -29,11 +29,20 @@
|
|
|
29
29
|
// unique combination of label values within a domain creates a separate
|
|
30
30
|
// instance of the instrumentation storage.
|
|
31
31
|
//
|
|
32
|
+
// * **Collection Scope:** Defines a scope for collecting metrics, identified
|
|
33
|
+
// by a set of labels of interest. Metric collection via
|
|
34
|
+
// `GetStorage`+`Increment` will be filtered according to these labels.
|
|
35
|
+
// Scopes can be hierarchical.
|
|
36
|
+
// On destruction, metrics collected in this scope are aggregated into the
|
|
37
|
+
// parent scopes.
|
|
38
|
+
//
|
|
32
39
|
// * **Storage:** An object holding the current values for all instruments
|
|
33
|
-
// within a domain, for a *specific combination* of label values.
|
|
34
|
-
//
|
|
35
|
-
// `RefCountedPtr<Storage>` using `Domain::GetStorage(...)`, passing
|
|
36
|
-
// current label values.
|
|
40
|
+
// within a domain, for a *specific combination* of filtered label values.
|
|
41
|
+
// Its lifetime is managed by one or more `CollectionScope`s. You obtain a
|
|
42
|
+
// `RefCountedPtr<Storage>` using `Domain::GetStorage(scope, ...)`, passing
|
|
43
|
+
// the current label values. If a child scope's filtered labels match its
|
|
44
|
+
// parent's filtered labels for a given metric, the parent's `Storage`
|
|
45
|
+
// instance is reused (shared).
|
|
37
46
|
//
|
|
38
47
|
// * **Backend:** Determines how the metric data is stored and aggregated
|
|
39
48
|
// within a Storage object. Examples include `LowContentionBackend` and
|
|
@@ -105,7 +114,8 @@
|
|
|
105
114
|
// };
|
|
106
115
|
//
|
|
107
116
|
// To increment the counter:
|
|
108
|
-
// auto
|
|
117
|
+
// auto scope = CreateCollectionScope({}, {}); // Or some other scope
|
|
118
|
+
// auto storage = MyDomain::GetStorage(scope, "label_val1", "label_val2");
|
|
109
119
|
// storage->Increment(MyDomain::kMyCounter);
|
|
110
120
|
//
|
|
111
121
|
// To set the gauge (inside a callback):
|
|
@@ -116,6 +126,9 @@
|
|
|
116
126
|
// The `MetricsQuery` class is used to fetch metric data. You can filter by
|
|
117
127
|
// label values, select specific metrics, and collapse labels (aggregate over
|
|
118
128
|
// them). The results are emitted to a `MetricsSink` interface.
|
|
129
|
+
// `MetricsQuery::Run(scope, sink)` operates on a given `CollectionScope`,
|
|
130
|
+
// querying all unique storage instances reachable from that scope and its
|
|
131
|
+
// children.
|
|
119
132
|
//
|
|
120
133
|
// ## Aggregability
|
|
121
134
|
//
|
|
@@ -126,6 +139,35 @@
|
|
|
126
139
|
// includes gauges is not meaningful, as summing up current values from
|
|
127
140
|
// different sources makes no sense. The `MetricsSink` will receive
|
|
128
141
|
// individual gauge readings for each label set matching the filter.
|
|
142
|
+
//
|
|
143
|
+
// ## Collection Scope Hierarchy
|
|
144
|
+
//
|
|
145
|
+
// Collection scopes form a DAG. The typical layout is to have a collection of
|
|
146
|
+
// root scopes, a trunk scope ("the global scope"), and a set of leaf scopes:
|
|
147
|
+
//
|
|
148
|
+
// ┌────────┐ ┌────────┐
|
|
149
|
+
// │ Root 1 │ │ Root 2 │ ...
|
|
150
|
+
// └───┬────┘ └───┬────┘
|
|
151
|
+
// │ │
|
|
152
|
+
// └──────────────┤
|
|
153
|
+
// │
|
|
154
|
+
// ┌──────▼───────┐
|
|
155
|
+
// │ Global Scope │
|
|
156
|
+
// └──────┬───────┘
|
|
157
|
+
// │
|
|
158
|
+
// ┌──────────────┤
|
|
159
|
+
// │ │
|
|
160
|
+
// ┌───▼────┐ ┌───▼────┐
|
|
161
|
+
// │ Leaf 1 │ │ Leaf 2 │ ...
|
|
162
|
+
// └────────┘ └────────┘
|
|
163
|
+
//
|
|
164
|
+
// The root scopes correspond to global stats plugins in the higher level
|
|
165
|
+
// system. The leaf scopes correspond to per-channel stats plugins. The global
|
|
166
|
+
// (trunk) scope is not associated with any stats plugin, but allows
|
|
167
|
+
// non-channel-related metrics to be aggregated into the global stats plugins.
|
|
168
|
+
//
|
|
169
|
+
// When creating a storage instance systems should use the most specific scope
|
|
170
|
+
// (lowest in the tree) that matches the current context.
|
|
129
171
|
|
|
130
172
|
#ifndef GRPC_SRC_CORE_TELEMETRY_INSTRUMENT_H
|
|
131
173
|
#define GRPC_SRC_CORE_TELEMETRY_INSTRUMENT_H
|
|
@@ -134,40 +176,50 @@
|
|
|
134
176
|
#include <grpc/support/port_platform.h>
|
|
135
177
|
|
|
136
178
|
#include <algorithm>
|
|
137
|
-
#include <array>
|
|
138
179
|
#include <atomic>
|
|
180
|
+
#include <cstddef>
|
|
139
181
|
#include <cstdint>
|
|
140
182
|
#include <memory>
|
|
141
183
|
#include <optional>
|
|
142
184
|
#include <string>
|
|
143
185
|
#include <tuple>
|
|
186
|
+
#include <type_traits>
|
|
144
187
|
#include <utility>
|
|
145
188
|
#include <variant>
|
|
146
189
|
#include <vector>
|
|
147
190
|
|
|
191
|
+
#include "src/core/channelz/channelz.h"
|
|
192
|
+
#include "src/core/telemetry/histogram.h"
|
|
193
|
+
#include "src/core/util/avl.h"
|
|
194
|
+
#include "src/core/util/dual_ref_counted.h"
|
|
195
|
+
#include "src/core/util/grpc_check.h"
|
|
196
|
+
#include "src/core/util/per_cpu.h"
|
|
197
|
+
#include "src/core/util/ref_counted.h"
|
|
198
|
+
#include "src/core/util/ref_counted_ptr.h"
|
|
199
|
+
#include "src/core/util/single_set_ptr.h"
|
|
200
|
+
#include "src/core/util/sync.h"
|
|
148
201
|
#include "absl/base/thread_annotations.h"
|
|
149
202
|
#include "absl/container/flat_hash_map.h"
|
|
150
203
|
#include "absl/container/flat_hash_set.h"
|
|
151
204
|
#include "absl/container/node_hash_map.h"
|
|
205
|
+
#include "absl/functional/any_invocable.h"
|
|
206
|
+
#include "absl/functional/function_ref.h"
|
|
207
|
+
#include "absl/hash/hash.h"
|
|
152
208
|
#include "absl/log/log.h"
|
|
153
209
|
#include "absl/strings/str_cat.h"
|
|
154
210
|
#include "absl/strings/string_view.h"
|
|
155
211
|
#include "absl/types/span.h"
|
|
156
|
-
#include "src/core/telemetry/histogram.h"
|
|
157
|
-
#include "src/core/util/avl.h"
|
|
158
|
-
#include "src/core/util/dual_ref_counted.h"
|
|
159
|
-
#include "src/core/util/match.h"
|
|
160
|
-
#include "src/core/util/per_cpu.h"
|
|
161
|
-
#include "src/core/util/ref_counted_ptr.h"
|
|
162
|
-
#include "src/core/util/sync.h"
|
|
163
212
|
|
|
164
213
|
namespace grpc_core {
|
|
165
214
|
|
|
166
215
|
class InstrumentTest;
|
|
216
|
+
class GlobalCollectionScopeManager;
|
|
217
|
+
|
|
218
|
+
static constexpr absl::string_view kOmittedLabel = "<omitted>";
|
|
167
219
|
|
|
168
220
|
namespace instrument_detail {
|
|
169
221
|
class QueryableDomain;
|
|
170
|
-
class
|
|
222
|
+
class DomainStorage;
|
|
171
223
|
} // namespace instrument_detail
|
|
172
224
|
|
|
173
225
|
class CollectionScope;
|
|
@@ -175,13 +227,14 @@ class CollectionScope;
|
|
|
175
227
|
class InstrumentMetadata {
|
|
176
228
|
public:
|
|
177
229
|
struct CounterShape {};
|
|
230
|
+
struct UpDownCounterShape {};
|
|
178
231
|
struct DoubleGaugeShape {};
|
|
179
232
|
struct IntGaugeShape {};
|
|
180
233
|
struct UintGaugeShape {};
|
|
181
234
|
using HistogramShape = HistogramBuckets;
|
|
182
235
|
|
|
183
|
-
using Shape = std::variant<CounterShape,
|
|
184
|
-
IntGaugeShape, UintGaugeShape>;
|
|
236
|
+
using Shape = std::variant<CounterShape, UpDownCounterShape, HistogramShape,
|
|
237
|
+
DoubleGaugeShape, IntGaugeShape, UintGaugeShape>;
|
|
185
238
|
|
|
186
239
|
// A description of a metric.
|
|
187
240
|
struct Description {
|
|
@@ -218,20 +271,60 @@ using HistogramCollectionHook = absl::AnyInvocable<void(
|
|
|
218
271
|
absl::Span<const std::string> labels, int64_t value)>;
|
|
219
272
|
void RegisterHistogramCollectionHook(HistogramCollectionHook hook);
|
|
220
273
|
|
|
221
|
-
//
|
|
222
|
-
//
|
|
223
|
-
|
|
274
|
+
// Defines a scope for collecting metrics, identified by a set of labels of
|
|
275
|
+
// interest. Metric collection via GetStorage+Increment will be filtered
|
|
276
|
+
// according to these labels. Scopes can be hierarchical. On destruction,
|
|
277
|
+
// metrics collected in this scope are aggregated into the parent scope.
|
|
278
|
+
class CollectionScope : public RefCounted<CollectionScope> {
|
|
224
279
|
public:
|
|
225
|
-
|
|
226
|
-
|
|
280
|
+
CollectionScope(std::vector<RefCountedPtr<CollectionScope>> parents,
|
|
281
|
+
absl::Span<const std::string> labels,
|
|
282
|
+
size_t child_shards_count, size_t storage_shards_count);
|
|
283
|
+
~CollectionScope() override;
|
|
227
284
|
|
|
228
285
|
size_t TestOnlyCountStorageHeld() const;
|
|
229
286
|
|
|
287
|
+
void ForEachUniqueStorage(
|
|
288
|
+
absl::FunctionRef<void(instrument_detail::DomainStorage*)> cb);
|
|
289
|
+
|
|
290
|
+
bool ObservesLabel(absl::string_view label) const {
|
|
291
|
+
return labels_of_interest_.contains(label);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
bool IsRoot() const { return parents_.empty(); }
|
|
295
|
+
|
|
230
296
|
private:
|
|
297
|
+
friend class GlobalCollectionScopeManager;
|
|
231
298
|
friend class MetricsQuery;
|
|
232
|
-
|
|
299
|
+
friend class instrument_detail::QueryableDomain;
|
|
300
|
+
|
|
301
|
+
struct StorageShard {
|
|
302
|
+
mutable Mutex mu;
|
|
303
|
+
absl::flat_hash_map<std::pair<instrument_detail::QueryableDomain*,
|
|
304
|
+
std::vector<std::string>>,
|
|
305
|
+
RefCountedPtr<instrument_detail::DomainStorage>>
|
|
306
|
+
storage ABSL_GUARDED_BY(mu);
|
|
307
|
+
};
|
|
233
308
|
|
|
234
|
-
|
|
309
|
+
struct ChildShard {
|
|
310
|
+
Mutex mu;
|
|
311
|
+
absl::flat_hash_set<CollectionScope*> children ABSL_GUARDED_BY(mu);
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
ChildShard& child_shard(CollectionScope* child) {
|
|
315
|
+
return child_shards_[absl::HashOf(child) % child_shards_.size()];
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
std::vector<RefCountedPtr<CollectionScope>> parents_;
|
|
319
|
+
absl::flat_hash_set<std::string> labels_of_interest_;
|
|
320
|
+
std::vector<ChildShard> child_shards_;
|
|
321
|
+
std::vector<StorageShard> storage_shards_;
|
|
322
|
+
|
|
323
|
+
void ForEachUniqueStorage(
|
|
324
|
+
absl::FunctionRef<void(instrument_detail::DomainStorage*)> cb,
|
|
325
|
+
absl::flat_hash_set<instrument_detail::DomainStorage*>& visited);
|
|
326
|
+
|
|
327
|
+
void TestOnlyReset();
|
|
235
328
|
};
|
|
236
329
|
|
|
237
330
|
namespace instrument_detail {
|
|
@@ -245,28 +338,28 @@ class GaugeStorage {
|
|
|
245
338
|
explicit GaugeStorage(QueryableDomain* domain);
|
|
246
339
|
|
|
247
340
|
void SetDouble(uint64_t offset, double value) {
|
|
248
|
-
|
|
341
|
+
GRPC_DCHECK_LT(offset, double_gauges_.size());
|
|
249
342
|
double_gauges_[offset] = value;
|
|
250
343
|
}
|
|
251
344
|
void SetInt(uint64_t offset, int64_t value) {
|
|
252
|
-
|
|
345
|
+
GRPC_DCHECK_LT(offset, int_gauges_.size());
|
|
253
346
|
int_gauges_[offset] = value;
|
|
254
347
|
}
|
|
255
348
|
void SetUint(uint64_t offset, uint64_t value) {
|
|
256
|
-
|
|
349
|
+
GRPC_DCHECK_LT(offset, uint_gauges_.size());
|
|
257
350
|
uint_gauges_[offset] = value;
|
|
258
351
|
}
|
|
259
352
|
|
|
260
353
|
std::optional<double> GetDouble(uint64_t offset) const {
|
|
261
|
-
|
|
354
|
+
GRPC_DCHECK_LT(offset, double_gauges_.size());
|
|
262
355
|
return double_gauges_[offset];
|
|
263
356
|
}
|
|
264
357
|
std::optional<int64_t> GetInt(uint64_t offset) const {
|
|
265
|
-
|
|
358
|
+
GRPC_DCHECK_LT(offset, int_gauges_.size());
|
|
266
359
|
return int_gauges_[offset];
|
|
267
360
|
}
|
|
268
361
|
std::optional<uint64_t> GetUint(uint64_t offset) const {
|
|
269
|
-
|
|
362
|
+
GRPC_DCHECK_LT(offset, uint_gauges_.size());
|
|
270
363
|
return uint_gauges_[offset];
|
|
271
364
|
}
|
|
272
365
|
|
|
@@ -276,51 +369,29 @@ class GaugeStorage {
|
|
|
276
369
|
std::vector<std::optional<uint64_t>> uint_gauges_;
|
|
277
370
|
};
|
|
278
371
|
|
|
279
|
-
class DomainStorage : public DualRefCounted<DomainStorage
|
|
372
|
+
class DomainStorage : public DualRefCounted<DomainStorage>,
|
|
373
|
+
public channelz::DataSource {
|
|
280
374
|
public:
|
|
281
375
|
DomainStorage(QueryableDomain* domain, std::vector<std::string> label);
|
|
282
376
|
|
|
283
377
|
void Orphaned() override;
|
|
284
378
|
|
|
285
379
|
virtual uint64_t SumCounter(size_t index) = 0;
|
|
380
|
+
virtual void Add(DomainStorage* other) = 0;
|
|
286
381
|
|
|
382
|
+
// Returns the label values of the CollectionScope that owns this storage.
|
|
383
|
+
// This is the full set of labels published by the domain, with unused labels
|
|
384
|
+
// in the scope set to kOmittedLabel.
|
|
287
385
|
absl::Span<const std::string> label() const { return label_; }
|
|
288
386
|
QueryableDomain* domain() const { return domain_; }
|
|
289
387
|
|
|
290
388
|
virtual void FillGaugeStorage(GaugeStorage& gauge_storage) = 0;
|
|
291
389
|
|
|
292
|
-
|
|
293
|
-
QueryableDomain* domain_;
|
|
294
|
-
const std::vector<std::string> label_;
|
|
295
|
-
};
|
|
296
|
-
|
|
297
|
-
// Interface for a set of storage objects for a domain.
|
|
298
|
-
// Each StorageSet is a collection of storage objects for a domain, one storage
|
|
299
|
-
// object per unique set of labels.
|
|
300
|
-
// The StorageSet subscribes to new label sets being created, so that all
|
|
301
|
-
// storage in a time period can be exported.
|
|
302
|
-
class StorageSet {
|
|
303
|
-
public:
|
|
304
|
-
StorageSet(QueryableDomain* domain, size_t map_shards_size);
|
|
305
|
-
virtual ~StorageSet();
|
|
306
|
-
void ExportMetrics(
|
|
307
|
-
MetricsSink& sink,
|
|
308
|
-
absl::Span<const InstrumentMetadata::Description* const> metrics);
|
|
309
|
-
size_t TestOnlyCountStorageHeld() const;
|
|
310
|
-
QueryableDomain* domain() const { return domain_; }
|
|
311
|
-
|
|
312
|
-
void AddStorage(WeakRefCountedPtr<DomainStorage> storage);
|
|
390
|
+
void AddData(channelz::DataSink sink) override;
|
|
313
391
|
|
|
314
392
|
private:
|
|
315
|
-
struct MapShard {
|
|
316
|
-
mutable Mutex mu;
|
|
317
|
-
AVL<absl::Span<const std::string>, WeakRefCountedPtr<DomainStorage>>
|
|
318
|
-
storage_map ABSL_GUARDED_BY(mu);
|
|
319
|
-
};
|
|
320
|
-
|
|
321
393
|
QueryableDomain* domain_;
|
|
322
|
-
std::
|
|
323
|
-
const size_t map_shards_size_;
|
|
394
|
+
const std::vector<std::string> label_;
|
|
324
395
|
};
|
|
325
396
|
|
|
326
397
|
// A registry of metrics.
|
|
@@ -372,20 +443,44 @@ class QueryableDomain {
|
|
|
372
443
|
// Reset the internal state of this domain. For test use only.
|
|
373
444
|
void TestOnlyReset();
|
|
374
445
|
|
|
375
|
-
static std::unique_ptr<CollectionScope> CreateCollectionScope();
|
|
376
446
|
size_t TestOnlyCountStorageHeld() const;
|
|
377
447
|
|
|
448
|
+
// Returns the number of slots allocated for each metric type.
|
|
449
|
+
uint64_t allocated_counter_slots() const { return allocated_counter_slots_; }
|
|
450
|
+
uint64_t allocated_double_gauge_slots() const {
|
|
451
|
+
return allocated_double_gauge_slots_;
|
|
452
|
+
}
|
|
453
|
+
uint64_t allocated_int_gauge_slots() const {
|
|
454
|
+
return allocated_int_gauge_slots_;
|
|
455
|
+
}
|
|
456
|
+
uint64_t allocated_uint_gauge_slots() const {
|
|
457
|
+
return allocated_uint_gauge_slots_;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
RefCountedPtr<DomainStorage> GetDomainStorage(
|
|
461
|
+
RefCountedPtr<CollectionScope> scope,
|
|
462
|
+
absl::Span<const std::string> label);
|
|
463
|
+
|
|
464
|
+
absl::string_view name() const { return name_; }
|
|
465
|
+
|
|
466
|
+
RefCountedPtr<channelz::BaseNode> channelz_node() {
|
|
467
|
+
if (!channelz_.is_set()) {
|
|
468
|
+
return channelz_.Set(new ChannelzState(this))->channelz_node();
|
|
469
|
+
}
|
|
470
|
+
return channelz_->channelz_node();
|
|
471
|
+
}
|
|
472
|
+
|
|
378
473
|
protected:
|
|
379
|
-
QueryableDomain(std::vector<std::string> label_names,
|
|
474
|
+
QueryableDomain(std::string name, std::vector<std::string> label_names,
|
|
475
|
+
size_t map_shards_size)
|
|
380
476
|
: label_names_(std::move(label_names)),
|
|
381
477
|
map_shards_size_(label_names_.empty() ? 1 : map_shards_size),
|
|
382
|
-
map_shards_(std::make_unique<MapShard[]>(map_shards_size_))
|
|
478
|
+
map_shards_(std::make_unique<MapShard[]>(map_shards_size_)),
|
|
479
|
+
name_(std::move(name)) {}
|
|
383
480
|
|
|
384
481
|
// QueryableDomain should never be destroyed.
|
|
385
482
|
~QueryableDomain() { LOG(FATAL) << "QueryableDomain destroyed."; }
|
|
386
483
|
|
|
387
|
-
RefCountedPtr<DomainStorage> GetDomainStorage(std::vector<std::string> label);
|
|
388
|
-
|
|
389
484
|
// Called by InstrumentDomain when construction is complete.
|
|
390
485
|
void Constructed();
|
|
391
486
|
|
|
@@ -393,6 +488,9 @@ class QueryableDomain {
|
|
|
393
488
|
const InstrumentMetadata::Description* AllocateCounter(
|
|
394
489
|
absl::string_view name, absl::string_view description,
|
|
395
490
|
absl::string_view unit);
|
|
491
|
+
const InstrumentMetadata::Description* AllocateUpDownCounter(
|
|
492
|
+
absl::string_view name, absl::string_view description,
|
|
493
|
+
absl::string_view unit);
|
|
396
494
|
const InstrumentMetadata::Description* AllocateHistogram(
|
|
397
495
|
absl::string_view name, absl::string_view description,
|
|
398
496
|
absl::string_view unit, HistogramBuckets bounds);
|
|
@@ -406,20 +504,7 @@ class QueryableDomain {
|
|
|
406
504
|
absl::string_view name, absl::string_view description,
|
|
407
505
|
absl::string_view unit);
|
|
408
506
|
|
|
409
|
-
// Returns the number of slots allocated for each metric type.
|
|
410
|
-
uint64_t allocated_counter_slots() const { return allocated_counter_slots_; }
|
|
411
|
-
uint64_t allocated_double_gauge_slots() const {
|
|
412
|
-
return allocated_double_gauge_slots_;
|
|
413
|
-
}
|
|
414
|
-
uint64_t allocated_int_gauge_slots() const {
|
|
415
|
-
return allocated_int_gauge_slots_;
|
|
416
|
-
}
|
|
417
|
-
uint64_t allocated_uint_gauge_slots() const {
|
|
418
|
-
return allocated_uint_gauge_slots_;
|
|
419
|
-
}
|
|
420
|
-
|
|
421
507
|
private:
|
|
422
|
-
friend class StorageSet;
|
|
423
508
|
friend class DomainStorage;
|
|
424
509
|
friend class GaugeStorage;
|
|
425
510
|
|
|
@@ -429,15 +514,28 @@ class QueryableDomain {
|
|
|
429
514
|
storage_map ABSL_GUARDED_BY(mu);
|
|
430
515
|
};
|
|
431
516
|
|
|
432
|
-
|
|
433
|
-
|
|
517
|
+
struct ChannelzState final : public channelz::DataSource {
|
|
518
|
+
explicit ChannelzState(QueryableDomain* domain)
|
|
519
|
+
: DataSource(MakeRefCounted<channelz::MetricsDomainNode>(
|
|
520
|
+
std::string(domain->name()))),
|
|
521
|
+
domain(domain) {
|
|
522
|
+
SourceConstructed();
|
|
523
|
+
}
|
|
524
|
+
~ChannelzState() { SourceDestructing(); }
|
|
525
|
+
QueryableDomain* const domain;
|
|
526
|
+
void AddData(channelz::DataSink sink) override { domain->AddData(sink); }
|
|
527
|
+
RefCountedPtr<channelz::BaseNode> channelz_node() {
|
|
528
|
+
return DataSource::channelz_node();
|
|
529
|
+
}
|
|
530
|
+
};
|
|
434
531
|
|
|
435
|
-
std::unique_ptr<StorageSet> CreateStorageSet();
|
|
436
532
|
virtual RefCountedPtr<DomainStorage> CreateDomainStorage(
|
|
437
533
|
std::vector<std::string> label) = 0;
|
|
438
534
|
void DomainStorageOrphaned(DomainStorage* storage);
|
|
439
535
|
MapShard& GetMapShard(absl::Span<const std::string> label);
|
|
440
536
|
|
|
537
|
+
void AddData(channelz::DataSink sink);
|
|
538
|
+
|
|
441
539
|
// Allocate `size` elements in the domain.
|
|
442
540
|
// Counters will allocate one element. Histograms will allocate one per
|
|
443
541
|
// bucket.
|
|
@@ -459,15 +557,11 @@ class QueryableDomain {
|
|
|
459
557
|
uint64_t allocated_int_gauge_slots_ = 0;
|
|
460
558
|
uint64_t allocated_uint_gauge_slots_ = 0;
|
|
461
559
|
|
|
462
|
-
Mutex storage_sets_mu_;
|
|
463
|
-
std::vector<StorageSet*> storage_sets_ ABSL_GUARDED_BY(storage_sets_mu_);
|
|
464
|
-
|
|
465
560
|
const size_t map_shards_size_;
|
|
466
561
|
std::unique_ptr<MapShard[]> map_shards_;
|
|
467
562
|
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
ABSL_GUARDED_BY(active_storage_sets_mu_);
|
|
563
|
+
std::string name_;
|
|
564
|
+
SingleSetPtr<ChannelzState> channelz_;
|
|
471
565
|
};
|
|
472
566
|
|
|
473
567
|
// An InstrumentDomain is a collection of metrics with a common set of labels.
|
|
@@ -486,11 +580,14 @@ struct Counter {
|
|
|
486
580
|
};
|
|
487
581
|
|
|
488
582
|
// An InstrumentHandle is a handle to a single metric in an
|
|
489
|
-
//
|
|
490
|
-
// between different InstrumentHandle specializations. Backed, Label... are
|
|
491
|
-
// per InstrumentDomainImpl.
|
|
583
|
+
// instrument domain. It has a Shape (how the metric behaves).
|
|
492
584
|
template <typename Shape, typename Domain>
|
|
493
585
|
class InstrumentHandle {
|
|
586
|
+
public:
|
|
587
|
+
absl::string_view name() const { return description_->name; }
|
|
588
|
+
absl::string_view description() const { return description_->description; }
|
|
589
|
+
absl::string_view unit() const { return description_->unit; }
|
|
590
|
+
|
|
494
591
|
private:
|
|
495
592
|
friend Domain;
|
|
496
593
|
|
|
@@ -512,7 +609,7 @@ template <typename T>
|
|
|
512
609
|
using StdString = std::string;
|
|
513
610
|
|
|
514
611
|
template <typename T>
|
|
515
|
-
using
|
|
612
|
+
using AbslStringView = absl::string_view;
|
|
516
613
|
|
|
517
614
|
} // namespace instrument_detail
|
|
518
615
|
|
|
@@ -523,9 +620,17 @@ class LowContentionBackend final {
|
|
|
523
620
|
public:
|
|
524
621
|
explicit LowContentionBackend(size_t size);
|
|
525
622
|
|
|
526
|
-
void
|
|
527
|
-
counters_[index].fetch_add(
|
|
623
|
+
void Add(size_t index, uint64_t amount) {
|
|
624
|
+
counters_[index].fetch_add(amount, std::memory_order_relaxed);
|
|
625
|
+
}
|
|
626
|
+
void Subtract(size_t index, uint64_t amount) {
|
|
627
|
+
uint64_t old_value =
|
|
628
|
+
counters_[index].fetch_sub(amount, std::memory_order_relaxed);
|
|
629
|
+
// Every decrement should have a corresponding increment.
|
|
630
|
+
GRPC_DCHECK(old_value >= amount);
|
|
528
631
|
}
|
|
632
|
+
void Increment(size_t index) { Add(index, 1); }
|
|
633
|
+
void Decrement(size_t index) { Subtract(index, 1); }
|
|
529
634
|
|
|
530
635
|
uint64_t Sum(size_t index);
|
|
531
636
|
|
|
@@ -541,14 +646,21 @@ class HighContentionBackend final {
|
|
|
541
646
|
public:
|
|
542
647
|
explicit HighContentionBackend(size_t size);
|
|
543
648
|
|
|
544
|
-
void
|
|
545
|
-
counters_.this_cpu()[index].fetch_add(
|
|
649
|
+
void Add(size_t index, uint64_t amount) {
|
|
650
|
+
counters_.this_cpu()[index].fetch_add(amount, std::memory_order_relaxed);
|
|
651
|
+
}
|
|
652
|
+
void Subtract(size_t index, uint64_t amount) {
|
|
653
|
+
counters_.this_cpu()[index].fetch_sub(amount, std::memory_order_relaxed);
|
|
546
654
|
}
|
|
655
|
+
void Increment(size_t index) { Add(index, 1); }
|
|
656
|
+
void Decrement(size_t index) { Subtract(index, 1); }
|
|
547
657
|
|
|
548
658
|
uint64_t Sum(size_t index);
|
|
549
659
|
|
|
550
660
|
private:
|
|
551
|
-
|
|
661
|
+
// Since Increments and Decrements can happen on different CPUs, we need to
|
|
662
|
+
// use a int64_t counter. The sum should still be a uint64_t.
|
|
663
|
+
PerCpu<std::unique_ptr<std::atomic<int64_t>[]>> counters_{
|
|
552
664
|
PerCpuOptions().SetMaxShards(16)};
|
|
553
665
|
};
|
|
554
666
|
|
|
@@ -558,16 +670,24 @@ class MetricsSink {
|
|
|
558
670
|
public:
|
|
559
671
|
// Called once per label per metric, with the value of that metric for that
|
|
560
672
|
// label.
|
|
561
|
-
virtual void Counter(absl::Span<const std::string>
|
|
673
|
+
virtual void Counter(absl::Span<const std::string> label_keys,
|
|
674
|
+
absl::Span<const std::string> label_values,
|
|
562
675
|
absl::string_view name, uint64_t value) = 0;
|
|
563
|
-
virtual void
|
|
676
|
+
virtual void UpDownCounter(absl::Span<const std::string> label_keys,
|
|
677
|
+
absl::Span<const std::string> label_values,
|
|
678
|
+
absl::string_view name, uint64_t value) = 0;
|
|
679
|
+
virtual void Histogram(absl::Span<const std::string> label_keys,
|
|
680
|
+
absl::Span<const std::string> label_values,
|
|
564
681
|
absl::string_view name, HistogramBuckets bounds,
|
|
565
682
|
absl::Span<const uint64_t> counts) = 0;
|
|
566
|
-
virtual void DoubleGauge(absl::Span<const std::string>
|
|
683
|
+
virtual void DoubleGauge(absl::Span<const std::string> label_keys,
|
|
684
|
+
absl::Span<const std::string> label_values,
|
|
567
685
|
absl::string_view name, double value) = 0;
|
|
568
|
-
virtual void IntGauge(absl::Span<const std::string>
|
|
686
|
+
virtual void IntGauge(absl::Span<const std::string> label_keys,
|
|
687
|
+
absl::Span<const std::string> label_values,
|
|
569
688
|
absl::string_view name, int64_t value) = 0;
|
|
570
|
-
virtual void UintGauge(absl::Span<const std::string>
|
|
689
|
+
virtual void UintGauge(absl::Span<const std::string> label_keys,
|
|
690
|
+
absl::Span<const std::string> label_values,
|
|
571
691
|
absl::string_view name, uint64_t value) = 0;
|
|
572
692
|
|
|
573
693
|
protected:
|
|
@@ -589,22 +709,22 @@ class MetricsQuery {
|
|
|
589
709
|
// remaining dimensions, etc.
|
|
590
710
|
MetricsQuery& CollapseLabels(absl::Span<const std::string> labels);
|
|
591
711
|
// Only include metrics that are in `metrics`.
|
|
592
|
-
MetricsQuery& OnlyMetrics(
|
|
712
|
+
MetricsQuery& OnlyMetrics(std::vector<std::string> metrics);
|
|
593
713
|
|
|
594
714
|
// Returns the metrics that are selected by this query.
|
|
595
715
|
std::optional<absl::Span<const std::string>> selected_metrics() const {
|
|
596
716
|
return only_metrics_;
|
|
597
717
|
}
|
|
598
718
|
|
|
719
|
+
// Runs the query, outputting the results to `sink`.
|
|
720
|
+
void Run(RefCountedPtr<CollectionScope> scope, MetricsSink& sink) const;
|
|
721
|
+
|
|
722
|
+
private:
|
|
599
723
|
// Adapts `sink` by including the filtering requested, and then calls `fn`
|
|
600
724
|
// with the filtering sink. This is mainly an implementation detail.
|
|
601
725
|
void Apply(absl::Span<const std::string> label_names,
|
|
602
726
|
absl::FunctionRef<void(MetricsSink&)> fn, MetricsSink& sink) const;
|
|
603
727
|
|
|
604
|
-
// Runs the query, outputting the results to `sink`.
|
|
605
|
-
void Run(std::unique_ptr<CollectionScope> scope, MetricsSink& sink) const;
|
|
606
|
-
|
|
607
|
-
private:
|
|
608
728
|
void ApplyLabelChecks(absl::Span<const std::string> label_names,
|
|
609
729
|
absl::FunctionRef<void(MetricsSink&)> fn,
|
|
610
730
|
MetricsSink& sink) const;
|
|
@@ -642,6 +762,8 @@ class InstrumentDomainImpl final : public QueryableDomain {
|
|
|
642
762
|
public:
|
|
643
763
|
using Self = InstrumentDomainImpl<Backend, N, Tag>;
|
|
644
764
|
using CounterHandle = InstrumentHandle<Counter, Self>;
|
|
765
|
+
using UpDownCounterHandle =
|
|
766
|
+
InstrumentHandle<InstrumentMetadata::UpDownCounterShape, Self>;
|
|
645
767
|
using DoubleGaugeHandle =
|
|
646
768
|
InstrumentHandle<InstrumentMetadata::DoubleGaugeShape, Self>;
|
|
647
769
|
using IntGaugeHandle =
|
|
@@ -682,16 +804,16 @@ class InstrumentDomainImpl final : public QueryableDomain {
|
|
|
682
804
|
protected:
|
|
683
805
|
explicit GaugeProvider(RefCountedPtr<Storage> storage)
|
|
684
806
|
: storage_(std::move(storage)) {
|
|
685
|
-
|
|
807
|
+
GRPC_DCHECK(storage_ != nullptr);
|
|
686
808
|
}
|
|
687
|
-
~GaugeProvider() {
|
|
809
|
+
~GaugeProvider() { GRPC_DCHECK(storage_ == nullptr); }
|
|
688
810
|
|
|
689
811
|
void ProviderConstructed() {
|
|
690
|
-
|
|
812
|
+
GRPC_DCHECK(storage_ != nullptr);
|
|
691
813
|
storage_->RegisterGaugeProvider(this);
|
|
692
814
|
}
|
|
693
815
|
void ProviderDestructing() {
|
|
694
|
-
|
|
816
|
+
GRPC_DCHECK(storage_ != nullptr);
|
|
695
817
|
storage_->UnregisterGaugeProvider(this);
|
|
696
818
|
storage_.reset();
|
|
697
819
|
}
|
|
@@ -708,16 +830,35 @@ class InstrumentDomainImpl final : public QueryableDomain {
|
|
|
708
830
|
|
|
709
831
|
// Increments the counter specified by `handle` by 1 for this storages
|
|
710
832
|
// labels.
|
|
711
|
-
void Increment(CounterHandle handle) {
|
|
712
|
-
|
|
713
|
-
backend_.
|
|
833
|
+
void Increment(CounterHandle handle, uint64_t amount = 1) {
|
|
834
|
+
GRPC_DCHECK_EQ(handle.instrument_domain_, domain());
|
|
835
|
+
backend_.Add(handle.offset_, amount);
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
void Increment(UpDownCounterHandle handle, uint64_t amount = 1) {
|
|
839
|
+
GRPC_DCHECK_EQ(handle.instrument_domain_, domain());
|
|
840
|
+
backend_.Add(handle.offset_, amount);
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
void Decrement(UpDownCounterHandle handle, uint64_t amount = 1) {
|
|
844
|
+
GRPC_DCHECK_EQ(handle.instrument_domain_, domain());
|
|
845
|
+
backend_.Subtract(handle.offset_, amount);
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
void Add(DomainStorage* other) override {
|
|
849
|
+
GRPC_DCHECK_EQ(domain(), other->domain());
|
|
850
|
+
for (size_t i = 0; i < domain()->allocated_counter_slots(); ++i) {
|
|
851
|
+
uint64_t amount = other->SumCounter(i);
|
|
852
|
+
if (amount == 0) continue;
|
|
853
|
+
backend_.Add(i, amount);
|
|
854
|
+
}
|
|
714
855
|
}
|
|
715
856
|
|
|
716
857
|
template <typename Shape>
|
|
717
858
|
void Increment(const HistogramHandle<Shape>& handle, int64_t value) {
|
|
718
|
-
|
|
859
|
+
GRPC_DCHECK_EQ(handle.instrument_domain_, domain());
|
|
719
860
|
CallHistogramCollectionHooks(handle.description_, label(), value);
|
|
720
|
-
backend_.
|
|
861
|
+
backend_.Add(handle.offset_ + handle.shape_->BucketFor(value), 1);
|
|
721
862
|
}
|
|
722
863
|
|
|
723
864
|
private:
|
|
@@ -758,10 +899,10 @@ class InstrumentDomainImpl final : public QueryableDomain {
|
|
|
758
899
|
};
|
|
759
900
|
|
|
760
901
|
GPR_ATTRIBUTE_NOINLINE explicit InstrumentDomainImpl(
|
|
761
|
-
std::vector<std::string> label_names,
|
|
902
|
+
std::string name, std::vector<std::string> label_names,
|
|
762
903
|
size_t map_shards = std::min(16u, gpr_cpu_num_cores()))
|
|
763
|
-
: QueryableDomain(std::move(label_names), map_shards) {
|
|
764
|
-
|
|
904
|
+
: QueryableDomain(std::move(name), std::move(label_names), map_shards) {
|
|
905
|
+
GRPC_CHECK_EQ(this->label_names().size(), N);
|
|
765
906
|
Constructed();
|
|
766
907
|
}
|
|
767
908
|
|
|
@@ -777,6 +918,14 @@ class InstrumentDomainImpl final : public QueryableDomain {
|
|
|
777
918
|
Counter{}};
|
|
778
919
|
}
|
|
779
920
|
|
|
921
|
+
UpDownCounterHandle RegisterUpDownCounter(absl::string_view name,
|
|
922
|
+
absl::string_view description,
|
|
923
|
+
absl::string_view unit) {
|
|
924
|
+
return UpDownCounterHandle{this,
|
|
925
|
+
AllocateUpDownCounter(name, description, unit),
|
|
926
|
+
InstrumentMetadata::UpDownCounterShape{}};
|
|
927
|
+
}
|
|
928
|
+
|
|
780
929
|
template <typename Shape, typename... Args>
|
|
781
930
|
HistogramHandle<Shape> RegisterHistogram(absl::string_view name,
|
|
782
931
|
absl::string_view description,
|
|
@@ -812,13 +961,14 @@ class InstrumentDomainImpl final : public QueryableDomain {
|
|
|
812
961
|
// GetStorage: returns a pointer to the storage for the given key, creating
|
|
813
962
|
// it if necessary.
|
|
814
963
|
template <typename... Args>
|
|
815
|
-
RefCountedPtr<Storage> GetStorage(
|
|
964
|
+
RefCountedPtr<Storage> GetStorage(RefCountedPtr<CollectionScope> scope,
|
|
965
|
+
Args&&... labels) {
|
|
816
966
|
static_assert(sizeof...(Args) == N, "Incorrect number of labels provided");
|
|
817
|
-
std::vector<std::string>
|
|
818
|
-
|
|
819
|
-
(
|
|
967
|
+
std::vector<std::string> label_values;
|
|
968
|
+
label_values.reserve(N);
|
|
969
|
+
(label_values.emplace_back(absl::StrCat(labels)), ...);
|
|
820
970
|
return DownCastRefCountedPtr<Storage>(
|
|
821
|
-
GetDomainStorage(std::move(
|
|
971
|
+
GetDomainStorage(std::move(scope), label_values));
|
|
822
972
|
}
|
|
823
973
|
|
|
824
974
|
RefCountedPtr<DomainStorage> CreateDomainStorage(
|
|
@@ -852,20 +1002,23 @@ class InstrumentDomain {
|
|
|
852
1002
|
static auto* domain = new instrument_detail::InstrumentDomainImpl<
|
|
853
1003
|
typename Derived::Backend,
|
|
854
1004
|
std::tuple_size_v<decltype(Derived::kLabels)>, Derived>(
|
|
1005
|
+
absl::StrCat(Derived::kName),
|
|
855
1006
|
instrument_detail::MakeLabelFromTuple(Derived::kLabels));
|
|
856
1007
|
return domain;
|
|
857
1008
|
}
|
|
858
1009
|
|
|
859
1010
|
// Returns an InstrumentStorageRefPtr<Derived>.
|
|
860
1011
|
template <typename... Args>
|
|
861
|
-
static auto GetStorage(
|
|
862
|
-
|
|
1012
|
+
static auto GetStorage(RefCountedPtr<CollectionScope> scope,
|
|
1013
|
+
Args&&... labels) {
|
|
1014
|
+
return Domain()->GetStorage(std::move(scope),
|
|
1015
|
+
std::forward<Args>(labels)...);
|
|
863
1016
|
}
|
|
864
1017
|
|
|
865
1018
|
protected:
|
|
866
1019
|
template <typename... Label>
|
|
867
1020
|
static constexpr auto Labels(Label... labels) {
|
|
868
|
-
return std::tuple<instrument_detail::
|
|
1021
|
+
return std::tuple<instrument_detail::AbslStringView<Label>...>{labels...};
|
|
869
1022
|
}
|
|
870
1023
|
|
|
871
1024
|
static auto RegisterCounter(absl::string_view name,
|
|
@@ -874,6 +1027,12 @@ class InstrumentDomain {
|
|
|
874
1027
|
return Domain()->RegisterCounter(name, description, unit);
|
|
875
1028
|
}
|
|
876
1029
|
|
|
1030
|
+
static auto RegisterUpDownCounter(absl::string_view name,
|
|
1031
|
+
absl::string_view description,
|
|
1032
|
+
absl::string_view unit) {
|
|
1033
|
+
return Domain()->RegisterUpDownCounter(name, description, unit);
|
|
1034
|
+
}
|
|
1035
|
+
|
|
877
1036
|
template <typename Shape, typename... Args>
|
|
878
1037
|
static auto RegisterHistogram(absl::string_view name,
|
|
879
1038
|
absl::string_view description,
|
|
@@ -923,9 +1082,23 @@ using GaugeProvider = typename InstrumentDomainImpl<DomainType>::GaugeProvider;
|
|
|
923
1082
|
// Reset all registered instruments. For test use only.
|
|
924
1083
|
void TestOnlyResetInstruments();
|
|
925
1084
|
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
1085
|
+
// Create a new collection scope.
|
|
1086
|
+
// `parent` is the parent scope, or nullptr for a root scope.
|
|
1087
|
+
// `labels` is a list of labels that this scope is interested in. The scope's
|
|
1088
|
+
// labels of interest will be the union of its own labels and its parent's
|
|
1089
|
+
// labels.
|
|
1090
|
+
// `child_shards_count` and `storage_shards_count` are performance tuning
|
|
1091
|
+
// parameters for sharding internal data structures.
|
|
1092
|
+
RefCountedPtr<CollectionScope> CreateCollectionScope(
|
|
1093
|
+
std::vector<RefCountedPtr<CollectionScope>> parents,
|
|
1094
|
+
absl::Span<const std::string> labels, size_t child_shards_count = 1,
|
|
1095
|
+
size_t storage_shards_count = 1);
|
|
1096
|
+
|
|
1097
|
+
RefCountedPtr<CollectionScope> CreateRootCollectionScope(
|
|
1098
|
+
absl::Span<const std::string> labels, size_t child_shards_count = 1,
|
|
1099
|
+
size_t storage_shards_count = 1);
|
|
1100
|
+
|
|
1101
|
+
RefCountedPtr<CollectionScope> GlobalCollectionScope();
|
|
929
1102
|
|
|
930
1103
|
} // namespace grpc_core
|
|
931
1104
|
|