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
|
@@ -148,7 +148,7 @@ absl::Status LegacyServerConfigSelectorFilter::Call::OnClientInitialMetadata(
|
|
|
148
148
|
"LegacyServerConfigSelectorFilter::Call::OnClientInitialMetadata");
|
|
149
149
|
auto sel = filter->config_selector();
|
|
150
150
|
if (!sel.ok()) return sel.status();
|
|
151
|
-
auto call_config = sel.value()->GetCallConfig(&md);
|
|
151
|
+
auto call_config = sel.value()->GetCallConfig(/*state=*/nullptr, &md);
|
|
152
152
|
if (!call_config.ok()) {
|
|
153
153
|
return absl::UnavailableError(StatusToString(call_config.status()));
|
|
154
154
|
}
|
|
@@ -165,113 +165,200 @@ const grpc_channel_filter kLegacyServerConfigSelectorFilter =
|
|
|
165
165
|
MakePromiseBasedFilter<LegacyServerConfigSelectorFilter,
|
|
166
166
|
FilterEndpoint::kServer>();
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
//
|
|
169
|
+
// ServerConfigSelectorInterceptor::Watcher
|
|
170
|
+
//
|
|
169
171
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
172
|
+
// Watcher for ServerConfigSelector.
|
|
173
|
+
class ServerConfigSelectorInterceptor::Watcher final
|
|
174
|
+
: public ServerConfigSelectorProvider::ServerConfigSelectorWatcher {
|
|
173
175
|
public:
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
static inline const NoInterceptor OnServerToClientMessage;
|
|
183
|
-
static inline const NoInterceptor OnFinalize;
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
static absl::StatusOr<OrphanablePtr<ServerConfigSelectorFilter>> Create(
|
|
187
|
-
const ChannelArgs& args, ChannelFilter::Args) {
|
|
188
|
-
auto server_config_selector_provider =
|
|
189
|
-
args.GetObjectRef<ServerConfigSelectorProvider>();
|
|
190
|
-
if (server_config_selector_provider == nullptr) {
|
|
191
|
-
return absl::UnknownError("No ServerConfigSelectorProvider object found");
|
|
192
|
-
}
|
|
193
|
-
return MakeOrphanable<ServerConfigSelectorFilter>(
|
|
194
|
-
std::move(server_config_selector_provider));
|
|
176
|
+
explicit Watcher(
|
|
177
|
+
WeakRefCountedPtr<ServerConfigSelectorInterceptor> interceptor)
|
|
178
|
+
: interceptor_(std::move(interceptor)) {}
|
|
179
|
+
|
|
180
|
+
void OnServerConfigSelectorUpdate(
|
|
181
|
+
absl::StatusOr<RefCountedPtr<ServerConfigSelector>> config_selector)
|
|
182
|
+
override {
|
|
183
|
+
interceptor_->OnConfigSelectorUpdate(std::move(config_selector));
|
|
195
184
|
}
|
|
196
185
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
: server_config_selector_provider_(
|
|
201
|
-
std::move(server_config_selector_provider)),
|
|
202
|
-
config_selector_(nullptr) {
|
|
203
|
-
watcher_ = std::make_shared<ServerConfigSelectorWatcher>(Ref());
|
|
204
|
-
// TODO(roth): Remove the void cast when removing the
|
|
205
|
-
// xds_server_filter_chain_per_route experiment.
|
|
206
|
-
(void)server_config_selector_provider_->Watch(watcher_);
|
|
207
|
-
}
|
|
186
|
+
private:
|
|
187
|
+
WeakRefCountedPtr<ServerConfigSelectorInterceptor> interceptor_;
|
|
188
|
+
};
|
|
208
189
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
190
|
+
//
|
|
191
|
+
// ServerConfigSelectorInterceptor
|
|
192
|
+
//
|
|
212
193
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
194
|
+
const grpc_channel_filter ServerConfigSelectorInterceptor::kFilter =
|
|
195
|
+
MakePromiseBasedFilter<
|
|
196
|
+
ServerConfigSelectorInterceptor, FilterEndpoint::kServer,
|
|
197
|
+
kFilterExaminesServerInitialMetadata | kFilterExaminesOutboundMessages |
|
|
198
|
+
kFilterExaminesInboundMessages | kFilterExaminesCallContext>();
|
|
199
|
+
|
|
200
|
+
absl::StatusOr<RefCountedPtr<ServerConfigSelectorInterceptor>>
|
|
201
|
+
ServerConfigSelectorInterceptor::Create(const ChannelArgs& args,
|
|
202
|
+
ChannelFilter::Args filter_args) {
|
|
203
|
+
// Get ConfigSelectorProvider from channel args.
|
|
204
|
+
auto server_config_selector_provider =
|
|
205
|
+
args.GetObjectRef<ServerConfigSelectorProvider>();
|
|
206
|
+
if (server_config_selector_provider == nullptr) {
|
|
207
|
+
return absl::UnknownError("No ServerConfigSelectorProvider object found");
|
|
218
208
|
}
|
|
209
|
+
return MakeRefCounted<ServerConfigSelectorInterceptor>(
|
|
210
|
+
args, std::move(filter_args), std::move(server_config_selector_provider));
|
|
211
|
+
}
|
|
219
212
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
213
|
+
ServerConfigSelectorInterceptor::ServerConfigSelectorInterceptor(
|
|
214
|
+
const ChannelArgs& args, ChannelFilter::Args /*filter_args*/,
|
|
215
|
+
RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider)
|
|
216
|
+
: V3InterceptorToV2Bridge<ServerConfigSelectorInterceptor>(args),
|
|
217
|
+
args_(
|
|
218
|
+
// Tell filters that they're running in a v3 stack and running
|
|
219
|
+
// on the server side.
|
|
220
|
+
args.Set(GRPC_ARG_USE_V3_STACK, 1)
|
|
221
|
+
.Set(GRPC_ARG_IS_SERVER_FILTER_STACK, 1)),
|
|
222
|
+
server_config_selector_provider_(
|
|
223
|
+
std::move(server_config_selector_provider)),
|
|
224
|
+
config_selector_(nullptr) {
|
|
225
|
+
// Start watch for ServerConfigSelector.
|
|
226
|
+
watcher_ = std::make_shared<Watcher>(
|
|
227
|
+
WeakRef().TakeAsSubclass<ServerConfigSelectorInterceptor>());
|
|
228
|
+
// TODO(roth): Remove void cast when removing the
|
|
229
|
+
// xds_server_filter_chain_per_route experiment.
|
|
230
|
+
(void)server_config_selector_provider_->Watch(watcher_);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
namespace {
|
|
234
|
+
|
|
235
|
+
class FilterChainImpl final : public FilterChain {
|
|
236
|
+
public:
|
|
237
|
+
explicit FilterChainImpl(RefCountedPtr<UnstartedCallDestination> destination)
|
|
238
|
+
: destination_(std::move(destination)) {}
|
|
239
|
+
|
|
240
|
+
UnstartedCallDestination* destination() const { return destination_.get(); }
|
|
223
241
|
|
|
224
242
|
private:
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
243
|
+
RefCountedPtr<UnstartedCallDestination> destination_;
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
class FilterChainBuilderImpl final : public FilterChainBuilder {
|
|
247
|
+
public:
|
|
248
|
+
FilterChainBuilderImpl(const ChannelArgs& channel_args,
|
|
249
|
+
RefCountedPtr<UnstartedCallDestination> destination)
|
|
250
|
+
: channel_args_(channel_args), destination_(std::move(destination)) {}
|
|
251
|
+
|
|
252
|
+
absl::StatusOr<RefCountedPtr<FilterChain>> Build() override {
|
|
253
|
+
if (builder_ == nullptr) InitBuilder();
|
|
254
|
+
auto top_of_stack_destination = builder_->Build(destination_);
|
|
255
|
+
if (!top_of_stack_destination.ok()) {
|
|
256
|
+
// TODO(roth): Maybe use MaybeRewriteIllegalStatusCode()?
|
|
257
|
+
return top_of_stack_destination.status();
|
|
235
258
|
}
|
|
259
|
+
builder_.reset();
|
|
260
|
+
return MakeRefCounted<FilterChainImpl>(
|
|
261
|
+
std::move(*top_of_stack_destination));
|
|
262
|
+
}
|
|
236
263
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
264
|
+
private:
|
|
265
|
+
void AddFilter(const FilterHandle& filter_handle,
|
|
266
|
+
RefCountedPtr<const FilterConfig> config) override {
|
|
267
|
+
if (builder_ == nullptr) InitBuilder();
|
|
268
|
+
filter_handle.AddToBuilder(builder_.get(), std::move(config));
|
|
269
|
+
}
|
|
240
270
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
271
|
+
void InitBuilder() {
|
|
272
|
+
builder_ = std::make_unique<InterceptionChainBuilder>(channel_args_);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
const ChannelArgs channel_args_;
|
|
276
|
+
const RefCountedPtr<UnstartedCallDestination> destination_;
|
|
277
|
+
std::unique_ptr<InterceptionChainBuilder> builder_;
|
|
245
278
|
};
|
|
246
279
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
}
|
|
261
|
-
auto* arena = GetContext<Arena>();
|
|
262
|
-
auto* service_config_call_data =
|
|
263
|
-
arena->New<ServiceConfigCallData>(arena);
|
|
264
|
-
service_config_call_data->SetServiceConfig(
|
|
265
|
-
std::move(call_config->service_config),
|
|
266
|
-
call_config->method_configs);
|
|
267
|
-
return absl::OkStatus();
|
|
268
|
-
});
|
|
280
|
+
} // namespace
|
|
281
|
+
|
|
282
|
+
void ServerConfigSelectorInterceptor::OnConfigSelectorUpdate(
|
|
283
|
+
absl::StatusOr<RefCountedPtr<ServerConfigSelector>> config_selector) {
|
|
284
|
+
if (!config_selector.ok()) {
|
|
285
|
+
config_selector_.Set(config_selector.status());
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
auto state = MakeRefCounted<ConfigSelectorState>();
|
|
289
|
+
state->config_selector = std::move(*config_selector);
|
|
290
|
+
FilterChainBuilderImpl builder(args_, wrapped_destination());
|
|
291
|
+
state->connection_state = state->config_selector->BuildFilterChains(builder);
|
|
292
|
+
config_selector_.Set(std::move(state));
|
|
269
293
|
}
|
|
270
294
|
|
|
271
|
-
|
|
295
|
+
void ServerConfigSelectorInterceptor::Orphaned() {
|
|
296
|
+
args_ = ChannelArgs();
|
|
297
|
+
server_config_selector_provider_->CancelWatch(std::move(watcher_));
|
|
298
|
+
server_config_selector_provider_.reset();
|
|
299
|
+
config_selector_.Set(absl::CancelledError("shutting down"));
|
|
300
|
+
}
|
|
272
301
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
302
|
+
void ServerConfigSelectorInterceptor::InterceptCall(
|
|
303
|
+
UnstartedCallHandler unstarted_call_handler) {
|
|
304
|
+
// Consume the call coming to us from the client side.
|
|
305
|
+
CallHandler handler = Consume(std::move(unstarted_call_handler));
|
|
306
|
+
handler.SpawnGuarded(
|
|
307
|
+
"choose_dynamic_filter_chain",
|
|
308
|
+
[self = RefAsSubclass<ServerConfigSelectorInterceptor>(),
|
|
309
|
+
handler]() mutable {
|
|
310
|
+
return TrySeq(
|
|
311
|
+
handler.PullClientInitialMetadata(),
|
|
312
|
+
[handler, self](ClientMetadataHandle metadata) mutable {
|
|
313
|
+
return Map(
|
|
314
|
+
self->config_selector_.Next(nullptr),
|
|
315
|
+
[self, handler = std::move(handler),
|
|
316
|
+
metadata = std::move(metadata)](
|
|
317
|
+
absl::StatusOr<RefCountedPtr<ConfigSelectorState>>
|
|
318
|
+
state) mutable {
|
|
319
|
+
if (!state.ok()) {
|
|
320
|
+
GRPC_TRACE_LOG(server_config_selector_interceptor, INFO)
|
|
321
|
+
<< "[server_config_selector_interceptor "
|
|
322
|
+
<< self.get()
|
|
323
|
+
<< "]: config selector is error: " << state.status();
|
|
324
|
+
return state.status();
|
|
325
|
+
}
|
|
326
|
+
// Use config selector to choose dynamic filter stack.
|
|
327
|
+
auto call_config = (*state)->config_selector->GetCallConfig(
|
|
328
|
+
(*state)->connection_state.get(), metadata.get());
|
|
329
|
+
if (!call_config.ok()) {
|
|
330
|
+
GRPC_TRACE_LOG(server_config_selector_interceptor, INFO)
|
|
331
|
+
<< "[server_config_selector_interceptor "
|
|
332
|
+
<< self.get() << "]: config selector returned error: "
|
|
333
|
+
<< call_config.status();
|
|
334
|
+
return absl::UnavailableError(
|
|
335
|
+
StatusToString(call_config.status()));
|
|
336
|
+
}
|
|
337
|
+
// Get filter chain.
|
|
338
|
+
if (!call_config->filter_chain.ok()) {
|
|
339
|
+
GRPC_TRACE_LOG(server_config_selector_interceptor, INFO)
|
|
340
|
+
<< "[server_config_selector_interceptor "
|
|
341
|
+
<< self.get()
|
|
342
|
+
<< "]: config selector returned failure for filter "
|
|
343
|
+
"chain: "
|
|
344
|
+
<< call_config->filter_chain.status();
|
|
345
|
+
return call_config->filter_chain.status();
|
|
346
|
+
}
|
|
347
|
+
// Start call on selected filter chain.
|
|
348
|
+
GRPC_TRACE_LOG(server_config_selector_interceptor, INFO)
|
|
349
|
+
<< "[server_config_selector_interceptor " << self.get()
|
|
350
|
+
<< "]: starting call on dynamic filter chain";
|
|
351
|
+
auto& filter_chain = DownCast<const FilterChainImpl&>(
|
|
352
|
+
**call_config->filter_chain);
|
|
353
|
+
auto [initiator, unstarted_handler] = MakeCallPair(
|
|
354
|
+
std::move(metadata), GetContext<Arena>()->Ref());
|
|
355
|
+
filter_chain.destination()->StartCall(
|
|
356
|
+
std::move(unstarted_handler));
|
|
357
|
+
ForwardCall(handler, initiator);
|
|
358
|
+
return absl::OkStatus();
|
|
359
|
+
});
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
}
|
|
276
363
|
|
|
277
364
|
} // namespace grpc_core
|
|
@@ -19,15 +19,70 @@
|
|
|
19
19
|
#ifndef GRPC_SRC_CORE_SERVER_SERVER_CONFIG_SELECTOR_FILTER_H
|
|
20
20
|
#define GRPC_SRC_CORE_SERVER_SERVER_CONFIG_SELECTOR_FILTER_H
|
|
21
21
|
|
|
22
|
-
#include <grpc/support/port_platform.h>
|
|
23
|
-
|
|
24
22
|
#include "src/core/lib/channel/channel_fwd.h"
|
|
25
23
|
#include "src/core/lib/channel/channel_stack.h"
|
|
24
|
+
#include "src/core/lib/channel/promise_based_filter.h"
|
|
25
|
+
#include "src/core/lib/promise/observable.h"
|
|
26
|
+
#include "src/core/server/server_config_selector.h"
|
|
27
|
+
#include "src/core/util/ref_counted_ptr.h"
|
|
28
|
+
#include "absl/strings/string_view.h"
|
|
26
29
|
|
|
27
30
|
namespace grpc_core {
|
|
28
31
|
|
|
29
32
|
extern const grpc_channel_filter kLegacyServerConfigSelectorFilter;
|
|
30
|
-
|
|
33
|
+
|
|
34
|
+
// This filter handles injection of dynamic filters for server connections.
|
|
35
|
+
//
|
|
36
|
+
// This filter will get the ServerConfigSelectorProvider from channel
|
|
37
|
+
// args and start a watch on it. Whenever the watcher delivers a new
|
|
38
|
+
// ServerConfigSelector, the filter will ask the ServerConfigSelector to
|
|
39
|
+
// build a filter stack for each dynamic filter chain. Then it swaps the
|
|
40
|
+
// new ServerConfigSelector into place so that it will be used to choose
|
|
41
|
+
// which dynamic filter stack to use for each RPC.
|
|
42
|
+
//
|
|
43
|
+
// This is implemented as a v3 interceptor using V3InterceptorToV2Bridge
|
|
44
|
+
// to run in v1 stacks. However, it runs the dynamic filters as native
|
|
45
|
+
// v3 filters (i.e., it creates a v3 interceptor chain for them), so they
|
|
46
|
+
// cannot be implemented as v1 filters. The call destination at the end
|
|
47
|
+
// of each v3 interceptor chain is the wrapped call destination (i.e.,
|
|
48
|
+
// the next filter in the server stack).
|
|
49
|
+
class ServerConfigSelectorInterceptor final
|
|
50
|
+
: public V3InterceptorToV2Bridge<ServerConfigSelectorInterceptor> {
|
|
51
|
+
public:
|
|
52
|
+
static const grpc_channel_filter kFilter;
|
|
53
|
+
|
|
54
|
+
static absl::string_view TypeName() { return "server_config_selector"; }
|
|
55
|
+
|
|
56
|
+
static absl::StatusOr<RefCountedPtr<ServerConfigSelectorInterceptor>> Create(
|
|
57
|
+
const ChannelArgs& args, ChannelFilter::Args filter_args);
|
|
58
|
+
|
|
59
|
+
ServerConfigSelectorInterceptor(const ChannelArgs& args,
|
|
60
|
+
ChannelFilter::Args filter_args,
|
|
61
|
+
RefCountedPtr<ServerConfigSelectorProvider>
|
|
62
|
+
server_config_selector_provider);
|
|
63
|
+
|
|
64
|
+
private:
|
|
65
|
+
class Watcher;
|
|
66
|
+
|
|
67
|
+
struct ConfigSelectorState final : public RefCounted<ConfigSelectorState> {
|
|
68
|
+
RefCountedPtr<ServerConfigSelector> config_selector;
|
|
69
|
+
std::unique_ptr<ServerConfigSelector::ConnectionState> connection_state;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
void Orphaned() override;
|
|
73
|
+
|
|
74
|
+
void OnConfigSelectorUpdate(
|
|
75
|
+
absl::StatusOr<RefCountedPtr<ServerConfigSelector>> config_selector);
|
|
76
|
+
|
|
77
|
+
void InterceptCall(UnstartedCallHandler unstarted_call_handler) override;
|
|
78
|
+
|
|
79
|
+
ChannelArgs args_;
|
|
80
|
+
RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider_;
|
|
81
|
+
std::shared_ptr<Watcher> watcher_;
|
|
82
|
+
|
|
83
|
+
Observable<absl::StatusOr<RefCountedPtr<ConfigSelectorState>>>
|
|
84
|
+
config_selector_;
|
|
85
|
+
};
|
|
31
86
|
|
|
32
87
|
} // namespace grpc_core
|
|
33
88
|
|