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
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
|
|
15
15
|
#include "src/core/client_channel/load_balanced_call_destination.h"
|
|
16
16
|
|
|
17
|
-
#include "absl/log/log.h"
|
|
18
17
|
#include "src/core/call/status_util.h"
|
|
19
18
|
#include "src/core/client_channel/client_channel.h"
|
|
20
19
|
#include "src/core/client_channel/client_channel_internal.h"
|
|
@@ -23,16 +22,19 @@
|
|
|
23
22
|
#include "src/core/config/core_configuration.h"
|
|
24
23
|
#include "src/core/lib/promise/loop.h"
|
|
25
24
|
#include "src/core/telemetry/call_tracer.h"
|
|
25
|
+
#include "absl/log/log.h"
|
|
26
26
|
|
|
27
27
|
namespace grpc_core {
|
|
28
28
|
|
|
29
29
|
namespace {
|
|
30
30
|
|
|
31
31
|
void MaybeCreateCallAttemptTracer(bool is_transparent_retry) {
|
|
32
|
-
auto*
|
|
32
|
+
auto* arena = MaybeGetContext<Arena>();
|
|
33
|
+
if (arena == nullptr) return;
|
|
34
|
+
auto* call_tracer = MaybeGetContext<ClientCallTracer>();
|
|
33
35
|
if (call_tracer == nullptr) return;
|
|
34
36
|
auto* tracer = call_tracer->StartNewAttempt(is_transparent_retry);
|
|
35
|
-
SetContext<
|
|
37
|
+
SetContext<CallAttemptTracer>(WrapCallAttemptTracer(tracer, arena));
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
class LbCallState : public ClientChannelLbCallState {
|
|
@@ -47,9 +49,8 @@ class LbCallState : public ClientChannelLbCallState {
|
|
|
47
49
|
return service_config_call_data->GetCallAttribute(type);
|
|
48
50
|
}
|
|
49
51
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return GetContext<ClientCallTracerInterface::CallAttemptTracer>();
|
|
52
|
+
CallAttemptTracer* GetCallAttemptTracer() const override {
|
|
53
|
+
return GetContext<CallAttemptTracer>();
|
|
53
54
|
}
|
|
54
55
|
};
|
|
55
56
|
|
|
@@ -134,11 +135,9 @@ LoopCtl<absl::StatusOr<RefCountedPtr<UnstartedCallDestination>>> PickSubchannel(
|
|
|
134
135
|
"pick";
|
|
135
136
|
return Continue{};
|
|
136
137
|
}
|
|
137
|
-
// If the LB policy returned a call tracker,
|
|
138
|
-
//
|
|
139
|
-
// it when the call finishes.
|
|
138
|
+
// If the LB policy returned a call tracker, add it to context, so
|
|
139
|
+
// that we can notify it when the call finishes.
|
|
140
140
|
if (complete_pick->subchannel_call_tracker != nullptr) {
|
|
141
|
-
complete_pick->subchannel_call_tracker->Start();
|
|
142
141
|
SetContext(complete_pick->subchannel_call_tracker.release());
|
|
143
142
|
}
|
|
144
143
|
// Apply metadata mutations, if any.
|
|
@@ -240,8 +239,7 @@ void LoadBalancedCallDestination::StartCall(
|
|
|
240
239
|
}
|
|
241
240
|
// If it was queued, add a trace annotation.
|
|
242
241
|
if (was_queued) {
|
|
243
|
-
auto* tracer = MaybeGetContext<
|
|
244
|
-
ClientCallTracerInterface::CallAttemptTracer>();
|
|
242
|
+
auto* tracer = MaybeGetContext<CallAttemptTracer>();
|
|
245
243
|
if (tracer != nullptr) {
|
|
246
244
|
tracer->RecordAnnotation("Delayed LB pick complete.");
|
|
247
245
|
}
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
#ifndef GRPC_SRC_CORE_CLIENT_CHANNEL_LOAD_BALANCED_CALL_DESTINATION_H
|
|
16
16
|
#define GRPC_SRC_CORE_CLIENT_CHANNEL_LOAD_BALANCED_CALL_DESTINATION_H
|
|
17
17
|
|
|
18
|
-
#include "absl/functional/any_invocable.h"
|
|
19
18
|
#include "src/core/call/call_destination.h"
|
|
20
19
|
#include "src/core/client_channel/client_channel.h"
|
|
21
20
|
#include "src/core/lib/promise/context.h"
|
|
22
21
|
#include "src/core/load_balancing/lb_policy.h"
|
|
22
|
+
#include "absl/functional/any_invocable.h"
|
|
23
23
|
|
|
24
24
|
namespace grpc_core {
|
|
25
25
|
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
|
|
23
23
|
#include <utility>
|
|
24
24
|
|
|
25
|
-
#include "absl/log/check.h"
|
|
26
25
|
#include "src/core/client_channel/subchannel.h"
|
|
26
|
+
#include "src/core/util/grpc_check.h"
|
|
27
27
|
|
|
28
28
|
namespace grpc_core {
|
|
29
29
|
|
|
@@ -33,7 +33,7 @@ RefCountedPtr<Subchannel> LocalSubchannelPool::RegisterSubchannel(
|
|
|
33
33
|
// Because this pool is only accessed under the client channel's work
|
|
34
34
|
// serializer, and because FindSubchannel is checked before invoking
|
|
35
35
|
// RegisterSubchannel, no such subchannel should exist in the map.
|
|
36
|
-
|
|
36
|
+
GRPC_CHECK(it == subchannel_map_.end());
|
|
37
37
|
subchannel_map_[key] = constructed.get();
|
|
38
38
|
return constructed;
|
|
39
39
|
}
|
|
@@ -44,8 +44,8 @@ void LocalSubchannelPool::UnregisterSubchannel(const SubchannelKey& key,
|
|
|
44
44
|
// Because this subchannel pool is accessed only under the client
|
|
45
45
|
// channel's work serializer, any subchannel created by RegisterSubchannel
|
|
46
46
|
// will be deleted from the map in UnregisterSubchannel.
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
GRPC_CHECK(it != subchannel_map_.end());
|
|
48
|
+
GRPC_CHECK(it->second == subchannel);
|
|
49
49
|
subchannel_map_.erase(it);
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -22,8 +22,6 @@
|
|
|
22
22
|
#include <optional>
|
|
23
23
|
#include <string>
|
|
24
24
|
|
|
25
|
-
#include "absl/status/statusor.h"
|
|
26
|
-
#include "absl/strings/strip.h"
|
|
27
25
|
#include "src/core/client_channel/client_channel_filter.h"
|
|
28
26
|
#include "src/core/client_channel/retry_filter_legacy_call_data.h"
|
|
29
27
|
#include "src/core/client_channel/retry_service_config.h"
|
|
@@ -35,6 +33,8 @@
|
|
|
35
33
|
#include "src/core/service_config/service_config_call_data.h"
|
|
36
34
|
#include "src/core/util/ref_counted_ptr.h"
|
|
37
35
|
#include "src/core/util/uri.h"
|
|
36
|
+
#include "absl/status/statusor.h"
|
|
37
|
+
#include "absl/strings/strip.h"
|
|
38
38
|
|
|
39
39
|
//
|
|
40
40
|
// Retry filter
|
|
@@ -27,7 +27,6 @@
|
|
|
27
27
|
#include <new>
|
|
28
28
|
#include <optional>
|
|
29
29
|
|
|
30
|
-
#include "absl/log/check.h"
|
|
31
30
|
#include "src/core/client_channel/client_channel_filter.h"
|
|
32
31
|
#include "src/core/client_channel/retry_service_config.h"
|
|
33
32
|
#include "src/core/client_channel/retry_throttle.h"
|
|
@@ -36,6 +35,7 @@
|
|
|
36
35
|
#include "src/core/lib/channel/channel_stack.h"
|
|
37
36
|
#include "src/core/lib/iomgr/error.h"
|
|
38
37
|
#include "src/core/lib/transport/transport.h"
|
|
38
|
+
#include "src/core/util/grpc_check.h"
|
|
39
39
|
#include "src/core/util/ref_counted_ptr.h"
|
|
40
40
|
#include "src/core/util/useful.h"
|
|
41
41
|
|
|
@@ -88,8 +88,8 @@ class RetryFilter final {
|
|
|
88
88
|
|
|
89
89
|
static grpc_error_handle Init(grpc_channel_element* elem,
|
|
90
90
|
grpc_channel_element_args* args) {
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
GRPC_CHECK(args->is_last);
|
|
92
|
+
GRPC_CHECK(elem->filter == &kVtable);
|
|
93
93
|
new (elem->channel_data) RetryFilter(*args);
|
|
94
94
|
return absl::OkStatus();
|
|
95
95
|
}
|
|
@@ -20,10 +20,6 @@
|
|
|
20
20
|
#include <memory>
|
|
21
21
|
#include <new>
|
|
22
22
|
|
|
23
|
-
#include "absl/log/check.h"
|
|
24
|
-
#include "absl/log/log.h"
|
|
25
|
-
#include "absl/status/status.h"
|
|
26
|
-
#include "absl/strings/str_cat.h"
|
|
27
23
|
#include "src/core/call/metadata_batch.h"
|
|
28
24
|
#include "src/core/call/status_util.h"
|
|
29
25
|
#include "src/core/client_channel/client_channel_internal.h"
|
|
@@ -44,12 +40,16 @@
|
|
|
44
40
|
#include "src/core/util/backoff.h"
|
|
45
41
|
#include "src/core/util/construct_destruct.h"
|
|
46
42
|
#include "src/core/util/debug_location.h"
|
|
43
|
+
#include "src/core/util/grpc_check.h"
|
|
47
44
|
#include "src/core/util/orphanable.h"
|
|
48
45
|
#include "src/core/util/ref_counted.h"
|
|
49
46
|
#include "src/core/util/ref_counted_ptr.h"
|
|
50
47
|
#include "src/core/util/status_helper.h"
|
|
51
48
|
#include "src/core/util/time.h"
|
|
52
49
|
#include "src/core/util/useful.h"
|
|
50
|
+
#include "absl/log/log.h"
|
|
51
|
+
#include "absl/status/status.h"
|
|
52
|
+
#include "absl/strings/str_cat.h"
|
|
53
53
|
|
|
54
54
|
namespace grpc_core {
|
|
55
55
|
|
|
@@ -293,9 +293,8 @@ namespace {
|
|
|
293
293
|
void StartBatchInCallCombiner(void* arg, grpc_error_handle /*ignored*/) {
|
|
294
294
|
grpc_transport_stream_op_batch* batch =
|
|
295
295
|
static_cast<grpc_transport_stream_op_batch*>(arg);
|
|
296
|
-
auto* lb_call =
|
|
297
|
-
|
|
298
|
-
batch->handler_private.extra_arg);
|
|
296
|
+
auto* lb_call = static_cast<ClientChannelFilter::LoadBalancedCall*>(
|
|
297
|
+
batch->handler_private.extra_arg);
|
|
299
298
|
// Note: This will release the call combiner.
|
|
300
299
|
lb_call->StartTransportStreamOpBatch(batch);
|
|
301
300
|
}
|
|
@@ -1502,7 +1501,7 @@ RetryFilter::LegacyCallData::~LegacyCallData() {
|
|
|
1502
1501
|
FreeAllCachedSendOpData();
|
|
1503
1502
|
// Make sure there are no remaining pending batches.
|
|
1504
1503
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
|
1505
|
-
|
|
1504
|
+
GRPC_CHECK_EQ(pending_batches_[i].batch, nullptr);
|
|
1506
1505
|
}
|
|
1507
1506
|
}
|
|
1508
1507
|
|
|
@@ -1626,7 +1625,7 @@ void RetryFilter::LegacyCallData::StartTransportStreamOpBatch(
|
|
|
1626
1625
|
call_attempt_->StartRetriableBatches();
|
|
1627
1626
|
}
|
|
1628
1627
|
|
|
1629
|
-
OrphanablePtr<ClientChannelFilter::
|
|
1628
|
+
OrphanablePtr<ClientChannelFilter::LoadBalancedCall>
|
|
1630
1629
|
RetryFilter::LegacyCallData::CreateLoadBalancedCall(
|
|
1631
1630
|
absl::AnyInvocable<void()> on_commit, bool is_transparent_retry) {
|
|
1632
1631
|
grpc_call_element_args args = {owning_call_, nullptr,
|
|
@@ -1731,7 +1730,7 @@ RetryFilter::LegacyCallData::PendingBatchesAdd(
|
|
|
1731
1730
|
GRPC_TRACE_LOG(retry, INFO) << "chand=" << chand_ << " calld=" << this
|
|
1732
1731
|
<< ": adding pending batch at index " << idx;
|
|
1733
1732
|
PendingBatch* pending = &pending_batches_[idx];
|
|
1734
|
-
|
|
1733
|
+
GRPC_CHECK_EQ(pending->batch, nullptr);
|
|
1735
1734
|
pending->batch = batch;
|
|
1736
1735
|
pending->send_ops_cached = false;
|
|
1737
1736
|
// Update state in calld about pending batches.
|
|
@@ -1810,7 +1809,7 @@ void RetryFilter::LegacyCallData::FailPendingBatchInCallCombiner(
|
|
|
1810
1809
|
|
|
1811
1810
|
// This is called via the call combiner, so access to calld is synchronized.
|
|
1812
1811
|
void RetryFilter::LegacyCallData::PendingBatchesFail(grpc_error_handle error) {
|
|
1813
|
-
|
|
1812
|
+
GRPC_CHECK(!error.ok());
|
|
1814
1813
|
if (GRPC_TRACE_FLAG_ENABLED(retry)) {
|
|
1815
1814
|
size_t num_batches = 0;
|
|
1816
1815
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
|
@@ -1887,7 +1886,7 @@ void RetryFilter::LegacyCallData::StartRetryTimer(
|
|
|
1887
1886
|
// Compute backoff delay.
|
|
1888
1887
|
Duration next_attempt_timeout;
|
|
1889
1888
|
if (server_pushback.has_value()) {
|
|
1890
|
-
|
|
1889
|
+
GRPC_CHECK(*server_pushback >= Duration::Zero());
|
|
1891
1890
|
next_attempt_timeout = *server_pushback;
|
|
1892
1891
|
retry_backoff_.Reset();
|
|
1893
1892
|
} else {
|
|
@@ -25,8 +25,6 @@
|
|
|
25
25
|
#include <optional>
|
|
26
26
|
#include <utility>
|
|
27
27
|
|
|
28
|
-
#include "absl/container/inlined_vector.h"
|
|
29
|
-
#include "absl/functional/any_invocable.h"
|
|
30
28
|
#include "src/core/call/metadata_batch.h"
|
|
31
29
|
#include "src/core/client_channel/client_channel_filter.h"
|
|
32
30
|
#include "src/core/client_channel/retry_filter.h"
|
|
@@ -47,6 +45,8 @@
|
|
|
47
45
|
#include "src/core/util/ref_counted.h"
|
|
48
46
|
#include "src/core/util/ref_counted_ptr.h"
|
|
49
47
|
#include "src/core/util/time.h"
|
|
48
|
+
#include "absl/container/inlined_vector.h"
|
|
49
|
+
#include "absl/functional/any_invocable.h"
|
|
50
50
|
|
|
51
51
|
namespace grpc_core {
|
|
52
52
|
|
|
@@ -252,7 +252,7 @@ class RetryFilter::LegacyCallData final {
|
|
|
252
252
|
void MaybeCancelPerAttemptRecvTimer();
|
|
253
253
|
|
|
254
254
|
LegacyCallData* calld_;
|
|
255
|
-
OrphanablePtr<ClientChannelFilter::
|
|
255
|
+
OrphanablePtr<ClientChannelFilter::LoadBalancedCall> lb_call_;
|
|
256
256
|
bool lb_call_committed_ = false;
|
|
257
257
|
|
|
258
258
|
grpc_closure on_per_attempt_recv_timer_;
|
|
@@ -362,9 +362,8 @@ class RetryFilter::LegacyCallData final {
|
|
|
362
362
|
void AddClosureToStartTransparentRetry(CallCombinerClosureList* closures);
|
|
363
363
|
static void StartTransparentRetry(void* arg, grpc_error_handle error);
|
|
364
364
|
|
|
365
|
-
OrphanablePtr<ClientChannelFilter::
|
|
366
|
-
|
|
367
|
-
bool is_transparent_retry);
|
|
365
|
+
OrphanablePtr<ClientChannelFilter::LoadBalancedCall> CreateLoadBalancedCall(
|
|
366
|
+
absl::AnyInvocable<void()> on_commit, bool is_transparent_retry);
|
|
368
367
|
|
|
369
368
|
void CreateCallAttempt(bool is_transparent_retry);
|
|
370
369
|
|
|
@@ -391,8 +390,7 @@ class RetryFilter::LegacyCallData final {
|
|
|
391
390
|
// LB call used when we've committed to a call attempt and the retry
|
|
392
391
|
// state for that attempt is no longer needed. This provides a fast
|
|
393
392
|
// path for long-running streaming calls that minimizes overhead.
|
|
394
|
-
OrphanablePtr<ClientChannelFilter::
|
|
395
|
-
committed_call_;
|
|
393
|
+
OrphanablePtr<ClientChannelFilter::LoadBalancedCall> committed_call_;
|
|
396
394
|
|
|
397
395
|
// When are are not yet fully committed to a particular call (i.e.,
|
|
398
396
|
// either we might still retry or we have committed to the call but
|
|
@@ -27,13 +27,13 @@
|
|
|
27
27
|
#include <utility>
|
|
28
28
|
#include <vector>
|
|
29
29
|
|
|
30
|
-
#include "absl/log/log.h"
|
|
31
|
-
#include "absl/strings/numbers.h"
|
|
32
|
-
#include "absl/strings/str_cat.h"
|
|
33
30
|
#include "src/core/call/status_util.h"
|
|
34
31
|
#include "src/core/config/core_configuration.h"
|
|
35
32
|
#include "src/core/lib/channel/channel_args.h"
|
|
36
33
|
#include "src/core/util/json/json_channel_args.h"
|
|
34
|
+
#include "absl/log/log.h"
|
|
35
|
+
#include "absl/strings/numbers.h"
|
|
36
|
+
#include "absl/strings/str_cat.h"
|
|
37
37
|
|
|
38
38
|
// As per the retry design, we do not allow more than 5 retry attempts.
|
|
39
39
|
#define MAX_MAX_RETRY_ATTEMPTS 5
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
#include <memory>
|
|
25
25
|
#include <optional>
|
|
26
26
|
|
|
27
|
-
#include "absl/strings/string_view.h"
|
|
28
27
|
#include "src/core/call/status_util.h"
|
|
29
28
|
#include "src/core/config/core_configuration.h"
|
|
30
29
|
#include "src/core/lib/channel/channel_args.h"
|
|
@@ -34,6 +33,7 @@
|
|
|
34
33
|
#include "src/core/util/json/json_object_loader.h"
|
|
35
34
|
#include "src/core/util/time.h"
|
|
36
35
|
#include "src/core/util/validation_errors.h"
|
|
36
|
+
#include "absl/strings/string_view.h"
|
|
37
37
|
|
|
38
38
|
namespace grpc_core {
|
|
39
39
|
namespace internal {
|
|
@@ -29,12 +29,6 @@
|
|
|
29
29
|
#include <optional>
|
|
30
30
|
#include <utility>
|
|
31
31
|
|
|
32
|
-
#include "absl/log/check.h"
|
|
33
|
-
#include "absl/log/log.h"
|
|
34
|
-
#include "absl/status/statusor.h"
|
|
35
|
-
#include "absl/strings/cord.h"
|
|
36
|
-
#include "absl/strings/str_cat.h"
|
|
37
|
-
#include "absl/strings/string_view.h"
|
|
38
32
|
#include "src/core/call/interception_chain.h"
|
|
39
33
|
#include "src/core/channelz/channel_trace.h"
|
|
40
34
|
#include "src/core/channelz/channelz.h"
|
|
@@ -64,12 +58,18 @@
|
|
|
64
58
|
#include "src/core/util/alloc.h"
|
|
65
59
|
#include "src/core/util/backoff.h"
|
|
66
60
|
#include "src/core/util/debug_location.h"
|
|
61
|
+
#include "src/core/util/grpc_check.h"
|
|
67
62
|
#include "src/core/util/orphanable.h"
|
|
68
63
|
#include "src/core/util/ref_counted.h"
|
|
69
64
|
#include "src/core/util/ref_counted_ptr.h"
|
|
70
65
|
#include "src/core/util/status_helper.h"
|
|
71
66
|
#include "src/core/util/sync.h"
|
|
72
67
|
#include "src/core/util/useful.h"
|
|
68
|
+
#include "absl/log/log.h"
|
|
69
|
+
#include "absl/status/statusor.h"
|
|
70
|
+
#include "absl/strings/cord.h"
|
|
71
|
+
#include "absl/strings/str_cat.h"
|
|
72
|
+
#include "absl/strings/string_view.h"
|
|
73
73
|
|
|
74
74
|
// Backoff parameters.
|
|
75
75
|
#define GRPC_SUBCHANNEL_INITIAL_CONNECT_BACKOFF_SECONDS 1
|
|
@@ -282,8 +282,8 @@ grpc_call_stack* SubchannelCall::GetCallStack() {
|
|
|
282
282
|
}
|
|
283
283
|
|
|
284
284
|
void SubchannelCall::SetAfterCallStackDestroy(grpc_closure* closure) {
|
|
285
|
-
|
|
286
|
-
|
|
285
|
+
GRPC_CHECK_EQ(after_call_stack_destroy_, nullptr);
|
|
286
|
+
GRPC_CHECK_NE(closure, nullptr);
|
|
287
287
|
after_call_stack_destroy_ = closure;
|
|
288
288
|
}
|
|
289
289
|
|
|
@@ -334,7 +334,7 @@ void SubchannelCall::MaybeInterceptRecvTrailingMetadata(
|
|
|
334
334
|
GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_, RecvTrailingMetadataReady,
|
|
335
335
|
this, grpc_schedule_on_exec_ctx);
|
|
336
336
|
// save some state needed for the interception callback.
|
|
337
|
-
|
|
337
|
+
GRPC_CHECK_EQ(recv_trailing_metadata_, nullptr);
|
|
338
338
|
recv_trailing_metadata_ =
|
|
339
339
|
batch->payload->recv_trailing_metadata.recv_trailing_metadata;
|
|
340
340
|
original_recv_trailing_metadata_ =
|
|
@@ -360,12 +360,12 @@ void GetCallStatus(grpc_status_code* status, Timestamp deadline,
|
|
|
360
360
|
void SubchannelCall::RecvTrailingMetadataReady(void* arg,
|
|
361
361
|
grpc_error_handle error) {
|
|
362
362
|
SubchannelCall* call = static_cast<SubchannelCall*>(arg);
|
|
363
|
-
|
|
363
|
+
GRPC_CHECK_NE(call->recv_trailing_metadata_, nullptr);
|
|
364
364
|
grpc_status_code status = GRPC_STATUS_OK;
|
|
365
365
|
GetCallStatus(&status, call->deadline_, call->recv_trailing_metadata_, error);
|
|
366
366
|
channelz::SubchannelNode* channelz_node =
|
|
367
367
|
call->connected_subchannel_->channelz_node();
|
|
368
|
-
|
|
368
|
+
GRPC_CHECK_NE(channelz_node, nullptr);
|
|
369
369
|
if (status == GRPC_STATUS_OK) {
|
|
370
370
|
channelz_node->RecordCallSucceeded();
|
|
371
371
|
} else {
|
|
@@ -422,12 +422,6 @@ class Subchannel::ConnectedSubchannelStateWatcher final
|
|
|
422
422
|
<< ": Connected subchannel " << connected_subchannel.get()
|
|
423
423
|
<< " reports " << ConnectivityStateName(new_state) << ": "
|
|
424
424
|
<< status;
|
|
425
|
-
if (c->channelz_node() != nullptr) {
|
|
426
|
-
if (connected_subchannel->channelz_node() != nullptr) {
|
|
427
|
-
connected_subchannel->channelz_node()->RemoveParent(
|
|
428
|
-
c->channelz_node());
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
425
|
// If the subchannel was created from an endpoint, then we report
|
|
432
426
|
// TRANSIENT_FAILURE here instead of IDLE. The subchannel will never
|
|
433
427
|
// leave TRANSIENT_FAILURE state, because there is no way for us to
|
|
@@ -451,6 +445,68 @@ class Subchannel::ConnectedSubchannelStateWatcher final
|
|
|
451
445
|
WeakRefCountedPtr<Subchannel> subchannel_;
|
|
452
446
|
};
|
|
453
447
|
|
|
448
|
+
//
|
|
449
|
+
// Subchannel::ConnectionStateWatcher
|
|
450
|
+
//
|
|
451
|
+
|
|
452
|
+
class Subchannel::ConnectionStateWatcher final
|
|
453
|
+
: public Transport::StateWatcher {
|
|
454
|
+
public:
|
|
455
|
+
explicit ConnectionStateWatcher(WeakRefCountedPtr<Subchannel> subchannel)
|
|
456
|
+
: subchannel_(std::move(subchannel)) {}
|
|
457
|
+
|
|
458
|
+
~ConnectionStateWatcher() override {
|
|
459
|
+
subchannel_.reset(DEBUG_LOCATION, "state_watcher");
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
void OnDisconnect(absl::Status status,
|
|
463
|
+
DisconnectInfo disconnect_info) override {
|
|
464
|
+
MutexLock lock(&subchannel_->mu_);
|
|
465
|
+
// Handle keepalive update.
|
|
466
|
+
if (disconnect_info.keepalive_time.has_value()) {
|
|
467
|
+
subchannel_->ThrottleKeepaliveTimeLocked(*disconnect_info.keepalive_time);
|
|
468
|
+
subchannel_->watcher_list_.NotifyOnKeepaliveUpdateLocked(
|
|
469
|
+
*disconnect_info.keepalive_time);
|
|
470
|
+
}
|
|
471
|
+
// We shouldn't ever see OnDisconnect() more than once for a given
|
|
472
|
+
// connection, but we'll be defensive just in case: if the connected
|
|
473
|
+
// subchannel has already been cleared, then this becomes a no-op.
|
|
474
|
+
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
|
|
475
|
+
std::move(subchannel_->connected_subchannel_);
|
|
476
|
+
if (connected_subchannel == nullptr) return;
|
|
477
|
+
GRPC_TRACE_LOG(subchannel, INFO)
|
|
478
|
+
<< "subchannel " << subchannel_.get() << " "
|
|
479
|
+
<< subchannel_->key_.ToString() << ": connected subchannel "
|
|
480
|
+
<< connected_subchannel.get() << " reports disconnection: " << status;
|
|
481
|
+
// If the subchannel was created from an endpoint, then we report
|
|
482
|
+
// TRANSIENT_FAILURE here instead of IDLE. The subchannel will never
|
|
483
|
+
// leave TRANSIENT_FAILURE state, because there is no way for us to
|
|
484
|
+
// establish a new connection. Otherwise, we report IDLE here.
|
|
485
|
+
if (subchannel_->created_from_endpoint_) {
|
|
486
|
+
subchannel_->SetConnectivityStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE,
|
|
487
|
+
status);
|
|
488
|
+
} else {
|
|
489
|
+
subchannel_->SetConnectivityStateLocked(GRPC_CHANNEL_IDLE,
|
|
490
|
+
absl::OkStatus());
|
|
491
|
+
}
|
|
492
|
+
subchannel_->backoff_.Reset();
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
void OnPeerMaxConcurrentStreamsUpdate(
|
|
496
|
+
uint32_t /*max_concurrent_streams*/,
|
|
497
|
+
std::unique_ptr<MaxConcurrentStreamsUpdateDoneHandle> /*on_done*/)
|
|
498
|
+
override {
|
|
499
|
+
// TODO(roth): Implement this as part of adding connection scaling.
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
grpc_pollset_set* interested_parties() const override {
|
|
503
|
+
return subchannel_->pollset_set_;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
private:
|
|
507
|
+
WeakRefCountedPtr<Subchannel> subchannel_;
|
|
508
|
+
};
|
|
509
|
+
|
|
454
510
|
//
|
|
455
511
|
// Subchannel::ConnectivityStateWatcherList
|
|
456
512
|
//
|
|
@@ -474,6 +530,27 @@ void Subchannel::ConnectivityStateWatcherList::NotifyLocked(
|
|
|
474
530
|
}
|
|
475
531
|
}
|
|
476
532
|
|
|
533
|
+
void Subchannel::ConnectivityStateWatcherList::NotifyOnKeepaliveUpdateLocked(
|
|
534
|
+
Duration new_keepalive_time) {
|
|
535
|
+
for (const auto& watcher : watchers_) {
|
|
536
|
+
subchannel_->work_serializer_.Run([watcher, new_keepalive_time]() {
|
|
537
|
+
watcher->OnKeepaliveUpdate(new_keepalive_time);
|
|
538
|
+
});
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
uint32_t
|
|
543
|
+
Subchannel::ConnectivityStateWatcherList::GetMaxConnectionsPerSubchannel()
|
|
544
|
+
const {
|
|
545
|
+
uint32_t max_connections_per_subchannel = 1;
|
|
546
|
+
for (const auto& watcher : watchers_) {
|
|
547
|
+
max_connections_per_subchannel =
|
|
548
|
+
std::max(max_connections_per_subchannel,
|
|
549
|
+
watcher->max_connections_per_subchannel());
|
|
550
|
+
}
|
|
551
|
+
return max_connections_per_subchannel;
|
|
552
|
+
}
|
|
553
|
+
|
|
477
554
|
//
|
|
478
555
|
// Subchannel
|
|
479
556
|
//
|
|
@@ -585,7 +662,7 @@ RefCountedPtr<Subchannel> Subchannel::Create(
|
|
|
585
662
|
const grpc_resolved_address& address, const ChannelArgs& args) {
|
|
586
663
|
SubchannelKey key(address, args);
|
|
587
664
|
auto* subchannel_pool = args.GetObject<SubchannelPoolInterface>();
|
|
588
|
-
|
|
665
|
+
GRPC_CHECK_NE(subchannel_pool, nullptr);
|
|
589
666
|
RefCountedPtr<Subchannel> c = subchannel_pool->FindSubchannel(key);
|
|
590
667
|
if (c != nullptr) {
|
|
591
668
|
return c;
|
|
@@ -610,15 +687,19 @@ RefCountedPtr<Subchannel> Subchannel::Create(
|
|
|
610
687
|
return registered;
|
|
611
688
|
}
|
|
612
689
|
|
|
613
|
-
void Subchannel::ThrottleKeepaliveTime(
|
|
690
|
+
void Subchannel::ThrottleKeepaliveTime(Duration new_keepalive_time) {
|
|
614
691
|
MutexLock lock(&mu_);
|
|
692
|
+
ThrottleKeepaliveTimeLocked(new_keepalive_time);
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
void Subchannel::ThrottleKeepaliveTimeLocked(Duration new_keepalive_time) {
|
|
615
696
|
// Only update the value if the new keepalive time is larger.
|
|
616
697
|
if (new_keepalive_time > keepalive_time_) {
|
|
617
698
|
keepalive_time_ = new_keepalive_time;
|
|
618
699
|
GRPC_TRACE_LOG(subchannel, INFO)
|
|
619
700
|
<< "subchannel " << this << " " << key_.ToString()
|
|
620
701
|
<< ": throttling keepalive time to " << new_keepalive_time;
|
|
621
|
-
args_ = args_.Set(GRPC_ARG_KEEPALIVE_TIME_MS, new_keepalive_time);
|
|
702
|
+
args_ = args_.Set(GRPC_ARG_KEEPALIVE_TIME_MS, new_keepalive_time.millis());
|
|
622
703
|
}
|
|
623
704
|
}
|
|
624
705
|
|
|
@@ -681,7 +762,7 @@ void Subchannel::Orphaned() {
|
|
|
681
762
|
subchannel_pool_.reset();
|
|
682
763
|
}
|
|
683
764
|
MutexLock lock(&mu_);
|
|
684
|
-
|
|
765
|
+
GRPC_CHECK(!shutdown_);
|
|
685
766
|
shutdown_ = true;
|
|
686
767
|
connector_.reset();
|
|
687
768
|
connected_subchannel_.reset();
|
|
@@ -821,6 +902,11 @@ void Subchannel::OnConnectingFinishedLocked(grpc_error_handle error) {
|
|
|
821
902
|
|
|
822
903
|
bool Subchannel::PublishTransportLocked() {
|
|
823
904
|
auto socket_node = connecting_result_.transport->GetSocketNode();
|
|
905
|
+
if (IsTransportStateWatcherEnabled()) {
|
|
906
|
+
connecting_result_.transport->StartWatch(
|
|
907
|
+
MakeRefCounted<ConnectionStateWatcher>(
|
|
908
|
+
WeakRef(DEBUG_LOCATION, "state_watcher")));
|
|
909
|
+
}
|
|
824
910
|
if (connecting_result_.transport->filter_stack_transport() != nullptr) {
|
|
825
911
|
// Construct channel stack.
|
|
826
912
|
// Builder takes ownership of transport.
|
|
@@ -890,10 +976,11 @@ bool Subchannel::PublishTransportLocked() {
|
|
|
890
976
|
socket_node->AddParent(channelz_node_.get());
|
|
891
977
|
}
|
|
892
978
|
}
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
979
|
+
if (!IsTransportStateWatcherEnabled()) {
|
|
980
|
+
connected_subchannel_->StartWatch(
|
|
981
|
+
pollset_set_, MakeOrphanable<ConnectedSubchannelStateWatcher>(
|
|
982
|
+
WeakRef(DEBUG_LOCATION, "state_watcher")));
|
|
983
|
+
}
|
|
897
984
|
// Report initial state.
|
|
898
985
|
SetConnectivityStateLocked(GRPC_CHANNEL_READY, absl::Status());
|
|
899
986
|
return true;
|
|
@@ -919,6 +1006,8 @@ ChannelArgs Subchannel::MakeSubchannelArgs(
|
|
|
919
1006
|
// uniqueness.
|
|
920
1007
|
.Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
|
|
921
1008
|
.Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
|
|
1009
|
+
.Remove(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL)
|
|
1010
|
+
.Remove(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL_CAP)
|
|
922
1011
|
.Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE)
|
|
923
1012
|
// Remove all keys with the no-subchannel prefix.
|
|
924
1013
|
.RemoveAllKeysWithPrefix(GRPC_ARG_NO_SUBCHANNEL_PREFIX);
|
|
@@ -26,9 +26,6 @@
|
|
|
26
26
|
#include <map>
|
|
27
27
|
#include <memory>
|
|
28
28
|
|
|
29
|
-
#include "absl/base/thread_annotations.h"
|
|
30
|
-
#include "absl/container/flat_hash_set.h"
|
|
31
|
-
#include "absl/status/status.h"
|
|
32
29
|
#include "src/core/call/metadata_batch.h"
|
|
33
30
|
#include "src/core/client_channel/connector.h"
|
|
34
31
|
#include "src/core/client_channel/subchannel_pool_interface.h"
|
|
@@ -57,6 +54,9 @@
|
|
|
57
54
|
#include "src/core/util/time_precise.h"
|
|
58
55
|
#include "src/core/util/unique_type_name.h"
|
|
59
56
|
#include "src/core/util/work_serializer.h"
|
|
57
|
+
#include "absl/base/thread_annotations.h"
|
|
58
|
+
#include "absl/container/flat_hash_set.h"
|
|
59
|
+
#include "absl/status/status.h"
|
|
60
60
|
|
|
61
61
|
/** This arg is intended for internal use only, primarily
|
|
62
62
|
* for passing endpoint information during subchannel creation or connection.
|
|
@@ -71,6 +71,7 @@ class ConnectedSubchannel : public RefCounted<ConnectedSubchannel> {
|
|
|
71
71
|
public:
|
|
72
72
|
const ChannelArgs& args() const { return args_; }
|
|
73
73
|
|
|
74
|
+
// TODO(roth): Remove this when transport_state_watcher experiment is removed.
|
|
74
75
|
virtual void StartWatch(
|
|
75
76
|
grpc_pollset_set* interested_parties,
|
|
76
77
|
OrphanablePtr<ConnectivityStateWatcherInterface> watcher) = 0;
|
|
@@ -167,8 +168,6 @@ class SubchannelCall final {
|
|
|
167
168
|
// (SubchannelWrapper) that "converts" between the two.
|
|
168
169
|
class Subchannel final : public DualRefCounted<Subchannel> {
|
|
169
170
|
public:
|
|
170
|
-
// TODO(roth): Once we remove pollset_set, consider whether this can
|
|
171
|
-
// just use the normal AsyncConnectivityStateWatcherInterface API.
|
|
172
171
|
class ConnectivityStateWatcherInterface
|
|
173
172
|
: public RefCounted<ConnectivityStateWatcherInterface> {
|
|
174
173
|
public:
|
|
@@ -178,6 +177,11 @@ class Subchannel final : public DualRefCounted<Subchannel> {
|
|
|
178
177
|
virtual void OnConnectivityStateChange(grpc_connectivity_state state,
|
|
179
178
|
const absl::Status& status) = 0;
|
|
180
179
|
|
|
180
|
+
// Invoked to report updated keepalive time.
|
|
181
|
+
virtual void OnKeepaliveUpdate(Duration keepalive_time) = 0;
|
|
182
|
+
|
|
183
|
+
virtual uint32_t max_connections_per_subchannel() const = 0;
|
|
184
|
+
|
|
181
185
|
virtual grpc_pollset_set* interested_parties() = 0;
|
|
182
186
|
};
|
|
183
187
|
|
|
@@ -208,7 +212,8 @@ class Subchannel final : public DualRefCounted<Subchannel> {
|
|
|
208
212
|
// Throttles keepalive time to \a new_keepalive_time iff \a new_keepalive_time
|
|
209
213
|
// is larger than the subchannel's current keepalive time. The updated value
|
|
210
214
|
// will have an affect when the subchannel creates a new ConnectedSubchannel.
|
|
211
|
-
void ThrottleKeepaliveTime(
|
|
215
|
+
void ThrottleKeepaliveTime(Duration new_keepalive_time)
|
|
216
|
+
ABSL_LOCKS_EXCLUDED(mu_);
|
|
212
217
|
|
|
213
218
|
grpc_pollset_set* pollset_set() const { return pollset_set_; }
|
|
214
219
|
|
|
@@ -302,10 +307,15 @@ class Subchannel final : public DualRefCounted<Subchannel> {
|
|
|
302
307
|
void NotifyLocked(grpc_connectivity_state state,
|
|
303
308
|
const absl::Status& status);
|
|
304
309
|
|
|
310
|
+
// Notifies all watchers about a keepalive update.
|
|
311
|
+
void NotifyOnKeepaliveUpdateLocked(Duration new_keepalive_time);
|
|
312
|
+
|
|
305
313
|
void Clear() { watchers_.clear(); }
|
|
306
314
|
|
|
307
315
|
bool empty() const { return watchers_.empty(); }
|
|
308
316
|
|
|
317
|
+
uint32_t GetMaxConnectionsPerSubchannel() const;
|
|
318
|
+
|
|
309
319
|
private:
|
|
310
320
|
Subchannel* subchannel_;
|
|
311
321
|
absl::flat_hash_set<RefCountedPtr<ConnectivityStateWatcherInterface>,
|
|
@@ -314,13 +324,19 @@ class Subchannel final : public DualRefCounted<Subchannel> {
|
|
|
314
324
|
watchers_;
|
|
315
325
|
};
|
|
316
326
|
|
|
327
|
+
// TODO(roth): Remove this when transport_state_watcher experiment is removed.
|
|
317
328
|
class ConnectedSubchannelStateWatcher;
|
|
318
329
|
|
|
330
|
+
class ConnectionStateWatcher;
|
|
331
|
+
|
|
319
332
|
// Sets the subchannel's connectivity state to \a state.
|
|
320
333
|
void SetConnectivityStateLocked(grpc_connectivity_state state,
|
|
321
334
|
const absl::Status& status)
|
|
322
335
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
|
323
336
|
|
|
337
|
+
void ThrottleKeepaliveTimeLocked(Duration new_keepalive_time)
|
|
338
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
|
339
|
+
|
|
324
340
|
// Methods for connection.
|
|
325
341
|
void OnRetryTimer() ABSL_LOCKS_EXCLUDED(mu_);
|
|
326
342
|
void OnRetryTimerLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
|
|
@@ -383,8 +399,8 @@ class Subchannel final : public DualRefCounted<Subchannel> {
|
|
|
383
399
|
grpc_event_engine::experimental::EventEngine::TaskHandle retry_timer_handle_
|
|
384
400
|
ABSL_GUARDED_BY(mu_);
|
|
385
401
|
|
|
386
|
-
// Keepalive time period
|
|
387
|
-
|
|
402
|
+
// Keepalive time period
|
|
403
|
+
Duration keepalive_time_ ABSL_GUARDED_BY(mu_);
|
|
388
404
|
|
|
389
405
|
// Data producer map.
|
|
390
406
|
std::map<UniqueTypeName, DataProducerInterface*> data_producer_map_
|