grpc 1.83.1 → 1.84.0
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 +21 -17
- data/include/grpc/credentials.h +10 -0
- data/include/grpc/grpc_security_constants.h +2 -0
- data/include/grpc/impl/channel_arg_names.h +9 -0
- data/src/core/call/call_filters.h +4 -2
- data/src/core/call/client_call.cc +20 -8
- data/src/core/call/client_call.h +4 -0
- data/src/core/call/interception_chain.cc +2 -0
- data/src/core/call/interception_chain.h +14 -1
- data/src/core/call/metadata.cc +1 -3
- data/src/core/call/metadata_batch.h +13 -5
- data/src/core/call/server_call.cc +31 -14
- data/src/core/call/server_call.h +4 -0
- data/src/core/channelz/text_encode.cc +9 -4
- data/src/core/channelz/v2tov1/convert.cc +2 -2
- data/src/core/client_channel/backup_poller.cc +1 -2
- data/src/core/client_channel/client_channel.cc +6 -33
- data/src/core/client_channel/client_channel_filter.cc +22 -55
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_service_config.cc +3 -19
- data/src/core/client_channel/direct_channel.cc +7 -1
- data/src/core/client_channel/direct_channel.h +2 -2
- data/src/core/client_channel/load_balanced_call_destination.cc +5 -3
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -12
- data/src/core/client_channel/subchannel.cc +310 -1058
- data/src/core/client_channel/subchannel.h +44 -329
- data/src/core/client_channel/subchannel_metrics.cc +48 -0
- data/src/core/client_channel/subchannel_metrics.h +60 -0
- data/src/core/credentials/call/external/file_external_account_credentials.cc +1 -1
- data/src/core/credentials/call/external/url_external_account_credentials.cc +2 -3
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +8 -24
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +3 -6
- data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.cc +525 -0
- data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.h +138 -0
- data/src/core/credentials/call/json_util.h +1 -0
- data/src/core/credentials/call/jwt/json_token.cc +10 -2
- data/src/core/credentials/call/jwt/jwt_verifier.cc +15 -1
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +1 -1
- data/src/core/credentials/call/oauth2/oauth2_credentials.cc +42 -79
- data/src/core/credentials/call/oauth2/oauth2_credentials.h +2 -5
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +52 -31
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +21 -8
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +59 -72
- data/src/core/credentials/transport/ssl/ssl_credentials.h +9 -8
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +12 -6
- data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -4
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -18
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +9 -6
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +45 -56
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +5 -4
- data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.h +26 -0
- data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +1 -1
- data/src/core/credentials/transport/tls/load_system_roots.h +2 -6
- data/src/core/credentials/transport/tls/load_system_roots_fallback.cc +2 -4
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +13 -15
- data/src/core/credentials/transport/tls/load_system_roots_supported.h +3 -2
- data/src/core/credentials/transport/tls/load_system_roots_windows.cc +5 -8
- data/src/core/credentials/transport/tls/spiffe_utils.cc +1 -1
- data/src/core/credentials/transport/tls/ssl_utils.cc +39 -28
- data/src/core/credentials/transport/tls/ssl_utils.h +12 -49
- data/src/core/credentials/transport/tls/tls_security_connector.cc +48 -33
- data/src/core/credentials/transport/tls/tls_security_connector.h +31 -10
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +15 -11
- data/src/core/ext/filters/http/http_filters_plugin.cc +20 -9
- data/src/core/ext/filters/rbac/rbac_filter.cc +43 -21
- data/src/core/ext/filters/rbac/rbac_filter.h +21 -3
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -20
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +32 -67
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +78 -4
- data/src/core/ext/transport/chttp2/transport/frame.h +2 -0
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/goaway.h +7 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +5 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +141 -130
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +22 -22
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +402 -269
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +80 -49
- data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +1 -2
- data/src/core/ext/transport/chttp2/transport/http2_status.h +38 -37
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +178 -5
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +345 -5
- data/src/core/ext/transport/chttp2/transport/parsing.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +25 -5
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/read_context.h +30 -3
- data/src/core/ext/transport/chttp2/transport/stream.h +65 -23
- data/src/core/ext/transport/chttp2/transport/writing.cc +0 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +1 -5
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +4 -17
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb.h +1912 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.c +300 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.h +37 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb.h +187 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.c +64 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.h +31 -0
- data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb.h +2362 -0
- data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.c +556 -0
- data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.h +47 -0
- data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb_minitable.h +5 -5
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.c +453 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.h +67 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.h +37 -0
- data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +715 -0
- data/src/core/ext/upbdefs-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upbdefs.h +44 -44
- data/src/core/filter/auth/server_auth_filter.cc +2 -3
- data/src/core/filter/composite/composite_filter.cc +45 -33
- data/src/core/filter/composite/composite_filter.h +5 -4
- data/src/core/filter/ext_proc/ext_proc_filter.cc +224 -0
- data/src/core/filter/ext_proc/ext_proc_filter.h +155 -0
- data/src/core/filter/ext_proc/ext_proc_messages.cc +701 -0
- data/src/core/filter/ext_proc/ext_proc_messages.h +297 -0
- data/src/core/filter/filter_args.h +13 -2
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +30 -3
- data/src/core/handshaker/security/security_handshaker.cc +9 -6
- data/src/core/lib/channel/channel_stack.cc +3 -0
- data/src/core/lib/channel/channel_stack.h +2 -0
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -2
- data/src/core/lib/channel/promise_based_filter.cc +132 -20
- data/src/core/lib/channel/promise_based_filter.h +42 -12
- data/src/core/lib/compression/compression_internal.cc +4 -5
- data/src/core/lib/debug/trace_flags.cc +8 -0
- data/src/core/lib/debug/trace_flags.h +3 -0
- data/src/core/lib/event_engine/ares_resolver.cc +54 -50
- data/src/core/lib/event_engine/ares_resolver.h +3 -2
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +4 -10
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +74 -33
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +1 -3
- data/src/core/lib/experiments/experiments.cc +60 -96
- data/src/core/lib/experiments/experiments.h +34 -50
- data/src/core/lib/iomgr/cfstream_handle.cc +2 -6
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -10
- data/src/core/lib/iomgr/error.cc +2 -6
- data/src/core/lib/iomgr/error_cfstream.cc +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +5 -9
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +1 -1
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +1 -2
- data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
- data/src/core/lib/iomgr/iomgr_posix.cc +0 -4
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -4
- data/src/core/lib/iomgr/iomgr_windows.cc +0 -4
- data/src/core/lib/iomgr/socket_factory_posix.h +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +3 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/systemd_utils.cc +0 -1
- data/src/core/lib/iomgr/tcp_client.h +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +23 -15
- data/src/core/lib/iomgr/tcp_server.h +1 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +2 -3
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_windows.cc +5 -10
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/vsock.h +3 -1
- data/src/core/lib/resource_quota/memory_quota.cc +1 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +139 -56
- data/src/core/lib/security/authorization/rbac_policy.h +21 -3
- data/src/core/lib/surface/call.cc +3 -9
- data/src/core/lib/surface/call_utils.h +113 -0
- data/src/core/lib/surface/channel_create.cc +1 -1
- data/src/core/lib/surface/channel_create.h +0 -2
- data/src/core/lib/surface/channel_init.cc +77 -38
- data/src/core/lib/surface/channel_init.h +30 -16
- data/src/core/lib/surface/filter_stack_call.cc +5 -10
- data/src/core/lib/surface/init.cc +13 -27
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +0 -27
- data/src/core/lib/transport/error_utils.h +0 -16
- data/src/core/lib/transport/transport.h +7 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +2 -0
- data/src/core/load_balancing/rls/rls.cc +28 -11
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +33 -42
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.h +0 -2
- data/src/core/load_balancing/xds/cds.cc +3 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +0 -1
- data/src/core/mitigation_engine/mitigation.h +14 -5
- data/src/core/mitigation_engine/mitigation_engine.h +7 -3
- data/src/core/mitigation_engine/mitigation_provider.h +2 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +39 -8
- data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.cc → dns_resolver.cc} +42 -41
- data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.h → dns_resolver.h} +8 -5
- data/src/core/resolver/dns/{event_engine/service_config_helper.cc → service_config_helper.cc} +1 -1
- data/src/core/resolver/dns/{event_engine/service_config_helper.h → service_config_helper.h} +3 -3
- data/src/core/resolver/endpoint_addresses.h +3 -0
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +35 -9
- data/src/core/server/server.cc +2 -6
- data/src/core/server/server_config_selector.h +18 -3
- data/src/core/server/server_config_selector_filter.cc +178 -91
- data/src/core/server/server_config_selector_filter.h +58 -3
- data/src/core/server/xds_server_config_fetcher.cc +196 -129
- data/src/core/server/xds_server_config_fetcher.h +49 -0
- data/src/core/server/xds_server_config_fetcher_legacy.cc +41 -37
- data/src/core/telemetry/histogram.h +94 -14
- data/src/core/telemetry/instrument.cc +179 -74
- data/src/core/telemetry/instrument.h +78 -30
- data/src/core/telemetry/metrics.h +5 -0
- data/src/core/{resolver/dns/dns_resolver_plugin.h → telemetry/telemetry_label.h} +12 -8
- data/src/core/tsi/alts/crypt/aes_gcm.cc +10 -13
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +3 -1
- data/src/core/tsi/ssl_telemetry_utils.cc +216 -259
- data/src/core/tsi/ssl_telemetry_utils.h +12 -2
- data/src/core/tsi/ssl_transport_security.cc +238 -80
- data/src/core/tsi/ssl_transport_security.h +63 -33
- data/src/core/tsi/tls_telemetry.cc +31 -0
- data/src/core/tsi/tls_telemetry.h +47 -0
- data/src/core/tsi/transport_security.cc +2 -2
- data/src/core/tsi/transport_security.h +1 -1
- data/src/core/tsi/transport_security_interface.h +1 -1
- data/src/core/{resolver/dns/native/dns_resolver.h → util/address_sorting_init.cc} +21 -8
- data/src/core/{resolver/dns/c_ares/grpc_ares_wrapper_posix.cc → util/address_sorting_init.h} +7 -8
- data/src/core/util/http_client/httpcli.cc +16 -53
- data/src/core/util/http_client/httpcli.h +0 -7
- data/src/core/util/http_client/httpcli_security_connector.cc +13 -8
- data/src/core/util/linux/cpu.cc +1 -1
- data/src/core/util/load_file.cc +3 -9
- data/src/core/util/load_file.h +3 -4
- data/src/core/util/matchers.h +8 -0
- data/src/core/util/posix/cpu.cc +1 -1
- data/src/core/util/status_helper.cc +0 -20
- data/src/core/util/status_helper.h +3 -14
- data/src/core/xds/grpc/xds_audit_logger_registry.cc +51 -31
- data/src/core/xds/grpc/xds_audit_logger_registry.h +17 -3
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -10
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +8 -6
- data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +488 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc_builder.h +97 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +7 -7
- data/src/core/xds/grpc/xds_client_grpc.cc +4 -8
- data/src/core/xds/grpc/xds_client_grpc.h +0 -4
- data/src/core/xds/grpc/xds_cluster.h +1 -0
- data/src/core/xds/grpc/xds_cluster_parser.cc +1 -5
- data/src/core/xds/grpc/xds_cluster_parser.h +0 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +0 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +0 -2
- data/src/core/xds/grpc/xds_common_types.cc +0 -91
- data/src/core/xds/grpc/xds_common_types.h +1 -47
- data/src/core/xds/grpc/xds_common_types_parser.cc +84 -378
- data/src/core/xds/grpc/xds_common_types_parser.h +9 -11
- data/src/core/xds/grpc/xds_endpoint_parser.cc +0 -2
- data/src/core/xds/grpc/xds_grpc_service_parser.cc +177 -0
- data/src/core/{resolver/dns/c_ares/dns_resolver_ares.h → xds/grpc/xds_grpc_service_parser.h} +14 -9
- data/src/core/xds/grpc/xds_http_composite_filter.cc +26 -21
- data/src/core/xds/grpc/xds_http_composite_filter.h +4 -3
- data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +418 -0
- data/src/core/xds/grpc/xds_http_ext_proc_filter.h +89 -0
- data/src/core/xds/grpc/xds_http_fault_filter.cc +9 -12
- data/src/core/xds/grpc/xds_http_fault_filter.h +1 -4
- data/src/core/xds/grpc/xds_http_filter.cc +2 -1
- data/src/core/xds/grpc/xds_http_filter.h +6 -5
- data/src/core/xds/grpc/xds_http_filter_registry.cc +10 -127
- data/src/core/xds/grpc/xds_http_filter_registry.h +7 -59
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +13 -14
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +403 -25
- data/src/core/xds/grpc/xds_http_rbac_filter.h +1 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +8 -13
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +1 -4
- data/src/core/xds/grpc/xds_lb_policy_registry.cc +0 -292
- data/src/core/xds/grpc/xds_lb_policy_registry.h +7 -3
- data/src/core/xds/grpc/xds_listener.cc +2 -0
- data/src/core/xds/grpc/xds_listener.h +5 -0
- data/src/core/xds/grpc/xds_listener_parser.cc +16 -11
- data/src/core/xds/grpc/xds_matcher_parse.h +3 -1
- data/src/core/xds/grpc/xds_metadata_parser.cc +6 -1
- data/src/core/xds/grpc/xds_metadata_parser.h +2 -0
- data/src/core/xds/grpc/xds_route_config.cc +2 -0
- data/src/core/xds/grpc/xds_route_config.h +3 -1
- data/src/core/xds/grpc/xds_route_config_parser.cc +13 -79
- data/src/core/xds/grpc/xds_route_config_parser.h +0 -3
- data/src/core/xds/grpc/xds_routing.cc +116 -69
- data/src/core/xds/grpc/xds_routing.h +19 -8
- data/src/core/xds/grpc/xds_tls_context.cc +117 -0
- data/src/core/xds/grpc/xds_tls_context.h +76 -0
- data/src/core/xds/grpc/xds_tls_context_parser.cc +275 -0
- data/src/core/xds/grpc/xds_tls_context_parser.h +35 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +41 -38
- data/src/core/xds/grpc/xds_transport_grpc.h +4 -2
- data/src/ruby/ext/grpc/rb_call.c +26 -15
- data/src/ruby/ext/grpc/rb_completion_queue.c +6 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/test/client.rb +5 -4
- data/src/ruby/spec/call_spec.rb +14 -0
- data/src/ruby/spec/generic/server_interceptors_spec.rb +3 -6
- metadata +50 -35
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +0 -716
- data/src/core/lib/iomgr/resolve_address.cc +0 -59
- data/src/core/lib/iomgr/resolve_address.h +0 -125
- data/src/core/lib/iomgr/resolve_address_impl.h +0 -58
- data/src/core/lib/iomgr/resolve_address_posix.cc +0 -184
- data/src/core/lib/iomgr/resolve_address_posix.h +0 -78
- data/src/core/lib/iomgr/resolve_address_windows.cc +0 -169
- data/src/core/lib/iomgr/resolve_address_windows.h +0 -76
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +0 -781
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +0 -93
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +0 -203
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +0 -838
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +0 -1237
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +0 -130
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +0 -35
- data/src/core/resolver/dns/dns_resolver_plugin.cc +0 -64
- data/src/core/resolver/dns/native/dns_resolver.cc +0 -173
- data/src/core/util/json/json_util.cc +0 -101
- data/src/core/util/json/json_util.h +0 -163
|
@@ -602,35 +602,6 @@ class ClientChannelFilter::SubchannelWrapper final
|
|
|
602
602
|
<< parent_.get() << " subchannel " << parent_->subchannel_.get()
|
|
603
603
|
<< " watcher=" << watcher_.get()
|
|
604
604
|
<< " state=" << ConnectivityStateName(state) << " status=" << status;
|
|
605
|
-
if (!IsSubchannelConnectionScalingEnabled()) {
|
|
606
|
-
auto keepalive_throttling = status.GetPayload(kKeepaliveThrottlingKey);
|
|
607
|
-
if (keepalive_throttling.has_value()) {
|
|
608
|
-
int new_keepalive_time_ms = -1;
|
|
609
|
-
if (absl::SimpleAtoi(std::string(keepalive_throttling.value()),
|
|
610
|
-
&new_keepalive_time_ms)) {
|
|
611
|
-
Duration new_keepalive_time =
|
|
612
|
-
Duration::Milliseconds(new_keepalive_time_ms);
|
|
613
|
-
if (new_keepalive_time > parent_->chand_->keepalive_time_) {
|
|
614
|
-
parent_->chand_->keepalive_time_ = new_keepalive_time;
|
|
615
|
-
GRPC_TRACE_LOG(client_channel, INFO)
|
|
616
|
-
<< "chand=" << parent_->chand_
|
|
617
|
-
<< ": throttling keepalive time to "
|
|
618
|
-
<< parent_->chand_->keepalive_time_;
|
|
619
|
-
// Propagate the new keepalive time to all subchannels. This is
|
|
620
|
-
// so that new transports created by any subchannel (and not
|
|
621
|
-
// just the subchannel that received the GOAWAY), use the new
|
|
622
|
-
// keepalive time.
|
|
623
|
-
for (auto& [subchannel, _] : parent_->chand_->subchannel_map_) {
|
|
624
|
-
subchannel->ThrottleKeepaliveTime(new_keepalive_time);
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
} else {
|
|
628
|
-
LOG(ERROR) << "chand=" << parent_->chand_
|
|
629
|
-
<< ": Illegal keepalive throttling value "
|
|
630
|
-
<< std::string(keepalive_throttling.value());
|
|
631
|
-
}
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
605
|
// Propagate status only in state TF.
|
|
635
606
|
// We specifically want to avoid propagating the status for
|
|
636
607
|
// state IDLE that the real subchannel gave us only for the
|
|
@@ -1043,7 +1014,7 @@ ClientChannelFilter::ClientChannelFilter(grpc_channel_element_args* args,
|
|
|
1043
1014
|
auto service_config =
|
|
1044
1015
|
ServiceConfigImpl::Create(channel_args_, *service_config_json);
|
|
1045
1016
|
if (!service_config.ok()) {
|
|
1046
|
-
*error =
|
|
1017
|
+
*error = service_config.status();
|
|
1047
1018
|
return;
|
|
1048
1019
|
}
|
|
1049
1020
|
default_service_config_ = std::move(*service_config);
|
|
@@ -1555,12 +1526,12 @@ void ClientChannelFilter::UpdateStateLocked(grpc_connectivity_state state,
|
|
|
1555
1526
|
if (!status.ok() || state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
|
1556
1527
|
GRPC_CHANNELZ_LOG(channelz_node_)
|
|
1557
1528
|
<< channelz::ChannelNode::GetChannelConnectivityStateChangeString(
|
|
1558
|
-
state)
|
|
1529
|
+
state)
|
|
1530
|
+
<< " status: " << status.ToString();
|
|
1559
1531
|
} else {
|
|
1560
1532
|
GRPC_CHANNELZ_LOG(channelz_node_)
|
|
1561
1533
|
<< channelz::ChannelNode::GetChannelConnectivityStateChangeString(
|
|
1562
|
-
state)
|
|
1563
|
-
<< " status: " << status.ToString();
|
|
1534
|
+
state);
|
|
1564
1535
|
}
|
|
1565
1536
|
}
|
|
1566
1537
|
}
|
|
@@ -1643,11 +1614,11 @@ grpc_error_handle ClientChannelFilter::DoPingLocked(grpc_transport_op* op) {
|
|
|
1643
1614
|
},
|
|
1644
1615
|
// Fail pick.
|
|
1645
1616
|
[](LoadBalancingPolicy::PickResult::Fail* fail_pick) {
|
|
1646
|
-
return
|
|
1617
|
+
return fail_pick->status;
|
|
1647
1618
|
},
|
|
1648
1619
|
// Drop pick.
|
|
1649
1620
|
[](LoadBalancingPolicy::PickResult::Drop* drop_pick) {
|
|
1650
|
-
return
|
|
1621
|
+
return drop_pick->status;
|
|
1651
1622
|
});
|
|
1652
1623
|
}
|
|
1653
1624
|
|
|
@@ -1683,11 +1654,7 @@ void ClientChannelFilter::StartTransportOpLocked(grpc_transport_op* op) {
|
|
|
1683
1654
|
<< "chand=" << this << ": disconnect_with_error: "
|
|
1684
1655
|
<< StatusToString(op->disconnect_with_error);
|
|
1685
1656
|
DestroyResolverAndLbPolicyLocked();
|
|
1686
|
-
|
|
1687
|
-
if (grpc_error_get_int(op->disconnect_with_error,
|
|
1688
|
-
StatusIntProperty::ChannelConnectivityState,
|
|
1689
|
-
&value) &&
|
|
1690
|
-
static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
|
|
1657
|
+
if (op->go_idle) {
|
|
1691
1658
|
if (disconnect_error_.ok()) { // Ignore if we're shutting down.
|
|
1692
1659
|
// Enter IDLE state.
|
|
1693
1660
|
UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, absl::Status(),
|
|
@@ -1703,7 +1670,7 @@ void ClientChannelFilter::StartTransportOpLocked(grpc_transport_op* op) {
|
|
|
1703
1670
|
UpdateStateAndPickerLocked(
|
|
1704
1671
|
GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
|
|
1705
1672
|
MakeRefCounted<LoadBalancingPolicy::TransientFailurePicker>(
|
|
1706
|
-
|
|
1673
|
+
op->disconnect_with_error));
|
|
1707
1674
|
// TODO(roth): If this happens when we're still waiting for a
|
|
1708
1675
|
// resolver result, we need to trigger failures for all calls in
|
|
1709
1676
|
// the resolver queue here.
|
|
@@ -1875,8 +1842,8 @@ grpc_error_handle ClientChannelFilter::CallData::ApplyServiceConfigToCallLocked(
|
|
|
1875
1842
|
->GetCallConfig({send_initial_metadata(), arena_,
|
|
1876
1843
|
service_config_call_data});
|
|
1877
1844
|
if (!filter_chain.ok()) {
|
|
1878
|
-
return
|
|
1879
|
-
|
|
1845
|
+
return MaybeRewriteIllegalStatusCode(filter_chain.status(),
|
|
1846
|
+
"ConfigSelector");
|
|
1880
1847
|
}
|
|
1881
1848
|
dynamic_filters_ = filter_chain->TakeAsSubclass<const DynamicFilters>();
|
|
1882
1849
|
// Apply our own method params to the call.
|
|
@@ -1946,7 +1913,7 @@ bool ClientChannelFilter::CallData::CheckResolutionLocked(
|
|
|
1946
1913
|
GRPC_TRACE_LOG(client_channel_call, INFO)
|
|
1947
1914
|
<< "chand=" << chand() << " calld=" << this
|
|
1948
1915
|
<< ": resolution failed, failing call";
|
|
1949
|
-
*config_selector =
|
|
1916
|
+
*config_selector = resolver_error;
|
|
1950
1917
|
return true;
|
|
1951
1918
|
}
|
|
1952
1919
|
// Either the resolver has not yet returned a result, or it has
|
|
@@ -2482,6 +2449,9 @@ ClientChannelFilter::LoadBalancedCall::PickSubchannel(bool was_queued) {
|
|
|
2482
2449
|
bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
|
|
2483
2450
|
LoadBalancingPolicy::SubchannelPicker* picker, grpc_error_handle* error) {
|
|
2484
2451
|
GRPC_CHECK(subchannel_call_ == nullptr);
|
|
2452
|
+
// Adding the call arena to TLS so that LB pickers can access call context
|
|
2453
|
+
// from the arena.
|
|
2454
|
+
promise_detail::Context<Arena> arena_ctx(arena_);
|
|
2485
2455
|
// Perform LB pick.
|
|
2486
2456
|
LoadBalancingPolicy::PickArgs pick_args;
|
|
2487
2457
|
Slice* path = send_initial_metadata()->get_pointer(HttpPathMetadata());
|
|
@@ -2554,8 +2524,8 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
|
|
|
2554
2524
|
if (!send_initial_metadata()
|
|
2555
2525
|
->GetOrCreatePointer(WaitForReady())
|
|
2556
2526
|
->value) {
|
|
2557
|
-
*error =
|
|
2558
|
-
|
|
2527
|
+
*error = MaybeRewriteIllegalStatusCode(std::move(fail_pick->status),
|
|
2528
|
+
"LB pick");
|
|
2559
2529
|
return true;
|
|
2560
2530
|
}
|
|
2561
2531
|
// If wait_for_ready is true, then queue to retry when we get a new
|
|
@@ -2567,10 +2537,9 @@ bool ClientChannelFilter::LoadBalancedCall::PickSubchannelImpl(
|
|
|
2567
2537
|
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
2568
2538
|
<< "chand=" << chand_ << " lb_call=" << this
|
|
2569
2539
|
<< ": LB pick dropped: " << drop_pick->status;
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
StatusIntProperty::kLbPolicyDrop, 1);
|
|
2540
|
+
is_drop_ = true;
|
|
2541
|
+
*error = MaybeRewriteIllegalStatusCode(std::move(drop_pick->status),
|
|
2542
|
+
"LB drop");
|
|
2574
2543
|
return true;
|
|
2575
2544
|
});
|
|
2576
2545
|
}
|
|
@@ -2708,7 +2677,7 @@ void ClientChannelFilter::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
|
2708
2677
|
<< " call_attempt_tracer_=" << self->call_attempt_tracer_
|
|
2709
2678
|
<< " lb_subchannel_call_tracker_="
|
|
2710
2679
|
<< self->lb_subchannel_call_tracker_.get()
|
|
2711
|
-
<< "
|
|
2680
|
+
<< " is_drop_=" << self->is_drop_;
|
|
2712
2681
|
// Check if we have a tracer or an LB callback to invoke.
|
|
2713
2682
|
if (self->call_attempt_tracer_ != nullptr ||
|
|
2714
2683
|
self->lb_subchannel_call_tracker_ != nullptr) {
|
|
@@ -2742,11 +2711,9 @@ void ClientChannelFilter::LoadBalancedCall::RecvTrailingMetadataReady(
|
|
|
2742
2711
|
self->RecordCallCompletion(status, self->recv_trailing_metadata_,
|
|
2743
2712
|
self->transport_stream_stats_, peer_string);
|
|
2744
2713
|
}
|
|
2714
|
+
// If we dropped the call, indicate that fact in the metadata.
|
|
2715
|
+
if (self->is_drop_) self->recv_trailing_metadata_->Set(LbPolicyDrop(), true);
|
|
2745
2716
|
// Chain to original callback.
|
|
2746
|
-
if (!self->failure_error_.ok()) {
|
|
2747
|
-
error = self->failure_error_;
|
|
2748
|
-
self->failure_error_ = absl::OkStatus();
|
|
2749
|
-
}
|
|
2750
2717
|
Closure::Run(DEBUG_LOCATION, self->original_recv_trailing_metadata_ready_,
|
|
2751
2718
|
error);
|
|
2752
2719
|
}
|
|
@@ -450,8 +450,8 @@ class ClientChannelFilter::LoadBalancedCall final
|
|
|
450
450
|
// Set when we get a cancel_stream op.
|
|
451
451
|
grpc_error_handle cancel_error_;
|
|
452
452
|
|
|
453
|
-
// Set when
|
|
454
|
-
|
|
453
|
+
// Set when the LB picker returns a drop result.
|
|
454
|
+
bool is_drop_ = false;
|
|
455
455
|
|
|
456
456
|
LbQueuedCallCanceller* lb_call_canceller_
|
|
457
457
|
ABSL_GUARDED_BY(&ClientChannelFilter::lb_mu_) = nullptr;
|
|
@@ -33,21 +33,6 @@
|
|
|
33
33
|
namespace grpc_core {
|
|
34
34
|
namespace internal {
|
|
35
35
|
|
|
36
|
-
namespace {
|
|
37
|
-
|
|
38
|
-
class ConnectionScalingJsonArgs final : public JsonArgs {
|
|
39
|
-
public:
|
|
40
|
-
bool IsEnabled(absl::string_view key) const override {
|
|
41
|
-
if (key == "connection_scaling") {
|
|
42
|
-
return IsExperimentEnvVarEnabled(
|
|
43
|
-
"GRPC_EXPERIMENTAL_MAX_CONCURRENT_STREAMS_CONNECTION_SCALING");
|
|
44
|
-
}
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
} // namespace
|
|
50
|
-
|
|
51
36
|
//
|
|
52
37
|
// ClientChannelGlobalParsedConfig::HealthCheckConfig
|
|
53
38
|
//
|
|
@@ -93,8 +78,7 @@ const JsonLoaderInterface* ClientChannelGlobalParsedConfig::JsonLoader(
|
|
|
93
78
|
.OptionalField("healthCheckConfig",
|
|
94
79
|
&ClientChannelGlobalParsedConfig::health_check_config_)
|
|
95
80
|
.OptionalField("connectionScaling",
|
|
96
|
-
&ClientChannelGlobalParsedConfig::connection_scaling_
|
|
97
|
-
"connection_scaling")
|
|
81
|
+
&ClientChannelGlobalParsedConfig::connection_scaling_)
|
|
98
82
|
.Finish();
|
|
99
83
|
return loader;
|
|
100
84
|
}
|
|
@@ -170,14 +154,14 @@ ClientChannelServiceConfigParser::ParseGlobalParams(const ChannelArgs& /*args*/,
|
|
|
170
154
|
const Json& json,
|
|
171
155
|
ValidationErrors* errors) {
|
|
172
156
|
return LoadFromJson<std::unique_ptr<ClientChannelGlobalParsedConfig>>(
|
|
173
|
-
json,
|
|
157
|
+
json, JsonArgs(), errors);
|
|
174
158
|
}
|
|
175
159
|
|
|
176
160
|
std::unique_ptr<ServiceConfigParser::ParsedConfig>
|
|
177
161
|
ClientChannelServiceConfigParser::ParsePerMethodParams(
|
|
178
162
|
const ChannelArgs& /*args*/, const Json& json, ValidationErrors* errors) {
|
|
179
163
|
return LoadFromJson<std::unique_ptr<ClientChannelMethodParsedConfig>>(
|
|
180
|
-
json,
|
|
164
|
+
json, JsonArgs(), errors);
|
|
181
165
|
}
|
|
182
166
|
|
|
183
167
|
} // namespace internal
|
|
@@ -24,7 +24,13 @@
|
|
|
24
24
|
namespace grpc_core {
|
|
25
25
|
|
|
26
26
|
absl::StatusOr<RefCountedPtr<DirectChannel>> DirectChannel::Create(
|
|
27
|
-
std::string target,
|
|
27
|
+
std::string target, ChannelArgs args) {
|
|
28
|
+
auto channel_args_mutator =
|
|
29
|
+
grpc_channel_args_get_client_channel_creation_mutator();
|
|
30
|
+
if (channel_args_mutator != nullptr) {
|
|
31
|
+
args =
|
|
32
|
+
channel_args_mutator(target.c_str(), args, GRPC_CLIENT_DIRECT_CHANNEL);
|
|
33
|
+
}
|
|
28
34
|
auto* transport = args.GetObject<Transport>();
|
|
29
35
|
if (transport == nullptr) {
|
|
30
36
|
return absl::InvalidArgumentError("Transport not set in ChannelArgs");
|
|
@@ -41,8 +41,8 @@ class DirectChannel final : public Channel {
|
|
|
41
41
|
OrphanablePtr<ClientTransport> transport_;
|
|
42
42
|
};
|
|
43
43
|
|
|
44
|
-
static absl::StatusOr<RefCountedPtr<DirectChannel>> Create(
|
|
45
|
-
|
|
44
|
+
static absl::StatusOr<RefCountedPtr<DirectChannel>> Create(std::string target,
|
|
45
|
+
ChannelArgs args);
|
|
46
46
|
|
|
47
47
|
DirectChannel(
|
|
48
48
|
std::string target, const ChannelArgs& args,
|
|
@@ -179,9 +179,11 @@ LoopCtl<absl::StatusOr<RefCountedPtr<UnstartedCallDestination>>> PickSubchannel(
|
|
|
179
179
|
GRPC_TRACE_LOG(client_channel_lb_call, INFO)
|
|
180
180
|
<< "client_channel: " << GetContext<Activity>()->DebugTag()
|
|
181
181
|
<< " pick dropped: " << drop_pick->status;
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
182
|
+
// TODO(roth): Need to set the LbPolicyDrop trait in server
|
|
183
|
+
// trailing metadata, so that the retry interceptor can know not
|
|
184
|
+
// to retry.
|
|
185
|
+
return MaybeRewriteIllegalStatusCode(std::move(drop_pick->status),
|
|
186
|
+
"LB drop");
|
|
185
187
|
});
|
|
186
188
|
}
|
|
187
189
|
|
|
@@ -653,9 +653,7 @@ void RetryFilter::LegacyCallData::CallAttempt::OnPerAttemptRecvTimerLocked(
|
|
|
653
653
|
// TODO(roth): When implementing hedging, we should not cancel the
|
|
654
654
|
// current attempt.
|
|
655
655
|
call_attempt->MaybeAddBatchForCancelOp(
|
|
656
|
-
|
|
657
|
-
GRPC_ERROR_CREATE("retry perAttemptRecvTimeout exceeded"),
|
|
658
|
-
StatusIntProperty::kRpcStatus, GRPC_STATUS_CANCELLED),
|
|
656
|
+
absl::CancelledError("retry perAttemptRecvTimeout exceeded"),
|
|
659
657
|
&closures);
|
|
660
658
|
// Check whether we should retry.
|
|
661
659
|
if (call_attempt->ShouldRetry(/*status=*/std::nullopt,
|
|
@@ -960,14 +958,10 @@ void GetCallStatus(
|
|
|
960
958
|
std::optional<GrpcStreamNetworkState::ValueType>* stream_network_state) {
|
|
961
959
|
if (!error.ok()) {
|
|
962
960
|
grpc_error_get_status(error, deadline, status, nullptr, nullptr, nullptr);
|
|
963
|
-
intptr_t value = 0;
|
|
964
|
-
if (grpc_error_get_int(error, StatusIntProperty::kLbPolicyDrop, &value) &&
|
|
965
|
-
value != 0) {
|
|
966
|
-
*is_lb_drop = true;
|
|
967
|
-
}
|
|
968
961
|
} else {
|
|
969
962
|
*status = md_batch->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
|
|
970
963
|
}
|
|
964
|
+
*is_lb_drop = md_batch->get(LbPolicyDrop()).value_or(false);
|
|
971
965
|
*server_pushback = md_batch->get(GrpcRetryPushbackMsMetadata());
|
|
972
966
|
*stream_network_state = md_batch->get(GrpcStreamNetworkState());
|
|
973
967
|
}
|
|
@@ -1136,10 +1130,7 @@ void RetryFilter::LegacyCallData::CallAttempt::BatchData::
|
|
|
1136
1130
|
CallCombinerClosureList closures;
|
|
1137
1131
|
// Cancel call attempt.
|
|
1138
1132
|
call_attempt->MaybeAddBatchForCancelOp(
|
|
1139
|
-
error.ok() ?
|
|
1140
|
-
GRPC_ERROR_CREATE("call attempt failed"),
|
|
1141
|
-
StatusIntProperty::kRpcStatus, GRPC_STATUS_CANCELLED)
|
|
1142
|
-
: error,
|
|
1133
|
+
error.ok() ? absl::CancelledError("call attempt failed") : error,
|
|
1143
1134
|
&closures);
|
|
1144
1135
|
// For transparent retries, add a closure to immediately start a new
|
|
1145
1136
|
// call attempt.
|
|
@@ -1916,6 +1907,8 @@ void RetryFilter::LegacyCallData::OnRetryTimerLocked(
|
|
|
1916
1907
|
if (calld->retry_timer_handle_ != TaskHandle::kInvalid) {
|
|
1917
1908
|
calld->retry_timer_handle_ = TaskHandle::kInvalid;
|
|
1918
1909
|
calld->CreateCallAttempt(/*is_transparent_retry=*/false);
|
|
1910
|
+
} else {
|
|
1911
|
+
GRPC_CALL_COMBINER_STOP(calld->call_combiner_, "retry timer cancelled");
|
|
1919
1912
|
}
|
|
1920
1913
|
GRPC_CALL_STACK_UNREF(calld->owning_call_, "OnRetryTimer");
|
|
1921
1914
|
}
|