grpc 1.37.1 → 1.40.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +112 -59
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/endpoint_config.h +48 -0
- data/include/grpc/event_engine/event_engine.h +330 -0
- data/include/grpc/event_engine/port.h +41 -0
- data/include/grpc/event_engine/slice_allocator.h +66 -0
- data/include/grpc/grpc.h +11 -4
- data/include/grpc/grpc_security.h +32 -0
- data/include/grpc/grpc_security_constants.h +15 -0
- data/include/grpc/impl/codegen/grpc_types.h +44 -19
- data/include/grpc/impl/codegen/port_platform.h +46 -0
- data/include/grpc/module.modulemap +14 -14
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +975 -3282
- data/src/core/ext/filters/client_channel/client_channel.h +513 -55
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +20 -7
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +28 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +30 -29
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
- data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +53 -51
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -23
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +16 -16
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -17
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +17 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +53 -65
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +36 -44
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +33 -55
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +151 -163
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +70 -46
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +24 -18
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +18 -12
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +20 -13
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +158 -102
- data/src/core/ext/filters/client_channel/resolver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
- data/src/core/ext/filters/client_channel/retry_filter.cc +2598 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
- data/src/core/ext/filters/client_channel/server_address.cc +1 -1
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_call_data.h +45 -5
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
- data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
- data/src/core/ext/filters/client_channel/subchannel.h +7 -6
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +33 -23
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
- data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
- data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
- data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +3 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +49 -46
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +5 -4
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +66 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +74 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +141 -126
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +9 -9
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +12 -12
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +15 -16
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +11 -10
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +652 -736
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +195 -74
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +33 -28
- data/src/core/ext/transport/chttp2/transport/parsing.cc +129 -106
- data/src/core/ext/transport/chttp2/transport/varint.cc +6 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +72 -60
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +56 -35
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +180 -76
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +35 -27
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +97 -48
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +45 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +67 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +66 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +227 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +121 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +32 -24
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -73
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +8 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +27 -19
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +24 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +57 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +29 -17
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +15 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +85 -43
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +274 -91
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +11 -8
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +30 -13
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +33 -5
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +115 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +181 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +1 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +82 -66
- data/src/core/ext/upb-generated/validate/validate.upb.h +220 -124
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +15 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +53 -52
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +318 -277
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +437 -410
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +198 -170
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +9 -8
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +219 -163
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +29 -25
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +135 -125
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +131 -123
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +32 -24
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +69 -55
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +684 -664
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +13 -10
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +441 -375
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +122 -114
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +1 -1
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +112 -79
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +35 -32
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +182 -160
- data/src/core/ext/xds/certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/xds_api.cc +665 -317
- data/src/core/ext/xds/xds_api.h +52 -14
- data/src/core/ext/xds/xds_bootstrap.cc +101 -160
- data/src/core/ext/xds/xds_bootstrap.h +19 -24
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
- data/src/core/ext/xds/xds_certificate_provider.h +4 -4
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +370 -215
- data/src/core/ext/xds/xds_client.h +38 -28
- data/src/core/ext/xds/xds_client_stats.h +3 -2
- data/src/core/ext/xds/xds_http_filters.cc +3 -2
- data/src/core/ext/xds/xds_http_filters.h +3 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +16 -20
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +16 -11
- data/src/core/lib/channel/call_tracer.h +85 -0
- data/src/core/lib/channel/channel_stack.cc +10 -9
- data/src/core/lib/channel/channel_stack.h +11 -10
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -1
- data/src/core/lib/channel/channelz.cc +21 -13
- data/src/core/lib/channel/channelz.h +3 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/context.h +3 -0
- data/src/core/lib/channel/handshaker.cc +7 -6
- data/src/core/lib/channel/handshaker.h +5 -5
- data/src/core/lib/channel/status_util.h +4 -0
- data/src/core/lib/compression/stream_compression.h +1 -1
- data/src/core/lib/compression/stream_compression_gzip.h +1 -1
- data/src/core/lib/compression/stream_compression_identity.h +1 -1
- data/src/core/lib/debug/stats.h +1 -1
- data/src/core/lib/event_engine/endpoint_config.cc +46 -0
- data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
- data/src/core/lib/event_engine/event_engine.cc +50 -0
- data/src/core/lib/event_engine/sockaddr.cc +40 -0
- data/src/core/lib/event_engine/sockaddr.h +44 -0
- data/src/core/lib/gpr/murmur_hash.cc +4 -2
- data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/manual_constructor.h +1 -1
- data/src/core/lib/gprpp/orphanable.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +183 -0
- data/src/core/lib/gprpp/sync.h +2 -30
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +11 -7
- data/src/core/lib/http/parser.cc +16 -16
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +8 -10
- data/src/core/lib/iomgr/buffer_list.h +4 -5
- data/src/core/lib/iomgr/call_combiner.cc +15 -12
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +14 -12
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +1 -1
- data/src/core/lib/iomgr/endpoint.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +168 -61
- data/src/core/lib/iomgr/error.h +217 -106
- data/src/core/lib/iomgr/error_cfstream.cc +3 -2
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +5 -1
- data/src/core/lib/iomgr/ev_apple.cc +5 -5
- data/src/core/lib/iomgr/ev_apple.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
- data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
- data/src/core/lib/iomgr/event_engine/closure.h +33 -0
- data/src/core/lib/iomgr/event_engine/endpoint.cc +192 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
- data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
- data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
- data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
- data/src/core/lib/iomgr/event_engine/promise.h +51 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +263 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
- data/src/core/lib/iomgr/exec_ctx.cc +12 -4
- data/src/core/lib/iomgr/exec_ctx.h +4 -5
- data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
- data/src/core/lib/iomgr/executor/threadpool.h +2 -2
- data/src/core/lib/iomgr/executor.cc +8 -8
- data/src/core/lib/iomgr/executor.h +2 -2
- data/src/core/lib/iomgr/iomgr.cc +2 -2
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +3 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -12
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +5 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +7 -7
- data/src/core/lib/iomgr/pollset_custom.h +3 -1
- data/src/core/lib/iomgr/pollset_uv.cc +3 -1
- data/src/core/lib/iomgr/pollset_uv.h +5 -1
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +7 -5
- data/src/core/lib/iomgr/python_util.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +8 -4
- data/src/core/lib/iomgr/resolve_address.h +12 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +13 -10
- data/src/core/lib/iomgr/sockaddr.h +1 -0
- data/src/core/lib/iomgr/socket_mutator.cc +15 -2
- data/src/core/lib/iomgr/socket_mutator.h +26 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +24 -22
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +22 -19
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +7 -5
- data/src/core/lib/iomgr/tcp_custom.cc +14 -16
- data/src/core/lib/iomgr/tcp_custom.h +13 -12
- data/src/core/lib/iomgr/tcp_posix.cc +78 -73
- data/src/core/lib/iomgr/tcp_posix.h +8 -0
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +12 -11
- data/src/core/lib/iomgr/tcp_server_custom.cc +26 -25
- data/src/core/lib/iomgr/tcp_server_posix.cc +29 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -18
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
- data/src/core/lib/iomgr/tcp_uv.cc +25 -23
- data/src/core/lib/iomgr/tcp_windows.cc +13 -13
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer.h +6 -1
- data/src/core/lib/iomgr/timer_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +6 -6
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/udp_server.cc +21 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_reader.cc +5 -6
- data/src/core/lib/matchers/matchers.cc +46 -58
- data/src/core/lib/matchers/matchers.h +30 -29
- data/src/core/lib/security/authorization/authorization_engine.h +44 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
- data/src/core/lib/security/authorization/evaluate_args.h +91 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.h +2 -2
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -10
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +68 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -9
- data/src/core/lib/security/security_connector/security_connector.h +9 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +27 -4
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +60 -76
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
- data/src/core/lib/security/transport/security_handshaker.cc +45 -36
- data/src/core/lib/security/transport/server_auth_filter.cc +17 -18
- data/src/core/lib/security/transport/tsi_error.cc +2 -1
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +2 -2
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice_internal.h +1 -0
- data/src/core/lib/surface/call.cc +72 -52
- data/src/core/lib/surface/call.h +13 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +68 -69
- data/src/core/lib/surface/completion_queue.h +3 -2
- data/src/core/lib/surface/completion_queue_factory.cc +1 -2
- data/src/core/lib/surface/init.cc +1 -3
- data/src/core/lib/surface/init.h +10 -1
- data/src/core/lib/surface/lame_client.cc +11 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +31 -23
- data/src/core/lib/surface/server.h +19 -18
- data/src/core/lib/surface/validate_metadata.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +3 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +8 -8
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +21 -10
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata_batch.cc +37 -37
- data/src/core/lib/transport/metadata_batch.h +19 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +6 -4
- data/src/core/lib/transport/transport_op_string.cc +6 -6
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/crypt/gsec.h +6 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/ssl_transport_security.cc +32 -14
- data/src/core/tsi/ssl_transport_security.h +3 -4
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +11 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/boringssl-with-bazel/err_data.c +483 -461
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +52 -65
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +26 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +367 -315
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +66 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +47 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +20 -49
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +283 -85
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +13 -19
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +445 -152
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -1
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +66 -30
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +189 -86
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +154 -24
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +414 -135
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +51 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +8 -31
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +664 -702
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +65 -7
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -39
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +141 -94
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +213 -118
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/xxhash/xxhash.h +77 -195
- metadata +116 -51
- data/src/core/lib/gpr/arena.h +0 -47
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -246
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
@@ -31,6 +31,7 @@
|
|
31
31
|
#include "src/core/lib/channel/channel_args.h"
|
32
32
|
#include "src/core/lib/gpr/env.h"
|
33
33
|
#include "src/core/lib/gpr/string.h"
|
34
|
+
#include "src/core/lib/gprpp/atomic.h"
|
34
35
|
#include "src/core/lib/gprpp/orphanable.h"
|
35
36
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
36
37
|
#include "src/core/lib/gprpp/sync.h"
|
@@ -56,6 +57,7 @@ class CircuitBreakerCallCounterMap {
|
|
56
57
|
explicit CallCounter(Key key) : key_(std::move(key)) {}
|
57
58
|
~CallCounter() override;
|
58
59
|
|
60
|
+
uint32_t Load() { return concurrent_requests_.Load(MemoryOrder::SEQ_CST); }
|
59
61
|
uint32_t Increment() { return concurrent_requests_.FetchAdd(1); }
|
60
62
|
void Decrement() { concurrent_requests_.FetchSub(1); }
|
61
63
|
|
@@ -69,7 +71,7 @@ class CircuitBreakerCallCounterMap {
|
|
69
71
|
|
70
72
|
private:
|
71
73
|
Mutex mu_;
|
72
|
-
std::map<Key, CallCounter*> map_;
|
74
|
+
std::map<Key, CallCounter*> map_ ABSL_GUARDED_BY(mu_);
|
73
75
|
};
|
74
76
|
|
75
77
|
CircuitBreakerCallCounterMap* g_call_counter_map = nullptr;
|
@@ -282,59 +284,51 @@ LoadBalancingPolicy::PickResult XdsClusterImplLb::Picker::Pick(
|
|
282
284
|
const std::string* drop_category;
|
283
285
|
if (drop_config_->ShouldDrop(&drop_category)) {
|
284
286
|
if (drop_stats_ != nullptr) drop_stats_->AddCallDropped(*drop_category);
|
285
|
-
PickResult
|
286
|
-
|
287
|
-
return result;
|
287
|
+
return PickResult::Drop(absl::UnavailableError(
|
288
|
+
absl::StrCat("EDS-configured drop: ", *drop_category)));
|
288
289
|
}
|
289
290
|
// Handle circuit breaking.
|
290
|
-
uint32_t current = call_counter_->
|
291
|
+
uint32_t current = call_counter_->Load();
|
291
292
|
// Check and see if we exceeded the max concurrent requests count.
|
292
293
|
if (current >= max_concurrent_requests_) {
|
293
|
-
call_counter_->Decrement();
|
294
294
|
if (drop_stats_ != nullptr) drop_stats_->AddUncategorizedDrops();
|
295
|
-
PickResult
|
296
|
-
result.type = PickResult::PICK_COMPLETE;
|
297
|
-
return result;
|
295
|
+
return PickResult::Drop(absl::UnavailableError("circuit breaker drop"));
|
298
296
|
}
|
297
|
+
call_counter_->Increment();
|
299
298
|
// If we're not dropping the call, we should always have a child picker.
|
300
299
|
if (picker_ == nullptr) { // Should never happen.
|
301
|
-
PickResult result;
|
302
|
-
result.type = PickResult::PICK_FAILED;
|
303
|
-
result.error = grpc_error_set_int(
|
304
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
305
|
-
"xds_cluster_impl picker not given any child picker"),
|
306
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_INTERNAL);
|
307
300
|
call_counter_->Decrement();
|
308
|
-
return
|
301
|
+
return PickResult::Fail(absl::InternalError(
|
302
|
+
"xds_cluster_impl picker not given any child picker"));
|
309
303
|
}
|
310
304
|
// Not dropping, so delegate to child picker.
|
311
305
|
PickResult result = picker_->Pick(args);
|
312
|
-
|
306
|
+
auto* complete_pick = absl::get_if<PickResult::Complete>(&result.result);
|
307
|
+
if (complete_pick != nullptr) {
|
313
308
|
XdsClusterLocalityStats* locality_stats = nullptr;
|
314
309
|
if (drop_stats_ != nullptr) { // If load reporting is enabled.
|
315
310
|
auto* subchannel_wrapper =
|
316
|
-
static_cast<StatsSubchannelWrapper*>(
|
311
|
+
static_cast<StatsSubchannelWrapper*>(complete_pick->subchannel.get());
|
317
312
|
// Handle load reporting.
|
318
313
|
locality_stats = subchannel_wrapper->locality_stats()->Ref().release();
|
319
314
|
// Record a call started.
|
320
315
|
locality_stats->AddCallStarted();
|
321
316
|
// Unwrap subchannel to pass back up the stack.
|
322
|
-
|
317
|
+
complete_pick->subchannel = subchannel_wrapper->wrapped_subchannel();
|
323
318
|
}
|
324
319
|
// Intercept the recv_trailing_metadata op to record call completion.
|
325
320
|
auto* call_counter = call_counter_->Ref(DEBUG_LOCATION, "call").release();
|
326
321
|
auto original_recv_trailing_metadata_ready =
|
327
|
-
|
328
|
-
|
322
|
+
complete_pick->recv_trailing_metadata_ready;
|
323
|
+
complete_pick->recv_trailing_metadata_ready =
|
329
324
|
// Note: This callback does not run in either the control plane
|
330
325
|
// work serializer or in the data plane mutex.
|
331
326
|
[locality_stats, original_recv_trailing_metadata_ready, call_counter](
|
332
|
-
|
327
|
+
absl::Status status, MetadataInterface* metadata,
|
333
328
|
CallState* call_state) {
|
334
329
|
// Record call completion for load reporting.
|
335
330
|
if (locality_stats != nullptr) {
|
336
|
-
|
337
|
-
locality_stats->AddCallFinished(call_failed);
|
331
|
+
locality_stats->AddCallFinished(!status.ok());
|
338
332
|
locality_stats->Unref(DEBUG_LOCATION, "LocalityStats+call");
|
339
333
|
}
|
340
334
|
// Decrement number of calls in flight.
|
@@ -342,7 +336,7 @@ LoadBalancingPolicy::PickResult XdsClusterImplLb::Picker::Pick(
|
|
342
336
|
call_counter->Unref(DEBUG_LOCATION, "call");
|
343
337
|
// Invoke the original recv_trailing_metadata_ready callback, if any.
|
344
338
|
if (original_recv_trailing_metadata_ready != nullptr) {
|
345
|
-
original_recv_trailing_metadata_ready(
|
339
|
+
original_recv_trailing_metadata_ready(status, metadata, call_state);
|
346
340
|
}
|
347
341
|
};
|
348
342
|
} else {
|
@@ -594,14 +588,12 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
594
588
|
public:
|
595
589
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
596
590
|
LoadBalancingPolicy::Args args) const override {
|
597
|
-
|
598
|
-
|
599
|
-
if (
|
600
|
-
gpr_log(
|
601
|
-
|
602
|
-
|
603
|
-
grpc_error_string(error));
|
604
|
-
GRPC_ERROR_UNREF(error);
|
591
|
+
RefCountedPtr<XdsClient> xds_client =
|
592
|
+
XdsClient::GetFromChannelArgs(*args.args);
|
593
|
+
if (xds_client == nullptr) {
|
594
|
+
gpr_log(GPR_ERROR,
|
595
|
+
"XdsClient not present in channel args -- cannot instantiate "
|
596
|
+
"xds_cluster_impl LB policy");
|
605
597
|
return nullptr;
|
606
598
|
}
|
607
599
|
return MakeOrphanable<XdsClusterImplLb>(std::move(xds_client),
|
@@ -611,7 +603,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
611
603
|
const char* name() const override { return kXdsClusterImpl; }
|
612
604
|
|
613
605
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
614
|
-
const Json& json,
|
606
|
+
const Json& json, grpc_error_handle* error) const override {
|
615
607
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
616
608
|
if (json.type() == Json::Type::JSON_NULL) {
|
617
609
|
// This policy was configured in the deprecated loadBalancingPolicy
|
@@ -622,7 +614,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
622
614
|
"config instead.");
|
623
615
|
return nullptr;
|
624
616
|
}
|
625
|
-
std::vector<
|
617
|
+
std::vector<grpc_error_handle> error_list;
|
626
618
|
// Child policy.
|
627
619
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy;
|
628
620
|
auto it = json.object_value().find("childPolicy");
|
@@ -630,12 +622,12 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
630
622
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
631
623
|
"field:childPolicy error:required field missing"));
|
632
624
|
} else {
|
633
|
-
|
625
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
634
626
|
child_policy = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
635
627
|
it->second, &parse_error);
|
636
628
|
if (child_policy == nullptr) {
|
637
629
|
GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
|
638
|
-
std::vector<
|
630
|
+
std::vector<grpc_error_handle> child_errors;
|
639
631
|
child_errors.push_back(parse_error);
|
640
632
|
error_list.push_back(
|
641
633
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
@@ -694,7 +686,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
694
686
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
695
687
|
"field:dropCategories error:required field missing"));
|
696
688
|
} else {
|
697
|
-
std::vector<
|
689
|
+
std::vector<grpc_error_handle> child_errors =
|
698
690
|
ParseDropCategories(it->second, drop_config.get());
|
699
691
|
if (!child_errors.empty()) {
|
700
692
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR(
|
@@ -713,9 +705,9 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
713
705
|
}
|
714
706
|
|
715
707
|
private:
|
716
|
-
static std::vector<
|
708
|
+
static std::vector<grpc_error_handle> ParseDropCategories(
|
717
709
|
const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) {
|
718
|
-
std::vector<
|
710
|
+
std::vector<grpc_error_handle> error_list;
|
719
711
|
if (json.type() != Json::Type::ARRAY) {
|
720
712
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
721
713
|
"dropCategories field is not an array"));
|
@@ -723,10 +715,10 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
723
715
|
}
|
724
716
|
for (size_t i = 0; i < json.array_value().size(); ++i) {
|
725
717
|
const Json& entry = json.array_value()[i];
|
726
|
-
std::vector<
|
718
|
+
std::vector<grpc_error_handle> child_errors =
|
727
719
|
ParseDropCategory(entry, drop_config);
|
728
720
|
if (!child_errors.empty()) {
|
729
|
-
|
721
|
+
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
730
722
|
absl::StrCat("errors parsing index ", i).c_str());
|
731
723
|
for (size_t i = 0; i < child_errors.size(); ++i) {
|
732
724
|
error = grpc_error_add_child(error, child_errors[i]);
|
@@ -737,9 +729,9 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
737
729
|
return error_list;
|
738
730
|
}
|
739
731
|
|
740
|
-
static std::vector<
|
732
|
+
static std::vector<grpc_error_handle> ParseDropCategory(
|
741
733
|
const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) {
|
742
|
-
std::vector<
|
734
|
+
std::vector<grpc_error_handle> error_list;
|
743
735
|
if (json.type() != Json::Type::OBJECT) {
|
744
736
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
745
737
|
"dropCategories entry is not an object"));
|
@@ -162,8 +162,8 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
|
|
162
162
|
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
|
163
163
|
const grpc_channel_args* args);
|
164
164
|
|
165
|
-
static void OnDelayedRemovalTimer(void* arg,
|
166
|
-
void OnDelayedRemovalTimerLocked(
|
165
|
+
static void OnDelayedRemovalTimer(void* arg, grpc_error_handle error);
|
166
|
+
void OnDelayedRemovalTimerLocked(grpc_error_handle error);
|
167
167
|
|
168
168
|
// The owning LB policy.
|
169
169
|
RefCountedPtr<XdsClusterManagerLb> xds_cluster_manager_policy_;
|
@@ -212,15 +212,8 @@ XdsClusterManagerLb::PickResult XdsClusterManagerLb::ClusterPicker::Pick(
|
|
212
212
|
if (it != cluster_map_.end()) {
|
213
213
|
return it->second->Pick(args);
|
214
214
|
}
|
215
|
-
PickResult
|
216
|
-
|
217
|
-
result.error = grpc_error_set_int(
|
218
|
-
GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
219
|
-
absl::StrCat("xds cluster manager picker: unknown cluster \"",
|
220
|
-
cluster_name, "\"")
|
221
|
-
.c_str()),
|
222
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_INTERNAL);
|
223
|
-
return result;
|
215
|
+
return PickResult::Fail(absl::InternalError(absl::StrCat(
|
216
|
+
"xds cluster manager picker: unknown cluster \"", cluster_name, "\"")));
|
224
217
|
}
|
225
218
|
|
226
219
|
//
|
@@ -337,44 +330,29 @@ void XdsClusterManagerLb::UpdateStateLocked() {
|
|
337
330
|
gpr_log(GPR_INFO, "[xds_cluster_manager_lb %p] connectivity changed to %s",
|
338
331
|
this, ConnectivityStateName(connectivity_state));
|
339
332
|
}
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
cluster_map[cluster_name];
|
349
|
-
child_picker = children_[cluster_name]->picker_wrapper();
|
350
|
-
if (child_picker == nullptr) {
|
351
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_manager_lb_trace)) {
|
352
|
-
gpr_log(
|
353
|
-
GPR_INFO,
|
333
|
+
ClusterPicker::ClusterMap cluster_map;
|
334
|
+
for (const auto& p : config_->cluster_map()) {
|
335
|
+
const std::string& cluster_name = p.first;
|
336
|
+
RefCountedPtr<ChildPickerWrapper>& child_picker = cluster_map[cluster_name];
|
337
|
+
child_picker = children_[cluster_name]->picker_wrapper();
|
338
|
+
if (child_picker == nullptr) {
|
339
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_manager_lb_trace)) {
|
340
|
+
gpr_log(GPR_INFO,
|
354
341
|
"[xds_cluster_manager_lb %p] child %s has not yet returned a "
|
355
342
|
"picker; creating a QueuePicker.",
|
356
343
|
this, cluster_name.c_str());
|
357
|
-
}
|
358
|
-
child_picker = MakeRefCounted<ChildPickerWrapper>(
|
359
|
-
cluster_name, absl::make_unique<QueuePicker>(
|
360
|
-
Ref(DEBUG_LOCATION, "QueuePicker")));
|
361
|
-
}
|
362
344
|
}
|
363
|
-
|
364
|
-
|
345
|
+
child_picker = MakeRefCounted<ChildPickerWrapper>(
|
346
|
+
cluster_name,
|
347
|
+
absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
|
365
348
|
}
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
374
|
-
"TRANSIENT_FAILURE from XdsClusterManagerLb"),
|
375
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
376
|
-
status = grpc_error_to_absl_status(error);
|
377
|
-
picker = absl::make_unique<TransientFailurePicker>(error);
|
349
|
+
}
|
350
|
+
std::unique_ptr<SubchannelPicker> picker =
|
351
|
+
absl::make_unique<ClusterPicker>(std::move(cluster_map));
|
352
|
+
absl::Status status;
|
353
|
+
if (connectivity_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
354
|
+
status = absl::Status(absl::StatusCode::kUnavailable,
|
355
|
+
"TRANSIENT_FAILURE from XdsClusterManagerLb");
|
378
356
|
}
|
379
357
|
channel_control_helper()->UpdateState(connectivity_state, status,
|
380
358
|
std::move(picker));
|
@@ -513,7 +491,7 @@ void XdsClusterManagerLb::ClusterChild::DeactivateLocked() {
|
|
513
491
|
}
|
514
492
|
|
515
493
|
void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimer(
|
516
|
-
void* arg,
|
494
|
+
void* arg, grpc_error_handle error) {
|
517
495
|
ClusterChild* self = static_cast<ClusterChild*>(arg);
|
518
496
|
GRPC_ERROR_REF(error); // Ref owned by the lambda
|
519
497
|
self->xds_cluster_manager_policy_->work_serializer()->Run(
|
@@ -522,7 +500,7 @@ void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimer(
|
|
522
500
|
}
|
523
501
|
|
524
502
|
void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimerLocked(
|
525
|
-
|
503
|
+
grpc_error_handle error) {
|
526
504
|
delayed_removal_timer_callback_pending_ = false;
|
527
505
|
if (error == GRPC_ERROR_NONE && !shutdown_) {
|
528
506
|
xds_cluster_manager_policy_->children_.erase(name_);
|
@@ -616,7 +594,7 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
616
594
|
const char* name() const override { return kXdsClusterManager; }
|
617
595
|
|
618
596
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
619
|
-
const Json& json,
|
597
|
+
const Json& json, grpc_error_handle* error) const override {
|
620
598
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
621
599
|
if (json.type() == Json::Type::JSON_NULL) {
|
622
600
|
// xds_cluster_manager was mentioned as a policy in the deprecated
|
@@ -627,7 +605,7 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
627
605
|
"config instead.");
|
628
606
|
return nullptr;
|
629
607
|
}
|
630
|
-
std::vector<
|
608
|
+
std::vector<grpc_error_handle> error_list;
|
631
609
|
XdsClusterManagerLbConfig::ClusterMap cluster_map;
|
632
610
|
std::set<std::string /*cluster_name*/> clusters_to_be_used;
|
633
611
|
auto it = json.object_value().find("children");
|
@@ -646,14 +624,14 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
646
624
|
continue;
|
647
625
|
}
|
648
626
|
RefCountedPtr<LoadBalancingPolicy::Config> child_config;
|
649
|
-
std::vector<
|
627
|
+
std::vector<grpc_error_handle> child_errors =
|
650
628
|
ParseChildConfig(p.second, &child_config);
|
651
629
|
if (!child_errors.empty()) {
|
652
630
|
// Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
|
653
631
|
// string is not static in this case.
|
654
|
-
|
632
|
+
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
655
633
|
absl::StrCat("field:children name:", child_name).c_str());
|
656
|
-
for (
|
634
|
+
for (grpc_error_handle child_error : child_errors) {
|
657
635
|
error = grpc_error_add_child(error, child_error);
|
658
636
|
}
|
659
637
|
error_list.push_back(error);
|
@@ -676,10 +654,10 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
676
654
|
}
|
677
655
|
|
678
656
|
private:
|
679
|
-
static std::vector<
|
657
|
+
static std::vector<grpc_error_handle> ParseChildConfig(
|
680
658
|
const Json& json,
|
681
659
|
RefCountedPtr<LoadBalancingPolicy::Config>* child_config) {
|
682
|
-
std::vector<
|
660
|
+
std::vector<grpc_error_handle> error_list;
|
683
661
|
if (json.type() != Json::Type::OBJECT) {
|
684
662
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
685
663
|
"value should be of type object"));
|
@@ -690,12 +668,12 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
690
668
|
error_list.push_back(
|
691
669
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("did not find childPolicy"));
|
692
670
|
} else {
|
693
|
-
|
671
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
694
672
|
*child_config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
695
673
|
it->second, &parse_error);
|
696
674
|
if (*child_config == nullptr) {
|
697
675
|
GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
|
698
|
-
std::vector<
|
676
|
+
std::vector<grpc_error_handle> child_errors;
|
699
677
|
child_errors.push_back(parse_error);
|
700
678
|
error_list.push_back(
|
701
679
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
@@ -28,6 +28,7 @@
|
|
28
28
|
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
29
29
|
#include "src/core/ext/filters/client_channel/lb_policy/address_filtering.h"
|
30
30
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
31
|
+
#include "src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h"
|
31
32
|
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds.h"
|
32
33
|
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
|
33
34
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
@@ -71,13 +72,16 @@ class XdsClusterResolverLbConfig : public LoadBalancingPolicy::Config {
|
|
71
72
|
};
|
72
73
|
DiscoveryMechanismType type;
|
73
74
|
std::string eds_service_name;
|
75
|
+
std::string dns_hostname;
|
74
76
|
|
75
77
|
bool operator==(const DiscoveryMechanism& other) const {
|
76
78
|
return (cluster_name == other.cluster_name &&
|
77
79
|
lrs_load_reporting_server_name ==
|
78
80
|
other.lrs_load_reporting_server_name &&
|
79
81
|
max_concurrent_requests == other.max_concurrent_requests &&
|
80
|
-
type == other.type &&
|
82
|
+
type == other.type &&
|
83
|
+
eds_service_name == other.eds_service_name &&
|
84
|
+
dns_hostname == other.dns_hostname);
|
81
85
|
}
|
82
86
|
};
|
83
87
|
|
@@ -101,7 +105,8 @@ class XdsClusterResolverLbConfig : public LoadBalancingPolicy::Config {
|
|
101
105
|
// Xds Cluster Resolver LB policy.
|
102
106
|
class XdsClusterResolverLb : public LoadBalancingPolicy {
|
103
107
|
public:
|
104
|
-
XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client, Args args
|
108
|
+
XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client, Args args,
|
109
|
+
std::string server_name, bool is_xds_uri);
|
105
110
|
|
106
111
|
const char* name() const override { return kXdsClusterResolver; }
|
107
112
|
|
@@ -130,17 +135,6 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
130
135
|
virtual Json::Array override_child_policy() = 0;
|
131
136
|
virtual bool disable_reresolution() = 0;
|
132
137
|
|
133
|
-
// Caller must ensure that config_ is set before calling.
|
134
|
-
absl::string_view GetXdsClusterResolverResourceName() const {
|
135
|
-
if (!parent_->is_xds_uri_) return parent_->server_name_;
|
136
|
-
if (!parent_->config_->discovery_mechanisms()[index_]
|
137
|
-
.eds_service_name.empty()) {
|
138
|
-
return parent_->config_->discovery_mechanisms()[index_]
|
139
|
-
.eds_service_name;
|
140
|
-
}
|
141
|
-
return parent_->config_->discovery_mechanisms()[index_].cluster_name;
|
142
|
-
}
|
143
|
-
|
144
138
|
// Returns a pair containing the cluster and eds_service_name
|
145
139
|
// to use for LRS load reporting. Caller must ensure that config_ is set
|
146
140
|
// before calling.
|
@@ -184,7 +178,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
184
178
|
void OnEndpointChanged(XdsApi::EdsUpdate update) override {
|
185
179
|
new Notifier(discovery_mechanism_, std::move(update));
|
186
180
|
}
|
187
|
-
void OnError(
|
181
|
+
void OnError(grpc_error_handle error) override {
|
188
182
|
new Notifier(discovery_mechanism_, error);
|
189
183
|
}
|
190
184
|
void OnResourceDoesNotExist() override {
|
@@ -197,7 +191,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
197
191
|
Notifier(RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism,
|
198
192
|
XdsApi::EdsUpdate update);
|
199
193
|
Notifier(RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism,
|
200
|
-
|
194
|
+
grpc_error_handle error);
|
201
195
|
explicit Notifier(
|
202
196
|
RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism);
|
203
197
|
~Notifier() { discovery_mechanism_.reset(DEBUG_LOCATION, "Notifier"); }
|
@@ -205,8 +199,8 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
205
199
|
private:
|
206
200
|
enum Type { kUpdate, kError, kDoesNotExist };
|
207
201
|
|
208
|
-
static void RunInExecCtx(void* arg,
|
209
|
-
void RunInWorkSerializer(
|
202
|
+
static void RunInExecCtx(void* arg, grpc_error_handle error);
|
203
|
+
void RunInWorkSerializer(grpc_error_handle error);
|
210
204
|
|
211
205
|
RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism_;
|
212
206
|
grpc_closure closure_;
|
@@ -217,6 +211,18 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
217
211
|
RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism_;
|
218
212
|
};
|
219
213
|
|
214
|
+
absl::string_view GetEdsResourceName() const {
|
215
|
+
if (!parent()->is_xds_uri_) return parent()->server_name_;
|
216
|
+
if (!parent()
|
217
|
+
->config_->discovery_mechanisms()[index()]
|
218
|
+
.eds_service_name.empty()) {
|
219
|
+
return parent()
|
220
|
+
->config_->discovery_mechanisms()[index()]
|
221
|
+
.eds_service_name;
|
222
|
+
}
|
223
|
+
return parent()->config_->discovery_mechanisms()[index()].cluster_name;
|
224
|
+
}
|
225
|
+
|
220
226
|
// Note that this is not owned, so this pointer must never be dereferenced.
|
221
227
|
EndpointWatcher* watcher_ = nullptr;
|
222
228
|
};
|
@@ -249,14 +255,16 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
249
255
|
|
250
256
|
void ReturnResult(Resolver::Result result) override;
|
251
257
|
|
252
|
-
void ReturnError(
|
258
|
+
void ReturnError(grpc_error_handle error) override;
|
253
259
|
|
254
260
|
private:
|
255
261
|
RefCountedPtr<LogicalDNSDiscoveryMechanism> discovery_mechanism_;
|
256
262
|
};
|
257
|
-
|
263
|
+
|
264
|
+
// This is necessary only because of a bug in msvc where nested class cannot
|
258
265
|
// access protected member in base class.
|
259
266
|
friend class ResolverResultHandler;
|
267
|
+
|
260
268
|
OrphanablePtr<Resolver> resolver_;
|
261
269
|
};
|
262
270
|
|
@@ -303,7 +311,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
303
311
|
void ShutdownLocked() override;
|
304
312
|
|
305
313
|
void OnEndpointChanged(size_t index, XdsApi::EdsUpdate update);
|
306
|
-
void OnError(size_t index,
|
314
|
+
void OnError(size_t index, grpc_error_handle error);
|
307
315
|
void OnResourceDoesNotExist(size_t index);
|
308
316
|
|
309
317
|
void MaybeDestroyChildPolicyLocked();
|
@@ -317,6 +325,9 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
317
325
|
grpc_channel_args* CreateChildPolicyArgsLocked(
|
318
326
|
const grpc_channel_args* args_in);
|
319
327
|
|
328
|
+
// The xds client and endpoint watcher.
|
329
|
+
RefCountedPtr<XdsClient> xds_client_;
|
330
|
+
|
320
331
|
// Server name from target URI.
|
321
332
|
std::string server_name_;
|
322
333
|
bool is_xds_uri_;
|
@@ -328,9 +339,6 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
328
339
|
// Internal state.
|
329
340
|
bool shutting_down_ = false;
|
330
341
|
|
331
|
-
// The xds client and endpoint watcher.
|
332
|
-
RefCountedPtr<XdsClient> xds_client_;
|
333
|
-
|
334
342
|
// Vector of discovery mechansism entries in priority order.
|
335
343
|
std::vector<DiscoveryMechanismEntry> discovery_mechanisms_;
|
336
344
|
|
@@ -388,13 +396,12 @@ void XdsClusterResolverLb::EdsDiscoveryMechanism::Start() {
|
|
388
396
|
gpr_log(GPR_INFO,
|
389
397
|
"[xds_cluster_resolver_lb %p] eds discovery mechanism %" PRIuPTR
|
390
398
|
":%p starting xds watch for %s",
|
391
|
-
parent(), index(), this,
|
392
|
-
std::string(GetXdsClusterResolverResourceName()).c_str());
|
399
|
+
parent(), index(), this, std::string(GetEdsResourceName()).c_str());
|
393
400
|
}
|
394
401
|
auto watcher = absl::make_unique<EndpointWatcher>(
|
395
402
|
Ref(DEBUG_LOCATION, "EdsDiscoveryMechanism"));
|
396
403
|
watcher_ = watcher.get();
|
397
|
-
parent()->xds_client_->WatchEndpointData(
|
404
|
+
parent()->xds_client_->WatchEndpointData(GetEdsResourceName(),
|
398
405
|
std::move(watcher));
|
399
406
|
}
|
400
407
|
|
@@ -403,11 +410,10 @@ void XdsClusterResolverLb::EdsDiscoveryMechanism::Orphan() {
|
|
403
410
|
gpr_log(GPR_INFO,
|
404
411
|
"[xds_cluster_resolver_lb %p] eds discovery mechanism %" PRIuPTR
|
405
412
|
":%p cancelling xds watch for %s",
|
406
|
-
parent(), index(), this,
|
407
|
-
std::string(GetXdsClusterResolverResourceName()).c_str());
|
413
|
+
parent(), index(), this, std::string(GetEdsResourceName()).c_str());
|
408
414
|
}
|
409
|
-
parent()->xds_client_->CancelEndpointDataWatch(
|
410
|
-
|
415
|
+
parent()->xds_client_->CancelEndpointDataWatch(GetEdsResourceName(),
|
416
|
+
watcher_);
|
411
417
|
Unref();
|
412
418
|
}
|
413
419
|
|
@@ -429,7 +435,7 @@ XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
|
429
435
|
XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
430
436
|
Notifier(RefCountedPtr<XdsClusterResolverLb::EdsDiscoveryMechanism>
|
431
437
|
discovery_mechanism,
|
432
|
-
|
438
|
+
grpc_error_handle error)
|
433
439
|
: discovery_mechanism_(std::move(discovery_mechanism)), type_(kError) {
|
434
440
|
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
435
441
|
ExecCtx::Run(DEBUG_LOCATION, &closure_, error);
|
@@ -445,7 +451,7 @@ XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
|
445
451
|
}
|
446
452
|
|
447
453
|
void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
448
|
-
RunInExecCtx(void* arg,
|
454
|
+
RunInExecCtx(void* arg, grpc_error_handle error) {
|
449
455
|
Notifier* self = static_cast<Notifier*>(arg);
|
450
456
|
GRPC_ERROR_REF(error);
|
451
457
|
self->discovery_mechanism_->parent()->work_serializer()->Run(
|
@@ -453,7 +459,7 @@ void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
|
453
459
|
}
|
454
460
|
|
455
461
|
void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
456
|
-
RunInWorkSerializer(
|
462
|
+
RunInWorkSerializer(grpc_error_handle error) {
|
457
463
|
switch (type_) {
|
458
464
|
case kUpdate:
|
459
465
|
discovery_mechanism_->parent()->OnEndpointChanged(
|
@@ -476,7 +482,8 @@ void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
|
476
482
|
//
|
477
483
|
|
478
484
|
void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::Start() {
|
479
|
-
std::string target =
|
485
|
+
std::string target =
|
486
|
+
parent()->config_->discovery_mechanisms()[index()].dns_hostname;
|
480
487
|
grpc_channel_args* args = nullptr;
|
481
488
|
FakeResolverResponseGenerator* fake_resolver_response_generator =
|
482
489
|
grpc_channel_args_find_pointer<FakeResolverResponseGenerator>(
|
@@ -488,6 +495,7 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::Start() {
|
|
488
495
|
fake_resolver_response_generator);
|
489
496
|
args = grpc_channel_args_copy_and_add(parent()->args_, &new_arg, 1);
|
490
497
|
} else {
|
498
|
+
target = absl::StrCat("dns:", target);
|
491
499
|
args = grpc_channel_args_copy(parent()->args_);
|
492
500
|
}
|
493
501
|
resolver_ = ResolverRegistry::CreateResolver(
|
@@ -541,7 +549,7 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
|
541
549
|
}
|
542
550
|
|
543
551
|
void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
544
|
-
ReturnError(
|
552
|
+
ReturnError(grpc_error_handle error) {
|
545
553
|
discovery_mechanism_->parent()->OnError(discovery_mechanism_->index(), error);
|
546
554
|
}
|
547
555
|
|
@@ -550,26 +558,17 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
|
550
558
|
//
|
551
559
|
|
552
560
|
XdsClusterResolverLb::XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client,
|
553
|
-
Args args
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
}
|
560
|
-
// Record server name.
|
561
|
-
const char* server_uri =
|
562
|
-
grpc_channel_args_find_string(args.args, GRPC_ARG_SERVER_URI);
|
563
|
-
GPR_ASSERT(server_uri != nullptr);
|
564
|
-
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
565
|
-
GPR_ASSERT(uri.ok() && !uri->path().empty());
|
566
|
-
server_name_ = std::string(absl::StripPrefix(uri->path(), "/"));
|
567
|
-
is_xds_uri_ = uri->scheme() == "xds";
|
561
|
+
Args args, std::string server_name,
|
562
|
+
bool is_xds_uri)
|
563
|
+
: LoadBalancingPolicy(std::move(args)),
|
564
|
+
xds_client_(std::move(xds_client)),
|
565
|
+
server_name_(std::move(server_name)),
|
566
|
+
is_xds_uri_(is_xds_uri) {
|
568
567
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_cluster_resolver_trace)) {
|
569
568
|
gpr_log(GPR_INFO,
|
570
|
-
"[xds_cluster_resolver_lb %p]
|
571
|
-
"
|
572
|
-
this,
|
569
|
+
"[xds_cluster_resolver_lb %p] created -- xds_client=%p, "
|
570
|
+
"server_name=%s, is_xds_uri=%d",
|
571
|
+
this, xds_client_.get(), server_name_.c_str(), is_xds_uri_);
|
573
572
|
}
|
574
573
|
// EDS-only flow.
|
575
574
|
if (!is_xds_uri_) {
|
@@ -738,11 +737,11 @@ void XdsClusterResolverLb::OnEndpointChanged(size_t index,
|
|
738
737
|
UpdatePriorityList(std::move(priority_list));
|
739
738
|
}
|
740
739
|
|
741
|
-
void XdsClusterResolverLb::OnError(size_t index,
|
740
|
+
void XdsClusterResolverLb::OnError(size_t index, grpc_error_handle error) {
|
742
741
|
gpr_log(GPR_ERROR,
|
743
742
|
"[xds_cluster_resolver_lb %p] discovery mechanism %" PRIuPTR
|
744
743
|
" xds watcher reported error: %s",
|
745
|
-
this, index,
|
744
|
+
this, index, grpc_error_std_string(error).c_str());
|
746
745
|
GRPC_ERROR_UNREF(error);
|
747
746
|
if (shutting_down_) return;
|
748
747
|
if (!discovery_mechanisms_[index].first_update_received) {
|
@@ -842,6 +841,13 @@ ServerAddressList XdsClusterResolverLb::CreateChildPolicyAddressesLocked() {
|
|
842
841
|
std::vector<std::string> hierarchical_path = {
|
843
842
|
priority_child_name, locality_name->AsHumanReadableString()};
|
844
843
|
for (const auto& endpoint : locality.endpoints) {
|
844
|
+
const ServerAddressWeightAttribute* weight_attribute = static_cast<
|
845
|
+
const ServerAddressWeightAttribute*>(endpoint.GetAttribute(
|
846
|
+
ServerAddressWeightAttribute::kServerAddressWeightAttributeKey));
|
847
|
+
uint32_t weight = locality.lb_weight;
|
848
|
+
if (weight_attribute != nullptr) {
|
849
|
+
weight = locality.lb_weight * weight_attribute->weight();
|
850
|
+
}
|
845
851
|
addresses.emplace_back(
|
846
852
|
endpoint
|
847
853
|
.WithAttribute(kHierarchicalPathAttributeKey,
|
@@ -849,10 +855,10 @@ ServerAddressList XdsClusterResolverLb::CreateChildPolicyAddressesLocked() {
|
|
849
855
|
.WithAttribute(kXdsLocalityNameAttributeKey,
|
850
856
|
absl::make_unique<XdsLocalityAttribute>(
|
851
857
|
locality_name->Ref()))
|
852
|
-
.WithAttribute(
|
853
|
-
|
854
|
-
|
855
|
-
|
858
|
+
.WithAttribute(
|
859
|
+
ServerAddressWeightAttribute::
|
860
|
+
kServerAddressWeightAttributeKey,
|
861
|
+
absl::make_unique<ServerAddressWeightAttribute>(weight)));
|
856
862
|
}
|
857
863
|
}
|
858
864
|
}
|
@@ -1010,7 +1016,7 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
1010
1016
|
"[xds_cluster_resolver_lb %p] generated config for child policy: %s",
|
1011
1017
|
this, json_str.c_str());
|
1012
1018
|
}
|
1013
|
-
|
1019
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1014
1020
|
RefCountedPtr<LoadBalancingPolicy::Config> config =
|
1015
1021
|
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(json, &error);
|
1016
1022
|
if (error != GRPC_ERROR_NONE) {
|
@@ -1020,16 +1026,13 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
1020
1026
|
"[xds_cluster_resolver_lb %p] error parsing generated child policy "
|
1021
1027
|
"config -- "
|
1022
1028
|
"will put channel in TRANSIENT_FAILURE: %s",
|
1023
|
-
this,
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
"parsing generated child policy config"),
|
1028
|
-
error),
|
1029
|
-
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_INTERNAL);
|
1029
|
+
this, grpc_error_std_string(error).c_str());
|
1030
|
+
absl::Status status = absl::InternalError(
|
1031
|
+
"xds_cluster_resolver LB policy: error parsing generated child policy "
|
1032
|
+
"config");
|
1030
1033
|
channel_control_helper()->UpdateState(
|
1031
|
-
GRPC_CHANNEL_TRANSIENT_FAILURE,
|
1032
|
-
absl::make_unique<TransientFailurePicker>(
|
1034
|
+
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
1035
|
+
absl::make_unique<TransientFailurePicker>(status));
|
1033
1036
|
return nullptr;
|
1034
1037
|
}
|
1035
1038
|
return config;
|
@@ -1054,10 +1057,14 @@ void XdsClusterResolverLb::UpdateChildPolicyLocked() {
|
|
1054
1057
|
|
1055
1058
|
grpc_channel_args* XdsClusterResolverLb::CreateChildPolicyArgsLocked(
|
1056
1059
|
const grpc_channel_args* args) {
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1060
|
+
absl::InlinedVector<grpc_arg, 2> new_args = {
|
1061
|
+
// Inhibit client-side health checking, since the balancer does this
|
1062
|
+
// for us.
|
1063
|
+
grpc_channel_arg_integer_create(
|
1064
|
+
const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1),
|
1065
|
+
};
|
1066
|
+
if (!is_xds_uri_) new_args.push_back(xds_client_->MakeChannelArg());
|
1067
|
+
return grpc_channel_args_copy_and_add(args, new_args.data(), new_args.size());
|
1061
1068
|
}
|
1062
1069
|
|
1063
1070
|
OrphanablePtr<LoadBalancingPolicy>
|
@@ -1096,24 +1103,45 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1096
1103
|
public:
|
1097
1104
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
1098
1105
|
LoadBalancingPolicy::Args args) const override {
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1106
|
+
// Find server name.
|
1107
|
+
const char* server_uri =
|
1108
|
+
grpc_channel_args_find_string(args.args, GRPC_ARG_SERVER_URI);
|
1109
|
+
GPR_ASSERT(server_uri != nullptr);
|
1110
|
+
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
1111
|
+
GPR_ASSERT(uri.ok() && !uri->path().empty());
|
1112
|
+
absl::string_view server_name = absl::StripPrefix(uri->path(), "/");
|
1113
|
+
// Determine if it's an xds URI.
|
1114
|
+
bool is_xds_uri = uri->scheme() == "xds" || uri->scheme() == "google-c2p";
|
1115
|
+
// Get XdsClient.
|
1116
|
+
RefCountedPtr<XdsClient> xds_client =
|
1117
|
+
XdsClient::GetFromChannelArgs(*args.args);
|
1118
|
+
if (xds_client == nullptr) {
|
1119
|
+
if (!is_xds_uri) {
|
1120
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1121
|
+
xds_client = XdsClient::GetOrCreate(args.args, &error);
|
1122
|
+
if (error != GRPC_ERROR_NONE) {
|
1123
|
+
gpr_log(GPR_ERROR,
|
1124
|
+
"cannot get or create XdsClient to instantiate "
|
1125
|
+
"xds_cluster_resolver LB policy: %s",
|
1126
|
+
grpc_error_std_string(error).c_str());
|
1127
|
+
GRPC_ERROR_UNREF(error);
|
1128
|
+
return nullptr;
|
1129
|
+
}
|
1130
|
+
} else {
|
1131
|
+
gpr_log(GPR_ERROR,
|
1132
|
+
"XdsClient not present in channel args -- cannot instantiate "
|
1133
|
+
"xds_cluster_resolver LB policy");
|
1134
|
+
return nullptr;
|
1135
|
+
}
|
1108
1136
|
}
|
1109
|
-
return MakeOrphanable<XdsClusterResolverChildHandler>(
|
1110
|
-
|
1137
|
+
return MakeOrphanable<XdsClusterResolverChildHandler>(
|
1138
|
+
std::move(xds_client), std::move(args), server_name, is_xds_uri);
|
1111
1139
|
}
|
1112
1140
|
|
1113
1141
|
const char* name() const override { return kXdsClusterResolver; }
|
1114
1142
|
|
1115
1143
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
1116
|
-
const Json& json,
|
1144
|
+
const Json& json, grpc_error_handle* error) const override {
|
1117
1145
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
1118
1146
|
if (json.type() == Json::Type::JSON_NULL) {
|
1119
1147
|
// xds_cluster_resolver was mentioned as a policy in the deprecated
|
@@ -1124,7 +1152,7 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1124
1152
|
"Please use loadBalancingConfig field of service config instead.");
|
1125
1153
|
return nullptr;
|
1126
1154
|
}
|
1127
|
-
std::vector<
|
1155
|
+
std::vector<grpc_error_handle> error_list;
|
1128
1156
|
std::vector<XdsClusterResolverLbConfig::DiscoveryMechanism>
|
1129
1157
|
discovery_mechanisms;
|
1130
1158
|
auto it = json.object_value().find("discoveryMechanisms");
|
@@ -1138,13 +1166,13 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1138
1166
|
const Json::Array& array = it->second.array_value();
|
1139
1167
|
for (size_t i = 0; i < array.size(); ++i) {
|
1140
1168
|
XdsClusterResolverLbConfig::DiscoveryMechanism discovery_mechanism;
|
1141
|
-
std::vector<
|
1169
|
+
std::vector<grpc_error_handle> discovery_mechanism_errors =
|
1142
1170
|
ParseDiscoveryMechanism(array[i], &discovery_mechanism);
|
1143
1171
|
if (!discovery_mechanism_errors.empty()) {
|
1144
|
-
|
1172
|
+
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1145
1173
|
absl::StrCat("field:discovery_mechanism element: ", i, " error")
|
1146
1174
|
.c_str());
|
1147
|
-
for (
|
1175
|
+
for (grpc_error_handle discovery_mechanism_error :
|
1148
1176
|
discovery_mechanism_errors) {
|
1149
1177
|
error = grpc_error_add_child(error, discovery_mechanism_error);
|
1150
1178
|
}
|
@@ -1184,65 +1212,11 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1184
1212
|
}
|
1185
1213
|
policy_it = policy.find("RING_HASH");
|
1186
1214
|
if (policy_it != policy.end()) {
|
1187
|
-
if (policy_it->second.type() != Json::Type::OBJECT) {
|
1188
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1189
|
-
"field:RING_HASH error:type should be object"));
|
1190
|
-
continue;
|
1191
|
-
}
|
1192
|
-
// TODO(donnadionne): Move this to a method in
|
1193
|
-
// ring_hash_experimental and call it here.
|
1194
|
-
const Json::Object& ring_hash = policy_it->second.object_value();
|
1195
1215
|
xds_lb_policy = array[i];
|
1196
|
-
size_t min_ring_size
|
1197
|
-
size_t max_ring_size
|
1198
|
-
|
1199
|
-
|
1200
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1201
|
-
"field:min_ring_size missing"));
|
1202
|
-
} else if (ring_hash_it->second.type() != Json::Type::NUMBER) {
|
1203
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1204
|
-
"field:min_ring_size error: should be of "
|
1205
|
-
"number"));
|
1206
|
-
} else {
|
1207
|
-
min_ring_size = gpr_parse_nonnegative_int(
|
1208
|
-
ring_hash_it->second.string_value().c_str());
|
1209
|
-
}
|
1210
|
-
ring_hash_it = ring_hash.find("max_ring_size");
|
1211
|
-
if (ring_hash_it == ring_hash.end()) {
|
1212
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1213
|
-
"field:max_ring_size missing"));
|
1214
|
-
} else if (ring_hash_it->second.type() != Json::Type::NUMBER) {
|
1215
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1216
|
-
"field:max_ring_size error: should be of "
|
1217
|
-
"number"));
|
1218
|
-
} else {
|
1219
|
-
max_ring_size = gpr_parse_nonnegative_int(
|
1220
|
-
ring_hash_it->second.string_value().c_str());
|
1221
|
-
}
|
1222
|
-
if (min_ring_size <= 0 || min_ring_size > 8388608 ||
|
1223
|
-
max_ring_size <= 0 || max_ring_size > 8388608 ||
|
1224
|
-
min_ring_size > max_ring_size) {
|
1225
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1226
|
-
"field:max_ring_size and or min_ring_size error: "
|
1227
|
-
"values need to be in the range of 1 to 8388608 "
|
1228
|
-
"and max_ring_size cannot be smaller than "
|
1229
|
-
"min_ring_size"));
|
1230
|
-
}
|
1231
|
-
ring_hash_it = ring_hash.find("hash_function");
|
1232
|
-
if (ring_hash_it == ring_hash.end()) {
|
1233
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1234
|
-
"field:hash_function missing"));
|
1235
|
-
} else if (ring_hash_it->second.type() != Json::Type::STRING) {
|
1236
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1237
|
-
"field:hash_function error: should be a "
|
1238
|
-
"string"));
|
1239
|
-
} else if (ring_hash_it->second.string_value() != "XX_HASH" &&
|
1240
|
-
ring_hash_it->second.string_value() != "MURMUR_HASH_2") {
|
1241
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1242
|
-
"field:hash_function error: unsupported "
|
1243
|
-
"hash_function"));
|
1244
|
-
}
|
1245
|
-
break;
|
1216
|
+
size_t min_ring_size;
|
1217
|
+
size_t max_ring_size;
|
1218
|
+
ParseRingHashLbConfig(policy_it->second, &min_ring_size,
|
1219
|
+
&max_ring_size, &error_list);
|
1246
1220
|
}
|
1247
1221
|
}
|
1248
1222
|
}
|
@@ -1259,10 +1233,10 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1259
1233
|
}
|
1260
1234
|
|
1261
1235
|
private:
|
1262
|
-
static std::vector<
|
1236
|
+
static std::vector<grpc_error_handle> ParseDiscoveryMechanism(
|
1263
1237
|
const Json& json,
|
1264
1238
|
XdsClusterResolverLbConfig::DiscoveryMechanism* discovery_mechanism) {
|
1265
|
-
std::vector<
|
1239
|
+
std::vector<grpc_error_handle> error_list;
|
1266
1240
|
if (json.type() != Json::Type::OBJECT) {
|
1267
1241
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1268
1242
|
"value should be of type object"));
|
@@ -1314,35 +1288,46 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1314
1288
|
if (it->second.string_value() == "EDS") {
|
1315
1289
|
discovery_mechanism->type = XdsClusterResolverLbConfig::
|
1316
1290
|
DiscoveryMechanism::DiscoveryMechanismType::EDS;
|
1291
|
+
it = json.object_value().find("edsServiceName");
|
1292
|
+
if (it != json.object_value().end()) {
|
1293
|
+
if (it->second.type() != Json::Type::STRING) {
|
1294
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1295
|
+
"field:edsServiceName error:type should be string"));
|
1296
|
+
} else {
|
1297
|
+
discovery_mechanism->eds_service_name = it->second.string_value();
|
1298
|
+
}
|
1299
|
+
}
|
1317
1300
|
} else if (it->second.string_value() == "LOGICAL_DNS") {
|
1318
1301
|
discovery_mechanism->type = XdsClusterResolverLbConfig::
|
1319
1302
|
DiscoveryMechanism::DiscoveryMechanismType::LOGICAL_DNS;
|
1303
|
+
it = json.object_value().find("dnsHostname");
|
1304
|
+
if (it == json.object_value().end()) {
|
1305
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1306
|
+
"field:dnsHostname error:required field missing"));
|
1307
|
+
} else if (it->second.type() != Json::Type::STRING) {
|
1308
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1309
|
+
"field:dnsHostname error:type should be string"));
|
1310
|
+
} else {
|
1311
|
+
discovery_mechanism->dns_hostname = it->second.string_value();
|
1312
|
+
}
|
1320
1313
|
} else {
|
1321
1314
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1322
1315
|
"field:type error:invalid type"));
|
1323
1316
|
}
|
1324
1317
|
}
|
1325
|
-
// EDS service name.
|
1326
|
-
it = json.object_value().find("edsServiceName");
|
1327
|
-
if (it != json.object_value().end()) {
|
1328
|
-
if (it->second.type() != Json::Type::STRING) {
|
1329
|
-
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1330
|
-
"field:xds_cluster_resolverServiceName error:type should be "
|
1331
|
-
"string"));
|
1332
|
-
} else {
|
1333
|
-
discovery_mechanism->eds_service_name = it->second.string_value();
|
1334
|
-
}
|
1335
|
-
}
|
1336
1318
|
return error_list;
|
1337
1319
|
}
|
1338
1320
|
|
1339
1321
|
class XdsClusterResolverChildHandler : public ChildPolicyHandler {
|
1340
1322
|
public:
|
1341
1323
|
XdsClusterResolverChildHandler(RefCountedPtr<XdsClient> xds_client,
|
1342
|
-
Args args
|
1324
|
+
Args args, absl::string_view server_name,
|
1325
|
+
bool is_xds_uri)
|
1343
1326
|
: ChildPolicyHandler(std::move(args),
|
1344
1327
|
&grpc_lb_xds_cluster_resolver_trace),
|
1345
|
-
xds_client_(std::move(xds_client))
|
1328
|
+
xds_client_(std::move(xds_client)),
|
1329
|
+
server_name_(server_name),
|
1330
|
+
is_xds_uri_(is_xds_uri) {}
|
1346
1331
|
|
1347
1332
|
bool ConfigChangeRequiresNewPolicyInstance(
|
1348
1333
|
LoadBalancingPolicy::Config* old_config,
|
@@ -1359,11 +1344,14 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1359
1344
|
|
1360
1345
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
1361
1346
|
const char* /*name*/, LoadBalancingPolicy::Args args) const override {
|
1362
|
-
return MakeOrphanable<XdsClusterResolverLb>(xds_client_, std::move(args)
|
1347
|
+
return MakeOrphanable<XdsClusterResolverLb>(xds_client_, std::move(args),
|
1348
|
+
server_name_, is_xds_uri_);
|
1363
1349
|
}
|
1364
1350
|
|
1365
1351
|
private:
|
1366
1352
|
RefCountedPtr<XdsClient> xds_client_;
|
1353
|
+
std::string server_name_;
|
1354
|
+
bool is_xds_uri_;
|
1367
1355
|
};
|
1368
1356
|
};
|
1369
1357
|
|