grpc 1.72.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 +153 -54
- data/include/grpc/create_channel_from_endpoint.h +54 -0
- data/include/grpc/credentials.h +41 -8
- data/include/grpc/event_engine/event_engine.h +182 -8
- data/include/grpc/event_engine/internal/write_event.h +34 -0
- data/include/grpc/event_engine/memory_allocator.h +2 -0
- data/include/grpc/event_engine/memory_request.h +2 -0
- data/include/grpc/grpc_posix.h +20 -1
- data/include/grpc/impl/channel_arg_names.h +24 -13
- data/include/grpc/impl/compression_types.h +3 -2
- data/include/grpc/impl/slice_type.h +1 -1
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/support/json.h +27 -21
- data/include/grpc/support/metrics.h +7 -1
- data/include/grpc/support/port_platform.h +8 -5
- data/src/core/call/call_filters.cc +5 -5
- data/src/core/call/call_filters.h +239 -56
- data/src/core/call/call_spine.cc +1 -1
- data/src/core/call/call_spine.h +56 -32
- data/src/core/call/channelz_context.h +30 -0
- data/src/core/call/client_call.cc +53 -14
- data/src/core/call/client_call.h +6 -3
- data/src/core/call/filter_fusion.h +1230 -0
- data/src/core/call/interception_chain.h +8 -11
- data/src/core/call/metadata.cc +22 -0
- data/src/core/call/metadata.h +41 -2
- 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 +218 -112
- data/src/core/channelz/channel_trace.h +390 -65
- data/src/core/channelz/channelz.cc +483 -192
- data/src/core/channelz/channelz.h +523 -78
- data/src/core/channelz/channelz_registry.cc +239 -195
- data/src/core/channelz/channelz_registry.h +261 -21
- data/src/core/channelz/property_list.cc +371 -0
- data/src/core/channelz/property_list.h +215 -0
- 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 +694 -0
- data/src/core/channelz/v2tov1/convert.h +58 -0
- data/src/core/channelz/v2tov1/legacy_api.cc +431 -0
- data/src/core/channelz/v2tov1/legacy_api.h +32 -0
- data/src/core/channelz/v2tov1/property_list.cc +119 -0
- data/src/core/channelz/v2tov1/property_list.h +52 -0
- data/src/core/channelz/ztrace_collector.h +489 -0
- data/src/core/client_channel/backup_poller.cc +19 -5
- 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 +179 -129
- 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 +449 -719
- data/src/core/client_channel/client_channel_filter.h +57 -152
- data/src/core/client_channel/client_channel_internal.h +8 -4
- 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 +13 -7
- data/src/core/client_channel/connector.h +2 -3
- data/src/core/client_channel/dynamic_filters.cc +10 -11
- data/src/core/client_channel/dynamic_filters.h +1 -1
- data/src/core/client_channel/global_subchannel_pool.cc +42 -15
- data/src/core/client_channel/global_subchannel_pool.h +19 -13
- data/src/core/client_channel/lb_metadata.h +1 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +9 -10
- 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 +23 -29
- data/src/core/client_channel/retry_filter.h +13 -10
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +16 -17
- data/src/core/client_channel/retry_filter_legacy_call_data.h +7 -9
- data/src/core/client_channel/retry_interceptor.cc +30 -44
- data/src/core/client_channel/retry_interceptor.h +18 -17
- 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/retry_throttle.cc +46 -61
- data/src/core/client_channel/retry_throttle.h +17 -39
- data/src/core/client_channel/subchannel.cc +174 -55
- data/src/core/client_channel/subchannel.h +36 -16
- data/src/core/client_channel/subchannel_pool_interface.cc +7 -8
- data/src/core/client_channel/subchannel_pool_interface.h +12 -2
- 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 +50 -3
- data/src/core/config/config_vars.h +34 -0
- data/src/core/config/core_configuration.cc +56 -14
- data/src/core/config/core_configuration.h +116 -11
- 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 +125 -0
- data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
- 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/aws_request_signer.cc +3 -2
- 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 +9 -9
- 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 +26 -115
- 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 +23 -22
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
- data/src/core/credentials/call/jwt_util.cc +70 -0
- data/src/core/credentials/call/jwt_util.h +32 -0
- data/src/core/credentials/call/oauth2/oauth2_credentials.cc +53 -74
- 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 -0
- data/src/core/credentials/transport/alts/alts_security_connector.cc +17 -14
- data/src/core/credentials/transport/alts/check_gcp_environment_no_op.cc +1 -1
- data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
- 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 +5 -3
- 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 +151 -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 +16 -17
- data/src/core/credentials/transport/ssl/ssl_credentials.h +2 -2
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +57 -22
- data/src/core/credentials/transport/ssl/ssl_security_connector.h +2 -1
- 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 +52 -47
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +21 -10
- data/src/core/credentials/transport/tls/grpc_tls_certificate_match.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +103 -61
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +20 -7
- 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 +2 -1
- data/src/core/credentials/transport/tls/spiffe_utils.cc +373 -0
- data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
- data/src/core/credentials/transport/tls/ssl_utils.cc +46 -22
- data/src/core/credentials/transport/tls/ssl_utils.h +11 -4
- data/src/core/credentials/transport/tls/tls_credentials.cc +3 -1
- data/src/core/credentials/transport/tls/tls_security_connector.cc +28 -42
- data/src/core/credentials/transport/tls/tls_security_connector.h +15 -15
- 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 -8
- data/src/core/credentials/transport/xds/xds_credentials.h +1 -1
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +3 -4
- 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 +12 -7
- 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 +10 -10
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +22 -19
- 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 +9 -12
- data/src/core/ext/filters/http/client/http_client_filter.h +4 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +5 -8
- 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 +19 -19
- data/src/core/ext/filters/http/message_compress/compression_filter.h +61 -9
- data/src/core/ext/filters/http/server/http_server_filter.cc +7 -10
- data/src/core/ext/filters/http/server/http_server_filter.h +22 -7
- data/src/core/ext/filters/message_size/message_size_filter.cc +6 -6
- data/src/core/ext/filters/message_size/message_size_filter.h +8 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +2 -2
- 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 +17 -19
- 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/chttp2_plugin.cc +40 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +176 -178
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +5 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +63 -990
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -3
- 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 +490 -202
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -8
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +43 -7
- data/src/core/ext/transport/chttp2/transport/flow_control.h +247 -83
- data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +105 -0
- data/src/core/ext/transport/chttp2/transport/frame.cc +472 -123
- data/src/core/ext/transport/chttp2/transport/frame.h +170 -12
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +15 -5
- data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +20 -8
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +5 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +8 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +18 -11
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +33 -24
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +14 -11
- 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 +430 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +10 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +10 -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 +35 -35
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +19 -13
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +13 -2
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +2076 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +723 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +12 -39
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +71 -29
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +62 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +143 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +417 -0
- data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
- data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
- data/src/core/ext/transport/chttp2/transport/http2_status.h +369 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +428 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +251 -0
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +323 -0
- data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +128 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +72 -26
- data/src/core/ext/transport/chttp2/transport/internal_channel_arg_names.h +24 -0
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +112 -0
- data/src/core/ext/transport/chttp2/transport/keepalive.h +142 -0
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +194 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +64 -48
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +21 -2
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +194 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +237 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +16 -19
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +17 -0
- 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 +875 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +46 -8
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +35 -0
- data/src/core/ext/transport/chttp2/transport/transport_common.h +84 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -2
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +372 -0
- data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +105 -66
- data/src/core/ext/transport/inproc/inproc_transport.cc +16 -5
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +17 -10
- data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +12 -0
- data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +12 -22
- data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +12 -22
- data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +28 -22
- data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +12 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +24 -67
- data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +29 -31
- data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +2 -2
- data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +12 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +8 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +0 -23
- data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +8 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +8 -0
- data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +12 -0
- data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +20 -0
- data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +12 -0
- data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +8 -22
- data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +0 -23
- data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +64 -66
- data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +12 -0
- data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +4 -95
- data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +8 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +28 -0
- data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +12 -0
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +8 -0
- data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +8 -36
- data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +8 -0
- data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +8 -0
- data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +4 -0
- data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +4 -0
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +8 -44
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +12 -40
- data/src/core/ext/upb-gen/google/api/http.upb.h +4 -0
- data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +193 -20
- data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +59 -21
- data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +4 -0
- data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +4 -22
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +1072 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +230 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
- 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/altscontext.upb.h +0 -18
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +196 -104
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +40 -32
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +154 -0
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +40 -2
- data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +4 -0
- data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +8 -0
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +0 -18
- data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +0 -36
- data/src/core/ext/upb-gen/validate/validate.upb.h +12 -0
- data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +4 -0
- data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +0 -18
- data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +8 -0
- data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +0 -54
- data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +20 -22
- data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +4 -0
- data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +4 -0
- data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +4 -0
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +123 -62
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +200 -101
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +152 -77
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +524 -255
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +44 -23
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +66 -34
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +54 -28
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +46 -25
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +47 -25
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +256 -126
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +50 -28
- data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +55 -28
- data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +34 -18
- data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +414 -206
- data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +831 -413
- data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +143 -73
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +1132 -557
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +63 -34
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +255 -127
- data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +363 -178
- data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +227 -114
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +57 -31
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +596 -295
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +271 -137
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +56 -30
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +45 -25
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +59 -31
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +438 -217
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +441 -221
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +55 -30
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +57 -31
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +619 -303
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +70 -36
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +62 -33
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +47 -25
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +97 -49
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +97 -51
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +51 -27
- data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +147 -76
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +230 -116
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +277 -138
- data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +48 -26
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +388 -197
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +304 -153
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +173 -90
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +90 -47
- data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +98 -51
- data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +196 -99
- data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +237 -118
- data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +418 -210
- data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +194 -99
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +2003 -973
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +101 -53
- data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +352 -176
- data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +79 -42
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +67 -37
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +63 -34
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +88 -47
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +80 -43
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +53 -29
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +86 -46
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +55 -32
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +91 -49
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +105 -55
- data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +775 -379
- data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +52 -28
- data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +134 -68
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +189 -96
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +116 -61
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +112 -58
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +160 -82
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +75 -39
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +1161 -570
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +52 -28
- data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +55 -29
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -26
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +390 -194
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +126 -65
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +498 -246
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +74 -38
- data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +221 -110
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +68 -36
- data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +378 -187
- data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +100 -52
- data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +257 -129
- data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +44 -24
- data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +68 -35
- data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.c +38 -20
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +59 -32
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +65 -34
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +72 -38
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +57 -31
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +52 -29
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +51 -28
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +89 -47
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +37 -20
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +89 -47
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +67 -35
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +112 -58
- data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +110 -56
- data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +123 -62
- data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +59 -31
- data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +30 -16
- data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +143 -72
- data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +61 -32
- data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +51 -27
- data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +85 -45
- data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +35 -19
- data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +44 -23
- data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +61 -33
- data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +35 -19
- data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +272 -133
- data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +315 -154
- data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +64 -33
- data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +35 -19
- data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +26 -15
- data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +1106 -508
- data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +10 -1
- data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +28 -16
- data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +23 -13
- data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +69 -35
- data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +29 -16
- data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +51 -26
- data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +32 -17
- data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
- 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/promise.upbdefs.c +175 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -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/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +161 -79
- data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +84 -42
- data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +48 -26
- data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +26 -14
- data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +50 -26
- data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +36 -19
- data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +538 -261
- data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +86 -43
- data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +49 -26
- data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +27 -15
- data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +87 -44
- data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +37 -20
- data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +30 -17
- data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +41 -23
- data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +62 -33
- data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +36 -19
- data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +36 -20
- data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +42 -23
- data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +76 -39
- data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +45 -24
- data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +41 -23
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +53 -29
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +29 -16
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +58 -32
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +207 -103
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +95 -49
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +38 -20
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +60 -31
- data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +67 -36
- data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +31 -17
- data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +5 -1
- data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +31 -17
- data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +5 -1
- data/src/core/filter/auth/auth_filters.h +9 -28
- data/src/core/filter/auth/client_auth_filter.cc +2 -120
- 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 +46 -22
- data/src/core/filter/fused_filters.cc +154 -0
- data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +2 -2
- data/src/core/handshaker/handshaker.cc +31 -22
- data/src/core/handshaker/handshaker.h +5 -2
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +8 -6
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +19 -34
- 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 +597 -0
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +988 -0
- data/src/core/handshaker/security/secure_endpoint.cc +851 -314
- data/src/core/handshaker/security/secure_endpoint.h +25 -0
- data/src/core/handshaker/security/security_handshaker.cc +18 -12
- data/src/core/handshaker/security/security_handshaker.h +1 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +13 -7
- 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 +9 -9
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -1
- data/src/core/lib/channel/channel_args.cc +16 -1
- data/src/core/lib/channel/channel_args.h +9 -2
- data/src/core/lib/channel/channel_stack.cc +61 -29
- data/src/core/lib/channel/channel_stack.h +23 -7
- 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 +3 -8
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/promise_based_filter.cc +147 -97
- data/src/core/lib/channel/promise_based_filter.h +753 -328
- 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 +4 -4
- data/src/core/lib/debug/trace_flags.h +2 -2
- data/src/core/lib/debug/trace_impl.h +0 -1
- data/src/core/lib/event_engine/ares_resolver.cc +185 -64
- data/src/core/lib/event_engine/ares_resolver.h +55 -7
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +20 -10
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -4
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +37 -9
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +23 -7
- 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/default_event_engine_factory.cc +1 -1
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
- data/src/core/lib/event_engine/event_engine.cc +7 -0
- data/src/core/lib/event_engine/extensions/blocking_dns.h +46 -0
- data/src/core/lib/event_engine/extensions/channelz.h +66 -0
- 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 +10 -3
- data/src/core/lib/event_engine/grpc_polled_fd.h +6 -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 +147 -177
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +21 -23
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +104 -145
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +16 -16
- data/src/core/lib/event_engine/posix_engine/event_poller.h +20 -25
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +13 -25
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +33 -22
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +7 -3
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -7
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +4 -5
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +7 -10
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +4 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +179 -126
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +46 -50
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +514 -288
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +79 -72
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +56 -44
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +9 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +40 -150
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +7 -6
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +4 -720
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +12 -172
- data/src/core/lib/event_engine/posix_engine/timer.h +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +36 -25
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +14 -12
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +119 -153
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +28 -96
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +27 -26
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +7 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +37 -63
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +7 -3
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +14 -8
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
- data/src/core/lib/event_engine/query_extensions.h +10 -21
- 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 +14 -8
- data/src/core/lib/event_engine/shim.h +4 -0
- data/src/core/lib/event_engine/slice.cc +2 -2
- data/src/core/lib/event_engine/tcp_socket_utils.cc +25 -24
- 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/thread_pool.h +7 -3
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +15 -13
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +6 -5
- data/src/core/lib/event_engine/utils.cc +35 -1
- data/src/core/lib/event_engine/utils.h +4 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +38 -33
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +6 -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 +18 -18
- data/src/core/lib/event_engine/windows/windows_endpoint.h +5 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +20 -19
- data/src/core/lib/event_engine/windows/windows_engine.h +4 -6
- data/src/core/lib/event_engine/windows/windows_listener.cc +24 -12
- 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 +591 -165
- data/src/core/lib/experiments/experiments.h +229 -89
- 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 +5 -4
- data/src/core/lib/iomgr/endpoint.cc +4 -3
- data/src/core/lib/iomgr/endpoint.h +8 -5
- data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -9
- 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 +26 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +25 -16
- 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 +21 -19
- 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 +4 -10
- data/src/core/lib/iomgr/fork_posix.cc +1 -8
- 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 -4
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +3 -0
- 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 +37 -47
- data/src/core/lib/iomgr/resolve_address_posix.h +15 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +23 -46
- data/src/core/lib/iomgr/resolve_address_windows.h +15 -2
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -4
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
- 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 +22 -14
- data/src/core/lib/iomgr/tcp_client_windows.cc +4 -4
- data/src/core/lib/iomgr/tcp_posix.cc +75 -67
- 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 +84 -33
- data/src/core/lib/iomgr/tcp_windows.cc +11 -10
- 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 +14 -12
- data/src/core/lib/promise/all_ok.h +3 -3
- data/src/core/lib/promise/arena_promise.h +66 -9
- 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 +11 -1
- data/src/core/lib/promise/detail/promise_like.h +133 -2
- data/src/core/lib/promise/detail/promise_variant.h +50 -0
- data/src/core/lib/promise/detail/seq_state.h +896 -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 +21 -1
- data/src/core/lib/promise/inter_activity_latch.h +147 -0
- data/src/core/lib/promise/inter_activity_mutex.h +547 -0
- 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 +67 -5
- data/src/core/lib/promise/map.h +48 -7
- data/src/core/lib/promise/match_promise.h +103 -0
- data/src/core/lib/promise/mpsc.cc +426 -0
- data/src/core/lib/promise/mpsc.h +490 -0
- data/src/core/lib/promise/observable.h +6 -6
- data/src/core/lib/promise/party.cc +87 -25
- data/src/core/lib/promise/party.h +84 -15
- data/src/core/lib/promise/pipe.h +31 -17
- data/src/core/lib/promise/poll.h +16 -5
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/promise/race.h +31 -0
- data/src/core/lib/promise/seq.h +5 -0
- data/src/core/lib/promise/sleep.cc +9 -4
- data/src/core/lib/promise/sleep.h +1 -1
- data/src/core/lib/promise/status_flag.h +15 -8
- data/src/core/lib/promise/try_join.h +5 -5
- data/src/core/lib/promise/try_seq.h +10 -5
- data/src/core/lib/promise/wait_set.cc +28 -0
- data/src/core/lib/promise/wait_set.h +86 -0
- 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 +34 -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 +145 -28
- data/src/core/lib/resource_quota/memory_quota.h +72 -27
- data/src/core/lib/resource_quota/periodic_update.cc +14 -0
- data/src/core/lib/resource_quota/periodic_update.h +9 -1
- data/src/core/lib/resource_quota/resource_quota.cc +23 -4
- data/src/core/lib/resource_quota/resource_quota.h +5 -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 +4 -5
- 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 +7 -2
- data/src/core/lib/slice/slice_buffer.cc +1 -1
- data/src/core/lib/slice/slice_buffer.h +6 -0
- 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 +65 -31
- data/src/core/lib/surface/call.h +19 -11
- 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 +145 -6
- data/src/core/lib/surface/channel_create.h +5 -1
- data/src/core/lib/surface/channel_init.cc +239 -65
- data/src/core/lib/surface/channel_init.h +90 -10
- data/src/core/lib/surface/completion_queue.cc +23 -24
- 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 +43 -40
- data/src/core/lib/surface/filter_stack_call.h +6 -7
- data/src/core/lib/surface/init.cc +12 -21
- 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 +13 -15
- data/src/core/lib/surface/legacy_channel.h +4 -2
- 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 +110 -0
- data/src/core/lib/transport/promise_endpoint.h +307 -0
- data/src/core/lib/transport/status_conversion.cc +7 -34
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/lib/transport/transport.cc +5 -5
- data/src/core/lib/transport/transport.h +65 -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 +13 -19
- data/src/core/load_balancing/backend_metric_parser.h +1 -1
- data/src/core/load_balancing/child_policy_handler.cc +10 -12
- data/src/core/load_balancing/child_policy_handler.h +2 -2
- data/src/core/load_balancing/delegating_helper.h +4 -5
- data/src/core/load_balancing/endpoint_list.cc +34 -7
- data/src/core/load_balancing/endpoint_list.h +2 -2
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +10 -8
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +6 -2
- data/src/core/load_balancing/grpclb/grpclb.cc +39 -50
- 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 +16 -18
- data/src/core/load_balancing/health_check_client_internal.h +5 -5
- data/src/core/load_balancing/lb_policy.h +12 -11
- 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 +14 -16
- data/src/core/load_balancing/oob_backend_metric_internal.h +4 -4
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +13 -20
- data/src/core/load_balancing/pick_first/pick_first.cc +80 -40
- 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 +29 -28
- data/src/core/load_balancing/round_robin/round_robin.cc +18 -19
- 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 +46 -45
- data/src/core/load_balancing/weighted_target/weighted_target.cc +17 -23
- data/src/core/load_balancing/xds/cds.cc +91 -38
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +29 -44
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +6 -6
- data/src/core/load_balancing/xds/xds_override_host.cc +69 -48
- 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/net/socket_mutator.cc +19 -0
- data/src/core/net/socket_mutator.h +25 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +8 -0
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- 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 +7 -2
- 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 +37 -36
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +24 -21
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -3
- 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 +6 -5
- data/src/core/resolver/xds/xds_config.cc +7 -4
- data/src/core/resolver/xds/xds_config.h +12 -7
- data/src/core/resolver/xds/xds_dependency_manager.cc +27 -12
- data/src/core/resolver/xds/xds_dependency_manager.h +5 -4
- data/src/core/resolver/xds/xds_resolver.cc +56 -32
- data/src/core/resolver/xds/xds_resolver_attributes.h +1 -1
- data/src/core/server/add_port.cc +87 -0
- data/src/core/server/server.cc +175 -105
- data/src/core/server/server.h +31 -13
- data/src/core/server/server_call_tracer_filter.cc +1 -67
- data/src/core/server/server_call_tracer_filter.h +68 -0
- data/src/core/server/server_config_selector.h +2 -2
- data/src/core/server/server_config_selector_filter.cc +6 -6
- 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 +81 -42
- data/src/core/service_config/service_config.h +2 -2
- data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
- data/src/core/service_config/service_config_channel_arg_filter.h +85 -0
- data/src/core/service_config/service_config_impl.cc +3 -3
- data/src/core/service_config/service_config_impl.h +5 -5
- data/src/core/service_config/service_config_parser.h +1 -1
- data/src/core/telemetry/call_tracer.cc +55 -59
- data/src/core/telemetry/call_tracer.h +211 -29
- data/src/core/telemetry/context_list_entry.cc +38 -0
- data/src/core/{ext/transport/chttp2/transport → telemetry}/context_list_entry.h +45 -15
- data/src/core/telemetry/default_tcp_tracer.cc +26 -0
- data/src/core/telemetry/default_tcp_tracer.h +44 -0
- 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 +44 -13
- data/src/core/telemetry/stats.h +2 -7
- data/src/core/telemetry/stats_data.cc +541 -492
- data/src/core/telemetry/stats_data.h +470 -298
- data/src/core/telemetry/tcp_tracer.cc +38 -0
- data/src/core/telemetry/tcp_tracer.h +14 -16
- data/src/core/transport/auth_context.cc +23 -4
- data/src/core/transport/auth_context.h +6 -2
- data/src/core/transport/auth_context_comparator_registry.h +69 -0
- data/src/core/transport/endpoint_transport.h +90 -0
- data/src/core/transport/endpoint_transport_client_channel_factory.cc +61 -0
- data/src/core/transport/endpoint_transport_client_channel_factory.h +57 -0
- 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 +115 -51
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +4 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +118 -54
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +8 -2
- 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 +28 -7
- data/src/core/tsi/fake_transport_security.cc +23 -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 +416 -125
- data/src/core/tsi/ssl_transport_security.h +26 -12
- data/src/core/tsi/ssl_transport_security_utils.cc +31 -10
- data/src/core/tsi/ssl_transport_security_utils.h +6 -2
- data/src/core/tsi/transport_security.h +3 -0
- data/src/core/tsi/transport_security_grpc.cc +16 -0
- data/src/core/tsi/transport_security_grpc.h +37 -3
- data/src/core/tsi/transport_security_interface.h +30 -25
- data/src/core/util/alloc.cc +1 -1
- data/src/core/util/backoff.cc +5 -16
- data/src/core/util/backoff.h +2 -2
- data/src/core/util/chunked_vector.h +4 -4
- data/src/core/util/crash.h +1 -1
- data/src/core/util/down_cast.h +1 -1
- data/src/core/util/dual_ref_counted.h +50 -2
- data/src/core/util/event_log.cc +2 -2
- data/src/core/util/event_log.h +3 -3
- data/src/core/util/function_signature.h +80 -0
- data/src/core/util/gcp_metadata_query.cc +10 -9
- 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 +17 -10
- data/src/core/util/http_client/httpcli.h +8 -5
- data/src/core/util/http_client/httpcli_security_connector.cc +9 -6
- 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 +9 -9
- 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 +202 -123
- data/src/core/util/latent_see.h +423 -204
- data/src/core/util/linux/cpu.cc +1 -1
- data/src/core/util/linux/env.cc +3 -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 +7 -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 +284 -0
- data/src/core/util/mpscq.h +1 -1
- data/src/core/util/notification.h +1 -1
- data/src/core/util/per_cpu.cc +2 -0
- data/src/core/util/per_cpu.h +7 -0
- 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 +32 -1
- data/src/core/util/ref_counted_string.h +1 -1
- data/src/core/util/shared_bit_gen.cc +21 -0
- data/src/core/util/shared_bit_gen.h +64 -0
- data/src/core/util/single_set_ptr.h +40 -4
- 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 +48 -1
- data/src/core/util/uri.cc +76 -17
- data/src/core/util/uri.h +13 -8
- data/src/core/util/useful.h +144 -2
- 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.cc +31 -0
- data/src/core/util/wait_for_single_owner.h +25 -1
- data/src/core/util/windows/directory_reader.cc +2 -1
- data/src/core/util/windows/stat.cc +2 -2
- data/src/core/util/windows/thd.cc +3 -5
- data/src/core/util/windows/time.cc +1 -1
- data/src/core/util/work_serializer.cc +4 -4
- 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 +35 -8
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +6 -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 +9 -7
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +13 -3
- data/src/core/xds/grpc/xds_certificate_provider.cc +9 -10
- data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +43 -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 +143 -63
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- 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 +10 -3
- data/src/core/xds/grpc/xds_http_filter_registry.cc +5 -6
- data/src/core/xds/grpc/xds_http_filter_registry.h +2 -2
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +25 -3
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +5 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +14 -21
- 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 +42 -66
- data/src/core/xds/grpc/xds_metadata_parser.h +0 -2
- data/src/core/xds/grpc/xds_route_config.cc +3 -3
- data/src/core/xds/grpc/xds_route_config_parser.cc +84 -129
- 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 +65 -15
- data/src/core/xds/grpc/xds_server_grpc.h +10 -2
- data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +29 -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_bootstrap.h +2 -0
- data/src/core/xds/xds_client/xds_client.cc +44 -23
- 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 +17 -13
- data/src/ruby/ext/grpc/rb_call.c +1 -9
- data/src/ruby/ext/grpc/rb_channel.c +70 -557
- data/src/ruby/ext/grpc/rb_channel.h +0 -3
- 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_completion_queue.c +26 -14
- data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
- data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
- data/src/ruby/ext/grpc/rb_grpc.c +9 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -3
- data/src/ruby/ext/grpc/rb_loader.c +0 -4
- data/src/ruby/ext/grpc/rb_server.c +31 -50
- 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/generic/client_stub.rb +4 -4
- 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/core_spec.rb +22 -0
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +2 -6
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_spec.rb +4 -5
- data/src/ruby/spec/spec_helper.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/algorithm.h +2 -2
- data/third_party/abseil-cpp/absl/algorithm/container.h +81 -67
- data/third_party/abseil-cpp/absl/base/attributes.h +142 -23
- data/third_party/abseil-cpp/absl/base/call_once.h +18 -16
- data/third_party/abseil-cpp/absl/base/config.h +23 -132
- data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
- data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +106 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +5 -1
- data/third_party/abseil-cpp/absl/base/internal/tracing.cc +39 -0
- data/third_party/abseil-cpp/absl/base/internal/tracing.h +81 -0
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -10
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +17 -0
- data/third_party/abseil-cpp/absl/base/macros.h +35 -4
- data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
- data/third_party/abseil-cpp/absl/base/nullability.h +124 -56
- data/third_party/abseil-cpp/absl/base/optimization.h +8 -12
- data/third_party/abseil-cpp/absl/base/options.h +7 -81
- data/third_party/abseil-cpp/absl/base/policy_checks.h +9 -7
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- data/third_party/abseil-cpp/absl/container/btree_map.h +891 -0
- data/third_party/abseil-cpp/absl/container/btree_set.h +826 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +9 -15
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +22 -3
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +23 -4
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +10 -6
- data/third_party/abseil-cpp/absl/container/internal/btree.h +3149 -0
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +867 -0
- data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +10 -2
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -10
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +6 -9
- data/third_party/abseil-cpp/absl/container/internal/layout.h +27 -43
- data/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1462 -263
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1170 -1547
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
- data/third_party/abseil-cpp/absl/container/node_hash_map.h +687 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
- data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +56 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +21 -7
- data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +12 -37
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -21
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +7 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -8
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/leak_check.cc +73 -0
- data/third_party/abseil-cpp/absl/debugging/leak_check.h +150 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +67 -18
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +1 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +9 -2
- data/third_party/abseil-cpp/absl/flags/flag.h +18 -15
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +14 -5
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +23 -11
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +4 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +3 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +13 -12
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
- data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +9 -4
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- data/third_party/abseil-cpp/absl/hash/hash.h +44 -2
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +14 -18
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +257 -127
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +27 -72
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
- data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
- data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +2 -0
- data/third_party/abseil-cpp/absl/log/check.h +2 -1
- data/third_party/abseil-cpp/absl/log/globals.h +4 -5
- data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +43 -38
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +124 -99
- data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +158 -64
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +140 -83
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -5
- data/third_party/abseil-cpp/absl/log/internal/proto.h +28 -18
- data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
- data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +115 -0
- data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +107 -0
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +8 -1
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
- data/third_party/abseil-cpp/absl/log/log.h +48 -35
- data/third_party/abseil-cpp/absl/log/log_sink_registry.h +5 -2
- data/third_party/abseil-cpp/absl/log/vlog_is_on.h +2 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +62 -181
- data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
- data/third_party/abseil-cpp/absl/numeric/int128.h +15 -3
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +6 -4
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +6 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +3 -1
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +3 -1
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +12 -12
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +10 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +4 -2
- data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +3 -2
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -7
- data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +5 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/platform.h +12 -12
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +57 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +0 -1
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +1 -4
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/random/random.h +88 -53
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +2 -3
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -2
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -1
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +2 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +5 -4
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +10 -7
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
- data/third_party/abseil-cpp/absl/status/status.cc +4 -8
- data/third_party/abseil-cpp/absl/status/status.h +8 -8
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
- data/third_party/abseil-cpp/absl/strings/ascii.cc +44 -29
- data/third_party/abseil-cpp/absl/strings/ascii.h +62 -22
- data/third_party/abseil-cpp/absl/strings/charconv.cc +25 -29
- data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
- data/third_party/abseil-cpp/absl/strings/charset.h +3 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
- data/third_party/abseil-cpp/absl/strings/cord.h +99 -102
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- data/third_party/abseil-cpp/absl/strings/escaping.cc +186 -197
- data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +53 -22
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -0
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- data/third_party/abseil-cpp/absl/strings/match.h +21 -11
- data/third_party/abseil-cpp/absl/strings/numbers.cc +55 -33
- data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
- data/third_party/abseil-cpp/absl/strings/str_cat.h +41 -30
- data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
- data/third_party/abseil-cpp/absl/strings/str_split.h +18 -1
- data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +46 -50
- data/third_party/abseil-cpp/absl/strings/strip.h +11 -8
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
- data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +16 -10
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +6 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +5 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +39 -13
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +10 -2
- data/third_party/abseil-cpp/absl/synchronization/notification.h +12 -2
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +18 -58
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +3 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +2 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +2 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +3 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +2 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +92 -112
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -4
- data/third_party/abseil-cpp/absl/time/time.h +89 -23
- data/third_party/abseil-cpp/absl/types/internal/span.h +3 -2
- data/third_party/abseil-cpp/absl/types/optional.h +7 -745
- data/third_party/abseil-cpp/absl/types/span.h +98 -54
- data/third_party/abseil-cpp/absl/types/variant.h +5 -784
- data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
- data/third_party/boringssl-with-bazel/src/crypto/aes/aes.cc +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.cc +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.cc +15 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +19 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.cc +79 -48
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.cc +11 -19
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.cc +3 -7
- data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +0 -35
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +3 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.cc +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/bn/convert.cc +31 -47
- data/third_party/boringssl-with-bazel/src/crypto/bn/div.cc +100 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn/exponentiation.cc +166 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn/sqrt.cc +93 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.cc +14 -8
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.cc +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher/derive_key.cc +13 -15
- data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aeseax.cc +289 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesgcmsiv.cc +179 -102
- data/third_party/boringssl-with-bazel/src/crypto/cipher/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/cms/cms.cc +172 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +28 -5
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +11 -9
- data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.cc +0 -6
- data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/des/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh_asn1.cc +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/dh/params.cc +27 -61
- data/third_party/boringssl-with-bazel/src/crypto/digest/digest_extra.cc +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.cc +112 -122
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.cc +23 -35
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec/ec_asn1.cc +47 -63
- data/third_party/boringssl-with-bazel/src/crypto/ec/hash_to_curve.cc +60 -68
- data/third_party/boringssl-with-bazel/src/crypto/ec/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa/ecdsa_asn1.cc +11 -17
- data/third_party/boringssl-with-bazel/src/crypto/err/err.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.cc +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.cc +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.cc +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.cc +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.cc +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.cc +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.cc +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.cc +23 -42
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.cc.inc +29 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm.cc.inc +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +16 -45
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.cc.inc +15 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.cc +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +101 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.cc.inc +96 -187
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.cc.inc +24 -512
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.cc.inc +58 -80
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.cc.inc +29 -45
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +27 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.cc.inc +7 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.cc.inc +27 -48
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.cc.inc +34 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.cc.inc +102 -154
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.cc.inc +3 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.cc.inc +1 -78
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.cc.inc +10 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +15 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.cc.inc +40 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.cc.inc +57 -76
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.cc.inc +4 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.cc.inc +37 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.cc.inc +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.cc.inc +28 -39
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.cc.inc +6 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/mldsa.cc.inc +335 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/mlkem.cc.inc +265 -33
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.cc.inc +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.cc.inc +19 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.cc.inc +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.cc.inc +121 -138
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.cc.inc +96 -83
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +8 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +235 -60
- data/third_party/boringssl-with-bazel/src/crypto/fuzzer_mode.cc +30 -0
- data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -30
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/md5/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/mem.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.cc +2 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.cc +8 -13
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +22 -8
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.cc +19 -17
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.cc +134 -136
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +14 -8
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.cc +25 -21
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.cc +36 -52
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.cc +97 -79
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/rand/deterministic.cc +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand/fork_detect.cc +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand/getentropy.cc +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand/{sysrand_internal.h → internal.h} +22 -4
- data/third_party/boringssl-with-bazel/src/crypto/rand/ios.cc +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand/trusty.cc +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand/urandom.cc +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand/windows.cc +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/rsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_crypt.cc +14 -22
- data/third_party/boringssl-with-bazel/src/crypto/spake2plus/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.cc +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.cc +3 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.cc +8 -12
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +15 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.cc +16 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.cc +18 -21
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.cc +10 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.cc +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.cc +10 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.cc +64 -85
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.cc +16 -32
- data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.cc +576 -567
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +16 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -54
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +8 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cms.h +146 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +23 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +4 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +10 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +19 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +291 -40
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/target.h +0 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +32 -26
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +49 -49
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +253 -50
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +12 -12
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +7 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +24 -32
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +93 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +18 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +83 -7
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +173 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +5 -18
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +28 -15
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +31 -7
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +13 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +7 -11
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +13 -11
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +2 -5
- data/third_party/cares/cares/include/ares.h +925 -460
- data/third_party/cares/cares/include/ares_dns.h +86 -71
- data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
- data/third_party/cares/cares/include/ares_nameser.h +215 -189
- data/third_party/cares/cares/include/ares_version.h +37 -14
- data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
- data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
- data/third_party/cares/cares/src/lib/ares_android.c +216 -164
- data/third_party/cares/cares/src/lib/ares_android.h +25 -14
- data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
- data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
- data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
- data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
- data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
- data/third_party/cares/cares/src/lib/ares_data.c +93 -181
- data/third_party/cares/cares/src/lib/ares_data.h +50 -39
- data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
- data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
- data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
- data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
- data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
- data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
- data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
- data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
- data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
- data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
- data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
- data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
- data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
- data/third_party/cares/cares/src/lib/ares_options.c +418 -332
- data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
- data/third_party/cares/cares/src/lib/ares_private.h +558 -356
- data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
- data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
- data/third_party/cares/cares/src/lib/ares_query.c +126 -121
- data/third_party/cares/cares/src/lib/ares_search.c +564 -262
- data/third_party/cares/cares/src/lib/ares_send.c +264 -93
- data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
- data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
- data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
- data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
- data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
- data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
- data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
- data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
- data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
- data/third_party/cares/cares/src/lib/ares_version.c +29 -4
- data/third_party/cares/cares/src/lib/config-dos.h +88 -89
- data/third_party/cares/cares/src/lib/config-win32.h +122 -77
- data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
- data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
- data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
- data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
- data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
- data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
- data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
- data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
- data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
- data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
- data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
- data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
- data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
- data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
- data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
- data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
- data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
- data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
- data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
- data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
- data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
- data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
- data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
- data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
- data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
- data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
- data/third_party/cares/cares/src/lib/windows_port.c +16 -9
- data/third_party/upb/upb/hash/common.c +310 -189
- data/third_party/upb/upb/hash/common.h +44 -43
- data/third_party/upb/upb/hash/int_table.h +29 -5
- data/third_party/upb/upb/hash/str_table.h +6 -0
- data/third_party/upb/upb/mem/arena.c +180 -57
- data/third_party/upb/upb/mem/arena.h +10 -0
- data/third_party/upb/upb/mem/internal/arena.h +62 -24
- data/third_party/upb/upb/message/accessors.c +1 -5
- data/third_party/upb/upb/message/array.c +7 -6
- data/third_party/upb/upb/message/array.h +4 -4
- data/third_party/upb/upb/message/internal/accessors.h +3 -3
- data/third_party/upb/upb/message/internal/extension.c +0 -12
- data/third_party/upb/upb/message/internal/extension.h +0 -4
- data/third_party/upb/upb/message/internal/iterator.h +3 -3
- data/third_party/upb/upb/message/internal/map.h +75 -20
- data/third_party/upb/upb/message/internal/map_sorter.h +10 -2
- data/third_party/upb/upb/message/internal/message.h +53 -5
- data/third_party/upb/upb/message/map.c +68 -20
- data/third_party/upb/upb/message/map.h +8 -1
- data/third_party/upb/upb/message/map_gencode_util.h +3 -45
- data/third_party/upb/upb/message/map_sorter.c +32 -8
- data/third_party/upb/upb/message/merge.h +3 -3
- data/third_party/upb/upb/message/message.c +120 -14
- data/third_party/upb/upb/message/message.h +17 -8
- data/third_party/upb/upb/mini_descriptor/build_enum.c +15 -5
- data/third_party/upb/upb/mini_descriptor/decode.c +18 -2
- data/third_party/upb/upb/mini_descriptor/link.c +4 -0
- data/third_party/upb/upb/mini_table/extension.h +8 -1
- data/third_party/upb/upb/mini_table/extension_registry.c +1 -1
- data/third_party/upb/upb/mini_table/internal/enum.h +1 -1
- data/third_party/upb/upb/mini_table/internal/extension.h +24 -1
- data/third_party/upb/upb/mini_table/internal/field.h +4 -4
- data/third_party/upb/upb/mini_table/internal/message.h +1 -1
- data/third_party/upb/upb/port/def.inc +32 -16
- data/third_party/upb/upb/port/undef.inc +1 -0
- data/third_party/upb/upb/reflection/def_pool.h +2 -2
- data/third_party/upb/upb/reflection/descriptor_bootstrap.h +3 -3
- data/third_party/upb/upb/reflection/enum_def.c +4 -4
- data/third_party/upb/upb/reflection/enum_reserved_range.c +1 -1
- data/third_party/upb/upb/reflection/enum_value_def.c +9 -8
- data/third_party/upb/upb/reflection/extension_range.c +1 -2
- data/third_party/upb/upb/reflection/field_def.c +3 -5
- data/third_party/upb/upb/reflection/field_def.h +1 -1
- data/third_party/upb/upb/reflection/file_def.c +4 -5
- data/third_party/upb/upb/reflection/internal/def_builder.h +35 -10
- data/third_party/upb/upb/reflection/internal/enum_value_def.h +1 -1
- data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
- data/third_party/upb/upb/reflection/message_def.c +4 -7
- data/third_party/upb/upb/reflection/message_reserved_range.c +1 -1
- data/third_party/upb/upb/reflection/method_def.c +1 -1
- data/third_party/upb/upb/reflection/oneof_def.c +3 -3
- data/third_party/upb/upb/reflection/service_def.c +2 -5
- data/third_party/upb/upb/text/encode.c +16 -0
- data/third_party/upb/upb/text/internal/encode.h +2 -1
- data/third_party/upb/upb/wire/decode.c +104 -72
- data/third_party/upb/upb/wire/encode.c +37 -13
- data/third_party/upb/upb/wire/internal/decode_fast.c +2 -2
- data/third_party/upb/upb/wire/internal/decode_fast.h +4 -0
- metadata +298 -79
- data/src/core/lib/event_engine/forkable.cc +0 -105
- data/src/core/lib/event_engine/forkable.h +0 -67
- data/src/core/lib/iomgr/executor.cc +0 -441
- data/src/core/lib/iomgr/executor.h +0 -119
- data/src/core/lib/iomgr/python_util.h +0 -46
- data/src/core/util/ring_buffer.h +0 -122
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
- data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +0 -108
- data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
- data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/polyval.cc.inc +0 -89
- data/third_party/cares/cares/include/ares_rules.h +0 -125
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
- data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
- data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
- data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
- data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
- data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
- data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
- data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
- data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
- data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
- data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
- data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
- data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
- data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
- data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
- data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
- data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
- data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
- data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
- data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
- data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
- data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
- data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
- data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
- data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
- data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
- data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
- data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
- data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
- data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
- data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
- data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
- data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
- data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
- data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
- data/third_party/cares/cares/src/lib/setup_once.h +0 -554
- data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
|
@@ -37,16 +37,6 @@
|
|
|
37
37
|
#include <variant>
|
|
38
38
|
#include <vector>
|
|
39
39
|
|
|
40
|
-
#include "absl/cleanup/cleanup.h"
|
|
41
|
-
#include "absl/log/check.h"
|
|
42
|
-
#include "absl/log/log.h"
|
|
43
|
-
#include "absl/status/status.h"
|
|
44
|
-
#include "absl/status/statusor.h"
|
|
45
|
-
#include "absl/strings/cord.h"
|
|
46
|
-
#include "absl/strings/numbers.h"
|
|
47
|
-
#include "absl/strings/str_cat.h"
|
|
48
|
-
#include "absl/strings/str_join.h"
|
|
49
|
-
#include "absl/strings/string_view.h"
|
|
50
40
|
#include "src/core/call/metadata_batch.h"
|
|
51
41
|
#include "src/core/call/status_util.h"
|
|
52
42
|
#include "src/core/channelz/channel_trace.h"
|
|
@@ -96,6 +86,7 @@
|
|
|
96
86
|
#include "src/core/service_config/service_config_impl.h"
|
|
97
87
|
#include "src/core/util/crash.h"
|
|
98
88
|
#include "src/core/util/debug_location.h"
|
|
89
|
+
#include "src/core/util/grpc_check.h"
|
|
99
90
|
#include "src/core/util/json/json.h"
|
|
100
91
|
#include "src/core/util/manual_constructor.h"
|
|
101
92
|
#include "src/core/util/status_helper.h"
|
|
@@ -103,6 +94,15 @@
|
|
|
103
94
|
#include "src/core/util/unique_type_name.h"
|
|
104
95
|
#include "src/core/util/useful.h"
|
|
105
96
|
#include "src/core/util/work_serializer.h"
|
|
97
|
+
#include "absl/cleanup/cleanup.h"
|
|
98
|
+
#include "absl/log/log.h"
|
|
99
|
+
#include "absl/status/status.h"
|
|
100
|
+
#include "absl/status/statusor.h"
|
|
101
|
+
#include "absl/strings/cord.h"
|
|
102
|
+
#include "absl/strings/numbers.h"
|
|
103
|
+
#include "absl/strings/str_cat.h"
|
|
104
|
+
#include "absl/strings/str_join.h"
|
|
105
|
+
#include "absl/strings/string_view.h"
|
|
106
106
|
|
|
107
107
|
//
|
|
108
108
|
// Client channel filter
|
|
@@ -118,6 +118,15 @@ using internal::ClientChannelMethodParsedConfig;
|
|
|
118
118
|
|
|
119
119
|
class ClientChannelFilter::CallData {
|
|
120
120
|
public:
|
|
121
|
+
static grpc_error_handle Init(grpc_call_element* elem,
|
|
122
|
+
const grpc_call_element_args* args);
|
|
123
|
+
static void Destroy(grpc_call_element* elem,
|
|
124
|
+
const grpc_call_final_info* final_info,
|
|
125
|
+
grpc_closure* then_schedule_closure);
|
|
126
|
+
static void StartTransportStreamOpBatch(
|
|
127
|
+
grpc_call_element* elem, grpc_transport_stream_op_batch* batch);
|
|
128
|
+
static void SetPollent(grpc_call_element* elem, grpc_polling_entity* pollent);
|
|
129
|
+
|
|
121
130
|
// Removes the call from the channel's list of calls queued
|
|
122
131
|
// for name resolution.
|
|
123
132
|
void RemoveCallFromResolverQueuedCallsLocked()
|
|
@@ -125,16 +134,21 @@ class ClientChannelFilter::CallData {
|
|
|
125
134
|
|
|
126
135
|
// Called by the channel for each queued call when a new resolution
|
|
127
136
|
// result becomes available.
|
|
128
|
-
|
|
129
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::resolution_mu_)
|
|
137
|
+
void RetryCheckResolutionLocked()
|
|
138
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::resolution_mu_);
|
|
139
|
+
|
|
140
|
+
private:
|
|
141
|
+
class ResolverQueuedCallCanceller;
|
|
130
142
|
|
|
131
|
-
|
|
132
|
-
|
|
143
|
+
CallData(grpc_call_element* elem, const grpc_call_element_args& args);
|
|
144
|
+
|
|
145
|
+
ClientChannelFilter* chand() const {
|
|
146
|
+
return static_cast<ClientChannelFilter*>(elem_->channel_data);
|
|
133
147
|
}
|
|
134
148
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
149
|
+
grpc_metadata_batch* send_initial_metadata() {
|
|
150
|
+
return buffered_call_.send_initial_metadata();
|
|
151
|
+
}
|
|
138
152
|
|
|
139
153
|
// Checks whether a resolver result is available. The following
|
|
140
154
|
// outcomes are possible:
|
|
@@ -148,13 +162,6 @@ class ClientChannelFilter::CallData {
|
|
|
148
162
|
// stored in the call context and an OK status will be returned.
|
|
149
163
|
std::optional<absl::Status> CheckResolution(bool was_queued);
|
|
150
164
|
|
|
151
|
-
private:
|
|
152
|
-
// Accessors for data stored in the subclass.
|
|
153
|
-
virtual ClientChannelFilter* chand() const = 0;
|
|
154
|
-
virtual Arena* arena() const = 0;
|
|
155
|
-
virtual grpc_polling_entity* pollent() = 0;
|
|
156
|
-
virtual grpc_metadata_batch* send_initial_metadata() = 0;
|
|
157
|
-
|
|
158
165
|
// Helper function for CheckResolution(). Returns true if the call
|
|
159
166
|
// can continue (i.e., there is a valid resolution result, or there is
|
|
160
167
|
// an invalid resolution result but the call is not wait_for_ready).
|
|
@@ -166,10 +173,6 @@ class ClientChannelFilter::CallData {
|
|
|
166
173
|
void AddCallToResolverQueuedCallsLocked()
|
|
167
174
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::resolution_mu_);
|
|
168
175
|
|
|
169
|
-
// Called when adding the call to the resolver queue.
|
|
170
|
-
virtual void OnAddToQueueLocked()
|
|
171
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::resolution_mu_) {}
|
|
172
|
-
|
|
173
176
|
// Applies service config to the call. Must be invoked once we know
|
|
174
177
|
// that the resolver has returned results to the channel.
|
|
175
178
|
// If an error is returned, the error indicates the status with which
|
|
@@ -179,90 +182,19 @@ class ClientChannelFilter::CallData {
|
|
|
179
182
|
|
|
180
183
|
// Called to reset the deadline based on the service config obtained
|
|
181
184
|
// from the resolver.
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
: public ClientChannelFilter::CallData {
|
|
189
|
-
public:
|
|
190
|
-
static grpc_error_handle Init(grpc_call_element* elem,
|
|
191
|
-
const grpc_call_element_args* args);
|
|
192
|
-
static void Destroy(grpc_call_element* elem,
|
|
193
|
-
const grpc_call_final_info* final_info,
|
|
194
|
-
grpc_closure* then_schedule_closure);
|
|
195
|
-
static void StartTransportStreamOpBatch(
|
|
196
|
-
grpc_call_element* elem, grpc_transport_stream_op_batch* batch);
|
|
197
|
-
static void SetPollent(grpc_call_element* elem, grpc_polling_entity* pollent);
|
|
198
|
-
|
|
199
|
-
private:
|
|
200
|
-
class ResolverQueuedCallCanceller;
|
|
201
|
-
|
|
202
|
-
FilterBasedCallData(grpc_call_element* elem,
|
|
203
|
-
const grpc_call_element_args& args);
|
|
204
|
-
~FilterBasedCallData() override;
|
|
205
|
-
|
|
206
|
-
grpc_call_element* elem() const { return elem_; }
|
|
207
|
-
grpc_call_stack* owning_call() const { return owning_call_; }
|
|
208
|
-
CallCombiner* call_combiner() const { return call_combiner_; }
|
|
209
|
-
|
|
210
|
-
ClientChannelFilter* chand() const override {
|
|
211
|
-
return static_cast<ClientChannelFilter*>(elem()->channel_data);
|
|
212
|
-
}
|
|
213
|
-
Arena* arena() const override { return arena_; }
|
|
214
|
-
grpc_polling_entity* pollent() override { return pollent_; }
|
|
215
|
-
grpc_metadata_batch* send_initial_metadata() override {
|
|
216
|
-
return pending_batches_[0]
|
|
217
|
-
->payload->send_initial_metadata.send_initial_metadata;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
// Returns the index into pending_batches_ to be used for batch.
|
|
221
|
-
static size_t GetBatchIndex(grpc_transport_stream_op_batch* batch);
|
|
222
|
-
void PendingBatchesAdd(grpc_transport_stream_op_batch* batch);
|
|
223
|
-
static void FailPendingBatchInCallCombiner(void* arg,
|
|
224
|
-
grpc_error_handle error);
|
|
225
|
-
// A predicate type and some useful implementations for PendingBatchesFail().
|
|
226
|
-
typedef bool (*YieldCallCombinerPredicate)(
|
|
227
|
-
const CallCombinerClosureList& closures);
|
|
228
|
-
static bool YieldCallCombiner(const CallCombinerClosureList& /*closures*/) {
|
|
229
|
-
return true;
|
|
230
|
-
}
|
|
231
|
-
static bool NoYieldCallCombiner(const CallCombinerClosureList& /*closures*/) {
|
|
232
|
-
return false;
|
|
185
|
+
void ResetDeadline(Duration timeout) {
|
|
186
|
+
const Timestamp per_method_deadline =
|
|
187
|
+
Timestamp::FromCycleCounterRoundUp(call_start_time_) + timeout;
|
|
188
|
+
arena_->GetContext<Call>()
|
|
189
|
+
->UpdateDeadline(per_method_deadline)
|
|
190
|
+
.IgnoreError();
|
|
233
191
|
}
|
|
234
|
-
static bool YieldCallCombinerIfPendingBatchesFound(
|
|
235
|
-
const CallCombinerClosureList& closures) {
|
|
236
|
-
return closures.size() > 0;
|
|
237
|
-
}
|
|
238
|
-
// Fails all pending batches.
|
|
239
|
-
// If yield_call_combiner_predicate returns true, assumes responsibility for
|
|
240
|
-
// yielding the call combiner.
|
|
241
|
-
void PendingBatchesFail(
|
|
242
|
-
grpc_error_handle error,
|
|
243
|
-
YieldCallCombinerPredicate yield_call_combiner_predicate);
|
|
244
|
-
static void ResumePendingBatchInCallCombiner(void* arg,
|
|
245
|
-
grpc_error_handle ignored);
|
|
246
|
-
// Resumes all pending batches on dynamic_call_.
|
|
247
|
-
void PendingBatchesResume();
|
|
248
192
|
|
|
249
193
|
// Called to check for a resolution result, both when the call is
|
|
250
194
|
// initially started and when it is queued and the channel gets a new
|
|
251
195
|
// resolution result.
|
|
252
196
|
void TryCheckResolution(bool was_queued);
|
|
253
197
|
|
|
254
|
-
void OnAddToQueueLocked() override
|
|
255
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::resolution_mu_);
|
|
256
|
-
|
|
257
|
-
void RetryCheckResolutionLocked() override
|
|
258
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::resolution_mu_);
|
|
259
|
-
|
|
260
|
-
void ResetDeadline(Duration timeout) override {
|
|
261
|
-
const Timestamp per_method_deadline =
|
|
262
|
-
Timestamp::FromCycleCounterRoundUp(call_start_time_) + timeout;
|
|
263
|
-
arena_->GetContext<Call>()->UpdateDeadline(per_method_deadline);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
198
|
void CreateDynamicCall();
|
|
267
199
|
|
|
268
200
|
static void RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
|
@@ -285,14 +217,10 @@ class ClientChannelFilter::FilterBasedCallData final
|
|
|
285
217
|
grpc_closure* original_recv_trailing_metadata_ready_ = nullptr;
|
|
286
218
|
grpc_closure recv_trailing_metadata_ready_;
|
|
287
219
|
|
|
220
|
+
RefCountedPtr<DynamicFilters> dynamic_filters_;
|
|
288
221
|
RefCountedPtr<DynamicFilters::Call> dynamic_call_;
|
|
289
222
|
|
|
290
|
-
|
|
291
|
-
// They are removed when we are done handling the batch (i.e., when
|
|
292
|
-
// either we have invoked all of the batch's callbacks or we have
|
|
293
|
-
// passed the batch down to the LB call and are not intercepting any of
|
|
294
|
-
// its callbacks).
|
|
295
|
-
grpc_transport_stream_op_batch* pending_batches_[MAX_PENDING_BATCHES] = {};
|
|
223
|
+
BufferedCall buffered_call_;
|
|
296
224
|
|
|
297
225
|
// Set when we get a cancel_stream op.
|
|
298
226
|
grpc_error_handle cancel_error_;
|
|
@@ -303,12 +231,12 @@ class ClientChannelFilter::FilterBasedCallData final
|
|
|
303
231
|
//
|
|
304
232
|
|
|
305
233
|
const grpc_channel_filter ClientChannelFilter::kFilter = {
|
|
306
|
-
ClientChannelFilter::
|
|
234
|
+
ClientChannelFilter::CallData::StartTransportStreamOpBatch,
|
|
307
235
|
ClientChannelFilter::StartTransportOp,
|
|
308
|
-
sizeof(ClientChannelFilter::
|
|
309
|
-
ClientChannelFilter::
|
|
310
|
-
ClientChannelFilter::
|
|
311
|
-
ClientChannelFilter::
|
|
236
|
+
sizeof(ClientChannelFilter::CallData),
|
|
237
|
+
ClientChannelFilter::CallData::Init,
|
|
238
|
+
ClientChannelFilter::CallData::SetPollent,
|
|
239
|
+
ClientChannelFilter::CallData::Destroy,
|
|
312
240
|
sizeof(ClientChannelFilter),
|
|
313
241
|
ClientChannelFilter::Init,
|
|
314
242
|
grpc_channel_stack_no_post_init,
|
|
@@ -336,8 +264,8 @@ class DynamicTerminationFilter final {
|
|
|
336
264
|
|
|
337
265
|
static grpc_error_handle Init(grpc_channel_element* elem,
|
|
338
266
|
grpc_channel_element_args* args) {
|
|
339
|
-
|
|
340
|
-
|
|
267
|
+
GRPC_CHECK(args->is_last);
|
|
268
|
+
GRPC_CHECK(elem->filter == &kFilterVtable);
|
|
341
269
|
new (elem->channel_data) DynamicTerminationFilter(args->channel_args);
|
|
342
270
|
return absl::OkStatus();
|
|
343
271
|
}
|
|
@@ -421,7 +349,7 @@ class DynamicTerminationFilter::CallData final {
|
|
|
421
349
|
grpc_call_stack* owning_call_;
|
|
422
350
|
CallCombiner* call_combiner_;
|
|
423
351
|
|
|
424
|
-
OrphanablePtr<ClientChannelFilter::
|
|
352
|
+
OrphanablePtr<ClientChannelFilter::LoadBalancedCall> lb_call_;
|
|
425
353
|
};
|
|
426
354
|
|
|
427
355
|
const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
|
|
@@ -483,32 +411,31 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
|
483
411
|
: public SubchannelInterface {
|
|
484
412
|
public:
|
|
485
413
|
SubchannelWrapper(ClientChannelFilter* chand,
|
|
486
|
-
RefCountedPtr<Subchannel> subchannel
|
|
414
|
+
RefCountedPtr<Subchannel> subchannel,
|
|
415
|
+
uint32_t max_connections_per_subchannel)
|
|
487
416
|
: SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(client_channel)
|
|
488
417
|
? "SubchannelWrapper"
|
|
489
418
|
: nullptr),
|
|
490
419
|
chand_(chand),
|
|
491
|
-
subchannel_(std::move(subchannel))
|
|
420
|
+
subchannel_(std::move(subchannel)),
|
|
421
|
+
max_connections_per_subchannel_(max_connections_per_subchannel) {
|
|
492
422
|
GRPC_TRACE_LOG(client_channel, INFO)
|
|
493
423
|
<< "chand=" << chand << ": creating subchannel wrapper " << this
|
|
494
|
-
<< " for subchannel " << subchannel_.get()
|
|
424
|
+
<< " for subchannel " << subchannel_.get()
|
|
425
|
+
<< ", max_connections_per_subchannel="
|
|
426
|
+
<< max_connections_per_subchannel;
|
|
495
427
|
GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "SubchannelWrapper");
|
|
496
428
|
#ifndef NDEBUG
|
|
497
|
-
|
|
429
|
+
GRPC_DCHECK(chand_->work_serializer_->RunningInWorkSerializer());
|
|
498
430
|
#endif
|
|
499
|
-
|
|
431
|
+
auto& subchannel_wrappers = chand_->subchannel_map_[subchannel_.get()];
|
|
432
|
+
if (subchannel_wrappers.empty() && chand_->channelz_node_ != nullptr) {
|
|
500
433
|
auto* subchannel_node = subchannel_->channelz_node();
|
|
501
434
|
if (subchannel_node != nullptr) {
|
|
502
|
-
|
|
503
|
-
if (it == chand_->subchannel_refcount_map_.end()) {
|
|
504
|
-
chand_->channelz_node_->AddChildSubchannel(subchannel_node->uuid());
|
|
505
|
-
it = chand_->subchannel_refcount_map_.emplace(subchannel_.get(), 0)
|
|
506
|
-
.first;
|
|
507
|
-
}
|
|
508
|
-
++it->second;
|
|
435
|
+
subchannel_node->AddParent(chand_->channelz_node_);
|
|
509
436
|
}
|
|
510
437
|
}
|
|
511
|
-
|
|
438
|
+
subchannel_wrappers.insert(this);
|
|
512
439
|
}
|
|
513
440
|
|
|
514
441
|
~SubchannelWrapper() override {
|
|
@@ -523,34 +450,47 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
|
523
450
|
// WorkSerializer.
|
|
524
451
|
// Ref held by callback.
|
|
525
452
|
WeakRef(DEBUG_LOCATION, "subchannel map cleanup").release();
|
|
526
|
-
chand_->work_serializer_->Run(
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
453
|
+
chand_->work_serializer_->Run(
|
|
454
|
+
[this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
|
455
|
+
auto it = chand_->subchannel_map_.find(subchannel_.get());
|
|
456
|
+
GRPC_CHECK(it != chand_->subchannel_map_.end());
|
|
457
|
+
auto& subchannel_wrappers = it->second;
|
|
458
|
+
subchannel_wrappers.erase(this);
|
|
459
|
+
if (subchannel_wrappers.empty()) {
|
|
460
|
+
if (chand_->channelz_node_ != nullptr) {
|
|
461
|
+
auto* subchannel_node = subchannel_->channelz_node();
|
|
462
|
+
if (subchannel_node != nullptr) {
|
|
463
|
+
subchannel_node->RemoveParent(chand_->channelz_node_);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
chand_->subchannel_map_.erase(it);
|
|
539
467
|
}
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
468
|
+
if (IsSubchannelWrapperCleanupOnOrphanEnabled()) {
|
|
469
|
+
// We need to make sure that the internal subchannel gets unreffed
|
|
470
|
+
// inside of the WorkSerializer, so that updates to the local
|
|
471
|
+
// subchannel pool are properly synchronized. To that end, we
|
|
472
|
+
// drop our ref to the internal subchannel here. We also cancel
|
|
473
|
+
// any watchers that were not properly cancelled, in case any of
|
|
474
|
+
// them are holding a ref to the internal subchannel.
|
|
475
|
+
for (const auto& [_, watcher] : watcher_map_) {
|
|
476
|
+
subchannel_->CancelConnectivityStateWatch(watcher);
|
|
477
|
+
}
|
|
478
|
+
watcher_map_.clear();
|
|
479
|
+
data_watchers_.clear();
|
|
480
|
+
subchannel_.reset();
|
|
481
|
+
}
|
|
482
|
+
WeakUnref(DEBUG_LOCATION, "subchannel map cleanup");
|
|
483
|
+
});
|
|
544
484
|
}
|
|
545
485
|
|
|
546
486
|
void WatchConnectivityState(
|
|
547
487
|
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
|
|
548
488
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
|
549
489
|
auto& watcher_wrapper = watcher_map_[watcher.get()];
|
|
550
|
-
|
|
490
|
+
GRPC_CHECK_EQ(watcher_wrapper, nullptr);
|
|
551
491
|
watcher_wrapper = new WatcherWrapper(
|
|
552
492
|
std::move(watcher),
|
|
553
|
-
|
|
493
|
+
WeakRefAsSubclass<SubchannelWrapper>(DEBUG_LOCATION, "WatcherWrapper"));
|
|
554
494
|
subchannel_->WatchConnectivityState(
|
|
555
495
|
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
|
|
556
496
|
watcher_wrapper));
|
|
@@ -559,7 +499,7 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
|
559
499
|
void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher)
|
|
560
500
|
override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
|
561
501
|
auto it = watcher_map_.find(watcher);
|
|
562
|
-
|
|
502
|
+
GRPC_CHECK(it != watcher_map_.end());
|
|
563
503
|
subchannel_->CancelConnectivityStateWatch(it->second);
|
|
564
504
|
watcher_map_.erase(it);
|
|
565
505
|
}
|
|
@@ -576,7 +516,7 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
|
576
516
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
|
577
517
|
static_cast<InternalSubchannelDataWatcherInterface*>(watcher.get())
|
|
578
518
|
->SetSubchannel(subchannel_.get());
|
|
579
|
-
|
|
519
|
+
GRPC_CHECK(data_watchers_.insert(std::move(watcher)).second);
|
|
580
520
|
}
|
|
581
521
|
|
|
582
522
|
void CancelDataWatcher(DataWatcherInterface* watcher) override
|
|
@@ -585,10 +525,6 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
|
585
525
|
if (it != data_watchers_.end()) data_watchers_.erase(it);
|
|
586
526
|
}
|
|
587
527
|
|
|
588
|
-
void ThrottleKeepaliveTime(int new_keepalive_time) {
|
|
589
|
-
subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
|
|
590
|
-
}
|
|
591
|
-
|
|
592
528
|
std::string address() const override { return subchannel_->address(); }
|
|
593
529
|
|
|
594
530
|
private:
|
|
@@ -610,30 +546,44 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
|
610
546
|
WatcherWrapper(
|
|
611
547
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
|
612
548
|
watcher,
|
|
613
|
-
|
|
549
|
+
WeakRefCountedPtr<SubchannelWrapper> parent)
|
|
614
550
|
: watcher_(std::move(watcher)), parent_(std::move(parent)) {}
|
|
615
551
|
|
|
616
552
|
~WatcherWrapper() override {
|
|
617
553
|
parent_.reset(DEBUG_LOCATION, "WatcherWrapper");
|
|
618
554
|
}
|
|
619
555
|
|
|
620
|
-
void OnConnectivityStateChange(
|
|
621
|
-
|
|
622
|
-
grpc_connectivity_state state, const absl::Status& status) override {
|
|
556
|
+
void OnConnectivityStateChange(grpc_connectivity_state state,
|
|
557
|
+
const absl::Status& status) override {
|
|
623
558
|
GRPC_TRACE_LOG(client_channel, INFO)
|
|
624
559
|
<< "chand=" << parent_->chand_
|
|
625
560
|
<< ": connectivity change for subchannel wrapper " << parent_.get()
|
|
626
|
-
<< " subchannel " << parent_->subchannel_.get()
|
|
627
561
|
<< "hopping into work_serializer";
|
|
628
|
-
self
|
|
562
|
+
auto self = RefAsSubclass<WatcherWrapper>();
|
|
563
|
+
parent_->chand_->work_serializer_->Run(
|
|
564
|
+
[self, state, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
|
565
|
+
*self->parent_->chand_->work_serializer_) {
|
|
566
|
+
self->ApplyUpdateInControlPlaneWorkSerializer(state, status);
|
|
567
|
+
});
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
void OnKeepaliveUpdate(Duration new_keepalive_time) override {
|
|
571
|
+
GRPC_TRACE_LOG(client_channel, INFO)
|
|
572
|
+
<< "chand=" << parent_->chand_
|
|
573
|
+
<< ": keepalive update for subchannel wrapper " << parent_.get()
|
|
574
|
+
<< "hopping into work_serializer";
|
|
575
|
+
auto self = RefAsSubclass<WatcherWrapper>();
|
|
629
576
|
parent_->chand_->work_serializer_->Run(
|
|
630
|
-
[
|
|
631
|
-
*parent_->chand_->work_serializer_) {
|
|
632
|
-
|
|
633
|
-
Unref();
|
|
577
|
+
[self, new_keepalive_time]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
|
578
|
+
*self->parent_->chand_->work_serializer_) {
|
|
579
|
+
self->ApplyKeepaliveThrottlingInWorkSerializer(new_keepalive_time);
|
|
634
580
|
});
|
|
635
581
|
}
|
|
636
582
|
|
|
583
|
+
uint32_t max_connections_per_subchannel() const override {
|
|
584
|
+
return parent_->max_connections_per_subchannel_;
|
|
585
|
+
}
|
|
586
|
+
|
|
637
587
|
grpc_pollset_set* interested_parties() override {
|
|
638
588
|
return watcher_->interested_parties();
|
|
639
589
|
}
|
|
@@ -649,29 +599,33 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
|
649
599
|
<< parent_.get() << " subchannel " << parent_->subchannel_.get()
|
|
650
600
|
<< " watcher=" << watcher_.get()
|
|
651
601
|
<< " state=" << ConnectivityStateName(state) << " status=" << status;
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
602
|
+
if (!IsTransportStateWatcherEnabled()) {
|
|
603
|
+
auto keepalive_throttling = status.GetPayload(kKeepaliveThrottlingKey);
|
|
604
|
+
if (keepalive_throttling.has_value()) {
|
|
605
|
+
int new_keepalive_time_ms = -1;
|
|
606
|
+
if (absl::SimpleAtoi(std::string(keepalive_throttling.value()),
|
|
607
|
+
&new_keepalive_time_ms)) {
|
|
608
|
+
Duration new_keepalive_time =
|
|
609
|
+
Duration::Milliseconds(new_keepalive_time_ms);
|
|
610
|
+
if (new_keepalive_time > parent_->chand_->keepalive_time_) {
|
|
611
|
+
parent_->chand_->keepalive_time_ = new_keepalive_time;
|
|
612
|
+
GRPC_TRACE_LOG(client_channel, INFO)
|
|
613
|
+
<< "chand=" << parent_->chand_
|
|
614
|
+
<< ": throttling keepalive time to "
|
|
615
|
+
<< parent_->chand_->keepalive_time_;
|
|
616
|
+
// Propagate the new keepalive time to all subchannels. This is
|
|
617
|
+
// so that new transports created by any subchannel (and not
|
|
618
|
+
// just the subchannel that received the GOAWAY), use the new
|
|
619
|
+
// keepalive time.
|
|
620
|
+
for (auto& [subchannel, _] : parent_->chand_->subchannel_map_) {
|
|
621
|
+
subchannel->ThrottleKeepaliveTime(new_keepalive_time);
|
|
622
|
+
}
|
|
669
623
|
}
|
|
624
|
+
} else {
|
|
625
|
+
LOG(ERROR) << "chand=" << parent_->chand_
|
|
626
|
+
<< ": Illegal keepalive throttling value "
|
|
627
|
+
<< std::string(keepalive_throttling.value());
|
|
670
628
|
}
|
|
671
|
-
} else {
|
|
672
|
-
LOG(ERROR) << "chand=" << parent_->chand_
|
|
673
|
-
<< ": Illegal keepalive throttling value "
|
|
674
|
-
<< std::string(keepalive_throttling.value());
|
|
675
629
|
}
|
|
676
630
|
}
|
|
677
631
|
// Propagate status only in state TF.
|
|
@@ -683,9 +637,26 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
|
683
637
|
state == GRPC_CHANNEL_TRANSIENT_FAILURE ? status : absl::OkStatus());
|
|
684
638
|
}
|
|
685
639
|
|
|
640
|
+
void ApplyKeepaliveThrottlingInWorkSerializer(Duration new_keepalive_time)
|
|
641
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
|
|
642
|
+
if (new_keepalive_time > parent_->chand_->keepalive_time_) {
|
|
643
|
+
parent_->chand_->keepalive_time_ = new_keepalive_time;
|
|
644
|
+
GRPC_TRACE_LOG(client_channel, INFO)
|
|
645
|
+
<< "chand=" << parent_->chand_ << ": throttling keepalive time to "
|
|
646
|
+
<< parent_->chand_->keepalive_time_;
|
|
647
|
+
// Propagate the new keepalive time to all subchannels. This is so
|
|
648
|
+
// that new transports created by any subchannel (and not just the
|
|
649
|
+
// subchannel that received the GOAWAY), use the new keepalive time.
|
|
650
|
+
for (auto& [subchannel, _] : parent_->chand_->subchannel_map_) {
|
|
651
|
+
if (parent_->subchannel_ == subchannel) continue;
|
|
652
|
+
subchannel->ThrottleKeepaliveTime(new_keepalive_time);
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
|
|
686
657
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
|
|
687
658
|
watcher_;
|
|
688
|
-
|
|
659
|
+
WeakRefCountedPtr<SubchannelWrapper> parent_;
|
|
689
660
|
};
|
|
690
661
|
|
|
691
662
|
// A heterogenous lookup comparator for data watchers that allows
|
|
@@ -708,6 +679,7 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
|
708
679
|
|
|
709
680
|
ClientChannelFilter* chand_;
|
|
710
681
|
RefCountedPtr<Subchannel> subchannel_;
|
|
682
|
+
const uint32_t max_connections_per_subchannel_;
|
|
711
683
|
// Maps from the address of the watcher passed to us by the LB policy
|
|
712
684
|
// to the address of the WrapperWatcher that we passed to the underlying
|
|
713
685
|
// subchannel. This is needed so that when the LB policy calls
|
|
@@ -739,7 +711,7 @@ ClientChannelFilter::ExternalConnectivityWatcher::ExternalConnectivityWatcher(
|
|
|
739
711
|
{
|
|
740
712
|
MutexLock lock(&chand_->external_watchers_mu_);
|
|
741
713
|
// Will be deleted when the watch is complete.
|
|
742
|
-
|
|
714
|
+
GRPC_CHECK(chand->external_watchers_[on_complete] == nullptr);
|
|
743
715
|
// Store a ref to the watcher in the external_watchers_ map.
|
|
744
716
|
chand->external_watchers_[on_complete] =
|
|
745
717
|
RefAsSubclass<ExternalConnectivityWatcher>(
|
|
@@ -919,6 +891,17 @@ class ClientChannelFilter::ClientChannelControlHelper final
|
|
|
919
891
|
const ChannelArgs& args) override
|
|
920
892
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
|
921
893
|
if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
|
|
894
|
+
// Determine max_connections_per_subchannel.
|
|
895
|
+
const uint32_t cap =
|
|
896
|
+
args.GetInt(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL_CAP).value_or(10);
|
|
897
|
+
uint32_t max_connections_per_subchannel =
|
|
898
|
+
args.GetInt(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL)
|
|
899
|
+
.value_or(
|
|
900
|
+
per_address_args.GetInt(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL)
|
|
901
|
+
.value_or(1));
|
|
902
|
+
max_connections_per_subchannel =
|
|
903
|
+
std::min(max_connections_per_subchannel, cap);
|
|
904
|
+
// Modify args for subchannel.
|
|
922
905
|
ChannelArgs subchannel_args = Subchannel::MakeSubchannelArgs(
|
|
923
906
|
args, per_address_args, chand_->subchannel_pool_,
|
|
924
907
|
chand_->default_authority_);
|
|
@@ -930,7 +913,8 @@ class ClientChannelFilter::ClientChannelControlHelper final
|
|
|
930
913
|
// Make sure the subchannel has updated keepalive time.
|
|
931
914
|
subchannel->ThrottleKeepaliveTime(chand_->keepalive_time_);
|
|
932
915
|
// Create and return wrapper for the subchannel.
|
|
933
|
-
return MakeRefCounted<SubchannelWrapper>(chand_, std::move(subchannel)
|
|
916
|
+
return MakeRefCounted<SubchannelWrapper>(chand_, std::move(subchannel),
|
|
917
|
+
max_connections_per_subchannel);
|
|
934
918
|
}
|
|
935
919
|
|
|
936
920
|
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
|
@@ -983,24 +967,13 @@ class ClientChannelFilter::ClientChannelControlHelper final
|
|
|
983
967
|
return **chand_->owning_stack_->stats_plugin_group;
|
|
984
968
|
}
|
|
985
969
|
|
|
986
|
-
void AddTraceEvent(
|
|
970
|
+
void AddTraceEvent(absl::string_view message) override
|
|
987
971
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
|
|
988
972
|
if (chand_->resolver_ == nullptr) return; // Shutting down.
|
|
989
|
-
|
|
990
|
-
chand_->channelz_node_->AddTraceEvent(
|
|
991
|
-
ConvertSeverityEnum(severity),
|
|
992
|
-
grpc_slice_from_copied_buffer(message.data(), message.size()));
|
|
993
|
-
}
|
|
973
|
+
GRPC_CHANNELZ_LOG(chand_->channelz_node_) << std::string(message);
|
|
994
974
|
}
|
|
995
975
|
|
|
996
976
|
private:
|
|
997
|
-
static channelz::ChannelTrace::Severity ConvertSeverityEnum(
|
|
998
|
-
TraceSeverity severity) {
|
|
999
|
-
if (severity == TRACE_INFO) return channelz::ChannelTrace::Info;
|
|
1000
|
-
if (severity == TRACE_WARNING) return channelz::ChannelTrace::Warning;
|
|
1001
|
-
return channelz::ChannelTrace::Error;
|
|
1002
|
-
}
|
|
1003
|
-
|
|
1004
977
|
ClientChannelFilter* chand_;
|
|
1005
978
|
};
|
|
1006
979
|
|
|
@@ -1010,8 +983,8 @@ class ClientChannelFilter::ClientChannelControlHelper final
|
|
|
1010
983
|
|
|
1011
984
|
grpc_error_handle ClientChannelFilter::Init(grpc_channel_element* elem,
|
|
1012
985
|
grpc_channel_element_args* args) {
|
|
1013
|
-
|
|
1014
|
-
|
|
986
|
+
GRPC_CHECK(args->is_last);
|
|
987
|
+
GRPC_CHECK(elem->filter == &kFilter);
|
|
1015
988
|
grpc_error_handle error;
|
|
1016
989
|
new (elem->channel_data) ClientChannelFilter(args, &error);
|
|
1017
990
|
return error;
|
|
@@ -1099,9 +1072,7 @@ ClientChannelFilter::ClientChannelFilter(grpc_channel_element_args* args,
|
|
|
1099
1072
|
// Set initial keepalive time.
|
|
1100
1073
|
auto keepalive_arg = channel_args_.GetInt(GRPC_ARG_KEEPALIVE_TIME_MS);
|
|
1101
1074
|
if (keepalive_arg.has_value()) {
|
|
1102
|
-
keepalive_time_ = Clamp(*keepalive_arg, 1, INT_MAX);
|
|
1103
|
-
} else {
|
|
1104
|
-
keepalive_time_ = -1; // unset
|
|
1075
|
+
keepalive_time_ = Duration::Milliseconds(Clamp(*keepalive_arg, 1, INT_MAX));
|
|
1105
1076
|
}
|
|
1106
1077
|
// Set default authority.
|
|
1107
1078
|
std::optional<std::string> default_authority =
|
|
@@ -1126,16 +1097,15 @@ ClientChannelFilter::~ClientChannelFilter() {
|
|
|
1126
1097
|
grpc_pollset_set_destroy(interested_parties_);
|
|
1127
1098
|
}
|
|
1128
1099
|
|
|
1129
|
-
OrphanablePtr<ClientChannelFilter::
|
|
1100
|
+
OrphanablePtr<ClientChannelFilter::LoadBalancedCall>
|
|
1130
1101
|
ClientChannelFilter::CreateLoadBalancedCall(
|
|
1131
1102
|
const grpc_call_element_args& args, grpc_polling_entity* pollent,
|
|
1132
1103
|
grpc_closure* on_call_destruction_complete,
|
|
1133
1104
|
absl::AnyInvocable<void()> on_commit, bool is_transparent_retry) {
|
|
1134
1105
|
promise_detail::Context<Arena> arena_ctx(args.arena);
|
|
1135
|
-
return OrphanablePtr<
|
|
1136
|
-
args
|
|
1137
|
-
|
|
1138
|
-
std::move(on_commit), is_transparent_retry));
|
|
1106
|
+
return OrphanablePtr<LoadBalancedCall>(args.arena->New<LoadBalancedCall>(
|
|
1107
|
+
this, args, pollent, on_call_destruction_complete, std::move(on_commit),
|
|
1108
|
+
is_transparent_retry));
|
|
1139
1109
|
}
|
|
1140
1110
|
|
|
1141
1111
|
void ClientChannelFilter::ReprocessQueuedResolverCalls() {
|
|
@@ -1199,7 +1169,7 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
|
|
|
1199
1169
|
// - A channel arg, in which case we check that the specified policy exists
|
|
1200
1170
|
// and accepts an empty config. If not, we revert to using pick_first
|
|
1201
1171
|
// lb_policy
|
|
1202
|
-
|
|
1172
|
+
GRPC_CHECK(lb_policy_config.ok());
|
|
1203
1173
|
return std::move(*lb_policy_config);
|
|
1204
1174
|
}
|
|
1205
1175
|
|
|
@@ -1290,6 +1260,12 @@ void ClientChannelFilter::OnResolverResultChangedLocked(
|
|
|
1290
1260
|
static_cast<const internal::ClientChannelGlobalParsedConfig*>(
|
|
1291
1261
|
service_config->GetGlobalParsedConfig(
|
|
1292
1262
|
service_config_parser_index_));
|
|
1263
|
+
// Set max_connections_per_subchannel from service config.
|
|
1264
|
+
if (parsed_service_config->max_connections_per_subchannel() != 0) {
|
|
1265
|
+
result.args = result.args.Set(
|
|
1266
|
+
GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL,
|
|
1267
|
+
parsed_service_config->max_connections_per_subchannel());
|
|
1268
|
+
}
|
|
1293
1269
|
// Choose LB policy config.
|
|
1294
1270
|
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config =
|
|
1295
1271
|
ChooseLbPolicy(result, parsed_service_config);
|
|
@@ -1332,12 +1308,8 @@ void ClientChannelFilter::OnResolverResultChangedLocked(
|
|
|
1332
1308
|
}
|
|
1333
1309
|
// Add channel trace event.
|
|
1334
1310
|
if (!trace_strings.empty()) {
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
if (channelz_node_ != nullptr) {
|
|
1338
|
-
channelz_node_->AddTraceEvent(channelz::ChannelTrace::Severity::Info,
|
|
1339
|
-
grpc_slice_from_cpp_string(message));
|
|
1340
|
-
}
|
|
1311
|
+
GRPC_CHANNELZ_LOG(channelz_node_)
|
|
1312
|
+
<< "Resolution event: " << absl::StrJoin(trace_strings, ", ");
|
|
1341
1313
|
}
|
|
1342
1314
|
}
|
|
1343
1315
|
|
|
@@ -1459,18 +1431,20 @@ void ClientChannelFilter::UpdateServiceConfigInDataPlaneLocked(
|
|
|
1459
1431
|
!new_args.WantMinimalStack() &&
|
|
1460
1432
|
new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
|
|
1461
1433
|
// Construct dynamic filter stack.
|
|
1434
|
+
auto new_blackboard = MakeRefCounted<Blackboard>();
|
|
1462
1435
|
std::vector<const grpc_channel_filter*> filters =
|
|
1463
|
-
config_selector->GetFilters();
|
|
1436
|
+
config_selector->GetFilters(blackboard_.get(), new_blackboard.get());
|
|
1464
1437
|
if (enable_retries) {
|
|
1438
|
+
RetryFilter::UpdateBlackboard(*service_config, blackboard_.get(),
|
|
1439
|
+
new_blackboard.get());
|
|
1465
1440
|
filters.push_back(&RetryFilter::kVtable);
|
|
1466
1441
|
} else {
|
|
1467
1442
|
filters.push_back(&DynamicTerminationFilter::kFilterVtable);
|
|
1468
1443
|
}
|
|
1469
|
-
auto new_blackboard = MakeRefCounted<Blackboard>();
|
|
1470
|
-
RefCountedPtr<DynamicFilters> dynamic_filters = DynamicFilters::Create(
|
|
1471
|
-
new_args, std::move(filters), blackboard_.get(), new_blackboard.get());
|
|
1472
|
-
CHECK(dynamic_filters != nullptr);
|
|
1473
1444
|
blackboard_ = std::move(new_blackboard);
|
|
1445
|
+
RefCountedPtr<DynamicFilters> dynamic_filters =
|
|
1446
|
+
DynamicFilters::Create(new_args, std::move(filters), blackboard_.get());
|
|
1447
|
+
GRPC_CHECK(dynamic_filters != nullptr);
|
|
1474
1448
|
// Grab data plane lock to update service config.
|
|
1475
1449
|
//
|
|
1476
1450
|
// We defer unreffing the old values (and deallocating memory) until
|
|
@@ -1500,7 +1474,7 @@ void ClientChannelFilter::CreateResolverLocked() {
|
|
|
1500
1474
|
std::make_unique<ResolverResultHandler>(this));
|
|
1501
1475
|
// Since the validity of the args was checked when the channel was created,
|
|
1502
1476
|
// CreateResolver() must return a non-null result.
|
|
1503
|
-
|
|
1477
|
+
GRPC_CHECK(resolver_ != nullptr);
|
|
1504
1478
|
UpdateStateLocked(GRPC_CHANNEL_CONNECTING, absl::Status(),
|
|
1505
1479
|
"started resolving");
|
|
1506
1480
|
resolver_->StartLocked();
|
|
@@ -1551,11 +1525,16 @@ void ClientChannelFilter::UpdateStateLocked(grpc_connectivity_state state,
|
|
|
1551
1525
|
state_tracker_.SetState(state, status, reason);
|
|
1552
1526
|
if (channelz_node_ != nullptr) {
|
|
1553
1527
|
channelz_node_->SetConnectivityState(state);
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1528
|
+
if (!status.ok() || state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
|
1529
|
+
GRPC_CHANNELZ_LOG(channelz_node_)
|
|
1530
|
+
<< channelz::ChannelNode::GetChannelConnectivityStateChangeString(
|
|
1531
|
+
state);
|
|
1532
|
+
} else {
|
|
1533
|
+
GRPC_CHANNELZ_LOG(channelz_node_)
|
|
1534
|
+
<< channelz::ChannelNode::GetChannelConnectivityStateChangeString(
|
|
1535
|
+
state)
|
|
1536
|
+
<< " status: " << status.ToString();
|
|
1537
|
+
}
|
|
1559
1538
|
}
|
|
1560
1539
|
}
|
|
1561
1540
|
|
|
@@ -1605,7 +1584,7 @@ T HandlePickResult(
|
|
|
1605
1584
|
}
|
|
1606
1585
|
auto* drop_pick =
|
|
1607
1586
|
std::get_if<LoadBalancingPolicy::PickResult::Drop>(&result->result);
|
|
1608
|
-
|
|
1587
|
+
GRPC_CHECK_NE(drop_pick, nullptr);
|
|
1609
1588
|
return drop_func(drop_pick);
|
|
1610
1589
|
}
|
|
1611
1590
|
|
|
@@ -1698,7 +1677,7 @@ void ClientChannelFilter::StartTransportOpLocked(grpc_transport_op* op) {
|
|
|
1698
1677
|
}
|
|
1699
1678
|
} else {
|
|
1700
1679
|
// Disconnect.
|
|
1701
|
-
|
|
1680
|
+
GRPC_CHECK(disconnect_error_.ok());
|
|
1702
1681
|
disconnect_error_ = op->disconnect_with_error;
|
|
1703
1682
|
UpdateStateAndPickerLocked(
|
|
1704
1683
|
GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
|
|
@@ -1716,7 +1695,7 @@ void ClientChannelFilter::StartTransportOpLocked(grpc_transport_op* op) {
|
|
|
1716
1695
|
void ClientChannelFilter::StartTransportOp(grpc_channel_element* elem,
|
|
1717
1696
|
grpc_transport_op* op) {
|
|
1718
1697
|
auto* chand = static_cast<ClientChannelFilter*>(elem->channel_data);
|
|
1719
|
-
|
|
1698
|
+
GRPC_CHECK(op->set_accept_stream == false);
|
|
1720
1699
|
// Handle bind_pollset.
|
|
1721
1700
|
if (op->bind_pollset != nullptr) {
|
|
1722
1701
|
grpc_pollset_set_add_pollset(chand->interested_parties_, op->bind_pollset);
|
|
@@ -1779,6 +1758,52 @@ void ClientChannelFilter::RemoveConnectivityWatcher(
|
|
|
1779
1758
|
new ConnectivityWatcherRemover(this, watcher);
|
|
1780
1759
|
}
|
|
1781
1760
|
|
|
1761
|
+
//
|
|
1762
|
+
// ClientChannelFilter::CallData::ResolverQueuedCallCanceller
|
|
1763
|
+
//
|
|
1764
|
+
|
|
1765
|
+
// A class to handle the call combiner cancellation callback for a
|
|
1766
|
+
// queued pick.
|
|
1767
|
+
class ClientChannelFilter::CallData::ResolverQueuedCallCanceller final {
|
|
1768
|
+
public:
|
|
1769
|
+
explicit ResolverQueuedCallCanceller(CallData* calld) : calld_(calld) {
|
|
1770
|
+
GRPC_CALL_STACK_REF(calld->owning_call_, "ResolverQueuedCallCanceller");
|
|
1771
|
+
GRPC_CLOSURE_INIT(&closure_, &CancelLocked, this,
|
|
1772
|
+
grpc_schedule_on_exec_ctx);
|
|
1773
|
+
calld->call_combiner_->SetNotifyOnCancel(&closure_);
|
|
1774
|
+
}
|
|
1775
|
+
|
|
1776
|
+
private:
|
|
1777
|
+
static void CancelLocked(void* arg, grpc_error_handle error) {
|
|
1778
|
+
auto* self = static_cast<ResolverQueuedCallCanceller*>(arg);
|
|
1779
|
+
auto* calld = self->calld_;
|
|
1780
|
+
auto* chand = calld->chand();
|
|
1781
|
+
{
|
|
1782
|
+
MutexLock lock(&chand->resolution_mu_);
|
|
1783
|
+
GRPC_TRACE_LOG(client_channel_call, INFO)
|
|
1784
|
+
<< "chand=" << chand << " calld=" << calld
|
|
1785
|
+
<< ": cancelling resolver queued pick: "
|
|
1786
|
+
"error="
|
|
1787
|
+
<< StatusToString(error) << " self=" << self
|
|
1788
|
+
<< " calld->resolver_pick_canceller="
|
|
1789
|
+
<< calld->resolver_call_canceller_;
|
|
1790
|
+
if (calld->resolver_call_canceller_ == self && !error.ok()) {
|
|
1791
|
+
// Remove pick from list of queued picks.
|
|
1792
|
+
calld->RemoveCallFromResolverQueuedCallsLocked();
|
|
1793
|
+
chand->resolver_queued_calls_.erase(calld);
|
|
1794
|
+
// Fail pending batches on the call.
|
|
1795
|
+
calld->buffered_call_.Fail(
|
|
1796
|
+
error, BufferedCall::YieldCallCombinerIfPendingBatchesFound);
|
|
1797
|
+
}
|
|
1798
|
+
}
|
|
1799
|
+
GRPC_CALL_STACK_UNREF(calld->owning_call_, "ResolvingQueuedCallCanceller");
|
|
1800
|
+
delete self;
|
|
1801
|
+
}
|
|
1802
|
+
|
|
1803
|
+
CallData* calld_;
|
|
1804
|
+
grpc_closure closure_;
|
|
1805
|
+
};
|
|
1806
|
+
|
|
1782
1807
|
//
|
|
1783
1808
|
// CallData implementation
|
|
1784
1809
|
//
|
|
@@ -1788,7 +1813,7 @@ void ClientChannelFilter::CallData::RemoveCallFromResolverQueuedCallsLocked() {
|
|
|
1788
1813
|
<< "chand=" << chand() << " calld=" << this
|
|
1789
1814
|
<< ": removing from resolver queued picks list";
|
|
1790
1815
|
// Remove call's pollent from channel's interested_parties.
|
|
1791
|
-
grpc_polling_entity_del_from_pollset_set(
|
|
1816
|
+
grpc_polling_entity_del_from_pollset_set(pollent_,
|
|
1792
1817
|
chand()->interested_parties_);
|
|
1793
1818
|
// Note: There's no need to actually remove the call from the queue
|
|
1794
1819
|
// here, because that will be done in
|
|
@@ -1800,14 +1825,15 @@ void ClientChannelFilter::CallData::AddCallToResolverQueuedCallsLocked() {
|
|
|
1800
1825
|
GRPC_TRACE_LOG(client_channel_call, INFO)
|
|
1801
1826
|
<< "chand=" << chand() << " calld=" << this
|
|
1802
1827
|
<< ": adding to resolver queued picks list; pollent="
|
|
1803
|
-
<< grpc_polling_entity_string(
|
|
1828
|
+
<< grpc_polling_entity_string(pollent_);
|
|
1804
1829
|
// Add call's pollent to channel's interested_parties, so that I/O
|
|
1805
1830
|
// can be done under the call's CQ.
|
|
1806
|
-
grpc_polling_entity_add_to_pollset_set(
|
|
1831
|
+
grpc_polling_entity_add_to_pollset_set(pollent_,
|
|
1807
1832
|
chand()->interested_parties_);
|
|
1808
1833
|
// Add to queue.
|
|
1809
1834
|
chand()->resolver_queued_calls_.insert(this);
|
|
1810
|
-
|
|
1835
|
+
// Register call combiner cancellation callback.
|
|
1836
|
+
resolver_call_canceller_ = new ResolverQueuedCallCanceller(this);
|
|
1811
1837
|
}
|
|
1812
1838
|
|
|
1813
1839
|
grpc_error_handle ClientChannelFilter::CallData::ApplyServiceConfigToCallLocked(
|
|
@@ -1822,12 +1848,12 @@ grpc_error_handle ClientChannelFilter::CallData::ApplyServiceConfigToCallLocked(
|
|
|
1822
1848
|
// itself in the call context, so that it can be accessed by filters
|
|
1823
1849
|
// below us in the stack, and it will be cleaned up when the call ends.
|
|
1824
1850
|
auto* service_config_call_data =
|
|
1825
|
-
|
|
1851
|
+
arena_->New<ClientChannelServiceConfigCallData>(arena_);
|
|
1826
1852
|
// Use the ConfigSelector to determine the config for the call.
|
|
1827
1853
|
absl::Status call_config_status =
|
|
1828
1854
|
(*config_selector)
|
|
1829
1855
|
->GetCallConfig(
|
|
1830
|
-
{send_initial_metadata(),
|
|
1856
|
+
{send_initial_metadata(), arena_, service_config_call_data});
|
|
1831
1857
|
if (!call_config_status.ok()) {
|
|
1832
1858
|
return absl_status_to_grpc_error(
|
|
1833
1859
|
MaybeRewriteIllegalStatusCode(call_config_status, "ConfigSelector"));
|
|
@@ -1878,7 +1904,7 @@ std::optional<absl::Status> ClientChannelFilter::CallData::CheckResolution(
|
|
|
1878
1904
|
}
|
|
1879
1905
|
// If the call was queued, add trace annotation.
|
|
1880
1906
|
if (was_queued) {
|
|
1881
|
-
auto* call_tracer =
|
|
1907
|
+
auto* call_tracer = arena_->GetContext<CallSpan>();
|
|
1882
1908
|
if (call_tracer != nullptr) {
|
|
1883
1909
|
call_tracer->RecordAnnotation("Delayed name resolution complete.");
|
|
1884
1910
|
}
|
|
@@ -1916,42 +1942,32 @@ bool ClientChannelFilter::CallData::CheckResolutionLocked(
|
|
|
1916
1942
|
return true;
|
|
1917
1943
|
}
|
|
1918
1944
|
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
//
|
|
1922
|
-
|
|
1923
|
-
ClientChannelFilter::FilterBasedCallData::FilterBasedCallData(
|
|
1924
|
-
grpc_call_element* elem, const grpc_call_element_args& args)
|
|
1945
|
+
ClientChannelFilter::CallData::CallData(grpc_call_element* elem,
|
|
1946
|
+
const grpc_call_element_args& args)
|
|
1925
1947
|
: call_start_time_(args.start_time),
|
|
1926
1948
|
deadline_(args.deadline),
|
|
1927
1949
|
arena_(args.arena),
|
|
1928
1950
|
elem_(elem),
|
|
1929
1951
|
owning_call_(args.call_stack),
|
|
1930
|
-
call_combiner_(args.call_combiner)
|
|
1952
|
+
call_combiner_(args.call_combiner),
|
|
1953
|
+
buffered_call_(call_combiner_, &client_channel_call_trace) {
|
|
1931
1954
|
GRPC_TRACE_LOG(client_channel_call, INFO)
|
|
1932
1955
|
<< "chand=" << chand() << " calld=" << this << ": created call";
|
|
1933
1956
|
}
|
|
1934
1957
|
|
|
1935
|
-
ClientChannelFilter::
|
|
1936
|
-
// Make sure there are no remaining pending batches.
|
|
1937
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
|
1938
|
-
CHECK_EQ(pending_batches_[i], nullptr);
|
|
1939
|
-
}
|
|
1940
|
-
}
|
|
1941
|
-
|
|
1942
|
-
grpc_error_handle ClientChannelFilter::FilterBasedCallData::Init(
|
|
1958
|
+
grpc_error_handle ClientChannelFilter::CallData::Init(
|
|
1943
1959
|
grpc_call_element* elem, const grpc_call_element_args* args) {
|
|
1944
|
-
new (elem->call_data)
|
|
1960
|
+
new (elem->call_data) CallData(elem, *args);
|
|
1945
1961
|
return absl::OkStatus();
|
|
1946
1962
|
}
|
|
1947
1963
|
|
|
1948
|
-
void ClientChannelFilter::
|
|
1964
|
+
void ClientChannelFilter::CallData::Destroy(
|
|
1949
1965
|
grpc_call_element* elem, const grpc_call_final_info* /*final_info*/,
|
|
1950
1966
|
grpc_closure* then_schedule_closure) {
|
|
1951
|
-
auto* calld = static_cast<
|
|
1967
|
+
auto* calld = static_cast<CallData*>(elem->call_data);
|
|
1952
1968
|
RefCountedPtr<DynamicFilters::Call> dynamic_call =
|
|
1953
1969
|
std::move(calld->dynamic_call_);
|
|
1954
|
-
calld->~
|
|
1970
|
+
calld->~CallData();
|
|
1955
1971
|
if (GPR_LIKELY(dynamic_call != nullptr)) {
|
|
1956
1972
|
dynamic_call->SetAfterCallStackDestroy(then_schedule_closure);
|
|
1957
1973
|
} else {
|
|
@@ -1960,9 +1976,9 @@ void ClientChannelFilter::FilterBasedCallData::Destroy(
|
|
|
1960
1976
|
}
|
|
1961
1977
|
}
|
|
1962
1978
|
|
|
1963
|
-
void ClientChannelFilter::
|
|
1979
|
+
void ClientChannelFilter::CallData::StartTransportStreamOpBatch(
|
|
1964
1980
|
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
|
|
1965
|
-
auto* calld = static_cast<
|
|
1981
|
+
auto* calld = static_cast<CallData*>(elem->call_data);
|
|
1966
1982
|
auto* chand = static_cast<ClientChannelFilter*>(elem->channel_data);
|
|
1967
1983
|
if (GRPC_TRACE_FLAG_ENABLED(client_channel_call) &&
|
|
1968
1984
|
!GRPC_TRACE_FLAG_ENABLED(channel)) {
|
|
@@ -2001,7 +2017,7 @@ void ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch(
|
|
|
2001
2017
|
<< StatusToString(calld->cancel_error_);
|
|
2002
2018
|
// Note: This will release the call combiner.
|
|
2003
2019
|
grpc_transport_stream_op_batch_finish_with_failure(
|
|
2004
|
-
batch, calld->cancel_error_, calld->
|
|
2020
|
+
batch, calld->cancel_error_, calld->call_combiner_);
|
|
2005
2021
|
return;
|
|
2006
2022
|
}
|
|
2007
2023
|
// Handle cancellation.
|
|
@@ -2016,14 +2032,15 @@ void ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch(
|
|
|
2016
2032
|
<< "chand=" << chand << " calld=" << calld
|
|
2017
2033
|
<< ": recording cancel_error=" << StatusToString(calld->cancel_error_);
|
|
2018
2034
|
// Fail all pending batches.
|
|
2019
|
-
calld->
|
|
2035
|
+
calld->buffered_call_.Fail(calld->cancel_error_,
|
|
2036
|
+
BufferedCall::NoYieldCallCombiner);
|
|
2020
2037
|
// Note: This will release the call combiner.
|
|
2021
2038
|
grpc_transport_stream_op_batch_finish_with_failure(
|
|
2022
|
-
batch, calld->cancel_error_, calld->
|
|
2039
|
+
batch, calld->cancel_error_, calld->call_combiner_);
|
|
2023
2040
|
return;
|
|
2024
2041
|
}
|
|
2025
2042
|
// Add the batch to the pending list.
|
|
2026
|
-
calld->
|
|
2043
|
+
calld->buffered_call_.EnqueueBatch(batch);
|
|
2027
2044
|
// For batches containing a send_initial_metadata op, acquire the
|
|
2028
2045
|
// channel's resolution mutex to apply the service config to the call,
|
|
2029
2046
|
// after which we will create a dynamic call.
|
|
@@ -2051,188 +2068,29 @@ void ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch(
|
|
|
2051
2068
|
GRPC_TRACE_LOG(client_channel_call, INFO)
|
|
2052
2069
|
<< "chand=" << chand << " calld=" << calld
|
|
2053
2070
|
<< ": saved batch, yielding call combiner";
|
|
2054
|
-
GRPC_CALL_COMBINER_STOP(calld->
|
|
2071
|
+
GRPC_CALL_COMBINER_STOP(calld->call_combiner_,
|
|
2055
2072
|
"batch does not include send_initial_metadata");
|
|
2056
2073
|
}
|
|
2057
2074
|
}
|
|
2058
2075
|
|
|
2059
|
-
void ClientChannelFilter::
|
|
2060
|
-
|
|
2061
|
-
auto* calld = static_cast<
|
|
2076
|
+
void ClientChannelFilter::CallData::SetPollent(grpc_call_element* elem,
|
|
2077
|
+
grpc_polling_entity* pollent) {
|
|
2078
|
+
auto* calld = static_cast<CallData*>(elem->call_data);
|
|
2062
2079
|
calld->pollent_ = pollent;
|
|
2063
2080
|
}
|
|
2064
2081
|
|
|
2065
|
-
|
|
2066
|
-
grpc_transport_stream_op_batch* batch) {
|
|
2067
|
-
// Note: It is important the send_initial_metadata be the first entry
|
|
2068
|
-
// here, since the code in CheckResolution() assumes it will be.
|
|
2069
|
-
if (batch->send_initial_metadata) return 0;
|
|
2070
|
-
if (batch->send_message) return 1;
|
|
2071
|
-
if (batch->send_trailing_metadata) return 2;
|
|
2072
|
-
if (batch->recv_initial_metadata) return 3;
|
|
2073
|
-
if (batch->recv_message) return 4;
|
|
2074
|
-
if (batch->recv_trailing_metadata) return 5;
|
|
2075
|
-
GPR_UNREACHABLE_CODE(return (size_t)-1);
|
|
2076
|
-
}
|
|
2077
|
-
|
|
2078
|
-
// This is called via the call combiner, so access to calld is synchronized.
|
|
2079
|
-
void ClientChannelFilter::FilterBasedCallData::PendingBatchesAdd(
|
|
2080
|
-
grpc_transport_stream_op_batch* batch) {
|
|
2081
|
-
const size_t idx = GetBatchIndex(batch);
|
|
2082
|
-
GRPC_TRACE_LOG(client_channel_call, INFO)
|
|
2083
|
-
<< "chand=" << chand() << " calld=" << this
|
|
2084
|
-
<< ": adding pending batch at index " << idx;
|
|
2085
|
-
grpc_transport_stream_op_batch*& pending = pending_batches_[idx];
|
|
2086
|
-
CHECK_EQ(pending, nullptr);
|
|
2087
|
-
pending = batch;
|
|
2088
|
-
}
|
|
2089
|
-
|
|
2090
|
-
// This is called via the call combiner, so access to calld is synchronized.
|
|
2091
|
-
void ClientChannelFilter::FilterBasedCallData::FailPendingBatchInCallCombiner(
|
|
2092
|
-
void* arg, grpc_error_handle error) {
|
|
2093
|
-
grpc_transport_stream_op_batch* batch =
|
|
2094
|
-
static_cast<grpc_transport_stream_op_batch*>(arg);
|
|
2095
|
-
auto* calld =
|
|
2096
|
-
static_cast<FilterBasedCallData*>(batch->handler_private.extra_arg);
|
|
2097
|
-
// Note: This will release the call combiner.
|
|
2098
|
-
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
|
2099
|
-
calld->call_combiner());
|
|
2100
|
-
}
|
|
2101
|
-
|
|
2102
|
-
// This is called via the call combiner, so access to calld is synchronized.
|
|
2103
|
-
void ClientChannelFilter::FilterBasedCallData::PendingBatchesFail(
|
|
2104
|
-
grpc_error_handle error,
|
|
2105
|
-
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
|
2106
|
-
CHECK(!error.ok());
|
|
2107
|
-
if (GRPC_TRACE_FLAG_ENABLED(client_channel_call)) {
|
|
2108
|
-
size_t num_batches = 0;
|
|
2109
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
|
2110
|
-
if (pending_batches_[i] != nullptr) ++num_batches;
|
|
2111
|
-
}
|
|
2112
|
-
LOG(INFO) << "chand=" << chand() << " calld=" << this << ": failing "
|
|
2113
|
-
<< num_batches << " pending batches: " << StatusToString(error);
|
|
2114
|
-
}
|
|
2115
|
-
CallCombinerClosureList closures;
|
|
2116
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
|
2117
|
-
grpc_transport_stream_op_batch*& batch = pending_batches_[i];
|
|
2118
|
-
if (batch != nullptr) {
|
|
2119
|
-
batch->handler_private.extra_arg = this;
|
|
2120
|
-
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
|
2121
|
-
FailPendingBatchInCallCombiner, batch,
|
|
2122
|
-
grpc_schedule_on_exec_ctx);
|
|
2123
|
-
closures.Add(&batch->handler_private.closure, error,
|
|
2124
|
-
"PendingBatchesFail");
|
|
2125
|
-
batch = nullptr;
|
|
2126
|
-
}
|
|
2127
|
-
}
|
|
2128
|
-
if (yield_call_combiner_predicate(closures)) {
|
|
2129
|
-
closures.RunClosures(call_combiner());
|
|
2130
|
-
} else {
|
|
2131
|
-
closures.RunClosuresWithoutYielding(call_combiner());
|
|
2132
|
-
}
|
|
2133
|
-
}
|
|
2134
|
-
|
|
2135
|
-
// This is called via the call combiner, so access to calld is synchronized.
|
|
2136
|
-
void ClientChannelFilter::FilterBasedCallData::ResumePendingBatchInCallCombiner(
|
|
2137
|
-
void* arg, grpc_error_handle /*ignored*/) {
|
|
2138
|
-
grpc_transport_stream_op_batch* batch =
|
|
2139
|
-
static_cast<grpc_transport_stream_op_batch*>(arg);
|
|
2140
|
-
auto* calld =
|
|
2141
|
-
static_cast<FilterBasedCallData*>(batch->handler_private.extra_arg);
|
|
2142
|
-
// Note: This will release the call combiner.
|
|
2143
|
-
calld->dynamic_call_->StartTransportStreamOpBatch(batch);
|
|
2144
|
-
}
|
|
2145
|
-
|
|
2146
|
-
// This is called via the call combiner, so access to calld is synchronized.
|
|
2147
|
-
void ClientChannelFilter::FilterBasedCallData::PendingBatchesResume() {
|
|
2148
|
-
// Retries not enabled; send down batches as-is.
|
|
2149
|
-
if (GRPC_TRACE_FLAG_ENABLED(client_channel_call)) {
|
|
2150
|
-
size_t num_batches = 0;
|
|
2151
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
|
2152
|
-
if (pending_batches_[i] != nullptr) ++num_batches;
|
|
2153
|
-
}
|
|
2154
|
-
LOG(INFO) << "chand=" << chand() << " calld=" << this << ": starting "
|
|
2155
|
-
<< num_batches
|
|
2156
|
-
<< " pending batches on dynamic_call=" << dynamic_call_.get();
|
|
2157
|
-
}
|
|
2158
|
-
CallCombinerClosureList closures;
|
|
2159
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
|
2160
|
-
grpc_transport_stream_op_batch*& batch = pending_batches_[i];
|
|
2161
|
-
if (batch != nullptr) {
|
|
2162
|
-
batch->handler_private.extra_arg = this;
|
|
2163
|
-
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
|
2164
|
-
ResumePendingBatchInCallCombiner, batch, nullptr);
|
|
2165
|
-
closures.Add(&batch->handler_private.closure, absl::OkStatus(),
|
|
2166
|
-
"resuming pending batch from client channel call");
|
|
2167
|
-
batch = nullptr;
|
|
2168
|
-
}
|
|
2169
|
-
}
|
|
2170
|
-
// Note: This will release the call combiner.
|
|
2171
|
-
closures.RunClosures(call_combiner());
|
|
2172
|
-
}
|
|
2173
|
-
|
|
2174
|
-
// A class to handle the call combiner cancellation callback for a
|
|
2175
|
-
// queued pick.
|
|
2176
|
-
class ClientChannelFilter::FilterBasedCallData::ResolverQueuedCallCanceller
|
|
2177
|
-
final {
|
|
2178
|
-
public:
|
|
2179
|
-
explicit ResolverQueuedCallCanceller(FilterBasedCallData* calld)
|
|
2180
|
-
: calld_(calld) {
|
|
2181
|
-
GRPC_CALL_STACK_REF(calld->owning_call(), "ResolverQueuedCallCanceller");
|
|
2182
|
-
GRPC_CLOSURE_INIT(&closure_, &CancelLocked, this,
|
|
2183
|
-
grpc_schedule_on_exec_ctx);
|
|
2184
|
-
calld->call_combiner()->SetNotifyOnCancel(&closure_);
|
|
2185
|
-
}
|
|
2186
|
-
|
|
2187
|
-
private:
|
|
2188
|
-
static void CancelLocked(void* arg, grpc_error_handle error) {
|
|
2189
|
-
auto* self = static_cast<ResolverQueuedCallCanceller*>(arg);
|
|
2190
|
-
auto* calld = self->calld_;
|
|
2191
|
-
auto* chand = calld->chand();
|
|
2192
|
-
{
|
|
2193
|
-
MutexLock lock(&chand->resolution_mu_);
|
|
2194
|
-
GRPC_TRACE_LOG(client_channel_call, INFO)
|
|
2195
|
-
<< "chand=" << chand << " calld=" << calld
|
|
2196
|
-
<< ": cancelling resolver queued pick: "
|
|
2197
|
-
"error="
|
|
2198
|
-
<< StatusToString(error) << " self=" << self
|
|
2199
|
-
<< " calld->resolver_pick_canceller="
|
|
2200
|
-
<< calld->resolver_call_canceller_;
|
|
2201
|
-
if (calld->resolver_call_canceller_ == self && !error.ok()) {
|
|
2202
|
-
// Remove pick from list of queued picks.
|
|
2203
|
-
calld->RemoveCallFromResolverQueuedCallsLocked();
|
|
2204
|
-
chand->resolver_queued_calls_.erase(calld);
|
|
2205
|
-
// Fail pending batches on the call.
|
|
2206
|
-
calld->PendingBatchesFail(error,
|
|
2207
|
-
YieldCallCombinerIfPendingBatchesFound);
|
|
2208
|
-
}
|
|
2209
|
-
}
|
|
2210
|
-
GRPC_CALL_STACK_UNREF(calld->owning_call(), "ResolvingQueuedCallCanceller");
|
|
2211
|
-
delete self;
|
|
2212
|
-
}
|
|
2213
|
-
|
|
2214
|
-
FilterBasedCallData* calld_;
|
|
2215
|
-
grpc_closure closure_;
|
|
2216
|
-
};
|
|
2217
|
-
|
|
2218
|
-
void ClientChannelFilter::FilterBasedCallData::TryCheckResolution(
|
|
2219
|
-
bool was_queued) {
|
|
2082
|
+
void ClientChannelFilter::CallData::TryCheckResolution(bool was_queued) {
|
|
2220
2083
|
auto result = CheckResolution(was_queued);
|
|
2221
2084
|
if (result.has_value()) {
|
|
2222
2085
|
if (!result->ok()) {
|
|
2223
|
-
|
|
2086
|
+
buffered_call_.Fail(*result, BufferedCall::YieldCallCombiner);
|
|
2224
2087
|
return;
|
|
2225
2088
|
}
|
|
2226
2089
|
CreateDynamicCall();
|
|
2227
2090
|
}
|
|
2228
2091
|
}
|
|
2229
2092
|
|
|
2230
|
-
void ClientChannelFilter::
|
|
2231
|
-
// Register call combiner cancellation callback.
|
|
2232
|
-
resolver_call_canceller_ = new ResolverQueuedCallCanceller(this);
|
|
2233
|
-
}
|
|
2234
|
-
|
|
2235
|
-
void ClientChannelFilter::FilterBasedCallData::RetryCheckResolutionLocked() {
|
|
2093
|
+
void ClientChannelFilter::CallData::RetryCheckResolutionLocked() {
|
|
2236
2094
|
// Lame the call combiner canceller.
|
|
2237
2095
|
resolver_call_canceller_ = nullptr;
|
|
2238
2096
|
// Do an async callback to resume call processing, so that we're not
|
|
@@ -2243,10 +2101,10 @@ void ClientChannelFilter::FilterBasedCallData::RetryCheckResolutionLocked() {
|
|
|
2243
2101
|
});
|
|
2244
2102
|
}
|
|
2245
2103
|
|
|
2246
|
-
void ClientChannelFilter::
|
|
2247
|
-
DynamicFilters::Call::Args args = {
|
|
2248
|
-
call_start_time_,
|
|
2249
|
-
|
|
2104
|
+
void ClientChannelFilter::CallData::CreateDynamicCall() {
|
|
2105
|
+
DynamicFilters::Call::Args args = {dynamic_filters_, pollent_,
|
|
2106
|
+
call_start_time_, deadline_,
|
|
2107
|
+
arena_, call_combiner_};
|
|
2250
2108
|
grpc_error_handle error;
|
|
2251
2109
|
DynamicFilters* channel_stack = args.channel_stack.get();
|
|
2252
2110
|
GRPC_TRACE_LOG(client_channel_call, INFO)
|
|
@@ -2257,18 +2115,21 @@ void ClientChannelFilter::FilterBasedCallData::CreateDynamicCall() {
|
|
|
2257
2115
|
GRPC_TRACE_LOG(client_channel_call, INFO)
|
|
2258
2116
|
<< "chand=" << chand() << " calld=" << this
|
|
2259
2117
|
<< ": failed to create dynamic call: error=" << StatusToString(error);
|
|
2260
|
-
|
|
2118
|
+
buffered_call_.Fail(error, BufferedCall::YieldCallCombiner);
|
|
2261
2119
|
return;
|
|
2262
2120
|
}
|
|
2263
|
-
|
|
2121
|
+
buffered_call_.Resume(
|
|
2122
|
+
[dynamic_call = dynamic_call_](grpc_transport_stream_op_batch* batch) {
|
|
2123
|
+
dynamic_call->StartTransportStreamOpBatch(batch);
|
|
2124
|
+
});
|
|
2264
2125
|
}
|
|
2265
2126
|
|
|
2266
|
-
void ClientChannelFilter::
|
|
2127
|
+
void ClientChannelFilter::CallData::
|
|
2267
2128
|
RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
|
|
2268
2129
|
void* arg, grpc_error_handle error) {
|
|
2269
|
-
auto* calld = static_cast<
|
|
2130
|
+
auto* calld = static_cast<CallData*>(arg);
|
|
2270
2131
|
auto* chand = calld->chand();
|
|
2271
|
-
auto* service_config_call_data = GetServiceConfigCallData(calld->
|
|
2132
|
+
auto* service_config_call_data = GetServiceConfigCallData(calld->arena_);
|
|
2272
2133
|
GRPC_TRACE_LOG(client_channel_call, INFO)
|
|
2273
2134
|
<< "chand=" << chand << " calld=" << calld
|
|
2274
2135
|
<< ": got recv_trailing_metadata_ready: error=" << StatusToString(error)
|
|
@@ -2297,7 +2158,7 @@ class ClientChannelFilter::LoadBalancedCall::LbCallState final
|
|
|
2297
2158
|
ServiceConfigCallData::CallAttributeInterface* GetCallAttribute(
|
|
2298
2159
|
UniqueTypeName type) const override;
|
|
2299
2160
|
|
|
2300
|
-
|
|
2161
|
+
CallAttemptTracer* GetCallAttemptTracer() const override;
|
|
2301
2162
|
|
|
2302
2163
|
private:
|
|
2303
2164
|
LoadBalancedCall* lb_call_;
|
|
@@ -2314,10 +2175,10 @@ ClientChannelFilter::LoadBalancedCall::LbCallState::GetCallAttribute(
|
|
|
2314
2175
|
return service_config_call_data->GetCallAttribute(type);
|
|
2315
2176
|
}
|
|
2316
2177
|
|
|
2317
|
-
|
|
2178
|
+
CallAttemptTracer*
|
|
2318
2179
|
ClientChannelFilter::LoadBalancedCall::LbCallState::GetCallAttemptTracer()
|
|
2319
2180
|
const {
|
|
2320
|
-
return lb_call_->
|
|
2181
|
+
return lb_call_->call_attempt_tracer_;
|
|
2321
2182
|
}
|
|
2322
2183
|
|
|
2323
2184
|
//
|
|
@@ -2365,35 +2226,96 @@ class ClientChannelFilter::LoadBalancedCall::BackendMetricAccessor final
|
|
|
2365
2226
|
grpc_metadata_batch* recv_trailing_metadata_;
|
|
2366
2227
|
};
|
|
2367
2228
|
|
|
2229
|
+
//
|
|
2230
|
+
// ClientChannelFilter::LoadBalancedCall::LbQueuedCallCanceller
|
|
2231
|
+
//
|
|
2232
|
+
|
|
2233
|
+
// A class to handle the call combiner cancellation callback for a
|
|
2234
|
+
// queued pick.
|
|
2235
|
+
// TODO(roth): When we implement hedging support, we won't be able to
|
|
2236
|
+
// register a call combiner cancellation closure for each LB pick,
|
|
2237
|
+
// because there may be multiple LB picks happening in parallel.
|
|
2238
|
+
// Instead, we will probably need to maintain a list in the CallData
|
|
2239
|
+
// object of pending LB picks to be cancelled when the closure runs.
|
|
2240
|
+
class ClientChannelFilter::LoadBalancedCall::LbQueuedCallCanceller final {
|
|
2241
|
+
public:
|
|
2242
|
+
explicit LbQueuedCallCanceller(RefCountedPtr<LoadBalancedCall> lb_call)
|
|
2243
|
+
: lb_call_(std::move(lb_call)) {
|
|
2244
|
+
GRPC_CALL_STACK_REF(lb_call_->owning_call_, "LbQueuedCallCanceller");
|
|
2245
|
+
GRPC_CLOSURE_INIT(&closure_, &CancelLocked, this, nullptr);
|
|
2246
|
+
lb_call_->call_combiner_->SetNotifyOnCancel(&closure_);
|
|
2247
|
+
}
|
|
2248
|
+
|
|
2249
|
+
private:
|
|
2250
|
+
static void CancelLocked(void* arg, grpc_error_handle error) {
|
|
2251
|
+
auto* self = static_cast<LbQueuedCallCanceller*>(arg);
|
|
2252
|
+
auto* lb_call = self->lb_call_.get();
|
|
2253
|
+
auto* chand = lb_call->chand_;
|
|
2254
|
+
{
|
|
2255
|
+
MutexLock lock(&chand->lb_mu_);
|
|
2256
|
+
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
2257
|
+
<< "chand=" << chand << " lb_call=" << lb_call
|
|
2258
|
+
<< ": cancelling queued pick: error=" << StatusToString(error)
|
|
2259
|
+
<< " self=" << self
|
|
2260
|
+
<< " calld->pick_canceller=" << lb_call->lb_call_canceller_;
|
|
2261
|
+
if (lb_call->lb_call_canceller_ == self && !error.ok()) {
|
|
2262
|
+
lb_call->Commit();
|
|
2263
|
+
// Remove pick from list of queued picks.
|
|
2264
|
+
lb_call->RemoveCallFromLbQueuedCallsLocked();
|
|
2265
|
+
// Remove from queued picks list.
|
|
2266
|
+
chand->lb_queued_calls_.erase(self->lb_call_);
|
|
2267
|
+
// Fail pending batches on the call.
|
|
2268
|
+
lb_call->buffered_call_.Fail(
|
|
2269
|
+
error, BufferedCall::YieldCallCombinerIfPendingBatchesFound);
|
|
2270
|
+
}
|
|
2271
|
+
}
|
|
2272
|
+
// Unref lb_call before unreffing the call stack, since unreffing
|
|
2273
|
+
// the call stack may destroy the arena in which lb_call is allocated.
|
|
2274
|
+
auto* owning_call = lb_call->owning_call_;
|
|
2275
|
+
self->lb_call_.reset();
|
|
2276
|
+
GRPC_CALL_STACK_UNREF(owning_call, "LbQueuedCallCanceller");
|
|
2277
|
+
delete self;
|
|
2278
|
+
}
|
|
2279
|
+
|
|
2280
|
+
RefCountedPtr<LoadBalancedCall> lb_call_;
|
|
2281
|
+
grpc_closure closure_;
|
|
2282
|
+
};
|
|
2283
|
+
|
|
2368
2284
|
//
|
|
2369
2285
|
// ClientChannelFilter::LoadBalancedCall
|
|
2370
2286
|
//
|
|
2371
2287
|
|
|
2372
2288
|
namespace {
|
|
2373
2289
|
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
auto* call_tracer =
|
|
2377
|
-
arena->GetContext<CallTracerAnnotationInterface>());
|
|
2290
|
+
CallAttemptTracer* CreateCallAttemptTracer(Arena* arena,
|
|
2291
|
+
bool is_transparent_retry) {
|
|
2292
|
+
auto* call_tracer = arena->GetContext<ClientCallTracer>();
|
|
2378
2293
|
if (call_tracer == nullptr) return nullptr;
|
|
2379
|
-
auto* tracer =
|
|
2380
|
-
|
|
2294
|
+
auto* tracer = WrapCallAttemptTracer(
|
|
2295
|
+
call_tracer->StartNewAttempt(is_transparent_retry), arena);
|
|
2296
|
+
arena->SetContext<CallTracer>(tracer);
|
|
2381
2297
|
return tracer;
|
|
2382
2298
|
}
|
|
2383
2299
|
|
|
2384
2300
|
} // namespace
|
|
2385
2301
|
|
|
2386
2302
|
ClientChannelFilter::LoadBalancedCall::LoadBalancedCall(
|
|
2387
|
-
ClientChannelFilter* chand,
|
|
2303
|
+
ClientChannelFilter* chand, const grpc_call_element_args& args,
|
|
2304
|
+
grpc_polling_entity* pollent, grpc_closure* on_call_destruction_complete,
|
|
2388
2305
|
absl::AnyInvocable<void()> on_commit, bool is_transparent_retry)
|
|
2389
2306
|
: InternallyRefCounted(GRPC_TRACE_FLAG_ENABLED(client_channel_lb_call)
|
|
2390
2307
|
? "LoadBalancedCall"
|
|
2391
2308
|
: nullptr),
|
|
2392
2309
|
chand_(chand),
|
|
2393
2310
|
call_attempt_tracer_(
|
|
2394
|
-
CreateCallAttemptTracer(arena, is_transparent_retry)),
|
|
2311
|
+
CreateCallAttemptTracer(args.arena, is_transparent_retry)),
|
|
2312
|
+
owning_call_(args.call_stack),
|
|
2313
|
+
call_combiner_(args.call_combiner),
|
|
2314
|
+
pollent_(pollent),
|
|
2315
|
+
on_call_destruction_complete_(on_call_destruction_complete),
|
|
2316
|
+
arena_(args.arena),
|
|
2395
2317
|
on_commit_(std::move(on_commit)),
|
|
2396
|
-
|
|
2318
|
+
buffered_call_(call_combiner_, &client_channel_lb_call_trace) {
|
|
2397
2319
|
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
2398
2320
|
<< "chand=" << chand_ << " lb_call=" << this << ": created";
|
|
2399
2321
|
}
|
|
@@ -2402,6 +2324,22 @@ ClientChannelFilter::LoadBalancedCall::~LoadBalancedCall() {
|
|
|
2402
2324
|
if (backend_metric_data_ != nullptr) {
|
|
2403
2325
|
backend_metric_data_->BackendMetricData::~BackendMetricData();
|
|
2404
2326
|
}
|
|
2327
|
+
if (on_call_destruction_complete_ != nullptr) {
|
|
2328
|
+
ExecCtx::Run(DEBUG_LOCATION, on_call_destruction_complete_,
|
|
2329
|
+
absl::OkStatus());
|
|
2330
|
+
}
|
|
2331
|
+
}
|
|
2332
|
+
|
|
2333
|
+
void ClientChannelFilter::LoadBalancedCall::Orphan() {
|
|
2334
|
+
// If the recv_trailing_metadata op was never started, then notify
|
|
2335
|
+
// about call completion here, as best we can. We assume status
|
|
2336
|
+
// CANCELLED in this case.
|
|
2337
|
+
if (recv_trailing_metadata_ == nullptr) {
|
|
2338
|
+
RecordCallCompletion(absl::CancelledError("call cancelled"), nullptr,
|
|
2339
|
+
nullptr, "");
|
|
2340
|
+
}
|
|
2341
|
+
RecordLatency();
|
|
2342
|
+
Unref();
|
|
2405
2343
|
}
|
|
2406
2344
|
|
|
2407
2345
|
void ClientChannelFilter::LoadBalancedCall::RecordCallCompletion(
|
|
@@ -2409,8 +2347,8 @@ void ClientChannelFilter::LoadBalancedCall::RecordCallCompletion(
|
|
|
2409
2347
|
grpc_transport_stream_stats* transport_stream_stats,
|
|
2410
2348
|
absl::string_view peer_address) {
|
|
2411
2349
|
// If we have a tracer, notify it.
|
|
2412
|
-
if (
|
|
2413
|
-
|
|
2350
|
+
if (call_attempt_tracer_ != nullptr) {
|
|
2351
|
+
call_attempt_tracer_->RecordReceivedTrailingMetadata(
|
|
2414
2352
|
status, recv_trailing_metadata, transport_stream_stats);
|
|
2415
2353
|
}
|
|
2416
2354
|
// If the LB policy requested a callback for trailing metadata, invoke
|
|
@@ -2427,10 +2365,8 @@ void ClientChannelFilter::LoadBalancedCall::RecordCallCompletion(
|
|
|
2427
2365
|
|
|
2428
2366
|
void ClientChannelFilter::LoadBalancedCall::RecordLatency() {
|
|
2429
2367
|
// Compute latency and report it to the tracer.
|
|
2430
|
-
if (
|
|
2431
|
-
|
|
2432
|
-
gpr_cycle_counter_sub(gpr_get_cycle_counter(), lb_call_start_time_);
|
|
2433
|
-
call_attempt_tracer()->RecordEnd(latency);
|
|
2368
|
+
if (call_attempt_tracer_ != nullptr) {
|
|
2369
|
+
call_attempt_tracer_->RecordEnd();
|
|
2434
2370
|
}
|
|
2435
2371
|
}
|
|
2436
2372
|
|
|
@@ -2440,7 +2376,7 @@ void ClientChannelFilter::LoadBalancedCall::
|
|
|
2440
2376
|
<< "chand=" << chand_ << " lb_call=" << this
|
|
2441
2377
|
<< ": removing from queued picks list";
|
|
2442
2378
|
// Remove pollset_set linkage.
|
|
2443
|
-
grpc_polling_entity_del_from_pollset_set(
|
|
2379
|
+
grpc_polling_entity_del_from_pollset_set(pollent_,
|
|
2444
2380
|
chand_->interested_parties_);
|
|
2445
2381
|
// Note: There's no need to actually remove the call from the queue
|
|
2446
2382
|
// here, because that will be done in either
|
|
@@ -2454,11 +2390,12 @@ void ClientChannelFilter::LoadBalancedCall::AddCallToLbQueuedCallsLocked() {
|
|
|
2454
2390
|
<< ": adding to queued picks list";
|
|
2455
2391
|
// Add call's pollent to channel's interested_parties, so that I/O
|
|
2456
2392
|
// can be done under the call's CQ.
|
|
2457
|
-
grpc_polling_entity_add_to_pollset_set(
|
|
2458
|
-
chand_->interested_parties_);
|
|
2393
|
+
grpc_polling_entity_add_to_pollset_set(pollent_, chand_->interested_parties_);
|
|
2459
2394
|
// Add to queue.
|
|
2460
2395
|
chand_->lb_queued_calls_.insert(Ref());
|
|
2461
|
-
|
|
2396
|
+
// Register call combiner cancellation callback.
|
|
2397
|
+
lb_call_canceller_ =
|
|
2398
|
+
new LbQueuedCallCanceller(RefAsSubclass<LoadBalancedCall>());
|
|
2462
2399
|
}
|
|
2463
2400
|
|
|
2464
2401
|
std::optional<absl::Status>
|
|
@@ -2506,8 +2443,8 @@ ClientChannelFilter::LoadBalancedCall::PickSubchannel(bool was_queued) {
|
|
|
2506
2443
|
}
|
|
2507
2444
|
// Pick is complete.
|
|
2508
2445
|
// If it was queued, add a trace annotation.
|
|
2509
|
-
if (was_queued &&
|
|
2510
|
-
|
|
2446
|
+
if (was_queued && call_attempt_tracer_ != nullptr) {
|
|
2447
|
+
call_attempt_tracer_->RecordAnnotation("Delayed LB pick complete.");
|
|
2511
2448
|
}
|
|
2512
2449
|
// If the pick failed, fail the call.
|
|
2513
2450
|
if (!error.ok()) {
|
|
@@ -2524,11 +2461,11 @@ ClientChannelFilter::LoadBalancedCall::PickSubchannel(bool was_queued) {
|
|
|
2524
2461
|
|
|
2525
2462
|
bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
|
|
2526
2463
|
LoadBalancingPolicy::SubchannelPicker* picker, grpc_error_handle* error) {
|
|
2527
|
-
|
|
2464
|
+
GRPC_CHECK(connected_subchannel_ == nullptr);
|
|
2528
2465
|
// Perform LB pick.
|
|
2529
2466
|
LoadBalancingPolicy::PickArgs pick_args;
|
|
2530
2467
|
Slice* path = send_initial_metadata()->get_pointer(HttpPathMetadata());
|
|
2531
|
-
|
|
2468
|
+
GRPC_CHECK_NE(path, nullptr);
|
|
2532
2469
|
pick_args.path = path->as_string_view();
|
|
2533
2470
|
LbCallState lb_call_state(this);
|
|
2534
2471
|
pick_args.call_state = &lb_call_state;
|
|
@@ -2543,7 +2480,7 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
|
|
|
2543
2480
|
<< "chand=" << chand_ << " lb_call=" << this
|
|
2544
2481
|
<< ": LB pick succeeded: subchannel="
|
|
2545
2482
|
<< complete_pick->subchannel.get();
|
|
2546
|
-
|
|
2483
|
+
GRPC_CHECK(complete_pick->subchannel != nullptr);
|
|
2547
2484
|
// Grab a ref to the connected subchannel while we're still
|
|
2548
2485
|
// holding the data plane mutex.
|
|
2549
2486
|
SubchannelWrapper* subchannel =
|
|
@@ -2562,9 +2499,6 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
|
|
|
2562
2499
|
}
|
|
2563
2500
|
lb_subchannel_call_tracker_ =
|
|
2564
2501
|
std::move(complete_pick->subchannel_call_tracker);
|
|
2565
|
-
if (lb_subchannel_call_tracker_ != nullptr) {
|
|
2566
|
-
lb_subchannel_call_tracker_->Start();
|
|
2567
|
-
}
|
|
2568
2502
|
// Handle metadata mutations.
|
|
2569
2503
|
MetadataMutationHandler::Apply(complete_pick->metadata_mutations,
|
|
2570
2504
|
send_initial_metadata());
|
|
@@ -2609,177 +2543,28 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
|
|
|
2609
2543
|
});
|
|
2610
2544
|
}
|
|
2611
2545
|
|
|
2612
|
-
|
|
2613
|
-
// ClientChannelFilter::FilterBasedLoadBalancedCall
|
|
2614
|
-
//
|
|
2615
|
-
|
|
2616
|
-
ClientChannelFilter::FilterBasedLoadBalancedCall::FilterBasedLoadBalancedCall(
|
|
2617
|
-
ClientChannelFilter* chand, const grpc_call_element_args& args,
|
|
2618
|
-
grpc_polling_entity* pollent, grpc_closure* on_call_destruction_complete,
|
|
2619
|
-
absl::AnyInvocable<void()> on_commit, bool is_transparent_retry)
|
|
2620
|
-
: LoadBalancedCall(chand, args.arena, std::move(on_commit),
|
|
2621
|
-
is_transparent_retry),
|
|
2622
|
-
owning_call_(args.call_stack),
|
|
2623
|
-
call_combiner_(args.call_combiner),
|
|
2624
|
-
pollent_(pollent),
|
|
2625
|
-
on_call_destruction_complete_(on_call_destruction_complete) {}
|
|
2626
|
-
|
|
2627
|
-
ClientChannelFilter::FilterBasedLoadBalancedCall::
|
|
2628
|
-
~FilterBasedLoadBalancedCall() {
|
|
2629
|
-
// Make sure there are no remaining pending batches.
|
|
2630
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
|
2631
|
-
CHECK_EQ(pending_batches_[i], nullptr);
|
|
2632
|
-
}
|
|
2633
|
-
if (on_call_destruction_complete_ != nullptr) {
|
|
2634
|
-
ExecCtx::Run(DEBUG_LOCATION, on_call_destruction_complete_,
|
|
2635
|
-
absl::OkStatus());
|
|
2636
|
-
}
|
|
2637
|
-
}
|
|
2638
|
-
|
|
2639
|
-
void ClientChannelFilter::FilterBasedLoadBalancedCall::Orphan() {
|
|
2640
|
-
// If the recv_trailing_metadata op was never started, then notify
|
|
2641
|
-
// about call completion here, as best we can. We assume status
|
|
2642
|
-
// CANCELLED in this case.
|
|
2643
|
-
if (recv_trailing_metadata_ == nullptr) {
|
|
2644
|
-
RecordCallCompletion(absl::CancelledError("call cancelled"), nullptr,
|
|
2645
|
-
nullptr, "");
|
|
2646
|
-
}
|
|
2647
|
-
RecordLatency();
|
|
2648
|
-
// Delegate to parent.
|
|
2649
|
-
LoadBalancedCall::Orphan();
|
|
2650
|
-
}
|
|
2651
|
-
|
|
2652
|
-
size_t ClientChannelFilter::FilterBasedLoadBalancedCall::GetBatchIndex(
|
|
2653
|
-
grpc_transport_stream_op_batch* batch) {
|
|
2654
|
-
// Note: It is important the send_initial_metadata be the first entry
|
|
2655
|
-
// here, since the code in PickSubchannelImpl() assumes it will be.
|
|
2656
|
-
if (batch->send_initial_metadata) return 0;
|
|
2657
|
-
if (batch->send_message) return 1;
|
|
2658
|
-
if (batch->send_trailing_metadata) return 2;
|
|
2659
|
-
if (batch->recv_initial_metadata) return 3;
|
|
2660
|
-
if (batch->recv_message) return 4;
|
|
2661
|
-
if (batch->recv_trailing_metadata) return 5;
|
|
2662
|
-
GPR_UNREACHABLE_CODE(return (size_t)-1);
|
|
2663
|
-
}
|
|
2664
|
-
|
|
2665
|
-
// This is called via the call combiner, so access to calld is synchronized.
|
|
2666
|
-
void ClientChannelFilter::FilterBasedLoadBalancedCall::PendingBatchesAdd(
|
|
2546
|
+
void ClientChannelFilter::LoadBalancedCall::StartTransportStreamOpBatch(
|
|
2667
2547
|
grpc_transport_stream_op_batch* batch) {
|
|
2668
|
-
const size_t idx = GetBatchIndex(batch);
|
|
2669
|
-
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
2670
|
-
<< "chand=" << chand() << " lb_call=" << this
|
|
2671
|
-
<< ": adding pending batch at index " << idx;
|
|
2672
|
-
CHECK_EQ(pending_batches_[idx], nullptr);
|
|
2673
|
-
pending_batches_[idx] = batch;
|
|
2674
|
-
}
|
|
2675
|
-
|
|
2676
|
-
// This is called via the call combiner, so access to calld is synchronized.
|
|
2677
|
-
void ClientChannelFilter::FilterBasedLoadBalancedCall::
|
|
2678
|
-
FailPendingBatchInCallCombiner(void* arg, grpc_error_handle error) {
|
|
2679
|
-
grpc_transport_stream_op_batch* batch =
|
|
2680
|
-
static_cast<grpc_transport_stream_op_batch*>(arg);
|
|
2681
|
-
auto* self = static_cast<FilterBasedLoadBalancedCall*>(
|
|
2682
|
-
batch->handler_private.extra_arg);
|
|
2683
|
-
// Note: This will release the call combiner.
|
|
2684
|
-
grpc_transport_stream_op_batch_finish_with_failure(batch, error,
|
|
2685
|
-
self->call_combiner_);
|
|
2686
|
-
}
|
|
2687
|
-
|
|
2688
|
-
// This is called via the call combiner, so access to calld is synchronized.
|
|
2689
|
-
void ClientChannelFilter::FilterBasedLoadBalancedCall::PendingBatchesFail(
|
|
2690
|
-
grpc_error_handle error,
|
|
2691
|
-
YieldCallCombinerPredicate yield_call_combiner_predicate) {
|
|
2692
|
-
CHECK(!error.ok());
|
|
2693
|
-
failure_error_ = error;
|
|
2694
|
-
if (GRPC_TRACE_FLAG_ENABLED(client_channel_lb_call)) {
|
|
2695
|
-
size_t num_batches = 0;
|
|
2696
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
|
2697
|
-
if (pending_batches_[i] != nullptr) ++num_batches;
|
|
2698
|
-
}
|
|
2699
|
-
LOG(INFO) << "chand=" << chand() << " lb_call=" << this << ": failing "
|
|
2700
|
-
<< num_batches << " pending batches: " << StatusToString(error);
|
|
2701
|
-
}
|
|
2702
|
-
CallCombinerClosureList closures;
|
|
2703
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
|
2704
|
-
grpc_transport_stream_op_batch*& batch = pending_batches_[i];
|
|
2705
|
-
if (batch != nullptr) {
|
|
2706
|
-
batch->handler_private.extra_arg = this;
|
|
2707
|
-
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
|
2708
|
-
FailPendingBatchInCallCombiner, batch,
|
|
2709
|
-
grpc_schedule_on_exec_ctx);
|
|
2710
|
-
closures.Add(&batch->handler_private.closure, error,
|
|
2711
|
-
"PendingBatchesFail");
|
|
2712
|
-
batch = nullptr;
|
|
2713
|
-
}
|
|
2714
|
-
}
|
|
2715
|
-
if (yield_call_combiner_predicate(closures)) {
|
|
2716
|
-
closures.RunClosures(call_combiner_);
|
|
2717
|
-
} else {
|
|
2718
|
-
closures.RunClosuresWithoutYielding(call_combiner_);
|
|
2719
|
-
}
|
|
2720
|
-
}
|
|
2721
|
-
|
|
2722
|
-
// This is called via the call combiner, so access to calld is synchronized.
|
|
2723
|
-
void ClientChannelFilter::FilterBasedLoadBalancedCall::
|
|
2724
|
-
ResumePendingBatchInCallCombiner(void* arg, grpc_error_handle /*ignored*/) {
|
|
2725
|
-
grpc_transport_stream_op_batch* batch =
|
|
2726
|
-
static_cast<grpc_transport_stream_op_batch*>(arg);
|
|
2727
|
-
SubchannelCall* subchannel_call =
|
|
2728
|
-
static_cast<SubchannelCall*>(batch->handler_private.extra_arg);
|
|
2729
|
-
// Note: This will release the call combiner.
|
|
2730
|
-
subchannel_call->StartTransportStreamOpBatch(batch);
|
|
2731
|
-
}
|
|
2732
|
-
|
|
2733
|
-
// This is called via the call combiner, so access to calld is synchronized.
|
|
2734
|
-
void ClientChannelFilter::FilterBasedLoadBalancedCall::PendingBatchesResume() {
|
|
2735
|
-
if (GRPC_TRACE_FLAG_ENABLED(client_channel_lb_call)) {
|
|
2736
|
-
size_t num_batches = 0;
|
|
2737
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
|
2738
|
-
if (pending_batches_[i] != nullptr) ++num_batches;
|
|
2739
|
-
}
|
|
2740
|
-
LOG(INFO) << "chand=" << chand() << " lb_call=" << this << ": starting "
|
|
2741
|
-
<< num_batches << " pending batches on subchannel_call="
|
|
2742
|
-
<< subchannel_call_.get();
|
|
2743
|
-
}
|
|
2744
|
-
CallCombinerClosureList closures;
|
|
2745
|
-
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
|
|
2746
|
-
grpc_transport_stream_op_batch*& batch = pending_batches_[i];
|
|
2747
|
-
if (batch != nullptr) {
|
|
2748
|
-
batch->handler_private.extra_arg = subchannel_call_.get();
|
|
2749
|
-
GRPC_CLOSURE_INIT(&batch->handler_private.closure,
|
|
2750
|
-
ResumePendingBatchInCallCombiner, batch,
|
|
2751
|
-
grpc_schedule_on_exec_ctx);
|
|
2752
|
-
closures.Add(&batch->handler_private.closure, absl::OkStatus(),
|
|
2753
|
-
"resuming pending batch from LB call");
|
|
2754
|
-
batch = nullptr;
|
|
2755
|
-
}
|
|
2756
|
-
}
|
|
2757
|
-
// Note: This will release the call combiner.
|
|
2758
|
-
closures.RunClosures(call_combiner_);
|
|
2759
|
-
}
|
|
2760
|
-
|
|
2761
|
-
void ClientChannelFilter::FilterBasedLoadBalancedCall::
|
|
2762
|
-
StartTransportStreamOpBatch(grpc_transport_stream_op_batch* batch) {
|
|
2763
2548
|
if (GRPC_TRACE_FLAG_ENABLED(client_channel_lb_call) ||
|
|
2764
2549
|
GRPC_TRACE_FLAG_ENABLED(channel)) {
|
|
2765
|
-
LOG(INFO) << "chand=" <<
|
|
2550
|
+
LOG(INFO) << "chand=" << chand_ << " lb_call=" << this
|
|
2766
2551
|
<< ": batch started from above: "
|
|
2767
2552
|
<< grpc_transport_stream_op_batch_string(batch, false)
|
|
2768
|
-
<< ",
|
|
2553
|
+
<< ", call_attempt_tracer_=" << call_attempt_tracer_;
|
|
2769
2554
|
}
|
|
2770
2555
|
// Handle call tracing.
|
|
2771
|
-
if (
|
|
2556
|
+
if (call_attempt_tracer_ != nullptr) {
|
|
2772
2557
|
// Record send ops in tracer.
|
|
2773
2558
|
if (batch->cancel_stream) {
|
|
2774
|
-
|
|
2559
|
+
call_attempt_tracer_->RecordCancel(
|
|
2775
2560
|
batch->payload->cancel_stream.cancel_error);
|
|
2776
2561
|
}
|
|
2777
2562
|
if (batch->send_initial_metadata) {
|
|
2778
|
-
|
|
2563
|
+
call_attempt_tracer_->RecordSendInitialMetadata(
|
|
2779
2564
|
batch->payload->send_initial_metadata.send_initial_metadata);
|
|
2780
2565
|
}
|
|
2781
2566
|
if (batch->send_trailing_metadata) {
|
|
2782
|
-
|
|
2567
|
+
call_attempt_tracer_->RecordSendTrailingMetadata(
|
|
2783
2568
|
batch->payload->send_trailing_metadata.send_trailing_metadata);
|
|
2784
2569
|
}
|
|
2785
2570
|
// Intercept recv ops.
|
|
@@ -2814,7 +2599,7 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
|
|
|
2814
2599
|
// streaming calls).
|
|
2815
2600
|
if (subchannel_call_ != nullptr) {
|
|
2816
2601
|
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
2817
|
-
<< "chand=" <<
|
|
2602
|
+
<< "chand=" << chand_ << " lb_call=" << this
|
|
2818
2603
|
<< ": starting batch on subchannel_call=" << subchannel_call_.get();
|
|
2819
2604
|
subchannel_call_->StartTransportStreamOpBatch(batch);
|
|
2820
2605
|
return;
|
|
@@ -2824,7 +2609,7 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
|
|
|
2824
2609
|
// If we've previously been cancelled, immediately fail any new batches.
|
|
2825
2610
|
if (GPR_UNLIKELY(!cancel_error_.ok())) {
|
|
2826
2611
|
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
2827
|
-
<< "chand=" <<
|
|
2612
|
+
<< "chand=" << chand_ << " lb_call=" << this
|
|
2828
2613
|
<< ": failing batch with error: " << StatusToString(cancel_error_);
|
|
2829
2614
|
// Note: This will release the call combiner.
|
|
2830
2615
|
grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
|
|
@@ -2840,17 +2625,17 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
|
|
|
2840
2625
|
// error to the caller when the first batch does get passed down.
|
|
2841
2626
|
cancel_error_ = batch->payload->cancel_stream.cancel_error;
|
|
2842
2627
|
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
2843
|
-
<< "chand=" <<
|
|
2628
|
+
<< "chand=" << chand_ << " lb_call=" << this
|
|
2844
2629
|
<< ": recording cancel_error=" << StatusToString(cancel_error_).c_str();
|
|
2845
2630
|
// Fail all pending batches.
|
|
2846
|
-
|
|
2631
|
+
buffered_call_.Fail(cancel_error_, BufferedCall::NoYieldCallCombiner);
|
|
2847
2632
|
// Note: This will release the call combiner.
|
|
2848
2633
|
grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
|
|
2849
2634
|
call_combiner_);
|
|
2850
2635
|
return;
|
|
2851
2636
|
}
|
|
2852
2637
|
// Add the batch to the pending list.
|
|
2853
|
-
|
|
2638
|
+
buffered_call_.EnqueueBatch(batch);
|
|
2854
2639
|
// For batches containing a send_initial_metadata op, acquire the
|
|
2855
2640
|
// channel's LB mutex to pick a subchannel.
|
|
2856
2641
|
if (GPR_LIKELY(batch->send_initial_metadata)) {
|
|
@@ -2858,22 +2643,22 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
|
|
|
2858
2643
|
} else {
|
|
2859
2644
|
// For all other batches, release the call combiner.
|
|
2860
2645
|
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
2861
|
-
<< "chand=" <<
|
|
2646
|
+
<< "chand=" << chand_ << " lb_call=" << this
|
|
2862
2647
|
<< ": saved batch, yielding call combiner";
|
|
2863
2648
|
GRPC_CALL_COMBINER_STOP(call_combiner_,
|
|
2864
2649
|
"batch does not include send_initial_metadata");
|
|
2865
2650
|
}
|
|
2866
2651
|
}
|
|
2867
2652
|
|
|
2868
|
-
void ClientChannelFilter::
|
|
2653
|
+
void ClientChannelFilter::LoadBalancedCall::RecvInitialMetadataReady(
|
|
2869
2654
|
void* arg, grpc_error_handle error) {
|
|
2870
|
-
auto* self = static_cast<
|
|
2655
|
+
auto* self = static_cast<LoadBalancedCall*>(arg);
|
|
2871
2656
|
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
2872
|
-
<< "chand=" << self->
|
|
2657
|
+
<< "chand=" << self->chand_ << " lb_call=" << self
|
|
2873
2658
|
<< ": got recv_initial_metadata_ready: error=" << StatusToString(error);
|
|
2874
2659
|
if (error.ok()) {
|
|
2875
2660
|
// recv_initial_metadata_flags is not populated for clients
|
|
2876
|
-
self->
|
|
2661
|
+
self->call_attempt_tracer_->RecordReceivedInitialMetadata(
|
|
2877
2662
|
self->recv_initial_metadata_);
|
|
2878
2663
|
auto* peer_string = self->recv_initial_metadata_->get_pointer(PeerString());
|
|
2879
2664
|
if (peer_string != nullptr) self->peer_string_ = peer_string->Ref();
|
|
@@ -2882,27 +2667,28 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::RecvInitialMetadataReady(
|
|
|
2882
2667
|
error);
|
|
2883
2668
|
}
|
|
2884
2669
|
|
|
2885
|
-
void ClientChannelFilter::
|
|
2886
|
-
|
|
2887
|
-
auto* self = static_cast<
|
|
2670
|
+
void ClientChannelFilter::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
2671
|
+
void* arg, grpc_error_handle error) {
|
|
2672
|
+
auto* self = static_cast<LoadBalancedCall*>(arg);
|
|
2888
2673
|
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
2889
|
-
<< "chand=" << self->
|
|
2674
|
+
<< "chand=" << self->chand_ << " lb_call=" << self
|
|
2890
2675
|
<< ": got recv_trailing_metadata_ready: error=" << StatusToString(error)
|
|
2891
|
-
<< "
|
|
2892
|
-
<< " lb_subchannel_call_tracker_="
|
|
2676
|
+
<< " call_attempt_tracer_=" << self->call_attempt_tracer_
|
|
2677
|
+
<< " lb_subchannel_call_tracker_="
|
|
2678
|
+
<< self->lb_subchannel_call_tracker_.get()
|
|
2893
2679
|
<< " failure_error_=" << StatusToString(self->failure_error_);
|
|
2894
2680
|
// Check if we have a tracer or an LB callback to invoke.
|
|
2895
|
-
if (self->
|
|
2896
|
-
self->
|
|
2681
|
+
if (self->call_attempt_tracer_ != nullptr ||
|
|
2682
|
+
self->lb_subchannel_call_tracker_ != nullptr) {
|
|
2897
2683
|
// Get the call's status.
|
|
2898
2684
|
absl::Status status;
|
|
2899
2685
|
if (!error.ok()) {
|
|
2900
2686
|
// Get status from error.
|
|
2901
2687
|
grpc_status_code code;
|
|
2902
2688
|
std::string message;
|
|
2903
|
-
grpc_error_get_status(
|
|
2904
|
-
|
|
2905
|
-
|
|
2689
|
+
grpc_error_get_status(error, self->arena_->GetContext<Call>()->deadline(),
|
|
2690
|
+
&code, &message,
|
|
2691
|
+
/*http_error=*/nullptr, /*error_string=*/nullptr);
|
|
2906
2692
|
status = absl::Status(static_cast<absl::StatusCode>(code), message);
|
|
2907
2693
|
} else {
|
|
2908
2694
|
// Get status from headers.
|
|
@@ -2933,78 +2719,18 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::
|
|
|
2933
2719
|
error);
|
|
2934
2720
|
}
|
|
2935
2721
|
|
|
2936
|
-
|
|
2937
|
-
// queued pick.
|
|
2938
|
-
// TODO(roth): When we implement hedging support, we won't be able to
|
|
2939
|
-
// register a call combiner cancellation closure for each LB pick,
|
|
2940
|
-
// because there may be multiple LB picks happening in parallel.
|
|
2941
|
-
// Instead, we will probably need to maintain a list in the CallData
|
|
2942
|
-
// object of pending LB picks to be cancelled when the closure runs.
|
|
2943
|
-
class ClientChannelFilter::FilterBasedLoadBalancedCall::LbQueuedCallCanceller
|
|
2944
|
-
final {
|
|
2945
|
-
public:
|
|
2946
|
-
explicit LbQueuedCallCanceller(
|
|
2947
|
-
RefCountedPtr<FilterBasedLoadBalancedCall> lb_call)
|
|
2948
|
-
: lb_call_(std::move(lb_call)) {
|
|
2949
|
-
GRPC_CALL_STACK_REF(lb_call_->owning_call_, "LbQueuedCallCanceller");
|
|
2950
|
-
GRPC_CLOSURE_INIT(&closure_, &CancelLocked, this, nullptr);
|
|
2951
|
-
lb_call_->call_combiner_->SetNotifyOnCancel(&closure_);
|
|
2952
|
-
}
|
|
2953
|
-
|
|
2954
|
-
private:
|
|
2955
|
-
static void CancelLocked(void* arg, grpc_error_handle error) {
|
|
2956
|
-
auto* self = static_cast<LbQueuedCallCanceller*>(arg);
|
|
2957
|
-
auto* lb_call = self->lb_call_.get();
|
|
2958
|
-
auto* chand = lb_call->chand();
|
|
2959
|
-
{
|
|
2960
|
-
MutexLock lock(&chand->lb_mu_);
|
|
2961
|
-
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
2962
|
-
<< "chand=" << chand << " lb_call=" << lb_call
|
|
2963
|
-
<< ": cancelling queued pick: error=" << StatusToString(error)
|
|
2964
|
-
<< " self=" << self
|
|
2965
|
-
<< " calld->pick_canceller=" << lb_call->lb_call_canceller_;
|
|
2966
|
-
if (lb_call->lb_call_canceller_ == self && !error.ok()) {
|
|
2967
|
-
lb_call->Commit();
|
|
2968
|
-
// Remove pick from list of queued picks.
|
|
2969
|
-
lb_call->RemoveCallFromLbQueuedCallsLocked();
|
|
2970
|
-
// Remove from queued picks list.
|
|
2971
|
-
chand->lb_queued_calls_.erase(self->lb_call_);
|
|
2972
|
-
// Fail pending batches on the call.
|
|
2973
|
-
lb_call->PendingBatchesFail(error,
|
|
2974
|
-
YieldCallCombinerIfPendingBatchesFound);
|
|
2975
|
-
}
|
|
2976
|
-
}
|
|
2977
|
-
// Unref lb_call before unreffing the call stack, since unreffing
|
|
2978
|
-
// the call stack may destroy the arena in which lb_call is allocated.
|
|
2979
|
-
auto* owning_call = lb_call->owning_call_;
|
|
2980
|
-
self->lb_call_.reset();
|
|
2981
|
-
GRPC_CALL_STACK_UNREF(owning_call, "LbQueuedCallCanceller");
|
|
2982
|
-
delete self;
|
|
2983
|
-
}
|
|
2984
|
-
|
|
2985
|
-
RefCountedPtr<FilterBasedLoadBalancedCall> lb_call_;
|
|
2986
|
-
grpc_closure closure_;
|
|
2987
|
-
};
|
|
2988
|
-
|
|
2989
|
-
void ClientChannelFilter::FilterBasedLoadBalancedCall::TryPick(
|
|
2990
|
-
bool was_queued) {
|
|
2722
|
+
void ClientChannelFilter::LoadBalancedCall::TryPick(bool was_queued) {
|
|
2991
2723
|
auto result = PickSubchannel(was_queued);
|
|
2992
2724
|
if (result.has_value()) {
|
|
2993
2725
|
if (!result->ok()) {
|
|
2994
|
-
|
|
2726
|
+
buffered_call_.Fail(*result, BufferedCall::YieldCallCombiner);
|
|
2995
2727
|
return;
|
|
2996
2728
|
}
|
|
2997
2729
|
CreateSubchannelCall();
|
|
2998
2730
|
}
|
|
2999
2731
|
}
|
|
3000
2732
|
|
|
3001
|
-
void ClientChannelFilter::
|
|
3002
|
-
// Register call combiner cancellation callback.
|
|
3003
|
-
lb_call_canceller_ =
|
|
3004
|
-
new LbQueuedCallCanceller(RefAsSubclass<FilterBasedLoadBalancedCall>());
|
|
3005
|
-
}
|
|
3006
|
-
|
|
3007
|
-
void ClientChannelFilter::FilterBasedLoadBalancedCall::RetryPickLocked() {
|
|
2733
|
+
void ClientChannelFilter::LoadBalancedCall::RetryPickLocked() {
|
|
3008
2734
|
// Lame the call combiner canceller.
|
|
3009
2735
|
lb_call_canceller_ = nullptr;
|
|
3010
2736
|
// Do an async callback to resume call processing, so that we're not
|
|
@@ -3033,17 +2759,17 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::RetryPickLocked() {
|
|
|
3033
2759
|
absl::OkStatus());
|
|
3034
2760
|
}
|
|
3035
2761
|
|
|
3036
|
-
void ClientChannelFilter::
|
|
2762
|
+
void ClientChannelFilter::LoadBalancedCall::CreateSubchannelCall() {
|
|
3037
2763
|
SubchannelCall::Args call_args = {
|
|
3038
|
-
|
|
3039
|
-
|
|
2764
|
+
connected_subchannel_->Ref(), pollent_, /*start_time=*/0,
|
|
2765
|
+
arena_->GetContext<Call>()->deadline(),
|
|
3040
2766
|
// TODO(roth): When we implement hedging support, we will probably
|
|
3041
2767
|
// need to use a separate call arena for each subchannel call.
|
|
3042
|
-
|
|
2768
|
+
arena_, call_combiner_};
|
|
3043
2769
|
grpc_error_handle error;
|
|
3044
2770
|
subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
|
|
3045
2771
|
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
3046
|
-
<< "chand=" <<
|
|
2772
|
+
<< "chand=" << chand_ << " lb_call=" << this
|
|
3047
2773
|
<< ": create subchannel_call=" << subchannel_call_.get()
|
|
3048
2774
|
<< ": error=" << StatusToString(error);
|
|
3049
2775
|
if (on_call_destruction_complete_ != nullptr) {
|
|
@@ -3051,9 +2777,13 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::CreateSubchannelCall() {
|
|
|
3051
2777
|
on_call_destruction_complete_ = nullptr;
|
|
3052
2778
|
}
|
|
3053
2779
|
if (GPR_UNLIKELY(!error.ok())) {
|
|
3054
|
-
|
|
2780
|
+
buffered_call_.Fail(error, BufferedCall::YieldCallCombiner);
|
|
3055
2781
|
} else {
|
|
3056
|
-
|
|
2782
|
+
buffered_call_.Resume([subchannel_call = subchannel_call_](
|
|
2783
|
+
grpc_transport_stream_op_batch* batch) {
|
|
2784
|
+
// Note: This will release the call combiner.
|
|
2785
|
+
subchannel_call->StartTransportStreamOpBatch(batch);
|
|
2786
|
+
});
|
|
3057
2787
|
}
|
|
3058
2788
|
}
|
|
3059
2789
|
|