grpc 1.35.0 → 1.38.0
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 +168 -131
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/channel_args.h +28 -0
- data/include/grpc/event_engine/event_engine.h +336 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/event_engine/slice_allocator.h +81 -0
- data/include/grpc/grpc.h +15 -1
- data/include/grpc/grpc_security.h +16 -11
- data/include/grpc/grpc_security_constants.h +14 -0
- data/include/grpc/impl/codegen/grpc_types.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -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 +740 -3185
- data/src/core/ext/filters/client_channel/client_channel.h +488 -56
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +10 -2
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +18 -14
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +26 -23
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
- 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 +49 -48
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +2 -3
- 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 +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +22 -18
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
- 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 +15 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +318 -193
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +32 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +316 -171
- 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/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver.h +3 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +59 -60
- 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_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +67 -74
- 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_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 +33 -23
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +38 -43
- 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 +379 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +346 -178
- 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 +2188 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
- data/src/core/ext/filters/client_channel/server_address.cc +10 -1
- data/src/core/ext/filters/client_channel/server_address.h +31 -0
- 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_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 +86 -162
- data/src/core/ext/filters/client_channel/subchannel.h +68 -99
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
- 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 +501 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
- 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 +47 -42
- 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 +5 -4
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +5 -4
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +507 -196
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +13 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -3
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +64 -21
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +167 -122
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- 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 +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +13 -9
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
- 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 +6 -5
- 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_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
- 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 +32 -27
- data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +13 -9
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +150 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +19 -21
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +64 -51
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
- 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 +88 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +753 -724
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +371 -377
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- 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 +2179 -688
- data/src/core/ext/xds/xds_api.h +326 -124
- data/src/core/ext/xds/xds_bootstrap.cc +115 -142
- data/src/core/ext/xds/xds_bootstrap.h +24 -17
- data/src/core/ext/xds/xds_certificate_provider.cc +184 -78
- data/src/core/ext/xds/xds_certificate_provider.h +84 -45
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +462 -183
- data/src/core/ext/xds/xds_client.h +65 -22
- data/src/core/ext/xds/xds_client_stats.cc +2 -1
- data/src/core/ext/xds/xds_client_stats.h +5 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +444 -29
- 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 +108 -5
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +26 -6
- data/src/core/lib/channel/channel_stack.cc +22 -9
- data/src/core/lib/channel/channel_stack.h +17 -9
- 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 +108 -12
- data/src/core/lib/channel/channelz.h +30 -1
- data/src/core/lib/channel/channelz_registry.cc +14 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +9 -50
- data/src/core/lib/channel/handshaker.h +6 -23
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +5 -0
- data/src/core/lib/event_engine/slice_allocator.cc +59 -0
- data/src/core/lib/event_engine/sockaddr.cc +38 -0
- data/src/core/lib/gpr/log.cc +6 -1
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/ref_counted.h +29 -15
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +180 -0
- data/src/core/lib/gprpp/sync.h +129 -40
- data/src/core/lib/gprpp/thd.h +1 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +13 -9
- 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 +7 -9
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- 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 +5 -5
- 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_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +167 -61
- data/src/core/lib/iomgr/error.h +218 -107
- 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 +16 -13
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +22 -22
- data/src/core/lib/iomgr/ev_epollex_linux.cc +52 -49
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +12 -11
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/exec_ctx.cc +10 -6
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- 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 +1 -1
- 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 +1 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -3
- 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 +5 -5
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +3 -3
- data/src/core/lib/iomgr/resolve_address.h +6 -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 +12 -11
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +23 -20
- 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 +16 -18
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +5 -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 +41 -42
- 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 +23 -21
- data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
- 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 +27 -25
- 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_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +8 -8
- 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_nospecial.cc +1 -1
- 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 +4 -4
- data/src/core/lib/matchers/matchers.cc +339 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- 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 +4 -3
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -14
- 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 +17 -14
- 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 +6 -5
- 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 +9 -9
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +16 -15
- 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/insecure/insecure_credentials.cc +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -5
- 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 -8
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- 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/ssl/ssl_credentials.cc +2 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- 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 +19 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +130 -61
- data/src/core/lib/security/credentials/xds/xds_credentials.h +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 +5 -5
- 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 +14 -4
- 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 +31 -8
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +88 -74
- 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 +66 -37
- data/src/core/lib/security/transport/server_auth_filter.cc +24 -11
- 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_intern.cc +5 -6
- data/src/core/lib/surface/call.cc +46 -45
- data/src/core/lib/surface/call.h +2 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +6 -5
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +46 -47
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +13 -15
- data/src/core/lib/surface/lame_client.cc +43 -24
- data/src/core/lib/surface/lame_client.h +4 -3
- data/src/core/lib/surface/server.cc +71 -58
- data/src/core/lib/surface/server.h +91 -28
- 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 +4 -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 +19 -8
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata.cc +6 -2
- data/src/core/lib/transport/metadata_batch.cc +64 -37
- data/src/core/lib/transport/metadata_batch.h +33 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +4 -4
- data/src/core/lib/transport/transport_op_string.cc +5 -5
- data/src/core/plugin_registry/grpc_plugin_registry.cc +12 -0
- data/src/core/tsi/alts/crypt/gsec.h +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -28
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -27
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/fake_transport_security.cc +11 -2
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
- data/src/core/tsi/ssl_transport_security.cc +32 -17
- data/src/core/tsi/ssl_transport_security.h +3 -7
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +9 -1
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -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/messages_pb.rb +7 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- 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/graphcycles.cc +1 -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 +742 -724
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +4 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +22 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +40 -86
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +6 -17
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- 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 +101 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- 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 +4 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
- 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 +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
- 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 +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +135 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
- 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 +161 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +121 -71
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +71 -41
- 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 +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/is_fips.c → rand_extra/passive.c} +16 -11
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -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 +4 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +17 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- 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 +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +737 -551
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +15 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -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 +13 -40
- 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/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +239 -37
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +28 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +702 -219
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +141 -36
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +47 -15
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +159 -13
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +253 -58
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
- 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 +90 -25
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +450 -104
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +232 -85
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +174 -95
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/authorization_engine.h +0 -84
- data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
- data/src/core/lib/security/authorization/evaluate_args.h +0 -59
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/upb/upb/json_decode.c +0 -1443
- data/third_party/upb/upb/json_decode.h +0 -23
- data/third_party/upb/upb/json_encode.c +0 -713
- data/third_party/upb/upb/json_encode.h +0 -36
@@ -21,4 +21,9 @@
|
|
21
21
|
// Set by xds_cluster_impl LB policy and used by GoogleDefaultCredentials.
|
22
22
|
#define GRPC_ARG_XDS_CLUSTER_NAME "grpc.internal.xds_cluster_name"
|
23
23
|
|
24
|
+
// For testing purpose, this channel arg indicating xds_cluster_resolver LB
|
25
|
+
// policy should use the fake DNS resolver to resolve logical dns cluster.
|
26
|
+
#define GRPC_ARG_XDS_LOGICAL_DNS_CLUSTER_FAKE_RESOLVER_RESPONSE_GENERATOR \
|
27
|
+
"grpc.internal.xds_logical_dns_cluster_fake_resolver_response_generator"
|
28
|
+
|
24
29
|
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_XDS_XDS_CHANNEL_ARGS_H
|
@@ -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;
|
@@ -107,17 +109,6 @@ CircuitBreakerCallCounterMap::CallCounter::~CallCounter() {
|
|
107
109
|
|
108
110
|
constexpr char kXdsClusterImpl[] = "xds_cluster_impl_experimental";
|
109
111
|
|
110
|
-
// TODO (donnadionne): Check to see if circuit breaking is enabled, this will be
|
111
|
-
// removed once circuit breaking feature is fully integrated and enabled by
|
112
|
-
// default.
|
113
|
-
bool XdsCircuitBreakingEnabled() {
|
114
|
-
char* value = gpr_getenv("GRPC_XDS_EXPERIMENTAL_CIRCUIT_BREAKING");
|
115
|
-
bool parsed_value;
|
116
|
-
bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
|
117
|
-
gpr_free(value);
|
118
|
-
return parse_succeeded && parsed_value;
|
119
|
-
}
|
120
|
-
|
121
112
|
// Config for xDS Cluster Impl LB policy.
|
122
113
|
class XdsClusterImplLbConfig : public LoadBalancingPolicy::Config {
|
123
114
|
public:
|
@@ -145,9 +136,7 @@ class XdsClusterImplLbConfig : public LoadBalancingPolicy::Config {
|
|
145
136
|
const absl::optional<std::string>& lrs_load_reporting_server_name() const {
|
146
137
|
return lrs_load_reporting_server_name_;
|
147
138
|
};
|
148
|
-
|
149
|
-
return max_concurrent_requests_;
|
150
|
-
}
|
139
|
+
uint32_t max_concurrent_requests() const { return max_concurrent_requests_; }
|
151
140
|
RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config() const {
|
152
141
|
return drop_config_;
|
153
142
|
}
|
@@ -210,7 +199,6 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
|
|
210
199
|
|
211
200
|
private:
|
212
201
|
RefCountedPtr<CircuitBreakerCallCounterMap::CallCounter> call_counter_;
|
213
|
-
bool xds_circuit_breaking_enabled_;
|
214
202
|
uint32_t max_concurrent_requests_;
|
215
203
|
RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config_;
|
216
204
|
RefCountedPtr<XdsClusterDropStats> drop_stats_;
|
@@ -279,7 +267,6 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
|
|
279
267
|
XdsClusterImplLb::Picker::Picker(XdsClusterImplLb* xds_cluster_impl_lb,
|
280
268
|
RefCountedPtr<RefCountedPicker> picker)
|
281
269
|
: call_counter_(xds_cluster_impl_lb->call_counter_),
|
282
|
-
xds_circuit_breaking_enabled_(XdsCircuitBreakingEnabled()),
|
283
270
|
max_concurrent_requests_(
|
284
271
|
xds_cluster_impl_lb->config_->max_concurrent_requests()),
|
285
272
|
drop_config_(xds_cluster_impl_lb->config_->drop_config()),
|
@@ -302,17 +289,15 @@ LoadBalancingPolicy::PickResult XdsClusterImplLb::Picker::Pick(
|
|
302
289
|
return result;
|
303
290
|
}
|
304
291
|
// Handle circuit breaking.
|
305
|
-
uint32_t current = call_counter_->
|
306
|
-
if
|
307
|
-
|
308
|
-
if (
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
result.type = PickResult::PICK_COMPLETE;
|
313
|
-
return result;
|
314
|
-
}
|
292
|
+
uint32_t current = call_counter_->Load();
|
293
|
+
// Check and see if we exceeded the max concurrent requests count.
|
294
|
+
if (current >= max_concurrent_requests_) {
|
295
|
+
if (drop_stats_ != nullptr) drop_stats_->AddUncategorizedDrops();
|
296
|
+
PickResult result;
|
297
|
+
result.type = PickResult::PICK_COMPLETE;
|
298
|
+
return result;
|
315
299
|
}
|
300
|
+
call_counter_->Increment();
|
316
301
|
// If we're not dropping the call, we should always have a child picker.
|
317
302
|
if (picker_ == nullptr) { // Should never happen.
|
318
303
|
PickResult result;
|
@@ -346,7 +331,7 @@ LoadBalancingPolicy::PickResult XdsClusterImplLb::Picker::Pick(
|
|
346
331
|
// Note: This callback does not run in either the control plane
|
347
332
|
// work serializer or in the data plane mutex.
|
348
333
|
[locality_stats, original_recv_trailing_metadata_ready, call_counter](
|
349
|
-
|
334
|
+
grpc_error_handle error, MetadataInterface* metadata,
|
350
335
|
CallState* call_state) {
|
351
336
|
// Record call completion for load reporting.
|
352
337
|
if (locality_stats != nullptr) {
|
@@ -611,14 +596,12 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
611
596
|
public:
|
612
597
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
613
598
|
LoadBalancingPolicy::Args args) const override {
|
614
|
-
|
615
|
-
|
616
|
-
if (
|
617
|
-
gpr_log(
|
618
|
-
|
619
|
-
|
620
|
-
grpc_error_string(error));
|
621
|
-
GRPC_ERROR_UNREF(error);
|
599
|
+
RefCountedPtr<XdsClient> xds_client =
|
600
|
+
XdsClient::GetFromChannelArgs(*args.args);
|
601
|
+
if (xds_client == nullptr) {
|
602
|
+
gpr_log(GPR_ERROR,
|
603
|
+
"XdsClient not present in channel args -- cannot instantiate "
|
604
|
+
"xds_cluster_impl LB policy");
|
622
605
|
return nullptr;
|
623
606
|
}
|
624
607
|
return MakeOrphanable<XdsClusterImplLb>(std::move(xds_client),
|
@@ -628,7 +611,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
628
611
|
const char* name() const override { return kXdsClusterImpl; }
|
629
612
|
|
630
613
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
631
|
-
const Json& json,
|
614
|
+
const Json& json, grpc_error_handle* error) const override {
|
632
615
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
633
616
|
if (json.type() == Json::Type::JSON_NULL) {
|
634
617
|
// This policy was configured in the deprecated loadBalancingPolicy
|
@@ -639,7 +622,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
639
622
|
"config instead.");
|
640
623
|
return nullptr;
|
641
624
|
}
|
642
|
-
std::vector<
|
625
|
+
std::vector<grpc_error_handle> error_list;
|
643
626
|
// Child policy.
|
644
627
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy;
|
645
628
|
auto it = json.object_value().find("childPolicy");
|
@@ -647,12 +630,12 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
647
630
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
648
631
|
"field:childPolicy error:required field missing"));
|
649
632
|
} else {
|
650
|
-
|
633
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
651
634
|
child_policy = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
652
635
|
it->second, &parse_error);
|
653
636
|
if (child_policy == nullptr) {
|
654
637
|
GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
|
655
|
-
std::vector<
|
638
|
+
std::vector<grpc_error_handle> child_errors;
|
656
639
|
child_errors.push_back(parse_error);
|
657
640
|
error_list.push_back(
|
658
641
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
@@ -711,7 +694,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
711
694
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
712
695
|
"field:dropCategories error:required field missing"));
|
713
696
|
} else {
|
714
|
-
std::vector<
|
697
|
+
std::vector<grpc_error_handle> child_errors =
|
715
698
|
ParseDropCategories(it->second, drop_config.get());
|
716
699
|
if (!child_errors.empty()) {
|
717
700
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR(
|
@@ -730,9 +713,9 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
730
713
|
}
|
731
714
|
|
732
715
|
private:
|
733
|
-
static std::vector<
|
716
|
+
static std::vector<grpc_error_handle> ParseDropCategories(
|
734
717
|
const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) {
|
735
|
-
std::vector<
|
718
|
+
std::vector<grpc_error_handle> error_list;
|
736
719
|
if (json.type() != Json::Type::ARRAY) {
|
737
720
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
738
721
|
"dropCategories field is not an array"));
|
@@ -740,10 +723,10 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
740
723
|
}
|
741
724
|
for (size_t i = 0; i < json.array_value().size(); ++i) {
|
742
725
|
const Json& entry = json.array_value()[i];
|
743
|
-
std::vector<
|
726
|
+
std::vector<grpc_error_handle> child_errors =
|
744
727
|
ParseDropCategory(entry, drop_config);
|
745
728
|
if (!child_errors.empty()) {
|
746
|
-
|
729
|
+
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
747
730
|
absl::StrCat("errors parsing index ", i).c_str());
|
748
731
|
for (size_t i = 0; i < child_errors.size(); ++i) {
|
749
732
|
error = grpc_error_add_child(error, child_errors[i]);
|
@@ -754,9 +737,9 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
754
737
|
return error_list;
|
755
738
|
}
|
756
739
|
|
757
|
-
static std::vector<
|
740
|
+
static std::vector<grpc_error_handle> ParseDropCategory(
|
758
741
|
const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) {
|
759
|
-
std::vector<
|
742
|
+
std::vector<grpc_error_handle> error_list;
|
760
743
|
if (json.type() != Json::Type::OBJECT) {
|
761
744
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
762
745
|
"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_;
|
@@ -337,44 +337,29 @@ void XdsClusterManagerLb::UpdateStateLocked() {
|
|
337
337
|
gpr_log(GPR_INFO, "[xds_cluster_manager_lb %p] connectivity changed to %s",
|
338
338
|
this, ConnectivityStateName(connectivity_state));
|
339
339
|
}
|
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,
|
340
|
+
ClusterPicker::ClusterMap cluster_map;
|
341
|
+
for (const auto& p : config_->cluster_map()) {
|
342
|
+
const std::string& cluster_name = p.first;
|
343
|
+
RefCountedPtr<ChildPickerWrapper>& child_picker = cluster_map[cluster_name];
|
344
|
+
child_picker = children_[cluster_name]->picker_wrapper();
|
345
|
+
if (child_picker == nullptr) {
|
346
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_manager_lb_trace)) {
|
347
|
+
gpr_log(GPR_INFO,
|
354
348
|
"[xds_cluster_manager_lb %p] child %s has not yet returned a "
|
355
349
|
"picker; creating a QueuePicker.",
|
356
350
|
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
351
|
}
|
363
|
-
|
364
|
-
|
352
|
+
child_picker = MakeRefCounted<ChildPickerWrapper>(
|
353
|
+
cluster_name,
|
354
|
+
absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
|
365
355
|
}
|
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);
|
356
|
+
}
|
357
|
+
std::unique_ptr<SubchannelPicker> picker =
|
358
|
+
absl::make_unique<ClusterPicker>(std::move(cluster_map));
|
359
|
+
absl::Status status;
|
360
|
+
if (connectivity_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
361
|
+
status = absl::Status(absl::StatusCode::kUnavailable,
|
362
|
+
"TRANSIENT_FAILURE from XdsClusterManagerLb");
|
378
363
|
}
|
379
364
|
channel_control_helper()->UpdateState(connectivity_state, status,
|
380
365
|
std::move(picker));
|
@@ -501,7 +486,7 @@ void XdsClusterManagerLb::ClusterChild::ResetBackoffLocked() {
|
|
501
486
|
|
502
487
|
void XdsClusterManagerLb::ClusterChild::DeactivateLocked() {
|
503
488
|
// If already deactivated, don't do that again.
|
504
|
-
if (delayed_removal_timer_callback_pending_
|
489
|
+
if (delayed_removal_timer_callback_pending_) return;
|
505
490
|
// Set the child weight to 0 so that future picker won't contain this child.
|
506
491
|
// Start a timer to delete the child.
|
507
492
|
Ref(DEBUG_LOCATION, "ClusterChild+timer").release();
|
@@ -513,7 +498,7 @@ void XdsClusterManagerLb::ClusterChild::DeactivateLocked() {
|
|
513
498
|
}
|
514
499
|
|
515
500
|
void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimer(
|
516
|
-
void* arg,
|
501
|
+
void* arg, grpc_error_handle error) {
|
517
502
|
ClusterChild* self = static_cast<ClusterChild*>(arg);
|
518
503
|
GRPC_ERROR_REF(error); // Ref owned by the lambda
|
519
504
|
self->xds_cluster_manager_policy_->work_serializer()->Run(
|
@@ -522,7 +507,7 @@ void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimer(
|
|
522
507
|
}
|
523
508
|
|
524
509
|
void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimerLocked(
|
525
|
-
|
510
|
+
grpc_error_handle error) {
|
526
511
|
delayed_removal_timer_callback_pending_ = false;
|
527
512
|
if (error == GRPC_ERROR_NONE && !shutdown_) {
|
528
513
|
xds_cluster_manager_policy_->children_.erase(name_);
|
@@ -616,7 +601,7 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
616
601
|
const char* name() const override { return kXdsClusterManager; }
|
617
602
|
|
618
603
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
619
|
-
const Json& json,
|
604
|
+
const Json& json, grpc_error_handle* error) const override {
|
620
605
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
621
606
|
if (json.type() == Json::Type::JSON_NULL) {
|
622
607
|
// xds_cluster_manager was mentioned as a policy in the deprecated
|
@@ -627,7 +612,7 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
627
612
|
"config instead.");
|
628
613
|
return nullptr;
|
629
614
|
}
|
630
|
-
std::vector<
|
615
|
+
std::vector<grpc_error_handle> error_list;
|
631
616
|
XdsClusterManagerLbConfig::ClusterMap cluster_map;
|
632
617
|
std::set<std::string /*cluster_name*/> clusters_to_be_used;
|
633
618
|
auto it = json.object_value().find("children");
|
@@ -646,14 +631,14 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
646
631
|
continue;
|
647
632
|
}
|
648
633
|
RefCountedPtr<LoadBalancingPolicy::Config> child_config;
|
649
|
-
std::vector<
|
634
|
+
std::vector<grpc_error_handle> child_errors =
|
650
635
|
ParseChildConfig(p.second, &child_config);
|
651
636
|
if (!child_errors.empty()) {
|
652
637
|
// Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
|
653
638
|
// string is not static in this case.
|
654
|
-
|
639
|
+
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
655
640
|
absl::StrCat("field:children name:", child_name).c_str());
|
656
|
-
for (
|
641
|
+
for (grpc_error_handle child_error : child_errors) {
|
657
642
|
error = grpc_error_add_child(error, child_error);
|
658
643
|
}
|
659
644
|
error_list.push_back(error);
|
@@ -676,10 +661,10 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
676
661
|
}
|
677
662
|
|
678
663
|
private:
|
679
|
-
static std::vector<
|
664
|
+
static std::vector<grpc_error_handle> ParseChildConfig(
|
680
665
|
const Json& json,
|
681
666
|
RefCountedPtr<LoadBalancingPolicy::Config>* child_config) {
|
682
|
-
std::vector<
|
667
|
+
std::vector<grpc_error_handle> error_list;
|
683
668
|
if (json.type() != Json::Type::OBJECT) {
|
684
669
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
685
670
|
"value should be of type object"));
|
@@ -690,12 +675,12 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
690
675
|
error_list.push_back(
|
691
676
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("did not find childPolicy"));
|
692
677
|
} else {
|
693
|
-
|
678
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
694
679
|
*child_config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
695
680
|
it->second, &parse_error);
|
696
681
|
if (*child_config == nullptr) {
|
697
682
|
GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
|
698
|
-
std::vector<
|
683
|
+
std::vector<grpc_error_handle> child_errors;
|
699
684
|
child_errors.push_back(parse_error);
|
700
685
|
error_list.push_back(
|
701
686
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
@@ -29,8 +29,10 @@
|
|
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
31
|
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds.h"
|
32
|
+
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
|
32
33
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
33
34
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
35
|
+
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
|
34
36
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
35
37
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
36
38
|
#include "src/core/ext/xds/xds_channel_args.h"
|
@@ -80,39 +82,33 @@ class XdsClusterResolverLbConfig : public LoadBalancingPolicy::Config {
|
|
80
82
|
};
|
81
83
|
|
82
84
|
XdsClusterResolverLbConfig(
|
83
|
-
std::vector<DiscoveryMechanism> discovery_mechanisms,
|
84
|
-
Json locality_picking_policy, Json endpoint_picking_policy)
|
85
|
+
std::vector<DiscoveryMechanism> discovery_mechanisms, Json xds_lb_policy)
|
85
86
|
: discovery_mechanisms_(std::move(discovery_mechanisms)),
|
86
|
-
|
87
|
-
endpoint_picking_policy_(std::move(endpoint_picking_policy)) {}
|
87
|
+
xds_lb_policy_(std::move(xds_lb_policy)) {}
|
88
88
|
|
89
89
|
const char* name() const override { return kXdsClusterResolver; }
|
90
|
-
|
91
90
|
const std::vector<DiscoveryMechanism>& discovery_mechanisms() const {
|
92
91
|
return discovery_mechanisms_;
|
93
92
|
}
|
94
|
-
|
95
|
-
|
96
|
-
}
|
97
|
-
const Json& endpoint_picking_policy() const {
|
98
|
-
return endpoint_picking_policy_;
|
99
|
-
}
|
93
|
+
|
94
|
+
const Json& xds_lb_policy() const { return xds_lb_policy_; }
|
100
95
|
|
101
96
|
private:
|
102
97
|
std::vector<DiscoveryMechanism> discovery_mechanisms_;
|
103
|
-
Json
|
104
|
-
Json endpoint_picking_policy_;
|
98
|
+
Json xds_lb_policy_;
|
105
99
|
};
|
106
100
|
|
107
101
|
// Xds Cluster Resolver LB policy.
|
108
102
|
class XdsClusterResolverLb : public LoadBalancingPolicy {
|
109
103
|
public:
|
110
|
-
XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client, Args args
|
104
|
+
XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client, Args args,
|
105
|
+
std::string server_name, bool is_xds_uri);
|
111
106
|
|
112
107
|
const char* name() const override { return kXdsClusterResolver; }
|
113
108
|
|
114
109
|
void UpdateLocked(UpdateArgs args) override;
|
115
110
|
void ResetBackoffLocked() override;
|
111
|
+
void ExitIdleLocked() override;
|
116
112
|
|
117
113
|
private:
|
118
114
|
// Discovery Mechanism Base class
|
@@ -132,9 +128,11 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
132
128
|
: parent_(std::move(xds_cluster_resolver_lb)), index_(index) {}
|
133
129
|
virtual void Start() = 0;
|
134
130
|
void Orphan() override = 0;
|
131
|
+
virtual Json::Array override_child_policy() = 0;
|
132
|
+
virtual bool disable_reresolution() = 0;
|
135
133
|
|
136
134
|
// Caller must ensure that config_ is set before calling.
|
137
|
-
|
135
|
+
absl::string_view GetXdsClusterResolverResourceName() const {
|
138
136
|
if (!parent_->is_xds_uri_) return parent_->server_name_;
|
139
137
|
if (!parent_->config_->discovery_mechanisms()[index_]
|
140
138
|
.eds_service_name.empty()) {
|
@@ -172,6 +170,8 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
172
170
|
: DiscoveryMechanism(std::move(xds_cluster_resolver_lb), index) {}
|
173
171
|
void Start() override;
|
174
172
|
void Orphan() override;
|
173
|
+
Json::Array override_child_policy() override { return Json::Array{}; }
|
174
|
+
bool disable_reresolution() override { return true; }
|
175
175
|
|
176
176
|
private:
|
177
177
|
class EndpointWatcher : public XdsClient::EndpointWatcherInterface {
|
@@ -185,7 +185,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
185
185
|
void OnEndpointChanged(XdsApi::EdsUpdate update) override {
|
186
186
|
new Notifier(discovery_mechanism_, std::move(update));
|
187
187
|
}
|
188
|
-
void OnError(
|
188
|
+
void OnError(grpc_error_handle error) override {
|
189
189
|
new Notifier(discovery_mechanism_, error);
|
190
190
|
}
|
191
191
|
void OnResourceDoesNotExist() override {
|
@@ -198,7 +198,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
198
198
|
Notifier(RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism,
|
199
199
|
XdsApi::EdsUpdate update);
|
200
200
|
Notifier(RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism,
|
201
|
-
|
201
|
+
grpc_error_handle error);
|
202
202
|
explicit Notifier(
|
203
203
|
RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism);
|
204
204
|
~Notifier() { discovery_mechanism_.reset(DEBUG_LOCATION, "Notifier"); }
|
@@ -206,8 +206,8 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
206
206
|
private:
|
207
207
|
enum Type { kUpdate, kError, kDoesNotExist };
|
208
208
|
|
209
|
-
static void RunInExecCtx(void* arg,
|
210
|
-
void RunInWorkSerializer(
|
209
|
+
static void RunInExecCtx(void* arg, grpc_error_handle error);
|
210
|
+
void RunInWorkSerializer(grpc_error_handle error);
|
211
211
|
|
212
212
|
RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism_;
|
213
213
|
grpc_closure closure_;
|
@@ -230,6 +230,14 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
230
230
|
: DiscoveryMechanism(std::move(xds_cluster_resolver_lb), index) {}
|
231
231
|
void Start() override;
|
232
232
|
void Orphan() override;
|
233
|
+
Json::Array override_child_policy() override {
|
234
|
+
return Json::Array{
|
235
|
+
Json::Object{
|
236
|
+
{"pick_first", Json::Object()},
|
237
|
+
},
|
238
|
+
};
|
239
|
+
}
|
240
|
+
bool disable_reresolution() override { return false; };
|
233
241
|
|
234
242
|
private:
|
235
243
|
class ResolverResultHandler : public Resolver::ResultHandler {
|
@@ -242,7 +250,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
242
250
|
|
243
251
|
void ReturnResult(Resolver::Result result) override;
|
244
252
|
|
245
|
-
void ReturnError(
|
253
|
+
void ReturnError(grpc_error_handle error) override;
|
246
254
|
|
247
255
|
private:
|
248
256
|
RefCountedPtr<LogicalDNSDiscoveryMechanism> discovery_mechanism_;
|
@@ -296,7 +304,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
296
304
|
void ShutdownLocked() override;
|
297
305
|
|
298
306
|
void OnEndpointChanged(size_t index, XdsApi::EdsUpdate update);
|
299
|
-
void OnError(size_t index,
|
307
|
+
void OnError(size_t index, grpc_error_handle error);
|
300
308
|
void OnResourceDoesNotExist(size_t index);
|
301
309
|
|
302
310
|
void MaybeDestroyChildPolicyLocked();
|
@@ -310,6 +318,9 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
310
318
|
grpc_channel_args* CreateChildPolicyArgsLocked(
|
311
319
|
const grpc_channel_args* args_in);
|
312
320
|
|
321
|
+
// The xds client and endpoint watcher.
|
322
|
+
RefCountedPtr<XdsClient> xds_client_;
|
323
|
+
|
313
324
|
// Server name from target URI.
|
314
325
|
std::string server_name_;
|
315
326
|
bool is_xds_uri_;
|
@@ -321,9 +332,6 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
321
332
|
// Internal state.
|
322
333
|
bool shutting_down_ = false;
|
323
334
|
|
324
|
-
// The xds client and endpoint watcher.
|
325
|
-
RefCountedPtr<XdsClient> xds_client_;
|
326
|
-
|
327
335
|
// Vector of discovery mechansism entries in priority order.
|
328
336
|
std::vector<DiscoveryMechanismEntry> discovery_mechanisms_;
|
329
337
|
|
@@ -422,7 +430,7 @@ XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
|
422
430
|
XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
423
431
|
Notifier(RefCountedPtr<XdsClusterResolverLb::EdsDiscoveryMechanism>
|
424
432
|
discovery_mechanism,
|
425
|
-
|
433
|
+
grpc_error_handle error)
|
426
434
|
: discovery_mechanism_(std::move(discovery_mechanism)), type_(kError) {
|
427
435
|
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
428
436
|
ExecCtx::Run(DEBUG_LOCATION, &closure_, error);
|
@@ -438,7 +446,7 @@ XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
|
438
446
|
}
|
439
447
|
|
440
448
|
void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
441
|
-
RunInExecCtx(void* arg,
|
449
|
+
RunInExecCtx(void* arg, grpc_error_handle error) {
|
442
450
|
Notifier* self = static_cast<Notifier*>(arg);
|
443
451
|
GRPC_ERROR_REF(error);
|
444
452
|
self->discovery_mechanism_->parent()->work_serializer()->Run(
|
@@ -446,7 +454,7 @@ void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
|
446
454
|
}
|
447
455
|
|
448
456
|
void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
449
|
-
RunInWorkSerializer(
|
457
|
+
RunInWorkSerializer(grpc_error_handle error) {
|
450
458
|
switch (type_) {
|
451
459
|
case kUpdate:
|
452
460
|
discovery_mechanism_->parent()->OnEndpointChanged(
|
@@ -469,11 +477,26 @@ void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
|
469
477
|
//
|
470
478
|
|
471
479
|
void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::Start() {
|
480
|
+
std::string target = parent()->server_name_;
|
481
|
+
grpc_channel_args* args = nullptr;
|
482
|
+
FakeResolverResponseGenerator* fake_resolver_response_generator =
|
483
|
+
grpc_channel_args_find_pointer<FakeResolverResponseGenerator>(
|
484
|
+
parent()->args_,
|
485
|
+
GRPC_ARG_XDS_LOGICAL_DNS_CLUSTER_FAKE_RESOLVER_RESPONSE_GENERATOR);
|
486
|
+
if (fake_resolver_response_generator != nullptr) {
|
487
|
+
target = absl::StrCat("fake:", target);
|
488
|
+
grpc_arg new_arg = FakeResolverResponseGenerator::MakeChannelArg(
|
489
|
+
fake_resolver_response_generator);
|
490
|
+
args = grpc_channel_args_copy_and_add(parent()->args_, &new_arg, 1);
|
491
|
+
} else {
|
492
|
+
args = grpc_channel_args_copy(parent()->args_);
|
493
|
+
}
|
472
494
|
resolver_ = ResolverRegistry::CreateResolver(
|
473
|
-
|
474
|
-
|
495
|
+
target.c_str(), args, parent()->interested_parties(),
|
496
|
+
parent()->work_serializer(),
|
475
497
|
absl::make_unique<ResolverResultHandler>(
|
476
498
|
Ref(DEBUG_LOCATION, "LogicalDNSDiscoveryMechanism")));
|
499
|
+
grpc_channel_args_destroy(args);
|
477
500
|
if (resolver_ == nullptr) {
|
478
501
|
parent()->OnResourceDoesNotExist(index());
|
479
502
|
return;
|
@@ -509,15 +532,17 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
|
509
532
|
XdsApi::EdsUpdate update;
|
510
533
|
XdsApi::EdsUpdate::Priority::Locality locality;
|
511
534
|
locality.name = MakeRefCounted<XdsLocalityName>("", "", "");
|
535
|
+
locality.lb_weight = 1;
|
512
536
|
locality.endpoints = std::move(result.addresses);
|
513
|
-
|
514
|
-
|
537
|
+
XdsApi::EdsUpdate::Priority priority;
|
538
|
+
priority.localities.emplace(locality.name.get(), std::move(locality));
|
539
|
+
update.priorities.emplace_back(std::move(priority));
|
515
540
|
discovery_mechanism_->parent()->OnEndpointChanged(
|
516
541
|
discovery_mechanism_->index(), std::move(update));
|
517
542
|
}
|
518
543
|
|
519
544
|
void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
520
|
-
ReturnError(
|
545
|
+
ReturnError(grpc_error_handle error) {
|
521
546
|
discovery_mechanism_->parent()->OnError(discovery_mechanism_->index(), error);
|
522
547
|
}
|
523
548
|
|
@@ -526,26 +551,17 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
|
526
551
|
//
|
527
552
|
|
528
553
|
XdsClusterResolverLb::XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client,
|
529
|
-
Args args
|
530
|
-
|
554
|
+
Args args, std::string server_name,
|
555
|
+
bool is_xds_uri)
|
556
|
+
: LoadBalancingPolicy(std::move(args)),
|
557
|
+
xds_client_(std::move(xds_client)),
|
558
|
+
server_name_(std::move(server_name)),
|
559
|
+
is_xds_uri_(is_xds_uri) {
|
531
560
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_cluster_resolver_trace)) {
|
532
561
|
gpr_log(GPR_INFO,
|
533
|
-
"[xds_cluster_resolver_lb %p] created --
|
534
|
-
|
535
|
-
|
536
|
-
// Record server name.
|
537
|
-
const char* server_uri =
|
538
|
-
grpc_channel_args_find_string(args.args, GRPC_ARG_SERVER_URI);
|
539
|
-
GPR_ASSERT(server_uri != nullptr);
|
540
|
-
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
541
|
-
GPR_ASSERT(uri.ok() && !uri->path().empty());
|
542
|
-
server_name_ = std::string(absl::StripPrefix(uri->path(), "/"));
|
543
|
-
is_xds_uri_ = uri->scheme() == "xds";
|
544
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_cluster_resolver_trace)) {
|
545
|
-
gpr_log(GPR_INFO,
|
546
|
-
"[xds_cluster_resolver_lb %p] server name from channel "
|
547
|
-
"(is_xds_uri=%d): %s",
|
548
|
-
this, is_xds_uri_, server_name_.c_str());
|
562
|
+
"[xds_cluster_resolver_lb %p] created -- xds_client=%p, "
|
563
|
+
"server_name=%s, is_xds_uri=%d",
|
564
|
+
this, xds_client_.get(), server_name_.c_str(), is_xds_uri_);
|
549
565
|
}
|
550
566
|
// EDS-only flow.
|
551
567
|
if (!is_xds_uri_) {
|
@@ -655,6 +671,10 @@ void XdsClusterResolverLb::ResetBackoffLocked() {
|
|
655
671
|
}
|
656
672
|
}
|
657
673
|
|
674
|
+
void XdsClusterResolverLb::ExitIdleLocked() {
|
675
|
+
if (child_policy_ != nullptr) child_policy_->ExitIdleLocked();
|
676
|
+
}
|
677
|
+
|
658
678
|
void XdsClusterResolverLb::OnEndpointChanged(size_t index,
|
659
679
|
XdsApi::EdsUpdate update) {
|
660
680
|
if (shutting_down_) return;
|
@@ -673,10 +693,17 @@ void XdsClusterResolverLb::OnEndpointChanged(size_t index,
|
|
673
693
|
discovery_mechanisms_[index].pending_priority_list =
|
674
694
|
std::move(update.priorities);
|
675
695
|
discovery_mechanisms_[index].first_update_received = true;
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
696
|
+
// If any discovery mechanism has not received its first update,
|
697
|
+
// wait until that happens before creating the child policy.
|
698
|
+
// TODO(roth): If this becomes problematic in the future (e.g., a
|
699
|
+
// secondary discovery mechanism delaying us from starting up at all),
|
700
|
+
// we can consider some sort of optimization whereby we can create the
|
701
|
+
// priority policy with only a subset of its children. But we need to
|
702
|
+
// make sure not to get into a situation where the priority policy
|
703
|
+
// will put the channel into TRANSIENT_FAILURE instead of CONNECTING
|
704
|
+
// while we're still waiting for the other discovery mechanism(s).
|
705
|
+
for (DiscoveryMechanismEntry& mechanism : discovery_mechanisms_) {
|
706
|
+
if (!mechanism.first_update_received) return;
|
680
707
|
}
|
681
708
|
// Construct new priority list.
|
682
709
|
XdsApi::EdsUpdate::PriorityList priority_list;
|
@@ -703,11 +730,11 @@ void XdsClusterResolverLb::OnEndpointChanged(size_t index,
|
|
703
730
|
UpdatePriorityList(std::move(priority_list));
|
704
731
|
}
|
705
732
|
|
706
|
-
void XdsClusterResolverLb::OnError(size_t index,
|
733
|
+
void XdsClusterResolverLb::OnError(size_t index, grpc_error_handle error) {
|
707
734
|
gpr_log(GPR_ERROR,
|
708
735
|
"[xds_cluster_resolver_lb %p] discovery mechanism %" PRIuPTR
|
709
736
|
" xds watcher reported error: %s",
|
710
|
-
this, index,
|
737
|
+
this, index, grpc_error_std_string(error).c_str());
|
711
738
|
GRPC_ERROR_UNREF(error);
|
712
739
|
if (shutting_down_) return;
|
713
740
|
if (!discovery_mechanisms_[index].first_update_received) {
|
@@ -813,7 +840,11 @@ ServerAddressList XdsClusterResolverLb::CreateChildPolicyAddressesLocked() {
|
|
813
840
|
MakeHierarchicalPathAttribute(hierarchical_path))
|
814
841
|
.WithAttribute(kXdsLocalityNameAttributeKey,
|
815
842
|
absl::make_unique<XdsLocalityAttribute>(
|
816
|
-
locality_name->Ref()))
|
843
|
+
locality_name->Ref()))
|
844
|
+
.WithAttribute(ServerAddressWeightAttribute::
|
845
|
+
kServerAddressWeightAttributeKey,
|
846
|
+
absl::make_unique<ServerAddressWeightAttribute>(
|
847
|
+
locality.lb_weight)));
|
817
848
|
}
|
818
849
|
}
|
819
850
|
}
|
@@ -825,53 +856,76 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
825
856
|
Json::Object priority_children;
|
826
857
|
Json::Array priority_priorities;
|
827
858
|
// Setting up index to iterate through the discovery mechanisms and keeping
|
828
|
-
// track the discovery_mechanism each
|
859
|
+
// track the discovery_mechanism each priority belongs to.
|
829
860
|
size_t discovery_index = 0;
|
830
861
|
// Setting up num_priorities_remaining to track the priorities in each
|
831
862
|
// discovery_mechanism.
|
832
863
|
size_t num_priorities_remaining_in_discovery =
|
833
864
|
discovery_mechanisms_[discovery_index].num_priorities;
|
834
865
|
for (size_t priority = 0; priority < priority_list_.size(); ++priority) {
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
discovery_mechanisms_[discovery_index].num_priorities;
|
866
|
+
Json child_policy;
|
867
|
+
if (!discovery_mechanisms_[discovery_index]
|
868
|
+
.discovery_mechanism->override_child_policy()
|
869
|
+
.empty()) {
|
870
|
+
child_policy = discovery_mechanisms_[discovery_index]
|
871
|
+
.discovery_mechanism->override_child_policy();
|
842
872
|
} else {
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
873
|
+
const auto& xds_lb_policy = config_->xds_lb_policy().object_value();
|
874
|
+
if (xds_lb_policy.find("ROUND_ROBIN") != xds_lb_policy.end()) {
|
875
|
+
const auto& localities = priority_list_[priority].localities;
|
876
|
+
Json::Object weighted_targets;
|
877
|
+
for (const auto& p : localities) {
|
878
|
+
XdsLocalityName* locality_name = p.first;
|
879
|
+
const auto& locality = p.second;
|
880
|
+
// Construct JSON object containing locality name.
|
881
|
+
Json::Object locality_name_json;
|
882
|
+
if (!locality_name->region().empty()) {
|
883
|
+
locality_name_json["region"] = locality_name->region();
|
884
|
+
}
|
885
|
+
if (!locality_name->zone().empty()) {
|
886
|
+
locality_name_json["zone"] = locality_name->zone();
|
887
|
+
}
|
888
|
+
if (!locality_name->sub_zone().empty()) {
|
889
|
+
locality_name_json["sub_zone"] = locality_name->sub_zone();
|
890
|
+
}
|
891
|
+
// Add weighted target entry.
|
892
|
+
weighted_targets[locality_name->AsHumanReadableString()] =
|
893
|
+
Json::Object{
|
894
|
+
{"weight", locality.lb_weight},
|
895
|
+
{"childPolicy",
|
896
|
+
Json::Array{
|
897
|
+
Json::Object{
|
898
|
+
{"round_robin", Json::Object()},
|
899
|
+
},
|
900
|
+
}},
|
901
|
+
};
|
902
|
+
}
|
903
|
+
// Construct locality-picking policy.
|
904
|
+
// Start with field from our config and add the "targets" field.
|
905
|
+
child_policy = Json::Array{
|
906
|
+
Json::Object{
|
907
|
+
{"weighted_target_experimental",
|
908
|
+
Json::Object{
|
909
|
+
{"targets", Json::Object()},
|
910
|
+
}},
|
911
|
+
},
|
912
|
+
};
|
913
|
+
Json::Object& config =
|
914
|
+
*(*child_policy.mutable_array())[0].mutable_object();
|
915
|
+
auto it = config.begin();
|
916
|
+
GPR_ASSERT(it != config.end());
|
917
|
+
(*it->second.mutable_object())["targets"] = std::move(weighted_targets);
|
918
|
+
} else {
|
919
|
+
auto it = xds_lb_policy.find("RING_HASH");
|
920
|
+
GPR_ASSERT(it != xds_lb_policy.end());
|
921
|
+
Json::Object ring_hash_experimental_policy = it->second.object_value();
|
922
|
+
child_policy = Json::Array{
|
923
|
+
Json::Object{
|
924
|
+
{"ring_hash_experimental", ring_hash_experimental_policy},
|
925
|
+
},
|
926
|
+
};
|
860
927
|
}
|
861
|
-
// Add weighted target entry.
|
862
|
-
weighted_targets[locality_name->AsHumanReadableString()] = Json::Object{
|
863
|
-
{"weight", locality.lb_weight},
|
864
|
-
{"childPolicy", config_->endpoint_picking_policy()},
|
865
|
-
};
|
866
928
|
}
|
867
|
-
// Construct locality-picking policy.
|
868
|
-
// Start with field from our config and add the "targets" field.
|
869
|
-
Json locality_picking_config = config_->locality_picking_policy();
|
870
|
-
Json::Object& config =
|
871
|
-
*(*locality_picking_config.mutable_array())[0].mutable_object();
|
872
|
-
auto it = config.begin();
|
873
|
-
GPR_ASSERT(it != config.end());
|
874
|
-
(*it->second.mutable_object())["targets"] = std::move(weighted_targets);
|
875
929
|
// Wrap it in the drop policy.
|
876
930
|
Json::Array drop_categories;
|
877
931
|
if (discovery_mechanisms_[discovery_index].drop_config != nullptr) {
|
@@ -887,7 +941,7 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
887
941
|
.discovery_mechanism->GetLrsClusterKey();
|
888
942
|
Json::Object xds_cluster_impl_config = {
|
889
943
|
{"clusterName", std::string(lrs_key.first)},
|
890
|
-
{"childPolicy", std::move(
|
944
|
+
{"childPolicy", std::move(child_policy)},
|
891
945
|
{"dropCategories", std::move(drop_categories)},
|
892
946
|
{"maxConcurrentRequests",
|
893
947
|
config_->discovery_mechanisms()[discovery_index]
|
@@ -909,10 +963,24 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
909
963
|
const size_t child_number = priority_child_numbers_[priority];
|
910
964
|
std::string child_name = absl::StrCat("child", child_number);
|
911
965
|
priority_priorities.emplace_back(child_name);
|
912
|
-
|
966
|
+
Json::Object child_config = {
|
913
967
|
{"config", std::move(locality_picking_policy)},
|
914
|
-
{"ignore_reresolution_requests", true},
|
915
968
|
};
|
969
|
+
if (discovery_mechanisms_[discovery_index]
|
970
|
+
.discovery_mechanism->disable_reresolution()) {
|
971
|
+
child_config["ignore_reresolution_requests"] = true;
|
972
|
+
}
|
973
|
+
priority_children[child_name] = std::move(child_config);
|
974
|
+
// Each priority in the priority_list_ should correspond to a priority in a
|
975
|
+
// discovery mechanism in discovery_mechanisms_ (both in the same order).
|
976
|
+
// Keeping track of the discovery_mechanism each priority belongs to.
|
977
|
+
--num_priorities_remaining_in_discovery;
|
978
|
+
while (num_priorities_remaining_in_discovery == 0 &&
|
979
|
+
discovery_index < discovery_mechanisms_.size() - 1) {
|
980
|
+
++discovery_index;
|
981
|
+
num_priorities_remaining_in_discovery =
|
982
|
+
discovery_mechanisms_[discovery_index].num_priorities;
|
983
|
+
}
|
916
984
|
}
|
917
985
|
// There should be matching number of priorities in discovery_mechanisms_ and
|
918
986
|
// in priority_list_; therefore at the end of looping through all the
|
@@ -934,7 +1002,7 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
934
1002
|
"[xds_cluster_resolver_lb %p] generated config for child policy: %s",
|
935
1003
|
this, json_str.c_str());
|
936
1004
|
}
|
937
|
-
|
1005
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
938
1006
|
RefCountedPtr<LoadBalancingPolicy::Config> config =
|
939
1007
|
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(json, &error);
|
940
1008
|
if (error != GRPC_ERROR_NONE) {
|
@@ -944,7 +1012,7 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
944
1012
|
"[xds_cluster_resolver_lb %p] error parsing generated child policy "
|
945
1013
|
"config -- "
|
946
1014
|
"will put channel in TRANSIENT_FAILURE: %s",
|
947
|
-
this,
|
1015
|
+
this, grpc_error_std_string(error).c_str());
|
948
1016
|
error = grpc_error_set_int(
|
949
1017
|
grpc_error_add_child(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
950
1018
|
"xds_cluster_resolver LB policy: error "
|
@@ -978,10 +1046,14 @@ void XdsClusterResolverLb::UpdateChildPolicyLocked() {
|
|
978
1046
|
|
979
1047
|
grpc_channel_args* XdsClusterResolverLb::CreateChildPolicyArgsLocked(
|
980
1048
|
const grpc_channel_args* args) {
|
981
|
-
|
982
|
-
|
983
|
-
|
984
|
-
|
1049
|
+
absl::InlinedVector<grpc_arg, 2> new_args = {
|
1050
|
+
// Inhibit client-side health checking, since the balancer does this
|
1051
|
+
// for us.
|
1052
|
+
grpc_channel_arg_integer_create(
|
1053
|
+
const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1),
|
1054
|
+
};
|
1055
|
+
if (!is_xds_uri_) new_args.push_back(xds_client_->MakeChannelArg());
|
1056
|
+
return grpc_channel_args_copy_and_add(args, new_args.data(), new_args.size());
|
985
1057
|
}
|
986
1058
|
|
987
1059
|
OrphanablePtr<LoadBalancingPolicy>
|
@@ -1020,24 +1092,45 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1020
1092
|
public:
|
1021
1093
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
1022
1094
|
LoadBalancingPolicy::Args args) const override {
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1095
|
+
// Find server name.
|
1096
|
+
const char* server_uri =
|
1097
|
+
grpc_channel_args_find_string(args.args, GRPC_ARG_SERVER_URI);
|
1098
|
+
GPR_ASSERT(server_uri != nullptr);
|
1099
|
+
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
1100
|
+
GPR_ASSERT(uri.ok() && !uri->path().empty());
|
1101
|
+
absl::string_view server_name = absl::StripPrefix(uri->path(), "/");
|
1102
|
+
// Determine if it's an xds URI.
|
1103
|
+
bool is_xds_uri = uri->scheme() == "xds";
|
1104
|
+
// Get XdsClient.
|
1105
|
+
RefCountedPtr<XdsClient> xds_client =
|
1106
|
+
XdsClient::GetFromChannelArgs(*args.args);
|
1107
|
+
if (xds_client == nullptr) {
|
1108
|
+
if (!is_xds_uri) {
|
1109
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1110
|
+
xds_client = XdsClient::GetOrCreate(args.args, &error);
|
1111
|
+
if (error != GRPC_ERROR_NONE) {
|
1112
|
+
gpr_log(GPR_ERROR,
|
1113
|
+
"cannot get or create XdsClient to instantiate "
|
1114
|
+
"xds_cluster_resolver LB policy: %s",
|
1115
|
+
grpc_error_std_string(error).c_str());
|
1116
|
+
GRPC_ERROR_UNREF(error);
|
1117
|
+
return nullptr;
|
1118
|
+
}
|
1119
|
+
} else {
|
1120
|
+
gpr_log(GPR_ERROR,
|
1121
|
+
"XdsClient not present in channel args -- cannot instantiate "
|
1122
|
+
"xds_cluster_resolver LB policy");
|
1123
|
+
return nullptr;
|
1124
|
+
}
|
1032
1125
|
}
|
1033
|
-
return MakeOrphanable<XdsClusterResolverChildHandler>(
|
1034
|
-
|
1126
|
+
return MakeOrphanable<XdsClusterResolverChildHandler>(
|
1127
|
+
std::move(xds_client), std::move(args), server_name, is_xds_uri);
|
1035
1128
|
}
|
1036
1129
|
|
1037
1130
|
const char* name() const override { return kXdsClusterResolver; }
|
1038
1131
|
|
1039
1132
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
1040
|
-
const Json& json,
|
1133
|
+
const Json& json, grpc_error_handle* error) const override {
|
1041
1134
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
1042
1135
|
if (json.type() == Json::Type::JSON_NULL) {
|
1043
1136
|
// xds_cluster_resolver was mentioned as a policy in the deprecated
|
@@ -1048,7 +1141,7 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1048
1141
|
"Please use loadBalancingConfig field of service config instead.");
|
1049
1142
|
return nullptr;
|
1050
1143
|
}
|
1051
|
-
std::vector<
|
1144
|
+
std::vector<grpc_error_handle> error_list;
|
1052
1145
|
std::vector<XdsClusterResolverLbConfig::DiscoveryMechanism>
|
1053
1146
|
discovery_mechanisms;
|
1054
1147
|
auto it = json.object_value().find("discoveryMechanisms");
|
@@ -1062,13 +1155,13 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1062
1155
|
const Json::Array& array = it->second.array_value();
|
1063
1156
|
for (size_t i = 0; i < array.size(); ++i) {
|
1064
1157
|
XdsClusterResolverLbConfig::DiscoveryMechanism discovery_mechanism;
|
1065
|
-
std::vector<
|
1158
|
+
std::vector<grpc_error_handle> discovery_mechanism_errors =
|
1066
1159
|
ParseDiscoveryMechanism(array[i], &discovery_mechanism);
|
1067
1160
|
if (!discovery_mechanism_errors.empty()) {
|
1068
|
-
|
1161
|
+
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1069
1162
|
absl::StrCat("field:discovery_mechanism element: ", i, " error")
|
1070
1163
|
.c_str());
|
1071
|
-
for (
|
1164
|
+
for (grpc_error_handle discovery_mechanism_error :
|
1072
1165
|
discovery_mechanism_errors) {
|
1073
1166
|
error = grpc_error_add_child(error, discovery_mechanism_error);
|
1074
1167
|
}
|
@@ -1077,58 +1170,104 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1077
1170
|
discovery_mechanisms.emplace_back(std::move(discovery_mechanism));
|
1078
1171
|
}
|
1079
1172
|
}
|
1080
|
-
// Locality-picking policy.
|
1081
|
-
Json locality_picking_policy;
|
1082
|
-
it = json.object_value().find("localityPickingPolicy");
|
1083
|
-
if (it == json.object_value().end()) {
|
1084
|
-
locality_picking_policy = Json::Array{
|
1085
|
-
Json::Object{
|
1086
|
-
{"weighted_target_experimental",
|
1087
|
-
Json::Object{
|
1088
|
-
{"targets", Json::Object()},
|
1089
|
-
}},
|
1090
|
-
},
|
1091
|
-
};
|
1092
|
-
} else {
|
1093
|
-
locality_picking_policy = it->second;
|
1094
|
-
}
|
1095
|
-
grpc_error* parse_error = GRPC_ERROR_NONE;
|
1096
|
-
if (LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
1097
|
-
locality_picking_policy, &parse_error) == nullptr) {
|
1098
|
-
GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
|
1099
|
-
error_list.push_back(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1100
|
-
"localityPickingPolicy", &parse_error, 1));
|
1101
|
-
GRPC_ERROR_UNREF(parse_error);
|
1102
|
-
}
|
1103
|
-
// Endpoint-picking policy. Called "childPolicy" for xds policy.
|
1104
|
-
Json endpoint_picking_policy;
|
1105
|
-
it = json.object_value().find("endpointPickingPolicy");
|
1106
|
-
if (it == json.object_value().end()) {
|
1107
|
-
endpoint_picking_policy = Json::Array{
|
1108
|
-
Json::Object{
|
1109
|
-
{"round_robin", Json::Object()},
|
1110
|
-
},
|
1111
|
-
};
|
1112
|
-
} else {
|
1113
|
-
endpoint_picking_policy = it->second;
|
1114
|
-
}
|
1115
|
-
parse_error = GRPC_ERROR_NONE;
|
1116
|
-
if (LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
1117
|
-
endpoint_picking_policy, &parse_error) == nullptr) {
|
1118
|
-
GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
|
1119
|
-
error_list.push_back(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
1120
|
-
"endpointPickingPolicy", &parse_error, 1));
|
1121
|
-
GRPC_ERROR_UNREF(parse_error);
|
1122
|
-
}
|
1123
1173
|
if (discovery_mechanisms.empty()) {
|
1124
1174
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1125
1175
|
"field:discovery_mechanism error:list is missing or empty"));
|
1126
1176
|
}
|
1177
|
+
Json xds_lb_policy = Json::Object{
|
1178
|
+
{"ROUND_ROBIN", Json::Object()},
|
1179
|
+
};
|
1180
|
+
it = json.object_value().find("xdsLbPolicy");
|
1181
|
+
if (it != json.object_value().end()) {
|
1182
|
+
if (it->second.type() != Json::Type::ARRAY) {
|
1183
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1184
|
+
"field:xdsLbPolicy error:type should be array"));
|
1185
|
+
} else {
|
1186
|
+
const Json::Array& array = it->second.array_value();
|
1187
|
+
for (size_t i = 0; i < array.size(); ++i) {
|
1188
|
+
if (array[i].type() != Json::Type::OBJECT) {
|
1189
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1190
|
+
"field:xdsLbPolicy error:element should be of type object"));
|
1191
|
+
continue;
|
1192
|
+
}
|
1193
|
+
const Json::Object& policy = array[i].object_value();
|
1194
|
+
auto policy_it = policy.find("ROUND_ROBIN");
|
1195
|
+
if (policy_it != policy.end()) {
|
1196
|
+
if (policy_it->second.type() != Json::Type::OBJECT) {
|
1197
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1198
|
+
"field:ROUND_ROBIN error:type should be object"));
|
1199
|
+
}
|
1200
|
+
break;
|
1201
|
+
}
|
1202
|
+
policy_it = policy.find("RING_HASH");
|
1203
|
+
if (policy_it != policy.end()) {
|
1204
|
+
if (policy_it->second.type() != Json::Type::OBJECT) {
|
1205
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1206
|
+
"field:RING_HASH error:type should be object"));
|
1207
|
+
continue;
|
1208
|
+
}
|
1209
|
+
// TODO(donnadionne): Move this to a method in
|
1210
|
+
// ring_hash_experimental and call it here.
|
1211
|
+
const Json::Object& ring_hash = policy_it->second.object_value();
|
1212
|
+
xds_lb_policy = array[i];
|
1213
|
+
size_t min_ring_size = 1024;
|
1214
|
+
size_t max_ring_size = 8388608;
|
1215
|
+
auto ring_hash_it = ring_hash.find("min_ring_size");
|
1216
|
+
if (ring_hash_it == ring_hash.end()) {
|
1217
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1218
|
+
"field:min_ring_size missing"));
|
1219
|
+
} else if (ring_hash_it->second.type() != Json::Type::NUMBER) {
|
1220
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1221
|
+
"field:min_ring_size error: should be of "
|
1222
|
+
"number"));
|
1223
|
+
} else {
|
1224
|
+
min_ring_size = gpr_parse_nonnegative_int(
|
1225
|
+
ring_hash_it->second.string_value().c_str());
|
1226
|
+
}
|
1227
|
+
ring_hash_it = ring_hash.find("max_ring_size");
|
1228
|
+
if (ring_hash_it == ring_hash.end()) {
|
1229
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1230
|
+
"field:max_ring_size missing"));
|
1231
|
+
} else if (ring_hash_it->second.type() != Json::Type::NUMBER) {
|
1232
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1233
|
+
"field:max_ring_size error: should be of "
|
1234
|
+
"number"));
|
1235
|
+
} else {
|
1236
|
+
max_ring_size = gpr_parse_nonnegative_int(
|
1237
|
+
ring_hash_it->second.string_value().c_str());
|
1238
|
+
}
|
1239
|
+
if (min_ring_size <= 0 || min_ring_size > 8388608 ||
|
1240
|
+
max_ring_size <= 0 || max_ring_size > 8388608 ||
|
1241
|
+
min_ring_size > max_ring_size) {
|
1242
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1243
|
+
"field:max_ring_size and or min_ring_size error: "
|
1244
|
+
"values need to be in the range of 1 to 8388608 "
|
1245
|
+
"and max_ring_size cannot be smaller than "
|
1246
|
+
"min_ring_size"));
|
1247
|
+
}
|
1248
|
+
ring_hash_it = ring_hash.find("hash_function");
|
1249
|
+
if (ring_hash_it == ring_hash.end()) {
|
1250
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1251
|
+
"field:hash_function missing"));
|
1252
|
+
} else if (ring_hash_it->second.type() != Json::Type::STRING) {
|
1253
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1254
|
+
"field:hash_function error: should be a "
|
1255
|
+
"string"));
|
1256
|
+
} else if (ring_hash_it->second.string_value() != "XX_HASH" &&
|
1257
|
+
ring_hash_it->second.string_value() != "MURMUR_HASH_2") {
|
1258
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1259
|
+
"field:hash_function error: unsupported "
|
1260
|
+
"hash_function"));
|
1261
|
+
}
|
1262
|
+
break;
|
1263
|
+
}
|
1264
|
+
}
|
1265
|
+
}
|
1266
|
+
}
|
1127
1267
|
// Construct config.
|
1128
1268
|
if (error_list.empty()) {
|
1129
1269
|
return MakeRefCounted<XdsClusterResolverLbConfig>(
|
1130
|
-
std::move(discovery_mechanisms), std::move(
|
1131
|
-
std::move(endpoint_picking_policy));
|
1270
|
+
std::move(discovery_mechanisms), std::move(xds_lb_policy));
|
1132
1271
|
} else {
|
1133
1272
|
*error = GRPC_ERROR_CREATE_FROM_VECTOR(
|
1134
1273
|
"xds_cluster_resolver_experimental LB policy config", &error_list);
|
@@ -1137,10 +1276,10 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1137
1276
|
}
|
1138
1277
|
|
1139
1278
|
private:
|
1140
|
-
static std::vector<
|
1279
|
+
static std::vector<grpc_error_handle> ParseDiscoveryMechanism(
|
1141
1280
|
const Json& json,
|
1142
1281
|
XdsClusterResolverLbConfig::DiscoveryMechanism* discovery_mechanism) {
|
1143
|
-
std::vector<
|
1282
|
+
std::vector<grpc_error_handle> error_list;
|
1144
1283
|
if (json.type() != Json::Type::OBJECT) {
|
1145
1284
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1146
1285
|
"value should be of type object"));
|
@@ -1217,10 +1356,13 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1217
1356
|
class XdsClusterResolverChildHandler : public ChildPolicyHandler {
|
1218
1357
|
public:
|
1219
1358
|
XdsClusterResolverChildHandler(RefCountedPtr<XdsClient> xds_client,
|
1220
|
-
Args args
|
1359
|
+
Args args, absl::string_view server_name,
|
1360
|
+
bool is_xds_uri)
|
1221
1361
|
: ChildPolicyHandler(std::move(args),
|
1222
1362
|
&grpc_lb_xds_cluster_resolver_trace),
|
1223
|
-
xds_client_(std::move(xds_client))
|
1363
|
+
xds_client_(std::move(xds_client)),
|
1364
|
+
server_name_(server_name),
|
1365
|
+
is_xds_uri_(is_xds_uri) {}
|
1224
1366
|
|
1225
1367
|
bool ConfigChangeRequiresNewPolicyInstance(
|
1226
1368
|
LoadBalancingPolicy::Config* old_config,
|
@@ -1236,12 +1378,15 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1236
1378
|
}
|
1237
1379
|
|
1238
1380
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
1239
|
-
const char* name
|
1240
|
-
return MakeOrphanable<XdsClusterResolverLb>(xds_client_, std::move(args)
|
1381
|
+
const char* /*name*/, LoadBalancingPolicy::Args args) const override {
|
1382
|
+
return MakeOrphanable<XdsClusterResolverLb>(xds_client_, std::move(args),
|
1383
|
+
server_name_, is_xds_uri_);
|
1241
1384
|
}
|
1242
1385
|
|
1243
1386
|
private:
|
1244
1387
|
RefCountedPtr<XdsClient> xds_client_;
|
1388
|
+
std::string server_name_;
|
1389
|
+
bool is_xds_uri_;
|
1245
1390
|
};
|
1246
1391
|
};
|
1247
1392
|
|