grpc 1.76.0 → 1.78.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +11 -5
- data/include/grpc/credentials.h +6 -1
- data/include/grpc/event_engine/memory_allocator.h +2 -0
- data/include/grpc/impl/channel_arg_names.h +5 -0
- data/include/grpc/support/metrics.h +7 -1
- data/src/core/call/call_filters.cc +1 -1
- data/src/core/call/call_filters.h +175 -1
- data/src/core/call/call_spine.cc +1 -1
- data/src/core/call/call_spine.h +27 -5
- data/src/core/call/channelz_context.h +30 -0
- data/src/core/call/client_call.cc +43 -5
- data/src/core/call/client_call.h +6 -3
- data/src/core/call/filter_fusion.h +4 -4
- data/src/core/call/interception_chain.h +7 -6
- data/src/core/call/metadata_batch.cc +49 -55
- data/src/core/call/metadata_batch.h +7 -6
- data/src/core/call/metadata_info.cc +1 -1
- data/src/core/call/parsed_metadata.h +2 -2
- data/src/core/call/request_buffer.cc +1 -1
- data/src/core/call/security_context.cc +1 -1
- data/src/core/call/security_context.h +1 -1
- data/src/core/call/server_call.cc +1 -1
- data/src/core/call/server_call.h +5 -3
- data/src/core/call/simple_slice_based_metadata.h +1 -1
- data/src/core/call/status_util.cc +1 -1
- data/src/core/channelz/channel_trace.cc +1 -1
- data/src/core/channelz/channel_trace.h +3 -3
- data/src/core/channelz/channelz.cc +13 -11
- data/src/core/channelz/channelz.h +41 -6
- data/src/core/channelz/channelz_registry.cc +2 -2
- data/src/core/channelz/channelz_registry.h +42 -2
- data/src/core/channelz/property_list.h +6 -4
- data/src/core/channelz/v2tov1/convert.cc +6 -6
- data/src/core/channelz/v2tov1/legacy_api.cc +4 -5
- data/src/core/channelz/v2tov1/property_list.cc +1 -1
- data/src/core/channelz/ztrace_collector.h +14 -2
- data/src/core/client_channel/backup_poller.cc +2 -2
- data/src/core/client_channel/buffered_call.cc +140 -0
- data/src/core/client_channel/buffered_call.h +104 -0
- data/src/core/client_channel/client_channel.cc +124 -71
- data/src/core/client_channel/client_channel.h +8 -11
- data/src/core/client_channel/client_channel_factory.h +1 -1
- data/src/core/client_channel/client_channel_filter.cc +393 -663
- data/src/core/client_channel/client_channel_filter.h +57 -150
- data/src/core/client_channel/client_channel_internal.h +5 -1
- data/src/core/client_channel/client_channel_service_config.cc +43 -3
- data/src/core/client_channel/client_channel_service_config.h +12 -1
- data/src/core/client_channel/config_selector.h +2 -2
- data/src/core/client_channel/connector.h +2 -0
- data/src/core/client_channel/dynamic_filters.cc +2 -2
- data/src/core/client_channel/global_subchannel_pool.h +1 -1
- data/src/core/client_channel/lb_metadata.h +1 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +3 -5
- data/src/core/client_channel/load_balanced_call_destination.h +1 -1
- data/src/core/client_channel/retry_filter.cc +2 -2
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +6 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -8
- data/src/core/client_channel/retry_service_config.cc +3 -3
- data/src/core/client_channel/retry_service_config.h +1 -1
- data/src/core/client_channel/subchannel.cc +106 -17
- data/src/core/client_channel/subchannel.h +24 -8
- data/src/core/client_channel/subchannel_pool_interface.cc +2 -2
- data/src/core/client_channel/subchannel_pool_interface.h +1 -1
- data/src/core/client_channel/subchannel_stream_client.cc +1 -1
- data/src/core/client_channel/subchannel_stream_client.h +3 -3
- data/src/core/config/config_vars.cc +8 -2
- data/src/core/config/config_vars.h +5 -0
- data/src/core/config/core_configuration.h +1 -1
- data/src/core/config/load_config.cc +1 -1
- data/src/core/credentials/call/call_credentials.h +2 -2
- data/src/core/credentials/call/call_creds_registry.h +1 -1
- data/src/core/credentials/call/call_creds_registry_init.cc +2 -2
- data/src/core/credentials/call/call_creds_util.cc +3 -3
- data/src/core/credentials/call/composite/composite_call_credentials.cc +2 -2
- data/src/core/credentials/call/composite/composite_call_credentials.h +1 -1
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +6 -6
- data/src/core/credentials/call/external/aws_external_account_credentials.h +1 -1
- data/src/core/credentials/call/external/external_account_credentials.cc +12 -12
- data/src/core/credentials/call/external/external_account_credentials.h +1 -1
- data/src/core/credentials/call/external/file_external_account_credentials.cc +3 -3
- data/src/core/credentials/call/external/file_external_account_credentials.h +1 -1
- data/src/core/credentials/call/external/url_external_account_credentials.cc +6 -6
- data/src/core/credentials/call/external/url_external_account_credentials.h +1 -1
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +24 -71
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +1 -8
- data/src/core/credentials/call/iam/iam_credentials.cc +2 -2
- data/src/core/credentials/call/iam/iam_credentials.h +1 -1
- data/src/core/credentials/call/json_util.cc +1 -1
- data/src/core/credentials/call/jwt/json_token.cc +4 -4
- data/src/core/credentials/call/jwt/jwt_credentials.cc +3 -3
- data/src/core/credentials/call/jwt/jwt_credentials.h +4 -4
- data/src/core/credentials/call/jwt/jwt_verifier.cc +5 -5
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +2 -2
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +3 -3
- data/src/core/credentials/call/jwt_util.cc +3 -3
- data/src/core/credentials/call/jwt_util.h +1 -1
- data/src/core/credentials/call/oauth2/oauth2_credentials.cc +29 -60
- data/src/core/credentials/call/oauth2/oauth2_credentials.h +3 -9
- data/src/core/credentials/call/plugin/plugin_credentials.cc +4 -4
- data/src/core/credentials/call/plugin/plugin_credentials.h +2 -2
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +46 -0
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +32 -3
- data/src/core/credentials/transport/alts/alts_credentials.cc +3 -3
- data/src/core/credentials/transport/alts/alts_security_connector.cc +3 -3
- data/src/core/credentials/transport/alts/check_gcp_environment_no_op.cc +1 -1
- data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +1 -1
- data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +1 -1
- data/src/core/credentials/transport/channel_creds_registry.h +1 -1
- data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
- data/src/core/credentials/transport/composite/composite_channel_credentials.cc +2 -2
- data/src/core/credentials/transport/composite/composite_channel_credentials.h +1 -1
- data/src/core/credentials/transport/fake/fake_credentials.cc +1 -1
- data/src/core/credentials/transport/fake/fake_credentials.h +1 -1
- data/src/core/credentials/transport/fake/fake_security_connector.cc +5 -5
- data/src/core/credentials/transport/google_default/credentials_generic.cc +2 -2
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +5 -11
- data/src/core/credentials/transport/google_default/google_default_credentials.h +0 -2
- data/src/core/credentials/transport/insecure/insecure_security_connector.h +2 -2
- data/src/core/credentials/transport/local/local_security_connector.cc +5 -5
- data/src/core/credentials/transport/security_connector.cc +1 -1
- data/src/core/credentials/transport/security_connector.h +2 -2
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -1
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +5 -5
- data/src/core/credentials/transport/tls/certificate_provider_factory.h +1 -1
- data/src/core/credentials/transport/tls/certificate_provider_registry.cc +1 -1
- data/src/core/credentials/transport/tls/certificate_provider_registry.h +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_certificate_match.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +3 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +3 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +2 -2
- data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +5 -5
- data/src/core/credentials/transport/tls/grpc_tls_crl_provider.h +3 -3
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -1
- data/src/core/credentials/transport/tls/spiffe_utils.cc +10 -8
- data/src/core/credentials/transport/tls/spiffe_utils.h +2 -2
- data/src/core/credentials/transport/tls/ssl_utils.cc +4 -4
- data/src/core/credentials/transport/tls/ssl_utils.h +2 -2
- data/src/core/credentials/transport/tls/tls_credentials.cc +1 -1
- data/src/core/credentials/transport/tls/tls_security_connector.cc +4 -4
- data/src/core/credentials/transport/tls/tls_security_connector.h +3 -3
- data/src/core/credentials/transport/transport_credentials.cc +1 -1
- data/src/core/credentials/transport/transport_credentials.h +2 -2
- data/src/core/credentials/transport/xds/xds_credentials.h +1 -1
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +2 -2
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +4 -1
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +5 -5
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +7 -7
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +6 -3
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +1 -1
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +1 -1
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +6 -3
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +6 -6
- data/src/core/ext/filters/http/client/http_client_filter.h +4 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
- data/src/core/ext/filters/http/client_authority_filter.h +4 -1
- data/src/core/ext/filters/http/http_filters_plugin.cc +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/compression_filter.h +21 -2
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
- data/src/core/ext/filters/http/server/http_server_filter.h +4 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +2 -2
- data/src/core/ext/filters/message_size/message_size_filter.h +8 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
- data/src/core/ext/filters/rbac/rbac_filter.h +4 -1
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +3 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -7
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +13 -2
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +50 -37
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -17
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -2
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +210 -60
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +39 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.h +213 -78
- data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +46 -1
- data/src/core/ext/transport/chttp2/transport/frame.cc +147 -21
- data/src/core/ext/transport/chttp2/transport/frame.h +44 -10
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -15
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/goaway.cc +129 -0
- data/src/core/ext/transport/chttp2/transport/goaway.h +350 -0
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +175 -51
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -4
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -4
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1177 -511
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +264 -174
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +6 -4
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +6 -16
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +320 -82
- data/src/core/ext/transport/chttp2/transport/http2_status.h +7 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +286 -7
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +187 -19
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +57 -1
- data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +128 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +25 -5
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +12 -5
- data/src/core/ext/transport/chttp2/transport/keepalive.h +14 -10
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +24 -15
- data/src/core/ext/transport/chttp2/transport/parsing.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +3 -3
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +11 -5
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +7 -3
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/security_frame.cc +31 -0
- data/src/core/ext/transport/chttp2/transport/security_frame.h +32 -0
- data/src/core/ext/transport/chttp2/transport/stream.h +139 -59
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +225 -98
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.h +5 -0
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +27 -11
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +8 -2
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +8 -5
- data/src/core/filter/auth/auth_filters.h +7 -1
- data/src/core/filter/auth/client_auth_filter.cc +2 -2
- data/src/core/filter/auth/server_auth_filter.cc +3 -3
- data/src/core/filter/blackboard.h +2 -2
- data/src/core/filter/filter_args.h +40 -2
- data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +2 -2
- data/src/core/handshaker/handshaker.cc +5 -5
- data/src/core/handshaker/handshaker.h +2 -2
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +5 -5
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +11 -11
- data/src/core/handshaker/http_connect/http_proxy_mapper.h +1 -1
- data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +1 -1
- data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +1 -1
- data/src/core/handshaker/proxy_mapper.h +1 -1
- data/src/core/handshaker/proxy_mapper_registry.h +1 -1
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +4 -4
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +7 -7
- data/src/core/handshaker/security/secure_endpoint.cc +15 -5
- data/src/core/handshaker/security/security_handshaker.cc +8 -5
- data/src/core/handshaker/security/security_handshaker.h +1 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
- data/src/core/lib/address_utils/parse_address.cc +5 -5
- data/src/core/lib/address_utils/parse_address.h +2 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +4 -4
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -1
- data/src/core/lib/channel/channel_args.cc +1 -1
- data/src/core/lib/channel/channel_args.h +2 -2
- data/src/core/lib/channel/channel_stack.cc +22 -21
- data/src/core/lib/channel/channel_stack.h +5 -3
- data/src/core/lib/channel/channel_stack_builder.cc +8 -4
- data/src/core/lib/channel/channel_stack_builder.h +10 -9
- data/src/core/lib/channel/channel_stack_builder_impl.cc +7 -13
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +2 -2
- data/src/core/lib/channel/promise_based_filter.cc +63 -8
- data/src/core/lib/channel/promise_based_filter.h +23 -8
- data/src/core/lib/compression/compression_internal.cc +4 -4
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/compression/message_compress.cc +1 -1
- data/src/core/lib/debug/trace.cc +2 -5
- data/src/core/lib/debug/trace.h +10 -0
- data/src/core/lib/debug/trace_flags.cc +2 -2
- data/src/core/lib/debug/trace_flags.h +1 -1
- data/src/core/lib/event_engine/ares_resolver.cc +8 -8
- data/src/core/lib/event_engine/ares_resolver.h +4 -4
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +1 -1
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +2 -2
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +1 -1
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -1
- data/src/core/lib/event_engine/default_event_engine.cc +1 -1
- data/src/core/lib/event_engine/event_engine.cc +1 -1
- data/src/core/lib/event_engine/extensions/channelz.h +1 -1
- data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +1 -1
- data/src/core/lib/event_engine/extensions/tcp_trace.h +8 -1
- data/src/core/lib/event_engine/grpc_polled_fd.h +1 -1
- data/src/core/lib/event_engine/memory_allocator_factory.h +1 -1
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +5 -5
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/event_poller.h +2 -2
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +1 -1
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +4 -4
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +1 -1
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +6 -6
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +7 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +7 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +7 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +1 -1
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
- data/src/core/lib/event_engine/posix_engine/timer.h +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +1 -1
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +1 -1
- data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +4 -4
- data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -4
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -3
- data/src/core/lib/event_engine/utils.cc +3 -3
- data/src/core/lib/event_engine/utils.h +1 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +1 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +2 -2
- data/src/core/lib/event_engine/windows/iocp.cc +1 -1
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +5 -2
- data/src/core/lib/event_engine/windows/win_socket.cc +1 -1
- data/src/core/lib/event_engine/windows/win_socket.h +2 -2
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +5 -5
- data/src/core/lib/event_engine/windows/windows_engine.cc +4 -4
- data/src/core/lib/event_engine/windows/windows_engine.h +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.h +2 -2
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -2
- data/src/core/lib/experiments/config.cc +4 -4
- data/src/core/lib/experiments/experiments.cc +174 -48
- data/src/core/lib/experiments/experiments.h +76 -24
- data/src/core/lib/iomgr/buffer_list.cc +1 -1
- data/src/core/lib/iomgr/call_combiner.cc +1 -1
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/closure.h +2 -2
- data/src/core/lib/iomgr/combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +1 -1
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +1 -1
- data/src/core/lib/iomgr/error.h +2 -2
- data/src/core/lib/iomgr/error_cfstream.cc +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +4 -4
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
- data/src/core/lib/iomgr/ev_posix.cc +3 -3
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -3
- data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -1
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +5 -5
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.cc +3 -3
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/internal_errqueue.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +1 -1
- data/src/core/lib/iomgr/polling_entity.cc +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +1 -1
- data/src/core/lib/iomgr/resolve_address.h +2 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +4 -4
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_posix.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_posix.cc +20 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_windows.cc +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +3 -3
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
- data/src/core/lib/iomgr/vsock.cc +1 -1
- data/src/core/lib/iomgr/vsock.h +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +1 -1
- data/src/core/lib/promise/activity.cc +2 -2
- data/src/core/lib/promise/activity.h +5 -4
- data/src/core/lib/promise/all_ok.h +3 -3
- data/src/core/lib/promise/arena_promise.h +47 -6
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/detail/join_state.h +1 -1
- data/src/core/lib/promise/detail/promise_factory.h +1 -1
- data/src/core/lib/promise/detail/promise_like.h +1 -1
- data/src/core/lib/promise/detail/seq_state.h +3 -3
- data/src/core/lib/promise/detail/status.h +1 -1
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +1 -1
- data/src/core/lib/promise/for_each.h +3 -3
- data/src/core/lib/promise/if.h +1 -1
- data/src/core/lib/promise/inter_activity_latch.h +3 -3
- data/src/core/lib/promise/inter_activity_mutex.h +1 -1
- data/src/core/lib/promise/interceptor_list.h +3 -3
- data/src/core/lib/promise/latch.h +2 -2
- data/src/core/lib/promise/loop.h +2 -2
- data/src/core/lib/promise/map.h +2 -2
- data/src/core/lib/promise/mpsc.cc +5 -4
- data/src/core/lib/promise/observable.h +2 -2
- data/src/core/lib/promise/party.cc +14 -8
- data/src/core/lib/promise/party.h +11 -4
- data/src/core/lib/promise/pipe.h +16 -2
- data/src/core/lib/promise/poll.h +2 -2
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/promise/sleep.h +1 -1
- data/src/core/lib/promise/status_flag.h +2 -2
- data/src/core/lib/promise/try_join.h +3 -3
- data/src/core/lib/promise/try_seq.h +3 -3
- data/src/core/lib/promise/wait_set.h +2 -2
- data/src/core/lib/resource_quota/api.cc +1 -1
- data/src/core/lib/resource_quota/arena.cc +1 -1
- data/src/core/lib/resource_quota/connection_quota.h +1 -1
- data/src/core/lib/resource_quota/memory_quota.cc +3 -3
- data/src/core/lib/resource_quota/memory_quota.h +9 -5
- data/src/core/lib/resource_quota/periodic_update.h +1 -1
- data/src/core/lib/resource_quota/resource_quota.cc +8 -0
- data/src/core/lib/resource_quota/resource_quota.h +2 -1
- data/src/core/lib/resource_quota/stream_quota.cc +22 -0
- data/src/core/lib/resource_quota/stream_quota.h +31 -0
- data/src/core/lib/resource_quota/telemetry.h +1 -0
- data/src/core/lib/resource_quota/thread_quota.h +1 -1
- data/src/core/lib/security/authorization/audit_logging.cc +3 -3
- data/src/core/lib/security/authorization/audit_logging.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +5 -5
- data/src/core/lib/security/authorization/evaluate_args.h +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -3
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +4 -1
- data/src/core/lib/security/authorization/matchers.cc +2 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +1 -1
- data/src/core/lib/slice/percent_encoding.cc +1 -1
- data/src/core/lib/slice/slice.cc +1 -1
- data/src/core/lib/slice/slice.h +2 -2
- data/src/core/lib/slice/slice_buffer.cc +1 -1
- data/src/core/lib/slice/slice_internal.h +1 -1
- data/src/core/lib/surface/call.cc +42 -14
- data/src/core/lib/surface/call.h +12 -5
- data/src/core/lib/surface/call_log_batch.cc +2 -2
- data/src/core/lib/surface/call_utils.cc +5 -5
- data/src/core/lib/surface/call_utils.h +83 -18
- data/src/core/lib/surface/channel.cc +2 -1
- data/src/core/lib/surface/channel.h +13 -3
- data/src/core/lib/surface/channel_create.cc +2 -2
- data/src/core/lib/surface/channel_create.h +1 -1
- data/src/core/lib/surface/channel_init.cc +5 -5
- data/src/core/lib/surface/channel_init.h +4 -2
- data/src/core/lib/surface/completion_queue.cc +4 -4
- data/src/core/lib/surface/filter_stack_call.cc +13 -8
- data/src/core/lib/surface/filter_stack_call.h +3 -3
- data/src/core/lib/surface/init.cc +4 -4
- data/src/core/lib/surface/lame_client.cc +2 -2
- data/src/core/lib/surface/lame_client.h +3 -3
- data/src/core/lib/surface/legacy_channel.cc +3 -3
- data/src/core/lib/surface/legacy_channel.h +1 -1
- data/src/core/lib/surface/validate_metadata.cc +2 -2
- data/src/core/lib/surface/validate_metadata.h +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -2
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/connectivity_state.h +2 -2
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/promise_endpoint.cc +1 -1
- data/src/core/lib/transport/promise_endpoint.h +3 -3
- data/src/core/lib/transport/timeout_encoding.cc +1 -1
- data/src/core/lib/transport/transport.cc +3 -3
- data/src/core/lib/transport/transport.h +62 -4
- data/src/core/lib/transport/transport_framing_endpoint_extension.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +2 -2
- data/src/core/load_balancing/address_filtering.cc +1 -1
- data/src/core/load_balancing/address_filtering.h +2 -2
- data/src/core/load_balancing/backend_metric_parser.cc +1 -1
- data/src/core/load_balancing/backend_metric_parser.h +1 -1
- data/src/core/load_balancing/child_policy_handler.cc +4 -4
- data/src/core/load_balancing/child_policy_handler.h +2 -2
- data/src/core/load_balancing/delegating_helper.h +2 -2
- data/src/core/load_balancing/endpoint_list.cc +4 -4
- data/src/core/load_balancing/endpoint_list.h +2 -2
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +7 -5
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +5 -1
- data/src/core/load_balancing/grpclb/grpclb.cc +13 -24
- data/src/core/load_balancing/grpclb/grpclb_client_stats.h +2 -2
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.h +1 -1
- data/src/core/load_balancing/health_check_client.cc +9 -5
- data/src/core/load_balancing/health_check_client_internal.h +3 -3
- data/src/core/load_balancing/lb_policy.h +11 -8
- data/src/core/load_balancing/lb_policy_factory.h +2 -2
- data/src/core/load_balancing/lb_policy_registry.cc +2 -2
- data/src/core/load_balancing/lb_policy_registry.h +2 -2
- data/src/core/load_balancing/oob_backend_metric.cc +7 -3
- data/src/core/load_balancing/oob_backend_metric_internal.h +2 -2
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +7 -15
- data/src/core/load_balancing/pick_first/pick_first.cc +48 -18
- data/src/core/load_balancing/priority/priority.cc +6 -6
- data/src/core/load_balancing/ring_hash/ring_hash.cc +8 -8
- data/src/core/load_balancing/rls/rls.cc +10 -10
- data/src/core/load_balancing/round_robin/round_robin.cc +7 -7
- data/src/core/load_balancing/subchannel_interface.h +2 -2
- data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +1 -1
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +9 -15
- data/src/core/load_balancing/weighted_target/weighted_target.cc +9 -9
- data/src/core/load_balancing/xds/cds.cc +5 -5
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +22 -39
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +6 -6
- data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
- data/src/core/load_balancing/xds/xds_override_host.h +1 -1
- data/src/core/load_balancing/xds/xds_wrr_locality.cc +5 -5
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +8 -8
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +1 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +6 -6
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -2
- data/src/core/resolver/dns/dns_resolver_plugin.cc +2 -2
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +8 -8
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +1 -1
- data/src/core/resolver/dns/event_engine/service_config_helper.cc +2 -2
- data/src/core/resolver/dns/native/dns_resolver.cc +7 -7
- data/src/core/resolver/endpoint_addresses.cc +4 -4
- data/src/core/resolver/endpoint_addresses.h +1 -1
- data/src/core/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.h +3 -3
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +5 -5
- data/src/core/resolver/polling_resolver.cc +5 -5
- data/src/core/resolver/polling_resolver.h +1 -1
- data/src/core/resolver/resolver.h +2 -2
- data/src/core/resolver/resolver_factory.h +2 -2
- data/src/core/resolver/resolver_registry.cc +1 -1
- data/src/core/resolver/resolver_registry.h +1 -1
- data/src/core/resolver/sockaddr/sockaddr_resolver.cc +4 -4
- data/src/core/resolver/xds/xds_config.cc +1 -1
- data/src/core/resolver/xds/xds_config.h +3 -3
- data/src/core/resolver/xds/xds_dependency_manager.cc +2 -2
- data/src/core/resolver/xds/xds_dependency_manager.h +3 -3
- data/src/core/resolver/xds/xds_resolver.cc +16 -13
- data/src/core/resolver/xds/xds_resolver_attributes.h +1 -1
- data/src/core/server/add_port.cc +2 -2
- data/src/core/server/server.cc +9 -5
- data/src/core/server/server.h +8 -7
- data/src/core/server/server_call_tracer_filter.cc +1 -1
- data/src/core/server/server_call_tracer_filter.h +5 -1
- data/src/core/server/server_config_selector.h +2 -2
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/xds_channel_stack_modifier.cc +3 -2
- data/src/core/server/xds_channel_stack_modifier.h +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +10 -10
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_channel_arg_filter.h +4 -1
- data/src/core/service_config/service_config_impl.cc +3 -3
- data/src/core/service_config/service_config_impl.h +2 -2
- data/src/core/service_config/service_config_parser.h +1 -1
- data/src/core/telemetry/call_tracer.h +2 -2
- data/src/core/telemetry/default_tcp_tracer.h +3 -3
- data/src/core/telemetry/histogram.h +1 -1
- data/src/core/telemetry/instrument.cc +550 -270
- data/src/core/telemetry/instrument.h +301 -128
- data/src/core/telemetry/metrics.cc +2 -0
- data/src/core/telemetry/metrics.h +33 -4
- data/src/core/telemetry/stats.h +2 -2
- data/src/core/telemetry/stats_data.cc +1 -1
- data/src/core/telemetry/stats_data.h +2 -2
- data/src/core/transport/auth_context.cc +1 -1
- data/src/core/transport/auth_context.h +2 -1
- data/src/core/transport/auth_context_comparator_registry.h +1 -1
- data/src/core/tsi/alts/crypt/aes_gcm.cc +1 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +2 -2
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +9 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +11 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +10 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +9 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +3 -0
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +15 -2
- data/src/core/tsi/fake_transport_security.cc +2 -1
- data/src/core/tsi/local_transport_security.cc +1 -1
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +1 -1
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +6 -6
- data/src/core/tsi/ssl_transport_security.h +1 -1
- data/src/core/tsi/ssl_transport_security_utils.cc +2 -2
- data/src/core/tsi/ssl_transport_security_utils.h +2 -2
- data/src/core/tsi/transport_security_grpc.cc +8 -0
- data/src/core/tsi/transport_security_grpc.h +15 -0
- data/src/core/util/alloc.cc +1 -1
- data/src/core/util/backoff.h +1 -1
- data/src/core/util/crash.h +1 -1
- data/src/core/util/dual_ref_counted.h +2 -2
- data/src/core/util/event_log.cc +1 -1
- data/src/core/util/event_log.h +3 -3
- data/src/core/util/gcp_metadata_query.cc +5 -5
- data/src/core/util/gcp_metadata_query.h +2 -2
- data/src/core/util/grpc_check.cc +2 -0
- data/src/core/util/grpc_check.h +1 -1
- data/src/core/util/grpc_if_nametoindex_posix.cc +1 -1
- data/src/core/util/grpc_if_nametoindex_unsupported.cc +1 -1
- data/src/core/util/http_client/format_request.cc +1 -1
- data/src/core/util/http_client/httpcli.cc +3 -3
- data/src/core/util/http_client/httpcli.h +4 -4
- data/src/core/util/http_client/httpcli_security_connector.cc +4 -4
- data/src/core/util/http_client/parser.cc +1 -1
- data/src/core/util/json/json_channel_args.h +1 -1
- data/src/core/util/json/json_object_loader.h +6 -6
- data/src/core/util/json/json_reader.cc +2 -2
- data/src/core/util/json/json_reader.h +1 -1
- data/src/core/util/json/json_util.h +3 -3
- data/src/core/util/json/json_writer.cc +1 -1
- data/src/core/util/latent_see.cc +45 -24
- data/src/core/util/latent_see.h +192 -24
- data/src/core/util/linux/cpu.cc +1 -1
- data/src/core/util/load_file.cc +1 -1
- data/src/core/util/load_file.h +1 -1
- data/src/core/util/log.cc +3 -3
- data/src/core/util/lru_cache.h +1 -1
- data/src/core/util/matchers.h +1 -1
- data/src/core/util/memory_usage.h +3 -3
- data/src/core/util/mpscq.h +1 -1
- data/src/core/util/notification.h +1 -1
- data/src/core/util/posix/cpu.cc +1 -1
- data/src/core/util/posix/stat.cc +2 -2
- data/src/core/util/posix/thd.cc +2 -2
- data/src/core/util/posix/tmpfile.cc +2 -2
- data/src/core/util/ref_counted.h +2 -2
- data/src/core/util/ref_counted_ptr.h +1 -1
- data/src/core/util/ref_counted_string.h +1 -1
- data/src/core/util/single_set_ptr.h +3 -1
- data/src/core/util/status_helper.cc +8 -8
- data/src/core/util/status_helper.h +1 -1
- data/src/core/util/string.cc +2 -2
- data/src/core/util/sync_abseil.cc +1 -1
- data/src/core/util/table.h +1 -1
- data/src/core/util/time.cc +1 -1
- data/src/core/util/time_precise.cc +1 -1
- data/src/core/util/unique_ptr_with_bitset.h +1 -1
- data/src/core/util/unique_type_name.h +1 -1
- data/src/core/util/upb_utils.h +6 -1
- data/src/core/util/validation_errors.cc +2 -2
- data/src/core/util/validation_errors.h +2 -3
- data/src/core/util/wait_for_single_owner.h +2 -2
- data/src/core/util/windows/directory_reader.cc +1 -1
- data/src/core/util/windows/stat.cc +2 -2
- data/src/core/util/windows/thd.cc +2 -2
- data/src/core/util/windows/time.cc +1 -1
- data/src/core/util/work_serializer.cc +3 -3
- data/src/core/util/work_serializer.h +2 -2
- data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
- data/src/core/xds/grpc/certificate_provider_store.h +2 -2
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
- data/src/core/xds/grpc/xds_audit_logger_registry.cc +3 -3
- data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +7 -7
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +2 -2
- data/src/core/xds/grpc/xds_certificate_provider.cc +1 -1
- data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +5 -5
- data/src/core/xds/grpc/xds_client_grpc.h +2 -2
- data/src/core/xds/grpc/xds_cluster.cc +2 -2
- data/src/core/xds/grpc/xds_cluster.h +1 -1
- data/src/core/xds/grpc/xds_cluster_parser.cc +5 -5
- data/src/core/xds/grpc/xds_cluster_parser.h +1 -1
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
- data/src/core/xds/grpc/xds_common_types.cc +1 -1
- data/src/core/xds/grpc/xds_common_types.h +1 -1
- data/src/core/xds/grpc/xds_common_types_parser.cc +5 -5
- data/src/core/xds/grpc/xds_endpoint.h +2 -2
- data/src/core/xds/grpc/xds_endpoint_parser.cc +5 -5
- data/src/core/xds/grpc/xds_endpoint_parser.h +1 -1
- data/src/core/xds/grpc/xds_health_status.cc +1 -1
- data/src/core/xds/grpc/xds_health_status.h +1 -1
- data/src/core/xds/grpc/xds_http_fault_filter.cc +4 -4
- data/src/core/xds/grpc/xds_http_fault_filter.h +2 -2
- data/src/core/xds/grpc/xds_http_filter.h +3 -3
- data/src/core/xds/grpc/xds_http_filter_registry.h +2 -2
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +3 -3
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +2 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +4 -4
- data/src/core/xds/grpc/xds_http_rbac_filter.h +2 -2
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +3 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +2 -2
- data/src/core/xds/grpc/xds_lb_policy_registry.cc +1 -1
- data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
- data/src/core/xds/grpc/xds_listener.cc +2 -2
- data/src/core/xds/grpc/xds_listener_parser.cc +6 -6
- data/src/core/xds/grpc/xds_listener_parser.h +1 -1
- data/src/core/xds/grpc/xds_matcher.cc +1 -1
- data/src/core/xds/grpc/xds_matcher.h +3 -3
- data/src/core/xds/grpc/xds_matcher_input.h +1 -1
- data/src/core/xds/grpc/xds_metadata.cc +1 -1
- data/src/core/xds/grpc/xds_metadata.h +3 -3
- data/src/core/xds/grpc/xds_metadata_parser.cc +2 -2
- data/src/core/xds/grpc/xds_route_config.cc +3 -3
- data/src/core/xds/grpc/xds_route_config_parser.cc +8 -8
- data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
- data/src/core/xds/grpc/xds_routing.cc +4 -4
- data/src/core/xds/grpc/xds_routing.h +2 -2
- data/src/core/xds/grpc/xds_server_grpc.cc +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +1 -1
- data/src/core/xds/grpc/xds_transport_grpc.h +2 -2
- data/src/core/xds/xds_client/lrs_client.cc +3 -3
- data/src/core/xds/xds_client/lrs_client.h +4 -4
- data/src/core/xds/xds_client/xds_api.h +1 -1
- data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +1 -1
- data/src/core/xds/xds_client/xds_backend_metric_propagation.h +1 -1
- data/src/core/xds/xds_client/xds_client.cc +8 -8
- data/src/core/xds/xds_client/xds_client.h +5 -5
- data/src/core/xds/xds_client/xds_locality.h +2 -2
- data/src/core/xds/xds_client/xds_resource_type.h +2 -2
- data/src/core/xds/xds_client/xds_resource_type_impl.h +1 -1
- data/src/core/xds/xds_client/xds_transport.h +2 -2
- data/src/ruby/ext/grpc/extconf.rb +14 -12
- data/src/ruby/ext/grpc/rb_call.c +0 -1
- data/src/ruby/ext/grpc/rb_channel_args.c +0 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- metadata +16 -6
|
@@ -29,13 +29,9 @@
|
|
|
29
29
|
#include <string>
|
|
30
30
|
#include <utility>
|
|
31
31
|
|
|
32
|
-
#include "absl/base/thread_annotations.h"
|
|
33
|
-
#include "absl/container/flat_hash_set.h"
|
|
34
|
-
#include "absl/functional/any_invocable.h"
|
|
35
|
-
#include "absl/status/status.h"
|
|
36
|
-
#include "absl/strings/string_view.h"
|
|
37
32
|
#include "src/core/call/metadata_batch.h"
|
|
38
33
|
#include "src/core/channelz/channelz.h"
|
|
34
|
+
#include "src/core/client_channel/buffered_call.h"
|
|
39
35
|
#include "src/core/client_channel/client_channel_args.h"
|
|
40
36
|
#include "src/core/client_channel/client_channel_factory.h"
|
|
41
37
|
#include "src/core/client_channel/config_selector.h"
|
|
@@ -67,6 +63,12 @@
|
|
|
67
63
|
#include "src/core/util/time.h"
|
|
68
64
|
#include "src/core/util/time_precise.h"
|
|
69
65
|
#include "src/core/util/work_serializer.h"
|
|
66
|
+
#include "absl/base/thread_annotations.h"
|
|
67
|
+
#include "absl/container/flat_hash_map.h"
|
|
68
|
+
#include "absl/container/flat_hash_set.h"
|
|
69
|
+
#include "absl/functional/any_invocable.h"
|
|
70
|
+
#include "absl/status/status.h"
|
|
71
|
+
#include "absl/strings/string_view.h"
|
|
70
72
|
|
|
71
73
|
//
|
|
72
74
|
// Client channel filter
|
|
@@ -79,16 +81,6 @@
|
|
|
79
81
|
// Calls on a disconnected client channel are queued until a connection is
|
|
80
82
|
// established.
|
|
81
83
|
|
|
82
|
-
// Max number of batches that can be pending on a call at any given
|
|
83
|
-
// time. This includes one batch for each of the following ops:
|
|
84
|
-
// recv_initial_metadata
|
|
85
|
-
// send_initial_metadata
|
|
86
|
-
// recv_message
|
|
87
|
-
// send_message
|
|
88
|
-
// recv_trailing_metadata
|
|
89
|
-
// send_trailing_metadata
|
|
90
|
-
#define MAX_PENDING_BATCHES 6
|
|
91
|
-
|
|
92
84
|
namespace grpc_core {
|
|
93
85
|
|
|
94
86
|
class ClientChannelFilter final {
|
|
@@ -96,7 +88,6 @@ class ClientChannelFilter final {
|
|
|
96
88
|
static const grpc_channel_filter kFilter;
|
|
97
89
|
|
|
98
90
|
class LoadBalancedCall;
|
|
99
|
-
class FilterBasedLoadBalancedCall;
|
|
100
91
|
|
|
101
92
|
// Flag that this object gets stored in channel args as a raw pointer.
|
|
102
93
|
struct RawPointerChannelArgTag {};
|
|
@@ -143,14 +134,13 @@ class ClientChannelFilter final {
|
|
|
143
134
|
void RemoveConnectivityWatcher(
|
|
144
135
|
AsyncConnectivityStateWatcherInterface* watcher);
|
|
145
136
|
|
|
146
|
-
OrphanablePtr<
|
|
137
|
+
OrphanablePtr<LoadBalancedCall> CreateLoadBalancedCall(
|
|
147
138
|
const grpc_call_element_args& args, grpc_polling_entity* pollent,
|
|
148
139
|
grpc_closure* on_call_destruction_complete,
|
|
149
140
|
absl::AnyInvocable<void()> on_commit, bool is_transparent_retry);
|
|
150
141
|
|
|
151
142
|
private:
|
|
152
143
|
class CallData;
|
|
153
|
-
class FilterBasedCallData;
|
|
154
144
|
class ResolverResultHandler;
|
|
155
145
|
class SubchannelWrapper;
|
|
156
146
|
class ClientChannelControlHelper;
|
|
@@ -318,15 +308,12 @@ class ClientChannelFilter final {
|
|
|
318
308
|
ABSL_GUARDED_BY(*work_serializer_);
|
|
319
309
|
RefCountedPtr<SubchannelPoolInterface> subchannel_pool_
|
|
320
310
|
ABSL_GUARDED_BY(*work_serializer_);
|
|
321
|
-
// The
|
|
322
|
-
|
|
323
|
-
ABSL_GUARDED_BY(*work_serializer_);
|
|
324
|
-
// The set of SubchannelWrappers that currently exist.
|
|
325
|
-
// No need to hold a ref, since the map is updated in the control-plane
|
|
311
|
+
// The set of SubchannelWrapper instances referencing a given Subchannel.
|
|
312
|
+
// No need to hold refs, since the map is updated in the control-plane
|
|
326
313
|
// work_serializer when the SubchannelWrappers are created and destroyed.
|
|
327
|
-
absl::flat_hash_set<SubchannelWrapper
|
|
328
|
-
ABSL_GUARDED_BY(*work_serializer_);
|
|
329
|
-
|
|
314
|
+
absl::flat_hash_map<Subchannel*, absl::flat_hash_set<SubchannelWrapper*>>
|
|
315
|
+
subchannel_map_ ABSL_GUARDED_BY(*work_serializer_);
|
|
316
|
+
Duration keepalive_time_ ABSL_GUARDED_BY(*work_serializer_);
|
|
330
317
|
grpc_error_handle disconnect_error_ ABSL_GUARDED_BY(*work_serializer_);
|
|
331
318
|
|
|
332
319
|
//
|
|
@@ -352,15 +339,26 @@ class ClientChannelFilter final {
|
|
|
352
339
|
|
|
353
340
|
// TODO(roth): As part of simplifying cancellation in the filter stack,
|
|
354
341
|
// this should no longer need to be ref-counted.
|
|
355
|
-
class ClientChannelFilter::LoadBalancedCall
|
|
342
|
+
class ClientChannelFilter::LoadBalancedCall final
|
|
356
343
|
: public InternallyRefCounted<LoadBalancedCall, UnrefCallDtor> {
|
|
357
344
|
public:
|
|
358
|
-
|
|
345
|
+
// If on_call_destruction_complete is non-null, then it will be
|
|
346
|
+
// invoked once the LoadBalancedCall is completely destroyed.
|
|
347
|
+
// If it is null, then the caller is responsible for checking whether
|
|
348
|
+
// the LB call has a subchannel call and ensuring that the
|
|
349
|
+
// on_call_destruction_complete closure passed down from the surface
|
|
350
|
+
// is not invoked until after the subchannel call stack is destroyed.
|
|
351
|
+
LoadBalancedCall(ClientChannelFilter* chand,
|
|
352
|
+
const grpc_call_element_args& args,
|
|
353
|
+
grpc_polling_entity* pollent,
|
|
354
|
+
grpc_closure* on_call_destruction_complete,
|
|
359
355
|
absl::AnyInvocable<void()> on_commit,
|
|
360
356
|
bool is_transparent_retry);
|
|
361
357
|
~LoadBalancedCall() override;
|
|
362
358
|
|
|
363
|
-
void Orphan() override
|
|
359
|
+
void Orphan() override;
|
|
360
|
+
|
|
361
|
+
void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch);
|
|
364
362
|
|
|
365
363
|
// Called by channel when removing a call from the list of queued calls.
|
|
366
364
|
void RemoveCallFromLbQueuedCallsLocked()
|
|
@@ -368,22 +366,22 @@ class ClientChannelFilter::LoadBalancedCall
|
|
|
368
366
|
|
|
369
367
|
// Called by the channel for each queued call when a new picker
|
|
370
368
|
// becomes available.
|
|
371
|
-
|
|
372
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::lb_mu_)
|
|
369
|
+
void RetryPickLocked()
|
|
370
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::lb_mu_);
|
|
373
371
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
CallAttemptTracer* call_attempt_tracer() const {
|
|
377
|
-
return call_attempt_tracer_;
|
|
378
|
-
}
|
|
379
|
-
ConnectedSubchannel* connected_subchannel() const {
|
|
380
|
-
return connected_subchannel_.get();
|
|
372
|
+
RefCountedPtr<SubchannelCall> subchannel_call() const {
|
|
373
|
+
return subchannel_call_;
|
|
381
374
|
}
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
375
|
+
|
|
376
|
+
private:
|
|
377
|
+
class LbCallState;
|
|
378
|
+
class Metadata;
|
|
379
|
+
class BackendMetricAccessor;
|
|
380
|
+
class LbQueuedCallCanceller;
|
|
381
|
+
|
|
382
|
+
grpc_metadata_batch* send_initial_metadata() const {
|
|
383
|
+
return buffered_call_.send_initial_metadata();
|
|
385
384
|
}
|
|
386
|
-
Arena* arena() const { return arena_; }
|
|
387
385
|
|
|
388
386
|
void Commit() {
|
|
389
387
|
auto on_commit = std::move(on_commit_);
|
|
@@ -409,14 +407,6 @@ class ClientChannelFilter::LoadBalancedCall
|
|
|
409
407
|
|
|
410
408
|
void RecordLatency();
|
|
411
409
|
|
|
412
|
-
private:
|
|
413
|
-
class LbCallState;
|
|
414
|
-
class Metadata;
|
|
415
|
-
class BackendMetricAccessor;
|
|
416
|
-
|
|
417
|
-
virtual grpc_polling_entity* pollent() = 0;
|
|
418
|
-
virtual grpc_metadata_batch* send_initial_metadata() const = 0;
|
|
419
|
-
|
|
420
410
|
// Helper function for performing an LB pick with a specified picker.
|
|
421
411
|
// Returns true if the pick is complete.
|
|
422
412
|
bool PickSubchannelImpl(LoadBalancingPolicy::SubchannelPicker* picker,
|
|
@@ -425,94 +415,6 @@ class ClientChannelFilter::LoadBalancedCall
|
|
|
425
415
|
void AddCallToLbQueuedCallsLocked()
|
|
426
416
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::lb_mu_);
|
|
427
417
|
|
|
428
|
-
// Called when adding the call to the LB queue.
|
|
429
|
-
virtual void OnAddToQueueLocked()
|
|
430
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::lb_mu_) = 0;
|
|
431
|
-
|
|
432
|
-
ClientChannelFilter* chand_;
|
|
433
|
-
// When we start a new attempt for a call, we might not have cleaned up the
|
|
434
|
-
// previous attempt yet leading to a situation where we have two active call
|
|
435
|
-
// attempt tracers, and so we cannot rely on the arena to give us the right
|
|
436
|
-
// tracer when performing cleanup.
|
|
437
|
-
CallAttemptTracer* call_attempt_tracer_;
|
|
438
|
-
|
|
439
|
-
absl::AnyInvocable<void()> on_commit_;
|
|
440
|
-
|
|
441
|
-
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
|
442
|
-
const BackendMetricData* backend_metric_data_ = nullptr;
|
|
443
|
-
std::unique_ptr<LoadBalancingPolicy::SubchannelCallTrackerInterface>
|
|
444
|
-
lb_subchannel_call_tracker_;
|
|
445
|
-
Arena* const arena_;
|
|
446
|
-
};
|
|
447
|
-
|
|
448
|
-
class ClientChannelFilter::FilterBasedLoadBalancedCall final
|
|
449
|
-
: public ClientChannelFilter::LoadBalancedCall {
|
|
450
|
-
public:
|
|
451
|
-
// If on_call_destruction_complete is non-null, then it will be
|
|
452
|
-
// invoked once the LoadBalancedCall is completely destroyed.
|
|
453
|
-
// If it is null, then the caller is responsible for checking whether
|
|
454
|
-
// the LB call has a subchannel call and ensuring that the
|
|
455
|
-
// on_call_destruction_complete closure passed down from the surface
|
|
456
|
-
// is not invoked until after the subchannel call stack is destroyed.
|
|
457
|
-
FilterBasedLoadBalancedCall(ClientChannelFilter* chand,
|
|
458
|
-
const grpc_call_element_args& args,
|
|
459
|
-
grpc_polling_entity* pollent,
|
|
460
|
-
grpc_closure* on_call_destruction_complete,
|
|
461
|
-
absl::AnyInvocable<void()> on_commit,
|
|
462
|
-
bool is_transparent_retry);
|
|
463
|
-
~FilterBasedLoadBalancedCall() override;
|
|
464
|
-
|
|
465
|
-
void Orphan() override;
|
|
466
|
-
|
|
467
|
-
void StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch);
|
|
468
|
-
|
|
469
|
-
RefCountedPtr<SubchannelCall> subchannel_call() const {
|
|
470
|
-
return subchannel_call_;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
private:
|
|
474
|
-
class LbQueuedCallCanceller;
|
|
475
|
-
|
|
476
|
-
// Work-around for Windows compilers that don't allow nested classes
|
|
477
|
-
// to access protected members of the enclosing class's parent class.
|
|
478
|
-
using LoadBalancedCall::chand;
|
|
479
|
-
using LoadBalancedCall::Commit;
|
|
480
|
-
|
|
481
|
-
grpc_polling_entity* pollent() override { return pollent_; }
|
|
482
|
-
grpc_metadata_batch* send_initial_metadata() const override {
|
|
483
|
-
return pending_batches_[0]
|
|
484
|
-
->payload->send_initial_metadata.send_initial_metadata;
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
// Returns the index into pending_batches_ to be used for batch.
|
|
488
|
-
static size_t GetBatchIndex(grpc_transport_stream_op_batch* batch);
|
|
489
|
-
void PendingBatchesAdd(grpc_transport_stream_op_batch* batch);
|
|
490
|
-
static void FailPendingBatchInCallCombiner(void* arg,
|
|
491
|
-
grpc_error_handle error);
|
|
492
|
-
// A predicate type and some useful implementations for PendingBatchesFail().
|
|
493
|
-
typedef bool (*YieldCallCombinerPredicate)(
|
|
494
|
-
const CallCombinerClosureList& closures);
|
|
495
|
-
static bool YieldCallCombiner(const CallCombinerClosureList& /*closures*/) {
|
|
496
|
-
return true;
|
|
497
|
-
}
|
|
498
|
-
static bool NoYieldCallCombiner(const CallCombinerClosureList& /*closures*/) {
|
|
499
|
-
return false;
|
|
500
|
-
}
|
|
501
|
-
static bool YieldCallCombinerIfPendingBatchesFound(
|
|
502
|
-
const CallCombinerClosureList& closures) {
|
|
503
|
-
return closures.size() > 0;
|
|
504
|
-
}
|
|
505
|
-
// Fails all pending batches.
|
|
506
|
-
// If yield_call_combiner_predicate returns true, assumes responsibility for
|
|
507
|
-
// yielding the call combiner.
|
|
508
|
-
void PendingBatchesFail(
|
|
509
|
-
grpc_error_handle error,
|
|
510
|
-
YieldCallCombinerPredicate yield_call_combiner_predicate);
|
|
511
|
-
static void ResumePendingBatchInCallCombiner(void* arg,
|
|
512
|
-
grpc_error_handle ignored);
|
|
513
|
-
// Resumes all pending batches on subchannel_call_.
|
|
514
|
-
void PendingBatchesResume();
|
|
515
|
-
|
|
516
418
|
static void SendInitialMetadataOnComplete(void* arg, grpc_error_handle error);
|
|
517
419
|
static void RecvInitialMetadataReady(void* arg, grpc_error_handle error);
|
|
518
420
|
static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error);
|
|
@@ -521,14 +423,15 @@ class ClientChannelFilter::FilterBasedLoadBalancedCall final
|
|
|
521
423
|
// and when it is queued and the channel gets a new picker.
|
|
522
424
|
void TryPick(bool was_queued);
|
|
523
425
|
|
|
524
|
-
void OnAddToQueueLocked() override
|
|
525
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::lb_mu_);
|
|
526
|
-
|
|
527
|
-
void RetryPickLocked() override
|
|
528
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::lb_mu_);
|
|
529
|
-
|
|
530
426
|
void CreateSubchannelCall();
|
|
531
427
|
|
|
428
|
+
ClientChannelFilter* chand_;
|
|
429
|
+
// When we start a new attempt for a call, we might not have cleaned up the
|
|
430
|
+
// previous attempt yet leading to a situation where we have two active call
|
|
431
|
+
// attempt tracers, and so we cannot rely on the arena to give us the right
|
|
432
|
+
// tracer when performing cleanup.
|
|
433
|
+
CallAttemptTracer* call_attempt_tracer_;
|
|
434
|
+
|
|
532
435
|
// TODO(roth): Instead of duplicating these fields in every filter
|
|
533
436
|
// that uses any one of them, we should store them in the call
|
|
534
437
|
// context. This will save per-call memory overhead.
|
|
@@ -536,6 +439,15 @@ class ClientChannelFilter::FilterBasedLoadBalancedCall final
|
|
|
536
439
|
CallCombiner* call_combiner_;
|
|
537
440
|
grpc_polling_entity* pollent_;
|
|
538
441
|
grpc_closure* on_call_destruction_complete_;
|
|
442
|
+
Arena* const arena_;
|
|
443
|
+
|
|
444
|
+
absl::AnyInvocable<void()> on_commit_;
|
|
445
|
+
|
|
446
|
+
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
|
|
447
|
+
const BackendMetricData* backend_metric_data_ = nullptr;
|
|
448
|
+
std::unique_ptr<LoadBalancingPolicy::SubchannelCallTrackerInterface>
|
|
449
|
+
lb_subchannel_call_tracker_;
|
|
450
|
+
|
|
539
451
|
std::optional<Slice> peer_string_;
|
|
540
452
|
|
|
541
453
|
// Set when we get a cancel_stream op.
|
|
@@ -560,12 +472,7 @@ class ClientChannelFilter::FilterBasedLoadBalancedCall final
|
|
|
560
472
|
grpc_closure recv_trailing_metadata_ready_;
|
|
561
473
|
grpc_closure* original_recv_trailing_metadata_ready_ = nullptr;
|
|
562
474
|
|
|
563
|
-
|
|
564
|
-
// They are removed when we are done handling the batch (i.e., when
|
|
565
|
-
// either we have invoked all of the batch's callbacks or we have
|
|
566
|
-
// passed the batch down to the subchannel call and are not
|
|
567
|
-
// intercepting any of its callbacks).
|
|
568
|
-
grpc_transport_stream_op_batch* pending_batches_[MAX_PENDING_BATCHES] = {};
|
|
475
|
+
BufferedCall buffered_call_;
|
|
569
476
|
};
|
|
570
477
|
|
|
571
478
|
} // namespace grpc_core
|
|
@@ -21,7 +21,6 @@
|
|
|
21
21
|
|
|
22
22
|
#include <utility>
|
|
23
23
|
|
|
24
|
-
#include "absl/functional/any_invocable.h"
|
|
25
24
|
#include "src/core/call/call_destination.h"
|
|
26
25
|
#include "src/core/lib/resource_quota/arena.h"
|
|
27
26
|
#include "src/core/load_balancing/lb_policy.h"
|
|
@@ -30,6 +29,7 @@
|
|
|
30
29
|
#include "src/core/util/down_cast.h"
|
|
31
30
|
#include "src/core/util/grpc_check.h"
|
|
32
31
|
#include "src/core/util/unique_type_name.h"
|
|
32
|
+
#include "absl/functional/any_invocable.h"
|
|
33
33
|
|
|
34
34
|
//
|
|
35
35
|
// This file contains internal interfaces used to allow various plugins
|
|
@@ -41,6 +41,10 @@
|
|
|
41
41
|
#define GRPC_ARG_HEALTH_CHECK_SERVICE_NAME \
|
|
42
42
|
"grpc.internal.health_check_service_name"
|
|
43
43
|
|
|
44
|
+
// Max number of connections per subchannel.
|
|
45
|
+
#define GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL \
|
|
46
|
+
"grpc.internal.max_connections_per_subchannel"
|
|
47
|
+
|
|
44
48
|
namespace grpc_core {
|
|
45
49
|
|
|
46
50
|
// Internal type for LB call state interface. Provides an interface for
|
|
@@ -22,11 +22,12 @@
|
|
|
22
22
|
#include <optional>
|
|
23
23
|
#include <utility>
|
|
24
24
|
|
|
25
|
+
#include "src/core/load_balancing/lb_policy_registry.h"
|
|
26
|
+
#include "src/core/util/env.h"
|
|
25
27
|
#include "absl/status/status.h"
|
|
26
28
|
#include "absl/status/statusor.h"
|
|
27
29
|
#include "absl/strings/ascii.h"
|
|
28
30
|
#include "absl/strings/str_cat.h"
|
|
29
|
-
#include "src/core/load_balancing/lb_policy_registry.h"
|
|
30
31
|
|
|
31
32
|
// As per the retry design, we do not allow more than 5 retry attempts.
|
|
32
33
|
#define MAX_MAX_RETRY_ATTEMPTS 5
|
|
@@ -34,6 +35,27 @@
|
|
|
34
35
|
namespace grpc_core {
|
|
35
36
|
namespace internal {
|
|
36
37
|
|
|
38
|
+
namespace {
|
|
39
|
+
|
|
40
|
+
bool ConnectionScalingEnabled() {
|
|
41
|
+
auto value =
|
|
42
|
+
GetEnv("GRPC_EXPERIMENTAL_MAX_CONCURRENT_STREAMS_CONNECTION_SCALING");
|
|
43
|
+
if (!value.has_value()) return false;
|
|
44
|
+
bool parsed_value;
|
|
45
|
+
bool parse_succeeded = gpr_parse_bool_value(value->c_str(), &parsed_value);
|
|
46
|
+
return parse_succeeded && parsed_value;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
class ConnectionScalingJsonArgs final : public JsonArgs {
|
|
50
|
+
public:
|
|
51
|
+
bool IsEnabled(absl::string_view key) const override {
|
|
52
|
+
if (key == "connection_scaling") return ConnectionScalingEnabled();
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
} // namespace
|
|
58
|
+
|
|
37
59
|
//
|
|
38
60
|
// ClientChannelGlobalParsedConfig::HealthCheckConfig
|
|
39
61
|
//
|
|
@@ -48,6 +70,21 @@ ClientChannelGlobalParsedConfig::HealthCheckConfig::JsonLoader(
|
|
|
48
70
|
return loader;
|
|
49
71
|
}
|
|
50
72
|
|
|
73
|
+
//
|
|
74
|
+
// ClientChannelGlobalParsedConfig::ConnectionScaling
|
|
75
|
+
//
|
|
76
|
+
|
|
77
|
+
const JsonLoaderInterface*
|
|
78
|
+
ClientChannelGlobalParsedConfig::ConnectionScaling::JsonLoader(
|
|
79
|
+
const JsonArgs&) {
|
|
80
|
+
static const auto* loader =
|
|
81
|
+
JsonObjectLoader<ConnectionScaling>()
|
|
82
|
+
.OptionalField("maxConnectionsPerSubchannel",
|
|
83
|
+
&ConnectionScaling::max_connections_per_subchannel)
|
|
84
|
+
.Finish();
|
|
85
|
+
return loader;
|
|
86
|
+
}
|
|
87
|
+
|
|
51
88
|
//
|
|
52
89
|
// ClientChannelGlobalParsedConfig
|
|
53
90
|
//
|
|
@@ -63,6 +100,9 @@ const JsonLoaderInterface* ClientChannelGlobalParsedConfig::JsonLoader(
|
|
|
63
100
|
&ClientChannelGlobalParsedConfig::parsed_deprecated_lb_policy_)
|
|
64
101
|
.OptionalField("healthCheckConfig",
|
|
65
102
|
&ClientChannelGlobalParsedConfig::health_check_config_)
|
|
103
|
+
.OptionalField("connectionScaling",
|
|
104
|
+
&ClientChannelGlobalParsedConfig::connection_scaling_,
|
|
105
|
+
"connection_scaling")
|
|
66
106
|
.Finish();
|
|
67
107
|
return loader;
|
|
68
108
|
}
|
|
@@ -138,14 +178,14 @@ ClientChannelServiceConfigParser::ParseGlobalParams(const ChannelArgs& /*args*/,
|
|
|
138
178
|
const Json& json,
|
|
139
179
|
ValidationErrors* errors) {
|
|
140
180
|
return LoadFromJson<std::unique_ptr<ClientChannelGlobalParsedConfig>>(
|
|
141
|
-
json,
|
|
181
|
+
json, ConnectionScalingJsonArgs(), errors);
|
|
142
182
|
}
|
|
143
183
|
|
|
144
184
|
std::unique_ptr<ServiceConfigParser::ParsedConfig>
|
|
145
185
|
ClientChannelServiceConfigParser::ParsePerMethodParams(
|
|
146
186
|
const ChannelArgs& /*args*/, const Json& json, ValidationErrors* errors) {
|
|
147
187
|
return LoadFromJson<std::unique_ptr<ClientChannelMethodParsedConfig>>(
|
|
148
|
-
json,
|
|
188
|
+
json, ConnectionScalingJsonArgs(), errors);
|
|
149
189
|
}
|
|
150
190
|
|
|
151
191
|
} // namespace internal
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
#include <optional>
|
|
25
25
|
#include <string>
|
|
26
26
|
|
|
27
|
-
#include "absl/strings/string_view.h"
|
|
28
27
|
#include "src/core/config/core_configuration.h"
|
|
29
28
|
#include "src/core/lib/channel/channel_args.h"
|
|
30
29
|
#include "src/core/load_balancing/lb_policy.h"
|
|
@@ -35,6 +34,7 @@
|
|
|
35
34
|
#include "src/core/util/ref_counted_ptr.h"
|
|
36
35
|
#include "src/core/util/time.h"
|
|
37
36
|
#include "src/core/util/validation_errors.h"
|
|
37
|
+
#include "absl/strings/string_view.h"
|
|
38
38
|
|
|
39
39
|
namespace grpc_core {
|
|
40
40
|
namespace internal {
|
|
@@ -54,6 +54,10 @@ class ClientChannelGlobalParsedConfig final
|
|
|
54
54
|
return health_check_config_.service_name;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
uint32_t max_connections_per_subchannel() const {
|
|
58
|
+
return connection_scaling_.max_connections_per_subchannel;
|
|
59
|
+
}
|
|
60
|
+
|
|
57
61
|
static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
|
|
58
62
|
void JsonPostLoad(const Json& json, const JsonArgs&,
|
|
59
63
|
ValidationErrors* errors);
|
|
@@ -65,9 +69,16 @@ class ClientChannelGlobalParsedConfig final
|
|
|
65
69
|
static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
|
|
66
70
|
};
|
|
67
71
|
|
|
72
|
+
struct ConnectionScaling {
|
|
73
|
+
uint32_t max_connections_per_subchannel = 0;
|
|
74
|
+
|
|
75
|
+
static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
|
|
76
|
+
};
|
|
77
|
+
|
|
68
78
|
RefCountedPtr<LoadBalancingPolicy::Config> parsed_lb_config_;
|
|
69
79
|
std::string parsed_deprecated_lb_policy_;
|
|
70
80
|
HealthCheckConfig health_check_config_;
|
|
81
|
+
ConnectionScaling connection_scaling_;
|
|
71
82
|
};
|
|
72
83
|
|
|
73
84
|
class ClientChannelMethodParsedConfig final
|
|
@@ -24,8 +24,6 @@
|
|
|
24
24
|
#include <utility>
|
|
25
25
|
#include <vector>
|
|
26
26
|
|
|
27
|
-
#include "absl/status/status.h"
|
|
28
|
-
#include "absl/strings/string_view.h"
|
|
29
27
|
#include "src/core/call/interception_chain.h"
|
|
30
28
|
#include "src/core/call/metadata_batch.h"
|
|
31
29
|
#include "src/core/client_channel/client_channel_internal.h"
|
|
@@ -39,6 +37,8 @@
|
|
|
39
37
|
#include "src/core/util/ref_counted_ptr.h"
|
|
40
38
|
#include "src/core/util/unique_type_name.h"
|
|
41
39
|
#include "src/core/util/useful.h"
|
|
40
|
+
#include "absl/status/status.h"
|
|
41
|
+
#include "absl/strings/string_view.h"
|
|
42
42
|
|
|
43
43
|
// Channel arg key for ConfigSelector.
|
|
44
44
|
#define GRPC_ARG_CONFIG_SELECTOR "grpc.internal.config_selector"
|
|
@@ -53,6 +53,8 @@ class SubchannelConnector : public InternallyRefCounted<SubchannelConnector> {
|
|
|
53
53
|
Transport* transport = nullptr;
|
|
54
54
|
// Channel args to be passed to filters.
|
|
55
55
|
ChannelArgs channel_args;
|
|
56
|
+
// Initial MAX_CONCURRENT_STREAMS value.
|
|
57
|
+
uint32_t max_concurrent_streams;
|
|
56
58
|
|
|
57
59
|
void Reset() {
|
|
58
60
|
if (transport != nullptr) {
|
|
@@ -22,8 +22,6 @@
|
|
|
22
22
|
#include <new>
|
|
23
23
|
#include <utility>
|
|
24
24
|
|
|
25
|
-
#include "absl/log/log.h"
|
|
26
|
-
#include "absl/status/statusor.h"
|
|
27
25
|
#include "src/core/lib/channel/channel_args.h"
|
|
28
26
|
#include "src/core/lib/channel/channel_stack.h"
|
|
29
27
|
#include "src/core/lib/channel/channel_stack_builder_impl.h"
|
|
@@ -33,6 +31,8 @@
|
|
|
33
31
|
#include "src/core/util/alloc.h"
|
|
34
32
|
#include "src/core/util/grpc_check.h"
|
|
35
33
|
#include "src/core/util/status_helper.h"
|
|
34
|
+
#include "absl/log/log.h"
|
|
35
|
+
#include "absl/status/statusor.h"
|
|
36
36
|
|
|
37
37
|
// Conversion between call and call stack.
|
|
38
38
|
#define CALL_TO_CALL_STACK(call) \
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
|
|
24
24
|
#include <map>
|
|
25
25
|
|
|
26
|
-
#include "absl/base/thread_annotations.h"
|
|
27
26
|
#include "src/core/client_channel/subchannel_pool_interface.h"
|
|
28
27
|
#include "src/core/util/ref_counted_ptr.h"
|
|
29
28
|
#include "src/core/util/sync.h"
|
|
29
|
+
#include "absl/base/thread_annotations.h"
|
|
30
30
|
|
|
31
31
|
namespace grpc_core {
|
|
32
32
|
|
|
@@ -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,6 +22,7 @@
|
|
|
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
|
|
|
@@ -135,11 +135,9 @@ LoopCtl<absl::StatusOr<RefCountedPtr<UnstartedCallDestination>>> PickSubchannel(
|
|
|
135
135
|
"pick";
|
|
136
136
|
return Continue{};
|
|
137
137
|
}
|
|
138
|
-
// If the LB policy returned a call tracker,
|
|
139
|
-
//
|
|
140
|
-
// 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.
|
|
141
140
|
if (complete_pick->subchannel_call_tracker != nullptr) {
|
|
142
|
-
complete_pick->subchannel_call_tracker->Start();
|
|
143
141
|
SetContext(complete_pick->subchannel_call_tracker.release());
|
|
144
142
|
}
|
|
145
143
|
// Apply metadata mutations, if any.
|
|
@@ -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,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
|
|
@@ -20,9 +20,6 @@
|
|
|
20
20
|
#include <memory>
|
|
21
21
|
#include <new>
|
|
22
22
|
|
|
23
|
-
#include "absl/log/log.h"
|
|
24
|
-
#include "absl/status/status.h"
|
|
25
|
-
#include "absl/strings/str_cat.h"
|
|
26
23
|
#include "src/core/call/metadata_batch.h"
|
|
27
24
|
#include "src/core/call/status_util.h"
|
|
28
25
|
#include "src/core/client_channel/client_channel_internal.h"
|
|
@@ -50,6 +47,9 @@
|
|
|
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
|
}
|
|
@@ -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,
|