grpc 1.75.0 → 1.78.1
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 +24 -5
- data/include/grpc/credentials.h +27 -6
- data/include/grpc/event_engine/memory_allocator.h +2 -0
- data/include/grpc/event_engine/memory_request.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 +5 -5
- data/src/core/call/call_filters.h +211 -37
- data/src/core/call/call_spine.cc +1 -1
- data/src/core/call/call_spine.h +54 -32
- data/src/core/call/channelz_context.h +30 -0
- data/src/core/call/client_call.cc +49 -10
- data/src/core/call/client_call.h +6 -3
- data/src/core/call/filter_fusion.h +9 -9
- 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 +10 -9
- 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 +2 -2
- data/src/core/call/security_context.h +1 -1
- data/src/core/call/server_call.cc +5 -5
- data/src/core/call/server_call.h +6 -4
- 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 +25 -29
- data/src/core/channelz/channelz.h +73 -22
- data/src/core/channelz/channelz_registry.cc +2 -2
- data/src/core/channelz/channelz_registry.h +53 -2
- data/src/core/channelz/property_list.cc +18 -0
- data/src/core/channelz/property_list.h +15 -4
- data/src/core/channelz/text_encode.cc +66 -0
- data/src/core/channelz/text_encode.h +29 -0
- data/src/core/channelz/v2tov1/convert.cc +17 -6
- data/src/core/channelz/v2tov1/legacy_api.cc +18 -12
- data/src/core/channelz/v2tov1/property_list.cc +2 -1
- data/src/core/channelz/ztrace_collector.h +260 -87
- data/src/core/client_channel/backup_poller.cc +7 -8
- 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 +144 -84
- 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 +424 -686
- data/src/core/client_channel/client_channel_filter.h +57 -150
- data/src/core/client_channel/client_channel_internal.h +8 -5
- 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 +5 -5
- data/src/core/client_channel/connector.h +2 -0
- data/src/core/client_channel/dynamic_filters.cc +5 -5
- data/src/core/client_channel/global_subchannel_pool.cc +0 -37
- data/src/core/client_channel/global_subchannel_pool.h +1 -28
- data/src/core/client_channel/lb_metadata.h +1 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +10 -12
- data/src/core/client_channel/load_balanced_call_destination.h +1 -1
- data/src/core/client_channel/local_subchannel_pool.cc +4 -4
- data/src/core/client_channel/retry_filter.cc +2 -2
- data/src/core/client_channel/retry_filter.h +3 -3
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +11 -12
- 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 +114 -25
- 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 +5 -5
- data/src/core/client_channel/subchannel_stream_client.h +3 -3
- data/src/core/config/config_vars.cc +38 -3
- data/src/core/config/config_vars.h +26 -0
- data/src/core/config/core_configuration.cc +5 -5
- data/src/core/config/core_configuration.h +8 -8
- data/src/core/config/load_config.cc +13 -1
- data/src/core/config/load_config.h +2 -0
- data/src/core/credentials/call/call_credentials.h +4 -4
- 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 +7 -6
- data/src/core/credentials/call/composite/composite_call_credentials.cc +6 -6
- data/src/core/credentials/call/composite/composite_call_credentials.h +1 -1
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +9 -9
- 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 +7 -7
- 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 +6 -6
- 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 +7 -7
- data/src/core/credentials/call/jwt/jwt_credentials.cc +5 -5
- data/src/core/credentials/call/jwt/jwt_credentials.h +4 -4
- data/src/core/credentials/call/jwt/jwt_verifier.cc +19 -18
- 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 +49 -72
- data/src/core/credentials/call/oauth2/oauth2_credentials.h +3 -9
- data/src/core/credentials/call/plugin/plugin_credentials.cc +6 -6
- 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 +5 -5
- data/src/core/credentials/transport/alts/alts_security_connector.cc +17 -15
- 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 +23 -3
- data/src/core/credentials/transport/alts/grpc_alts_credentials_options.cc +10 -1
- data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +31 -0
- data/src/core/credentials/transport/alts/grpc_alts_credentials_server_options.cc +8 -3
- 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 +7 -7
- 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 +7 -7
- data/src/core/credentials/transport/google_default/credentials_generic.cc +2 -2
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +83 -39
- data/src/core/credentials/transport/google_default/google_default_credentials.h +0 -2
- data/src/core/credentials/transport/insecure/insecure_security_connector.cc +3 -3
- data/src/core/credentials/transport/insecure/insecure_security_connector.h +2 -2
- data/src/core/credentials/transport/local/local_security_connector.cc +13 -13
- data/src/core/credentials/transport/security_connector.cc +6 -6
- data/src/core/credentials/transport/security_connector.h +2 -2
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +13 -13
- data/src/core/credentials/transport/ssl/ssl_credentials.h +2 -2
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -8
- data/src/core/credentials/transport/tls/certificate_provider_factory.h +1 -1
- data/src/core/credentials/transport/tls/certificate_provider_registry.cc +2 -2
- data/src/core/credentials/transport/tls/certificate_provider_registry.h +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +25 -25
- 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 +8 -8
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +5 -5
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +4 -4
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +18 -18
- 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 +18 -13
- data/src/core/credentials/transport/tls/ssl_utils.h +2 -2
- data/src/core/credentials/transport/tls/tls_credentials.cc +3 -3
- data/src/core/credentials/transport/tls/tls_security_connector.cc +15 -15
- data/src/core/credentials/transport/tls/tls_security_connector.h +3 -3
- data/src/core/credentials/transport/transport_credentials.cc +3 -3
- data/src/core/credentials/transport/transport_credentials.h +4 -4
- data/src/core/credentials/transport/xds/xds_credentials.cc +5 -5
- 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 +6 -4
- 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 +2 -2
- 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 +11 -11
- data/src/core/ext/filters/http/message_compress/compression_filter.h +24 -5
- 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 +14 -14
- 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/alpn/alpn.cc +2 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +58 -44
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +25 -24
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -2
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +306 -148
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -7
- data/src/core/ext/transport/chttp2/transport/flow_control.h +223 -83
- data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +105 -0
- data/src/core/ext/transport/chttp2/transport/frame.cc +175 -27
- data/src/core/ext/transport/chttp2/transport/frame.h +58 -10
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
- 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 +6 -6
- 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 +194 -54
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +5 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +34 -34
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1475 -632
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +384 -373
- 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 -3
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +6 -5
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +417 -0
- data/src/core/ext/transport/chttp2/transport/http2_status.h +7 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +337 -30
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +196 -21
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +172 -72
- data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +128 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +31 -19
- 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 +30 -21
- data/src/core/ext/transport/chttp2/transport/parsing.cc +25 -23
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +3 -3
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +70 -28
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +63 -23
- 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 +287 -0
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +476 -208
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +17 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.h +57 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -2
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +202 -84
- data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +6 -6
- data/src/core/ext/transport/inproc/inproc_transport.cc +9 -3
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +11 -8
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +740 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +218 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +46 -0
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +87 -55
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +23 -21
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.h +47 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.c +129 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.h +72 -0
- 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 +5 -5
- 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 +8 -8
- 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 +12 -12
- 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 +6 -6
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +38 -15
- data/src/core/handshaker/security/secure_endpoint.cc +31 -11
- data/src/core/handshaker/security/security_handshaker.cc +11 -8
- data/src/core/handshaker/security/security_handshaker.h +1 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +6 -6
- 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 +29 -25
- data/src/core/lib/channel/channel_stack.h +8 -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 +8 -13
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/promise_based_filter.cc +132 -72
- data/src/core/lib/channel/promise_based_filter.h +39 -23
- data/src/core/lib/compression/compression_internal.cc +6 -6
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/compression/message_compress.cc +8 -8
- 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 +30 -28
- data/src/core/lib/event_engine/ares_resolver.h +4 -4
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -3
- 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 +4 -4
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +3 -3
- 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 +3 -3
- data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +1 -1
- data/src/core/lib/event_engine/extensions/supports_fd.h +5 -5
- 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 +12 -12
- 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 +15 -15
- 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 +3 -3
- 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 +28 -27
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +17 -17
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +175 -177
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +40 -61
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +11 -7
- 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 +9 -9
- 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 +2 -2
- 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.cc +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 +4 -4
- 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/resolved_address.cc +3 -3
- data/src/core/lib/event_engine/shim.cc +8 -11
- data/src/core/lib/event_engine/shim.h +2 -1
- data/src/core/lib/event_engine/slice.cc +2 -2
- data/src/core/lib/event_engine/tcp_socket_utils.cc +15 -15
- 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 +11 -11
- 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 +32 -32
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +2 -2
- data/src/core/lib/event_engine/windows/iocp.cc +11 -11
- 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 +7 -7
- data/src/core/lib/event_engine/windows/win_socket.h +2 -2
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +16 -16
- data/src/core/lib/event_engine/windows/windows_engine.cc +20 -18
- data/src/core/lib/event_engine/windows/windows_engine.h +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.cc +10 -10
- 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 +255 -42
- data/src/core/lib/experiments/experiments.h +105 -21
- data/src/core/lib/iomgr/buffer_list.cc +1 -1
- data/src/core/lib/iomgr/call_combiner.cc +4 -4
- 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 +7 -7
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +6 -6
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +16 -15
- 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 +19 -19
- data/src/core/lib/iomgr/ev_poll_posix.cc +14 -14
- 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 +10 -9
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -1
- 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 +9 -9
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr_windows.cc +3 -3
- data/src/core/lib/iomgr/lockfree_event.cc +3 -3
- data/src/core/lib/iomgr/polling_entity.cc +4 -4
- 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 +4 -4
- data/src/core/lib/iomgr/socket_windows.cc +6 -6
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -7
- data/src/core/lib/iomgr/tcp_client_windows.cc +4 -4
- data/src/core/lib/iomgr/tcp_posix.cc +47 -47
- data/src/core/lib/iomgr/tcp_server.cc +5 -0
- data/src/core/lib/iomgr/tcp_server.h +7 -0
- data/src/core/lib/iomgr/tcp_server_posix.cc +62 -31
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +4 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +70 -31
- data/src/core/lib/iomgr/tcp_windows.cc +8 -8
- data/src/core/lib/iomgr/timer_generic.cc +5 -5
- data/src/core/lib/iomgr/timer_manager.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -2
- 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 +3 -3
- data/src/core/lib/promise/activity.h +11 -10
- 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 +3 -3
- data/src/core/lib/promise/detail/join_state.h +10 -10
- 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 +16 -16
- data/src/core/lib/promise/detail/status.h +2 -2
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +1 -1
- data/src/core/lib/promise/for_each.h +8 -8
- 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 +5 -5
- data/src/core/lib/promise/latch.h +9 -9
- 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 +31 -30
- data/src/core/lib/promise/mpsc.h +2 -2
- data/src/core/lib/promise/observable.h +6 -6
- data/src/core/lib/promise/party.cc +43 -30
- data/src/core/lib/promise/party.h +27 -23
- data/src/core/lib/promise/pipe.h +31 -17
- data/src/core/lib/promise/poll.h +6 -5
- data/src/core/lib/promise/promise.h +2 -4
- data/src/core/lib/promise/sleep.cc +3 -1
- data/src/core/lib/promise/sleep.h +1 -1
- data/src/core/lib/promise/status_flag.h +8 -8
- data/src/core/lib/promise/try_join.h +5 -5
- data/src/core/lib/promise/try_seq.h +5 -5
- 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/arena.h +15 -2
- data/src/core/lib/resource_quota/connection_quota.cc +9 -7
- data/src/core/lib/resource_quota/connection_quota.h +1 -1
- data/src/core/lib/resource_quota/memory_quota.cc +48 -27
- data/src/core/lib/resource_quota/memory_quota.h +56 -20
- 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 +55 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -2
- data/src/core/lib/resource_quota/thread_quota.h +1 -1
- data/src/core/lib/resource_tracker/resource_tracker.cc +33 -0
- data/src/core/lib/resource_tracker/resource_tracker.h +46 -0
- data/src/core/lib/security/authorization/audit_logging.cc +7 -7
- 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_authorization_engine.cc +2 -2
- 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 +3 -3
- 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/byte_buffer_reader.cc +2 -2
- data/src/core/lib/surface/call.cc +58 -28
- data/src/core/lib/surface/call.h +13 -6
- data/src/core/lib/surface/call_log_batch.cc +2 -2
- data/src/core/lib/surface/call_utils.cc +7 -7
- data/src/core/lib/surface/call_utils.h +85 -20
- data/src/core/lib/surface/channel.cc +6 -5
- data/src/core/lib/surface/channel.h +13 -3
- data/src/core/lib/surface/channel_create.cc +12 -8
- data/src/core/lib/surface/channel_create.h +1 -1
- data/src/core/lib/surface/channel_init.cc +84 -27
- data/src/core/lib/surface/channel_init.h +30 -13
- data/src/core/lib/surface/completion_queue.cc +21 -20
- data/src/core/lib/surface/completion_queue_factory.cc +7 -7
- data/src/core/lib/surface/connection_context.h +45 -2
- data/src/core/lib/surface/filter_stack_call.cc +25 -31
- data/src/core/lib/surface/filter_stack_call.h +6 -7
- 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 +10 -10
- 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 +3 -3
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +5 -5
- 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 +4 -4
- data/src/core/lib/transport/promise_endpoint.h +11 -11
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- 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 +8 -8
- 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 +6 -6
- 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 +37 -48
- 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 +13 -9
- data/src/core/load_balancing/health_check_client_internal.h +5 -5
- 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 +3 -3
- data/src/core/load_balancing/lb_policy_registry.h +2 -2
- data/src/core/load_balancing/oob_backend_metric.cc +11 -7
- data/src/core/load_balancing/oob_backend_metric_internal.h +4 -4
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +9 -17
- data/src/core/load_balancing/pick_first/pick_first.cc +62 -32
- data/src/core/load_balancing/priority/priority.cc +29 -30
- data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -11
- data/src/core/load_balancing/rls/rls.cc +23 -23
- data/src/core/load_balancing/round_robin/round_robin.cc +16 -16
- data/src/core/load_balancing/subchannel_interface.h +2 -2
- data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +3 -3
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +42 -41
- data/src/core/load_balancing/weighted_target/weighted_target.cc +14 -14
- data/src/core/load_balancing/xds/cds.cc +81 -37
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +24 -41
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +6 -6
- data/src/core/load_balancing/xds/xds_override_host.cc +14 -14
- 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 +4 -4
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +35 -35
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +16 -16
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -2
- data/src/core/resolver/dns/dns_resolver_plugin.cc +8 -5
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +10 -10
- 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 +6 -6
- data/src/core/resolver/endpoint_addresses.h +4 -1
- data/src/core/resolver/fake/fake_resolver.cc +3 -3
- data/src/core/resolver/fake/fake_resolver.h +3 -3
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +46 -59
- data/src/core/resolver/polling_resolver.cc +8 -8
- 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 +5 -4
- 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 +7 -7
- data/src/core/resolver/xds/xds_dependency_manager.h +3 -3
- data/src/core/resolver/xds/xds_resolver.cc +25 -22
- 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 +47 -43
- 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 +9 -5
- data/src/core/server/server_config_selector.h +2 -2
- data/src/core/server/server_config_selector_filter.cc +5 -5
- 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 +19 -18
- 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 +4 -4
- data/src/core/service_config/service_config_parser.h +1 -1
- data/src/core/telemetry/call_tracer.cc +39 -49
- data/src/core/telemetry/call_tracer.h +201 -24
- data/src/core/telemetry/default_tcp_tracer.h +3 -3
- data/src/core/telemetry/histogram.h +205 -0
- data/src/core/telemetry/instrument.cc +999 -0
- data/src/core/telemetry/instrument.h +1105 -0
- data/src/core/telemetry/metrics.cc +15 -5
- data/src/core/telemetry/metrics.h +36 -5
- data/src/core/telemetry/stats.h +2 -2
- data/src/core/telemetry/stats_data.cc +1 -20
- data/src/core/telemetry/stats_data.h +2 -21
- data/src/core/transport/auth_context.cc +3 -3
- 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 +81 -48
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -0
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +46 -36
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +4 -4
- 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 +4 -4
- 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 +16 -8
- 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 +18 -5
- data/src/core/tsi/fake_transport_security.cc +6 -5
- data/src/core/tsi/local_transport_security.cc +1 -1
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +10 -10
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +4 -4
- data/src/core/tsi/ssl_transport_security.cc +30 -30
- data/src/core/tsi/ssl_transport_security.h +1 -1
- data/src/core/tsi/ssl_transport_security_utils.cc +10 -10
- 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/chunked_vector.h +4 -4
- 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 +2 -2
- data/src/core/util/event_log.h +3 -3
- data/src/core/util/gcp_metadata_query.cc +7 -7
- data/src/core/util/gcp_metadata_query.h +2 -2
- data/src/core/util/glob.cc +2 -0
- data/src/core/util/grpc_check.cc +24 -0
- data/src/core/util/grpc_check.h +103 -0
- 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 +6 -6
- 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 +4 -4
- 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 +199 -28
- 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 +4 -4
- data/src/core/util/matchers.h +1 -1
- data/src/core/util/memory_usage.h +17 -1
- 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/directory_reader.cc +3 -2
- data/src/core/util/posix/stat.cc +2 -2
- data/src/core/util/posix/sync.cc +24 -24
- data/src/core/util/posix/thd.cc +2 -2
- data/src/core/util/posix/tmpfile.cc +2 -2
- data/src/core/util/postmortem_emit.cc +52 -0
- data/src/core/util/postmortem_emit.h +30 -0
- data/src/core/util/ref_counted.h +2 -2
- data/src/core/util/ref_counted_ptr.h +6 -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/trie_lookup.h +170 -0
- data/src/core/util/unique_ptr_with_bitset.h +5 -5
- 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 +8 -3
- data/src/core/xds/grpc/xds_certificate_provider.cc +4 -4
- data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +39 -20
- data/src/core/xds/grpc/xds_client_grpc.h +6 -3
- 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 +7 -7
- data/src/core/xds/grpc/xds_cluster_parser.h +1 -1
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +4 -4
- 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 +7 -7
- 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.cc +4 -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 +9 -9
- data/src/core/xds/grpc/xds_listener_parser.h +1 -1
- data/src/core/xds/grpc/xds_matcher.cc +277 -0
- data/src/core/xds/grpc/xds_matcher.h +432 -0
- data/src/core/xds/grpc/xds_matcher_action.cc +47 -0
- data/src/core/xds/grpc/xds_matcher_action.h +48 -0
- data/src/core/xds/grpc/xds_matcher_context.cc +29 -0
- data/src/core/xds/grpc/xds_matcher_context.h +46 -0
- data/src/core/xds/grpc/xds_matcher_input.cc +79 -0
- data/src/core/xds/grpc/xds_matcher_input.h +105 -0
- data/src/core/xds/grpc/xds_matcher_parse.cc +356 -0
- data/src/core/xds/grpc/xds_matcher_parse.h +39 -0
- data/src/core/xds/grpc/xds_metadata.cc +4 -3
- 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 +14 -14
- data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
- data/src/core/xds/grpc/xds_routing.cc +6 -6
- 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 +11 -11
- data/src/core/xds/grpc/xds_transport_grpc.h +2 -2
- data/src/core/xds/xds_client/lrs_client.cc +9 -9
- 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 +17 -17
- 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_grpc_imports.generated.h +2 -2
- 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/grpc.rb +7 -9
- data/src/ruby/lib/grpc/version.rb +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
- data/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
- data/third_party/abseil-cpp/absl/container/node_hash_map.h +687 -0
- metadata +67 -8
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
|
|
20
20
|
#include <utility>
|
|
21
21
|
|
|
22
|
-
#include "absl/container/flat_hash_set.h"
|
|
23
|
-
#include "absl/hash/hash.h"
|
|
24
22
|
#include "src/core/lib/promise/activity.h"
|
|
25
23
|
#include "src/core/lib/promise/poll.h"
|
|
24
|
+
#include "absl/container/flat_hash_set.h"
|
|
25
|
+
#include "absl/hash/hash.h"
|
|
26
26
|
|
|
27
27
|
namespace grpc_core {
|
|
28
28
|
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
#include <string>
|
|
25
25
|
#include <utility>
|
|
26
26
|
|
|
27
|
-
#include "absl/strings/str_cat.h"
|
|
28
27
|
#include "src/core/lib/channel/channel_args.h"
|
|
29
28
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
|
30
29
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
|
31
30
|
#include "src/core/lib/resource_quota/resource_quota.h"
|
|
32
31
|
#include "src/core/lib/resource_quota/thread_quota.h"
|
|
33
32
|
#include "src/core/util/ref_counted_ptr.h"
|
|
33
|
+
#include "absl/strings/str_cat.h"
|
|
34
34
|
|
|
35
35
|
namespace grpc_core {
|
|
36
36
|
|
|
@@ -102,6 +102,20 @@ template <typename T>
|
|
|
102
102
|
const uint16_t ArenaContextTraits<T>::id_ =
|
|
103
103
|
BaseArenaContextTraits::MakeId(DestroyArenaContext<T>);
|
|
104
104
|
|
|
105
|
+
template <typename T, typename SfinaeVoid = void>
|
|
106
|
+
struct GetContextId {
|
|
107
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static uint16_t id() {
|
|
108
|
+
return ArenaContextTraits<T>::id();
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
template <typename T>
|
|
113
|
+
struct GetContextId<T, std::void_t<typename ContextSubclass<T>::Base>> {
|
|
114
|
+
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static uint16_t id() {
|
|
115
|
+
return GetContextId<typename ContextSubclass<T>::Base>::id();
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
105
119
|
template <typename T, typename A, typename B>
|
|
106
120
|
struct IfArray {
|
|
107
121
|
using Result = A;
|
|
@@ -292,8 +306,7 @@ class Arena final : public RefCounted<Arena, NonPolymorphicRefCount,
|
|
|
292
306
|
// often needs to access these directly.
|
|
293
307
|
template <typename T>
|
|
294
308
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION T* GetContext() {
|
|
295
|
-
return static_cast<T*>(
|
|
296
|
-
contexts()[arena_detail::ArenaContextTraits<T>::id()]);
|
|
309
|
+
return static_cast<T*>(contexts()[arena_detail::GetContextId<T>::id()]);
|
|
297
310
|
}
|
|
298
311
|
|
|
299
312
|
template <typename T>
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
#include <atomic>
|
|
20
20
|
#include <cstdint>
|
|
21
21
|
|
|
22
|
-
#include "
|
|
22
|
+
#include "src/core/util/grpc_check.h"
|
|
23
23
|
|
|
24
24
|
namespace grpc_core {
|
|
25
25
|
|
|
@@ -27,16 +27,17 @@ ConnectionQuota::ConnectionQuota() = default;
|
|
|
27
27
|
|
|
28
28
|
void ConnectionQuota::SetMaxIncomingConnections(int max_incoming_connections) {
|
|
29
29
|
// The maximum can only be configured once.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
GRPC_CHECK_LT(max_incoming_connections, INT_MAX);
|
|
31
|
+
GRPC_CHECK(max_incoming_connections_.exchange(max_incoming_connections,
|
|
32
|
+
std::memory_order_release) ==
|
|
33
|
+
INT_MAX);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
// Returns true if the incoming connection is allowed to be accepted on the
|
|
36
37
|
// server.
|
|
37
38
|
bool ConnectionQuota::AllowIncomingConnection(MemoryQuotaRefPtr mem_quota,
|
|
38
39
|
absl::string_view /*peer*/) {
|
|
39
|
-
if (mem_quota->
|
|
40
|
+
if (mem_quota->RejectNewConnectionsUnderHighMemoryPressure()) {
|
|
40
41
|
return false;
|
|
41
42
|
}
|
|
42
43
|
|
|
@@ -62,8 +63,9 @@ void ConnectionQuota::ReleaseConnections(int num_connections) {
|
|
|
62
63
|
if (max_incoming_connections_.load(std::memory_order_relaxed) == INT_MAX) {
|
|
63
64
|
return;
|
|
64
65
|
}
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
GRPC_CHECK(active_incoming_connections_.fetch_sub(
|
|
67
|
+
num_connections, std::memory_order_acq_rel) >=
|
|
68
|
+
num_connections);
|
|
67
69
|
}
|
|
68
70
|
|
|
69
71
|
} // namespace grpc_core
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
#include <cstddef>
|
|
21
21
|
#include <limits>
|
|
22
22
|
|
|
23
|
-
#include "absl/base/thread_annotations.h"
|
|
24
23
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
|
25
24
|
#include "src/core/util/ref_counted.h"
|
|
26
25
|
#include "src/core/util/ref_counted_ptr.h"
|
|
27
26
|
#include "src/core/util/sync.h"
|
|
27
|
+
#include "absl/base/thread_annotations.h"
|
|
28
28
|
|
|
29
29
|
namespace grpc_core {
|
|
30
30
|
|
|
@@ -28,10 +28,6 @@
|
|
|
28
28
|
#include <tuple>
|
|
29
29
|
#include <utility>
|
|
30
30
|
|
|
31
|
-
#include "absl/log/check.h"
|
|
32
|
-
#include "absl/log/log.h"
|
|
33
|
-
#include "absl/status/status.h"
|
|
34
|
-
#include "absl/strings/str_cat.h"
|
|
35
31
|
#include "src/core/channelz/channelz.h"
|
|
36
32
|
#include "src/core/channelz/property_list.h"
|
|
37
33
|
#include "src/core/lib/debug/trace.h"
|
|
@@ -40,9 +36,14 @@
|
|
|
40
36
|
#include "src/core/lib/promise/map.h"
|
|
41
37
|
#include "src/core/lib/promise/race.h"
|
|
42
38
|
#include "src/core/lib/promise/seq.h"
|
|
39
|
+
#include "src/core/lib/resource_tracker/resource_tracker.h"
|
|
43
40
|
#include "src/core/lib/slice/slice_refcount.h"
|
|
41
|
+
#include "src/core/util/grpc_check.h"
|
|
44
42
|
#include "src/core/util/mpscq.h"
|
|
45
43
|
#include "src/core/util/useful.h"
|
|
44
|
+
#include "absl/log/log.h"
|
|
45
|
+
#include "absl/status/status.h"
|
|
46
|
+
#include "absl/strings/str_cat.h"
|
|
46
47
|
|
|
47
48
|
namespace grpc_core {
|
|
48
49
|
|
|
@@ -132,16 +133,20 @@ class SliceRefCount : public grpc_slice_refcount {
|
|
|
132
133
|
size_t size_;
|
|
133
134
|
};
|
|
134
135
|
|
|
135
|
-
std::atomic<double> container_memory_pressure{0.0};
|
|
136
|
-
|
|
137
136
|
} // namespace
|
|
138
137
|
|
|
139
|
-
void SetContainerMemoryPressure(double pressure) {
|
|
140
|
-
container_memory_pressure.store(pressure, std::memory_order_relaxed);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
138
|
double ContainerMemoryPressure() {
|
|
144
|
-
|
|
139
|
+
auto* tracker = ResourceTracker::Get();
|
|
140
|
+
if (tracker == nullptr) {
|
|
141
|
+
return 0.0;
|
|
142
|
+
}
|
|
143
|
+
auto value = tracker->GetMetricValue("memory");
|
|
144
|
+
if (!value.ok()) {
|
|
145
|
+
LOG(WARNING) << "Failed to get 'memory' metric from ResourceTracker: "
|
|
146
|
+
<< value.status();
|
|
147
|
+
return 0.0;
|
|
148
|
+
}
|
|
149
|
+
return *value;
|
|
145
150
|
}
|
|
146
151
|
|
|
147
152
|
//
|
|
@@ -272,9 +277,9 @@ GrpcMemoryAllocatorImpl::GrpcMemoryAllocatorImpl(
|
|
|
272
277
|
}
|
|
273
278
|
|
|
274
279
|
GrpcMemoryAllocatorImpl::~GrpcMemoryAllocatorImpl() {
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
280
|
+
GRPC_CHECK_EQ(free_bytes_.load(std::memory_order_acquire) +
|
|
281
|
+
sizeof(GrpcMemoryAllocatorImpl),
|
|
282
|
+
taken_bytes_.load(std::memory_order_relaxed));
|
|
278
283
|
memory_quota_->Return(taken_bytes_.load(std::memory_order_relaxed));
|
|
279
284
|
}
|
|
280
285
|
|
|
@@ -285,7 +290,7 @@ void GrpcMemoryAllocatorImpl::Shutdown() {
|
|
|
285
290
|
reclamation_handles[kNumReclamationPasses];
|
|
286
291
|
{
|
|
287
292
|
MutexLock lock(&reclaimer_mu_);
|
|
288
|
-
|
|
293
|
+
GRPC_CHECK(!shutdown_);
|
|
289
294
|
shutdown_ = true;
|
|
290
295
|
memory_quota = memory_quota_;
|
|
291
296
|
for (size_t i = 0; i < kNumReclamationPasses; i++) {
|
|
@@ -297,8 +302,8 @@ void GrpcMemoryAllocatorImpl::Shutdown() {
|
|
|
297
302
|
size_t GrpcMemoryAllocatorImpl::Reserve(MemoryRequest request) {
|
|
298
303
|
// Validate request - performed here so we don't bloat the generated code with
|
|
299
304
|
// inlined asserts.
|
|
300
|
-
|
|
301
|
-
|
|
305
|
+
GRPC_CHECK(request.min() <= request.max());
|
|
306
|
+
GRPC_CHECK(request.max() <= MemoryRequest::max_allowed_size());
|
|
302
307
|
size_t old_free = free_bytes_.load(std::memory_order_relaxed);
|
|
303
308
|
|
|
304
309
|
while (true) {
|
|
@@ -376,7 +381,7 @@ void GrpcMemoryAllocatorImpl::MaybeDonateBack() {
|
|
|
376
381
|
std::memory_order_acquire)) {
|
|
377
382
|
GRPC_TRACE_LOG(resource_quota, INFO)
|
|
378
383
|
<< "[" << this << "] Early return " << ret << " bytes";
|
|
379
|
-
|
|
384
|
+
GRPC_CHECK(taken_bytes_.fetch_sub(ret, std::memory_order_relaxed) >= ret);
|
|
380
385
|
memory_quota_->Return(ret);
|
|
381
386
|
return;
|
|
382
387
|
}
|
|
@@ -448,11 +453,20 @@ class BasicMemoryQuota::WaitForSweepPromise {
|
|
|
448
453
|
};
|
|
449
454
|
|
|
450
455
|
BasicMemoryQuota::BasicMemoryQuota(
|
|
451
|
-
RefCountedPtr<channelz::ResourceQuotaNode> channelz_node
|
|
452
|
-
|
|
456
|
+
RefCountedPtr<channelz::ResourceQuotaNode> channelz_node,
|
|
457
|
+
InstrumentStorageRefPtr<ResourceQuotaDomain> telemetry_storage)
|
|
458
|
+
: channelz::DataSource(channelz_node),
|
|
459
|
+
GaugeProvider(telemetry_storage),
|
|
460
|
+
telemetry_storage_(std::move(telemetry_storage)) {
|
|
461
|
+
ProviderConstructed();
|
|
453
462
|
channelz::DataSource::SourceConstructed();
|
|
454
463
|
}
|
|
455
464
|
|
|
465
|
+
BasicMemoryQuota::~BasicMemoryQuota() {
|
|
466
|
+
ProviderDestructing();
|
|
467
|
+
channelz::DataSource::SourceDestructing();
|
|
468
|
+
}
|
|
469
|
+
|
|
456
470
|
void BasicMemoryQuota::Start() {
|
|
457
471
|
auto self = shared_from_this();
|
|
458
472
|
|
|
@@ -518,7 +532,7 @@ void BasicMemoryQuota::Start() {
|
|
|
518
532
|
reclaimer_activity_ =
|
|
519
533
|
MakeActivity(std::move(reclamation_loop), ExecCtxWakeupScheduler(),
|
|
520
534
|
[](absl::Status status) {
|
|
521
|
-
|
|
535
|
+
GRPC_CHECK(status.code() == absl::StatusCode::kCancelled);
|
|
522
536
|
});
|
|
523
537
|
}
|
|
524
538
|
|
|
@@ -538,7 +552,7 @@ void BasicMemoryQuota::SetSize(size_t new_size) {
|
|
|
538
552
|
void BasicMemoryQuota::Take(GrpcMemoryAllocatorImpl* allocator, size_t amount) {
|
|
539
553
|
// If there's a request for nothing, then do nothing!
|
|
540
554
|
if (amount == 0) return;
|
|
541
|
-
|
|
555
|
+
GRPC_DCHECK(amount <= std::numeric_limits<intptr_t>::max());
|
|
542
556
|
// Grab memory from the quota.
|
|
543
557
|
auto prior = free_bytes_.fetch_sub(amount, std::memory_order_acq_rel);
|
|
544
558
|
// If we push into overcommit, awake the reclaimer.
|
|
@@ -698,12 +712,21 @@ BasicMemoryQuota::PressureInfo BasicMemoryQuota::GetPressureInfo() {
|
|
|
698
712
|
return pressure_info;
|
|
699
713
|
}
|
|
700
714
|
|
|
715
|
+
void BasicMemoryQuota::PopulateGaugeData(GaugeSink<ResourceQuotaDomain>& sink) {
|
|
716
|
+
auto pressure_info = GetPressureInfo();
|
|
717
|
+
sink.Set(ResourceQuotaDomain::kInstantaneousMemoryPressure,
|
|
718
|
+
pressure_info.instantaneous_pressure);
|
|
719
|
+
sink.Set(ResourceQuotaDomain::kMemoryPressureControlValue,
|
|
720
|
+
pressure_info.pressure_control_value);
|
|
721
|
+
}
|
|
722
|
+
|
|
701
723
|
void BasicMemoryQuota::AddData(channelz::DataSink sink) {
|
|
702
724
|
sink.AddData(
|
|
703
725
|
"memory_quota",
|
|
704
726
|
channelz::PropertyList()
|
|
705
727
|
.Set("free_bytes", free_bytes_.load(std::memory_order_relaxed))
|
|
706
728
|
.Set("quota_size", quota_size_.load(std::memory_order_relaxed))
|
|
729
|
+
.Set("container_memory_pressure", ContainerMemoryPressure())
|
|
707
730
|
.Merge(pressure_tracker_.ChannelzProperties())
|
|
708
731
|
.Set("allocators",
|
|
709
732
|
[this]() {
|
|
@@ -815,8 +838,6 @@ std::string PressureController::DebugString() const {
|
|
|
815
838
|
}
|
|
816
839
|
|
|
817
840
|
double PressureTracker::AddSampleAndGetControlValue(double sample) {
|
|
818
|
-
static const double kSetPoint = 0.95;
|
|
819
|
-
|
|
820
841
|
double max_so_far = max_this_round_.load(std::memory_order_relaxed);
|
|
821
842
|
if (sample > max_so_far) {
|
|
822
843
|
max_this_round_.compare_exchange_weak(max_so_far, sample,
|
|
@@ -825,7 +846,7 @@ double PressureTracker::AddSampleAndGetControlValue(double sample) {
|
|
|
825
846
|
}
|
|
826
847
|
// If memory pressure is almost done, immediately hit the brakes and report
|
|
827
848
|
// full memory usage.
|
|
828
|
-
if (sample >=
|
|
849
|
+
if (sample >= memory_pressure_threshold_) {
|
|
829
850
|
report_.store(1.0, std::memory_order_relaxed);
|
|
830
851
|
}
|
|
831
852
|
update_.Tick([&](Duration) {
|
|
@@ -833,11 +854,11 @@ double PressureTracker::AddSampleAndGetControlValue(double sample) {
|
|
|
833
854
|
const double current_estimate =
|
|
834
855
|
max_this_round_.exchange(sample, std::memory_order_relaxed);
|
|
835
856
|
double report;
|
|
836
|
-
if (current_estimate >
|
|
857
|
+
if (current_estimate > memory_pressure_threshold_) {
|
|
837
858
|
// Under very high memory pressure we... just max things out.
|
|
838
859
|
report = controller_.Update(1e99);
|
|
839
860
|
} else {
|
|
840
|
-
report = controller_.Update(current_estimate -
|
|
861
|
+
report = controller_.Update(current_estimate - target_memory_pressure_);
|
|
841
862
|
}
|
|
842
863
|
GRPC_TRACE_LOG(resource_quota, INFO)
|
|
843
864
|
<< "RQ: pressure:" << current_estimate << " report:" << report
|
|
@@ -15,8 +15,10 @@
|
|
|
15
15
|
#ifndef GRPC_SRC_CORE_LIB_RESOURCE_QUOTA_MEMORY_QUOTA_H
|
|
16
16
|
#define GRPC_SRC_CORE_LIB_RESOURCE_QUOTA_MEMORY_QUOTA_H
|
|
17
17
|
|
|
18
|
+
#include <grpc/event_engine/internal/memory_allocator_impl.h>
|
|
18
19
|
#include <grpc/event_engine/memory_allocator.h>
|
|
19
20
|
#include <grpc/event_engine/memory_request.h>
|
|
21
|
+
#include <grpc/slice.h>
|
|
20
22
|
#include <grpc/support/port_platform.h>
|
|
21
23
|
#include <stdint.h>
|
|
22
24
|
|
|
@@ -30,22 +32,25 @@
|
|
|
30
32
|
#include <utility>
|
|
31
33
|
#include <vector>
|
|
32
34
|
|
|
33
|
-
#include "absl/base/thread_annotations.h"
|
|
34
|
-
#include "absl/container/flat_hash_set.h"
|
|
35
|
-
#include "absl/log/check.h"
|
|
36
|
-
#include "absl/log/log.h"
|
|
37
|
-
#include "absl/strings/string_view.h"
|
|
38
35
|
#include "src/core/channelz/channelz.h"
|
|
36
|
+
#include "src/core/config/config_vars.h"
|
|
39
37
|
#include "src/core/lib/debug/trace.h"
|
|
40
38
|
#include "src/core/lib/experiments/experiments.h"
|
|
41
39
|
#include "src/core/lib/promise/activity.h"
|
|
42
40
|
#include "src/core/lib/promise/poll.h"
|
|
43
41
|
#include "src/core/lib/resource_quota/periodic_update.h"
|
|
42
|
+
#include "src/core/lib/resource_quota/telemetry.h"
|
|
43
|
+
#include "src/core/telemetry/instrument.h"
|
|
44
|
+
#include "src/core/util/grpc_check.h"
|
|
44
45
|
#include "src/core/util/orphanable.h"
|
|
45
46
|
#include "src/core/util/ref_counted_ptr.h"
|
|
46
47
|
#include "src/core/util/sync.h"
|
|
47
48
|
#include "src/core/util/time.h"
|
|
48
49
|
#include "src/core/util/useful.h"
|
|
50
|
+
#include "absl/base/thread_annotations.h"
|
|
51
|
+
#include "absl/container/flat_hash_set.h"
|
|
52
|
+
#include "absl/log/log.h"
|
|
53
|
+
#include "absl/strings/string_view.h"
|
|
49
54
|
|
|
50
55
|
namespace grpc_core {
|
|
51
56
|
|
|
@@ -134,7 +139,7 @@ class ReclaimerQueue {
|
|
|
134
139
|
explicit Handle(F reclaimer, std::shared_ptr<State> state)
|
|
135
140
|
: sweep_(new SweepFn<F>(std::move(reclaimer), std::move(state))) {}
|
|
136
141
|
~Handle() override {
|
|
137
|
-
|
|
142
|
+
GRPC_DCHECK_EQ(sweep_.load(std::memory_order_relaxed), nullptr);
|
|
138
143
|
}
|
|
139
144
|
|
|
140
145
|
Handle(const Handle&) = delete;
|
|
@@ -273,6 +278,11 @@ class PressureTracker {
|
|
|
273
278
|
std::atomic<double> report_{0.0};
|
|
274
279
|
PeriodicUpdate update_{Duration::Seconds(1)};
|
|
275
280
|
PressureController controller_{100, 3};
|
|
281
|
+
|
|
282
|
+
const double target_memory_pressure_ =
|
|
283
|
+
ConfigVars::Get().ExperimentalTargetMemoryPressure();
|
|
284
|
+
const double memory_pressure_threshold_ =
|
|
285
|
+
ConfigVars::Get().ExperimentalMemoryPressureThreshold();
|
|
276
286
|
};
|
|
277
287
|
} // namespace memory_quota_detail
|
|
278
288
|
|
|
@@ -284,7 +294,8 @@ static constexpr size_t kSmallAllocatorThreshold = 0.1 * 1024 * 1024;
|
|
|
284
294
|
|
|
285
295
|
class BasicMemoryQuota final
|
|
286
296
|
: public std::enable_shared_from_this<BasicMemoryQuota>,
|
|
287
|
-
public channelz::DataSource
|
|
297
|
+
public channelz::DataSource,
|
|
298
|
+
public GaugeProvider<ResourceQuotaDomain> {
|
|
288
299
|
public:
|
|
289
300
|
// Data about current memory pressure.
|
|
290
301
|
struct PressureInfo {
|
|
@@ -298,8 +309,9 @@ class BasicMemoryQuota final
|
|
|
298
309
|
};
|
|
299
310
|
|
|
300
311
|
explicit BasicMemoryQuota(
|
|
301
|
-
RefCountedPtr<channelz::ResourceQuotaNode> channelz_node
|
|
302
|
-
|
|
312
|
+
RefCountedPtr<channelz::ResourceQuotaNode> channelz_node,
|
|
313
|
+
InstrumentStorageRefPtr<ResourceQuotaDomain> telemetry_storage);
|
|
314
|
+
~BasicMemoryQuota();
|
|
303
315
|
|
|
304
316
|
// Start the reclamation activity.
|
|
305
317
|
void Start();
|
|
@@ -335,6 +347,12 @@ class BasicMemoryQuota final
|
|
|
335
347
|
|
|
336
348
|
void AddData(channelz::DataSink sink) override;
|
|
337
349
|
|
|
350
|
+
void PopulateGaugeData(GaugeSink<ResourceQuotaDomain>& sink) override;
|
|
351
|
+
|
|
352
|
+
InstrumentStorage<ResourceQuotaDomain>* telemetry_storage() const {
|
|
353
|
+
return telemetry_storage_.get();
|
|
354
|
+
}
|
|
355
|
+
|
|
338
356
|
private:
|
|
339
357
|
friend class ReclamationSweep;
|
|
340
358
|
class WaitForSweepPromise;
|
|
@@ -387,6 +405,7 @@ class BasicMemoryQuota final
|
|
|
387
405
|
std::atomic<uint64_t> reclamation_counter_{0};
|
|
388
406
|
// Memory pressure smoothing
|
|
389
407
|
memory_quota_detail::PressureTracker pressure_tracker_;
|
|
408
|
+
const InstrumentStorageRefPtr<ResourceQuotaDomain> telemetry_storage_;
|
|
390
409
|
};
|
|
391
410
|
|
|
392
411
|
// MemoryAllocatorImpl grants the owner the ability to allocate memory from an
|
|
@@ -440,7 +459,7 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl {
|
|
|
440
459
|
template <typename F>
|
|
441
460
|
void PostReclaimer(ReclamationPass pass, F fn) {
|
|
442
461
|
MutexLock lock(&reclaimer_mu_);
|
|
443
|
-
|
|
462
|
+
GRPC_CHECK(!shutdown_);
|
|
444
463
|
InsertReclaimer(static_cast<size_t>(pass), std::move(fn));
|
|
445
464
|
}
|
|
446
465
|
|
|
@@ -462,6 +481,10 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl {
|
|
|
462
481
|
|
|
463
482
|
void FillChannelzProperties(channelz::PropertyList& list);
|
|
464
483
|
|
|
484
|
+
InstrumentStorage<ResourceQuotaDomain>* telemetry_storage() const {
|
|
485
|
+
return memory_quota_->telemetry_storage();
|
|
486
|
+
}
|
|
487
|
+
|
|
465
488
|
private:
|
|
466
489
|
static constexpr size_t kMaxQuotaBufferSize = 1024 * 1024;
|
|
467
490
|
|
|
@@ -537,12 +560,23 @@ class MemoryOwner final : public MemoryAllocator {
|
|
|
537
560
|
// Is this object valid (ie has not been moved out of or reset)
|
|
538
561
|
bool is_valid() const { return impl() != nullptr; }
|
|
539
562
|
|
|
540
|
-
static double
|
|
563
|
+
static double memory_pressure_high_threshold_reject_new_streams() {
|
|
564
|
+
return 0.99;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
static double memory_pressure_high_threshold_reject_new_connections() {
|
|
568
|
+
return 0.99;
|
|
569
|
+
}
|
|
541
570
|
|
|
542
|
-
// Return true if the controlled memory pressure is high
|
|
543
|
-
|
|
571
|
+
// Return true if the controlled memory pressure is high enough to reject new
|
|
572
|
+
// streams.
|
|
573
|
+
bool RejectNewStreamsUnderHighMemoryPressure() const {
|
|
544
574
|
return GetPressureInfo().pressure_control_value >
|
|
545
|
-
|
|
575
|
+
memory_pressure_high_threshold_reject_new_streams();
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
InstrumentStorage<ResourceQuotaDomain>* telemetry_storage() const {
|
|
579
|
+
return impl()->telemetry_storage();
|
|
546
580
|
}
|
|
547
581
|
|
|
548
582
|
private:
|
|
@@ -560,8 +594,10 @@ class MemoryQuota final
|
|
|
560
594
|
: public grpc_event_engine::experimental::MemoryAllocatorFactory {
|
|
561
595
|
public:
|
|
562
596
|
explicit MemoryQuota(RefCountedPtr<channelz::ResourceQuotaNode> channelz_node)
|
|
563
|
-
: memory_quota_(
|
|
564
|
-
std::
|
|
597
|
+
: memory_quota_(std::make_shared<BasicMemoryQuota>(
|
|
598
|
+
std::move(channelz_node),
|
|
599
|
+
ResourceQuotaDomain::GetStorage(GlobalCollectionScope(),
|
|
600
|
+
channelz_node->name()))) {
|
|
565
601
|
memory_quota_->Start();
|
|
566
602
|
}
|
|
567
603
|
~MemoryQuota() override {
|
|
@@ -579,9 +615,11 @@ class MemoryQuota final
|
|
|
579
615
|
// Resize the quota to new_size.
|
|
580
616
|
void SetSize(size_t new_size) { memory_quota_->SetSize(new_size); }
|
|
581
617
|
|
|
582
|
-
|
|
618
|
+
// Return true if the controlled memory pressure is high enough to reject new
|
|
619
|
+
// connections.
|
|
620
|
+
bool RejectNewConnectionsUnderHighMemoryPressure() const {
|
|
583
621
|
return memory_quota_->GetPressureInfo().pressure_control_value >
|
|
584
|
-
MemoryOwner::
|
|
622
|
+
MemoryOwner::memory_pressure_high_threshold_reject_new_connections();
|
|
585
623
|
}
|
|
586
624
|
|
|
587
625
|
private:
|
|
@@ -597,8 +635,6 @@ inline MemoryQuotaRefPtr MakeMemoryQuota(
|
|
|
597
635
|
|
|
598
636
|
std::vector<std::shared_ptr<BasicMemoryQuota>> AllMemoryQuotas();
|
|
599
637
|
|
|
600
|
-
void SetContainerMemoryPressure(double pressure);
|
|
601
|
-
|
|
602
638
|
double ContainerMemoryPressure();
|
|
603
639
|
|
|
604
640
|
} // namespace grpc_core
|
|
@@ -16,7 +16,15 @@
|
|
|
16
16
|
|
|
17
17
|
#include <grpc/support/port_platform.h>
|
|
18
18
|
|
|
19
|
+
#include <string>
|
|
20
|
+
#include <utility>
|
|
21
|
+
|
|
22
|
+
#include "src/core/channelz/channelz.h"
|
|
23
|
+
#include "src/core/lib/resource_quota/memory_quota.h"
|
|
24
|
+
#include "src/core/lib/resource_quota/stream_quota.h"
|
|
25
|
+
#include "src/core/lib/resource_quota/thread_quota.h"
|
|
19
26
|
#include "src/core/util/no_destruct.h"
|
|
27
|
+
#include "src/core/util/ref_counted_ptr.h"
|
|
20
28
|
#include "src/core/util/single_set_ptr.h"
|
|
21
29
|
|
|
22
30
|
namespace grpc_core {
|
|
@@ -22,14 +22,15 @@
|
|
|
22
22
|
#include <string>
|
|
23
23
|
#include <utility>
|
|
24
24
|
|
|
25
|
-
#include "absl/strings/string_view.h"
|
|
26
25
|
#include "src/core/channelz/channelz.h"
|
|
27
26
|
#include "src/core/lib/resource_quota/memory_quota.h"
|
|
27
|
+
#include "src/core/lib/resource_quota/stream_quota.h"
|
|
28
28
|
#include "src/core/lib/resource_quota/thread_quota.h"
|
|
29
29
|
#include "src/core/util/cpp_impl_of.h"
|
|
30
30
|
#include "src/core/util/ref_counted.h"
|
|
31
31
|
#include "src/core/util/ref_counted_ptr.h"
|
|
32
32
|
#include "src/core/util/useful.h"
|
|
33
|
+
#include "absl/strings/string_view.h"
|
|
33
34
|
|
|
34
35
|
namespace grpc_core {
|
|
35
36
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Copyright 2025 gRPC authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#include "src/core/lib/resource_quota/stream_quota.h"
|
|
16
|
+
|
|
17
|
+
#include <algorithm>
|
|
18
|
+
#include <atomic>
|
|
19
|
+
#include <cstdint>
|
|
20
|
+
#include <limits>
|
|
21
|
+
|
|
22
|
+
namespace grpc_core {} // namespace grpc_core
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Copyright 2025 gRPC authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#ifndef GRPC_SRC_CORE_LIB_RESOURCE_QUOTA_STREAM_QUOTA_H
|
|
16
|
+
#define GRPC_SRC_CORE_LIB_RESOURCE_QUOTA_STREAM_QUOTA_H
|
|
17
|
+
|
|
18
|
+
#include <grpc/support/port_platform.h>
|
|
19
|
+
|
|
20
|
+
#include <atomic>
|
|
21
|
+
#include <cstdint>
|
|
22
|
+
#include <limits>
|
|
23
|
+
|
|
24
|
+
#include "src/core/lib/resource_quota/periodic_update.h"
|
|
25
|
+
#include "src/core/util/per_cpu.h"
|
|
26
|
+
#include "src/core/util/ref_counted.h"
|
|
27
|
+
#include "src/core/util/ref_counted_ptr.h"
|
|
28
|
+
|
|
29
|
+
namespace grpc_core {} // namespace grpc_core
|
|
30
|
+
|
|
31
|
+
#endif // GRPC_SRC_CORE_LIB_RESOURCE_QUOTA_STREAM_QUOTA_H
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Copyright 2025 gRPC authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#ifndef GRPC_SRC_CORE_LIB_RESOURCE_QUOTA_TELEMETRY_H
|
|
16
|
+
#define GRPC_SRC_CORE_LIB_RESOURCE_QUOTA_TELEMETRY_H
|
|
17
|
+
|
|
18
|
+
#include "src/core/telemetry/instrument.h"
|
|
19
|
+
|
|
20
|
+
namespace grpc_core {
|
|
21
|
+
|
|
22
|
+
class ResourceQuotaDomain final : public InstrumentDomain<ResourceQuotaDomain> {
|
|
23
|
+
public:
|
|
24
|
+
using Backend = HighContentionBackend;
|
|
25
|
+
static constexpr absl::string_view kName = "resource_quota";
|
|
26
|
+
static constexpr auto kLabels = Labels("grpc.resource_quota");
|
|
27
|
+
|
|
28
|
+
static inline const auto kCallsDropped = RegisterCounter(
|
|
29
|
+
"grpc.resource_quota.calls_dropped",
|
|
30
|
+
"EXPERIMENTAL. Number of calls dropped due to resource quota "
|
|
31
|
+
"exceeded",
|
|
32
|
+
"calls");
|
|
33
|
+
static inline const auto kCallsRejected = RegisterCounter(
|
|
34
|
+
"grpc.resource_quota.calls_rejected",
|
|
35
|
+
"EXPERIMENTAL. Number of calls rejected due to resource quota "
|
|
36
|
+
"exceeded",
|
|
37
|
+
"calls");
|
|
38
|
+
static inline const auto kConnectionsDropped = RegisterCounter(
|
|
39
|
+
"grpc.resource_quota.connections_dropped",
|
|
40
|
+
"EXPERIMENTAL. Number of connections dropped due to resource quota "
|
|
41
|
+
"exceeded",
|
|
42
|
+
"connections");
|
|
43
|
+
static inline const auto kInstantaneousMemoryPressure = RegisterDoubleGauge(
|
|
44
|
+
"grpc.resource_quota.instantaneous_memory_pressure",
|
|
45
|
+
"The current instantaneously measured memory pressure.", "ratio");
|
|
46
|
+
static inline const auto kMemoryPressureControlValue = RegisterDoubleGauge(
|
|
47
|
+
"grpc.resource_quota.memory_pressure_control_value",
|
|
48
|
+
"A control value that can be used to scale buffer sizes up or down to "
|
|
49
|
+
"adjust memory pressure to our target set point.",
|
|
50
|
+
"ratio");
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
} // namespace grpc_core
|
|
54
|
+
|
|
55
|
+
#endif // GRPC_SRC_CORE_LIB_RESOURCE_QUOTA_TELEMETRY_H
|