grpc 1.36.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 +126 -92
- 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_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 +715 -3166
- data/src/core/ext/filters/client_channel/client_channel.h +489 -55
- 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 +9 -1
- 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 +24 -21
- 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 +46 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
- 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 +36 -30
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +29 -44
- 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 +86 -63
- 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 +3 -0
- data/src/core/ext/filters/client_channel/resolver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
- 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 +38 -33
- 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 +17 -9
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -14
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +334 -114
- 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 +4 -1
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_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 +12 -10
- data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +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 +485 -199
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -3
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- 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/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/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/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_components.upb.c +15 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +44 -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 +6 -5
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +13 -9
- 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/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/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/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/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/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/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_components.upbdefs.c +13 -7
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/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 +21 -20
- 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/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/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 +1649 -329
- data/src/core/ext/xds/xds_api.h +284 -44
- data/src/core/ext/xds/xds_bootstrap.cc +110 -156
- data/src/core/ext/xds/xds_bootstrap.h +24 -25
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
- data/src/core/ext/xds/xds_certificate_provider.h +4 -4
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +454 -177
- data/src/core/ext/xds/xds_client.h +62 -22
- 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 +410 -131
- 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 +107 -4
- 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 +7 -45
- data/src/core/lib/channel/handshaker.h +5 -22
- 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/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/ref_counted.h +28 -14
- 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/thd.h +1 -1
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +11 -7
- data/src/core/lib/http/parser.cc +16 -16
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +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 +6 -6
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +22 -22
- data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +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 -1
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- 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 +22 -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 +15 -17
- 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 +37 -38
- 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/{security/authorization → matchers}/matchers.cc +47 -47
- data/src/core/lib/{security/authorization → matchers}/matchers.h +42 -40
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.h +2 -2
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +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 +28 -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 +62 -60
- 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 +65 -34
- 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 +6 -7
- 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/lame_client.cc +43 -24
- data/src/core/lib/surface/lame_client.h +4 -3
- data/src/core/lib/surface/server.cc +68 -55
- data/src/core/lib/surface/server.h +89 -29
- 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_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 +6 -0
- data/src/core/tsi/alts/crypt/gsec.h +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +6 -8
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- 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 +10 -1
- data/src/core/tsi/ssl_transport_security.cc +32 -14
- data/src/core/tsi/ssl_transport_security.h +3 -4
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +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/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/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 +478 -462
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/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/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/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/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 +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +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/rand.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +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 +103 -42
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
- 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/rand_extra/rand_extra.c +1 -1
- 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/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 +3 -30
- 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 +9 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
- 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 +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -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/ec.h +5 -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 +1 -38
- 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 +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +210 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -122
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
- 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 +43 -12
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
- 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 +74 -15
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +131 -83
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +128 -61
- 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 -99
- 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/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
- 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
@@ -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:
|
@@ -208,7 +199,6 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
|
|
208
199
|
|
209
200
|
private:
|
210
201
|
RefCountedPtr<CircuitBreakerCallCounterMap::CallCounter> call_counter_;
|
211
|
-
bool xds_circuit_breaking_enabled_;
|
212
202
|
uint32_t max_concurrent_requests_;
|
213
203
|
RefCountedPtr<XdsApi::EdsUpdate::DropConfig> drop_config_;
|
214
204
|
RefCountedPtr<XdsClusterDropStats> drop_stats_;
|
@@ -277,7 +267,6 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
|
|
277
267
|
XdsClusterImplLb::Picker::Picker(XdsClusterImplLb* xds_cluster_impl_lb,
|
278
268
|
RefCountedPtr<RefCountedPicker> picker)
|
279
269
|
: call_counter_(xds_cluster_impl_lb->call_counter_),
|
280
|
-
xds_circuit_breaking_enabled_(XdsCircuitBreakingEnabled()),
|
281
270
|
max_concurrent_requests_(
|
282
271
|
xds_cluster_impl_lb->config_->max_concurrent_requests()),
|
283
272
|
drop_config_(xds_cluster_impl_lb->config_->drop_config()),
|
@@ -300,17 +289,15 @@ LoadBalancingPolicy::PickResult XdsClusterImplLb::Picker::Pick(
|
|
300
289
|
return result;
|
301
290
|
}
|
302
291
|
// Handle circuit breaking.
|
303
|
-
uint32_t current = call_counter_->
|
304
|
-
if
|
305
|
-
|
306
|
-
if (
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
result.type = PickResult::PICK_COMPLETE;
|
311
|
-
return result;
|
312
|
-
}
|
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;
|
313
299
|
}
|
300
|
+
call_counter_->Increment();
|
314
301
|
// If we're not dropping the call, we should always have a child picker.
|
315
302
|
if (picker_ == nullptr) { // Should never happen.
|
316
303
|
PickResult result;
|
@@ -344,7 +331,7 @@ LoadBalancingPolicy::PickResult XdsClusterImplLb::Picker::Pick(
|
|
344
331
|
// Note: This callback does not run in either the control plane
|
345
332
|
// work serializer or in the data plane mutex.
|
346
333
|
[locality_stats, original_recv_trailing_metadata_ready, call_counter](
|
347
|
-
|
334
|
+
grpc_error_handle error, MetadataInterface* metadata,
|
348
335
|
CallState* call_state) {
|
349
336
|
// Record call completion for load reporting.
|
350
337
|
if (locality_stats != nullptr) {
|
@@ -609,14 +596,12 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
609
596
|
public:
|
610
597
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
611
598
|
LoadBalancingPolicy::Args args) const override {
|
612
|
-
|
613
|
-
|
614
|
-
if (
|
615
|
-
gpr_log(
|
616
|
-
|
617
|
-
|
618
|
-
grpc_error_string(error));
|
619
|
-
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");
|
620
605
|
return nullptr;
|
621
606
|
}
|
622
607
|
return MakeOrphanable<XdsClusterImplLb>(std::move(xds_client),
|
@@ -626,7 +611,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
626
611
|
const char* name() const override { return kXdsClusterImpl; }
|
627
612
|
|
628
613
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
629
|
-
const Json& json,
|
614
|
+
const Json& json, grpc_error_handle* error) const override {
|
630
615
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
631
616
|
if (json.type() == Json::Type::JSON_NULL) {
|
632
617
|
// This policy was configured in the deprecated loadBalancingPolicy
|
@@ -637,7 +622,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
637
622
|
"config instead.");
|
638
623
|
return nullptr;
|
639
624
|
}
|
640
|
-
std::vector<
|
625
|
+
std::vector<grpc_error_handle> error_list;
|
641
626
|
// Child policy.
|
642
627
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy;
|
643
628
|
auto it = json.object_value().find("childPolicy");
|
@@ -645,12 +630,12 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
645
630
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
646
631
|
"field:childPolicy error:required field missing"));
|
647
632
|
} else {
|
648
|
-
|
633
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
649
634
|
child_policy = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
650
635
|
it->second, &parse_error);
|
651
636
|
if (child_policy == nullptr) {
|
652
637
|
GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
|
653
|
-
std::vector<
|
638
|
+
std::vector<grpc_error_handle> child_errors;
|
654
639
|
child_errors.push_back(parse_error);
|
655
640
|
error_list.push_back(
|
656
641
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
@@ -709,7 +694,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
709
694
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
710
695
|
"field:dropCategories error:required field missing"));
|
711
696
|
} else {
|
712
|
-
std::vector<
|
697
|
+
std::vector<grpc_error_handle> child_errors =
|
713
698
|
ParseDropCategories(it->second, drop_config.get());
|
714
699
|
if (!child_errors.empty()) {
|
715
700
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR(
|
@@ -728,9 +713,9 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
728
713
|
}
|
729
714
|
|
730
715
|
private:
|
731
|
-
static std::vector<
|
716
|
+
static std::vector<grpc_error_handle> ParseDropCategories(
|
732
717
|
const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) {
|
733
|
-
std::vector<
|
718
|
+
std::vector<grpc_error_handle> error_list;
|
734
719
|
if (json.type() != Json::Type::ARRAY) {
|
735
720
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
736
721
|
"dropCategories field is not an array"));
|
@@ -738,10 +723,10 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
738
723
|
}
|
739
724
|
for (size_t i = 0; i < json.array_value().size(); ++i) {
|
740
725
|
const Json& entry = json.array_value()[i];
|
741
|
-
std::vector<
|
726
|
+
std::vector<grpc_error_handle> child_errors =
|
742
727
|
ParseDropCategory(entry, drop_config);
|
743
728
|
if (!child_errors.empty()) {
|
744
|
-
|
729
|
+
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
745
730
|
absl::StrCat("errors parsing index ", i).c_str());
|
746
731
|
for (size_t i = 0; i < child_errors.size(); ++i) {
|
747
732
|
error = grpc_error_add_child(error, child_errors[i]);
|
@@ -752,9 +737,9 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
752
737
|
return error_list;
|
753
738
|
}
|
754
739
|
|
755
|
-
static std::vector<
|
740
|
+
static std::vector<grpc_error_handle> ParseDropCategory(
|
756
741
|
const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) {
|
757
|
-
std::vector<
|
742
|
+
std::vector<grpc_error_handle> error_list;
|
758
743
|
if (json.type() != Json::Type::OBJECT) {
|
759
744
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
760
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));
|
@@ -101,7 +101,8 @@ class XdsClusterResolverLbConfig : public LoadBalancingPolicy::Config {
|
|
101
101
|
// Xds Cluster Resolver LB policy.
|
102
102
|
class XdsClusterResolverLb : public LoadBalancingPolicy {
|
103
103
|
public:
|
104
|
-
XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client, Args args
|
104
|
+
XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client, Args args,
|
105
|
+
std::string server_name, bool is_xds_uri);
|
105
106
|
|
106
107
|
const char* name() const override { return kXdsClusterResolver; }
|
107
108
|
|
@@ -131,7 +132,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
131
132
|
virtual bool disable_reresolution() = 0;
|
132
133
|
|
133
134
|
// Caller must ensure that config_ is set before calling.
|
134
|
-
|
135
|
+
absl::string_view GetXdsClusterResolverResourceName() const {
|
135
136
|
if (!parent_->is_xds_uri_) return parent_->server_name_;
|
136
137
|
if (!parent_->config_->discovery_mechanisms()[index_]
|
137
138
|
.eds_service_name.empty()) {
|
@@ -184,7 +185,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
184
185
|
void OnEndpointChanged(XdsApi::EdsUpdate update) override {
|
185
186
|
new Notifier(discovery_mechanism_, std::move(update));
|
186
187
|
}
|
187
|
-
void OnError(
|
188
|
+
void OnError(grpc_error_handle error) override {
|
188
189
|
new Notifier(discovery_mechanism_, error);
|
189
190
|
}
|
190
191
|
void OnResourceDoesNotExist() override {
|
@@ -197,7 +198,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
197
198
|
Notifier(RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism,
|
198
199
|
XdsApi::EdsUpdate update);
|
199
200
|
Notifier(RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism,
|
200
|
-
|
201
|
+
grpc_error_handle error);
|
201
202
|
explicit Notifier(
|
202
203
|
RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism);
|
203
204
|
~Notifier() { discovery_mechanism_.reset(DEBUG_LOCATION, "Notifier"); }
|
@@ -205,8 +206,8 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
205
206
|
private:
|
206
207
|
enum Type { kUpdate, kError, kDoesNotExist };
|
207
208
|
|
208
|
-
static void RunInExecCtx(void* arg,
|
209
|
-
void RunInWorkSerializer(
|
209
|
+
static void RunInExecCtx(void* arg, grpc_error_handle error);
|
210
|
+
void RunInWorkSerializer(grpc_error_handle error);
|
210
211
|
|
211
212
|
RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism_;
|
212
213
|
grpc_closure closure_;
|
@@ -249,7 +250,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
249
250
|
|
250
251
|
void ReturnResult(Resolver::Result result) override;
|
251
252
|
|
252
|
-
void ReturnError(
|
253
|
+
void ReturnError(grpc_error_handle error) override;
|
253
254
|
|
254
255
|
private:
|
255
256
|
RefCountedPtr<LogicalDNSDiscoveryMechanism> discovery_mechanism_;
|
@@ -303,7 +304,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
303
304
|
void ShutdownLocked() override;
|
304
305
|
|
305
306
|
void OnEndpointChanged(size_t index, XdsApi::EdsUpdate update);
|
306
|
-
void OnError(size_t index,
|
307
|
+
void OnError(size_t index, grpc_error_handle error);
|
307
308
|
void OnResourceDoesNotExist(size_t index);
|
308
309
|
|
309
310
|
void MaybeDestroyChildPolicyLocked();
|
@@ -317,6 +318,9 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
317
318
|
grpc_channel_args* CreateChildPolicyArgsLocked(
|
318
319
|
const grpc_channel_args* args_in);
|
319
320
|
|
321
|
+
// The xds client and endpoint watcher.
|
322
|
+
RefCountedPtr<XdsClient> xds_client_;
|
323
|
+
|
320
324
|
// Server name from target URI.
|
321
325
|
std::string server_name_;
|
322
326
|
bool is_xds_uri_;
|
@@ -328,9 +332,6 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
|
|
328
332
|
// Internal state.
|
329
333
|
bool shutting_down_ = false;
|
330
334
|
|
331
|
-
// The xds client and endpoint watcher.
|
332
|
-
RefCountedPtr<XdsClient> xds_client_;
|
333
|
-
|
334
335
|
// Vector of discovery mechansism entries in priority order.
|
335
336
|
std::vector<DiscoveryMechanismEntry> discovery_mechanisms_;
|
336
337
|
|
@@ -429,7 +430,7 @@ XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
|
429
430
|
XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
430
431
|
Notifier(RefCountedPtr<XdsClusterResolverLb::EdsDiscoveryMechanism>
|
431
432
|
discovery_mechanism,
|
432
|
-
|
433
|
+
grpc_error_handle error)
|
433
434
|
: discovery_mechanism_(std::move(discovery_mechanism)), type_(kError) {
|
434
435
|
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
435
436
|
ExecCtx::Run(DEBUG_LOCATION, &closure_, error);
|
@@ -445,7 +446,7 @@ XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
|
445
446
|
}
|
446
447
|
|
447
448
|
void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
448
|
-
RunInExecCtx(void* arg,
|
449
|
+
RunInExecCtx(void* arg, grpc_error_handle error) {
|
449
450
|
Notifier* self = static_cast<Notifier*>(arg);
|
450
451
|
GRPC_ERROR_REF(error);
|
451
452
|
self->discovery_mechanism_->parent()->work_serializer()->Run(
|
@@ -453,7 +454,7 @@ void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
|
453
454
|
}
|
454
455
|
|
455
456
|
void XdsClusterResolverLb::EdsDiscoveryMechanism::EndpointWatcher::Notifier::
|
456
|
-
RunInWorkSerializer(
|
457
|
+
RunInWorkSerializer(grpc_error_handle error) {
|
457
458
|
switch (type_) {
|
458
459
|
case kUpdate:
|
459
460
|
discovery_mechanism_->parent()->OnEndpointChanged(
|
@@ -541,7 +542,7 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
|
541
542
|
}
|
542
543
|
|
543
544
|
void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
544
|
-
ReturnError(
|
545
|
+
ReturnError(grpc_error_handle error) {
|
545
546
|
discovery_mechanism_->parent()->OnError(discovery_mechanism_->index(), error);
|
546
547
|
}
|
547
548
|
|
@@ -550,26 +551,17 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
|
|
550
551
|
//
|
551
552
|
|
552
553
|
XdsClusterResolverLb::XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client,
|
553
|
-
Args args
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
}
|
560
|
-
// Record server name.
|
561
|
-
const char* server_uri =
|
562
|
-
grpc_channel_args_find_string(args.args, GRPC_ARG_SERVER_URI);
|
563
|
-
GPR_ASSERT(server_uri != nullptr);
|
564
|
-
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
565
|
-
GPR_ASSERT(uri.ok() && !uri->path().empty());
|
566
|
-
server_name_ = std::string(absl::StripPrefix(uri->path(), "/"));
|
567
|
-
is_xds_uri_ = uri->scheme() == "xds";
|
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) {
|
568
560
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_cluster_resolver_trace)) {
|
569
561
|
gpr_log(GPR_INFO,
|
570
|
-
"[xds_cluster_resolver_lb %p]
|
571
|
-
"
|
572
|
-
this,
|
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_);
|
573
565
|
}
|
574
566
|
// EDS-only flow.
|
575
567
|
if (!is_xds_uri_) {
|
@@ -738,11 +730,11 @@ void XdsClusterResolverLb::OnEndpointChanged(size_t index,
|
|
738
730
|
UpdatePriorityList(std::move(priority_list));
|
739
731
|
}
|
740
732
|
|
741
|
-
void XdsClusterResolverLb::OnError(size_t index,
|
733
|
+
void XdsClusterResolverLb::OnError(size_t index, grpc_error_handle error) {
|
742
734
|
gpr_log(GPR_ERROR,
|
743
735
|
"[xds_cluster_resolver_lb %p] discovery mechanism %" PRIuPTR
|
744
736
|
" xds watcher reported error: %s",
|
745
|
-
this, index,
|
737
|
+
this, index, grpc_error_std_string(error).c_str());
|
746
738
|
GRPC_ERROR_UNREF(error);
|
747
739
|
if (shutting_down_) return;
|
748
740
|
if (!discovery_mechanisms_[index].first_update_received) {
|
@@ -894,7 +886,7 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
894
886
|
locality_name_json["zone"] = locality_name->zone();
|
895
887
|
}
|
896
888
|
if (!locality_name->sub_zone().empty()) {
|
897
|
-
locality_name_json["
|
889
|
+
locality_name_json["sub_zone"] = locality_name->sub_zone();
|
898
890
|
}
|
899
891
|
// Add weighted target entry.
|
900
892
|
weighted_targets[locality_name->AsHumanReadableString()] =
|
@@ -1010,7 +1002,7 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
1010
1002
|
"[xds_cluster_resolver_lb %p] generated config for child policy: %s",
|
1011
1003
|
this, json_str.c_str());
|
1012
1004
|
}
|
1013
|
-
|
1005
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
1014
1006
|
RefCountedPtr<LoadBalancingPolicy::Config> config =
|
1015
1007
|
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(json, &error);
|
1016
1008
|
if (error != GRPC_ERROR_NONE) {
|
@@ -1020,7 +1012,7 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
1020
1012
|
"[xds_cluster_resolver_lb %p] error parsing generated child policy "
|
1021
1013
|
"config -- "
|
1022
1014
|
"will put channel in TRANSIENT_FAILURE: %s",
|
1023
|
-
this,
|
1015
|
+
this, grpc_error_std_string(error).c_str());
|
1024
1016
|
error = grpc_error_set_int(
|
1025
1017
|
grpc_error_add_child(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1026
1018
|
"xds_cluster_resolver LB policy: error "
|
@@ -1054,10 +1046,14 @@ void XdsClusterResolverLb::UpdateChildPolicyLocked() {
|
|
1054
1046
|
|
1055
1047
|
grpc_channel_args* XdsClusterResolverLb::CreateChildPolicyArgsLocked(
|
1056
1048
|
const grpc_channel_args* args) {
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
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());
|
1061
1057
|
}
|
1062
1058
|
|
1063
1059
|
OrphanablePtr<LoadBalancingPolicy>
|
@@ -1096,24 +1092,45 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1096
1092
|
public:
|
1097
1093
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
1098
1094
|
LoadBalancingPolicy::Args args) const override {
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
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
|
+
}
|
1108
1125
|
}
|
1109
|
-
return MakeOrphanable<XdsClusterResolverChildHandler>(
|
1110
|
-
|
1126
|
+
return MakeOrphanable<XdsClusterResolverChildHandler>(
|
1127
|
+
std::move(xds_client), std::move(args), server_name, is_xds_uri);
|
1111
1128
|
}
|
1112
1129
|
|
1113
1130
|
const char* name() const override { return kXdsClusterResolver; }
|
1114
1131
|
|
1115
1132
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
1116
|
-
const Json& json,
|
1133
|
+
const Json& json, grpc_error_handle* error) const override {
|
1117
1134
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
1118
1135
|
if (json.type() == Json::Type::JSON_NULL) {
|
1119
1136
|
// xds_cluster_resolver was mentioned as a policy in the deprecated
|
@@ -1124,7 +1141,7 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1124
1141
|
"Please use loadBalancingConfig field of service config instead.");
|
1125
1142
|
return nullptr;
|
1126
1143
|
}
|
1127
|
-
std::vector<
|
1144
|
+
std::vector<grpc_error_handle> error_list;
|
1128
1145
|
std::vector<XdsClusterResolverLbConfig::DiscoveryMechanism>
|
1129
1146
|
discovery_mechanisms;
|
1130
1147
|
auto it = json.object_value().find("discoveryMechanisms");
|
@@ -1138,13 +1155,13 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1138
1155
|
const Json::Array& array = it->second.array_value();
|
1139
1156
|
for (size_t i = 0; i < array.size(); ++i) {
|
1140
1157
|
XdsClusterResolverLbConfig::DiscoveryMechanism discovery_mechanism;
|
1141
|
-
std::vector<
|
1158
|
+
std::vector<grpc_error_handle> discovery_mechanism_errors =
|
1142
1159
|
ParseDiscoveryMechanism(array[i], &discovery_mechanism);
|
1143
1160
|
if (!discovery_mechanism_errors.empty()) {
|
1144
|
-
|
1161
|
+
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
1145
1162
|
absl::StrCat("field:discovery_mechanism element: ", i, " error")
|
1146
1163
|
.c_str());
|
1147
|
-
for (
|
1164
|
+
for (grpc_error_handle discovery_mechanism_error :
|
1148
1165
|
discovery_mechanism_errors) {
|
1149
1166
|
error = grpc_error_add_child(error, discovery_mechanism_error);
|
1150
1167
|
}
|
@@ -1259,10 +1276,10 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1259
1276
|
}
|
1260
1277
|
|
1261
1278
|
private:
|
1262
|
-
static std::vector<
|
1279
|
+
static std::vector<grpc_error_handle> ParseDiscoveryMechanism(
|
1263
1280
|
const Json& json,
|
1264
1281
|
XdsClusterResolverLbConfig::DiscoveryMechanism* discovery_mechanism) {
|
1265
|
-
std::vector<
|
1282
|
+
std::vector<grpc_error_handle> error_list;
|
1266
1283
|
if (json.type() != Json::Type::OBJECT) {
|
1267
1284
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1268
1285
|
"value should be of type object"));
|
@@ -1339,10 +1356,13 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1339
1356
|
class XdsClusterResolverChildHandler : public ChildPolicyHandler {
|
1340
1357
|
public:
|
1341
1358
|
XdsClusterResolverChildHandler(RefCountedPtr<XdsClient> xds_client,
|
1342
|
-
Args args
|
1359
|
+
Args args, absl::string_view server_name,
|
1360
|
+
bool is_xds_uri)
|
1343
1361
|
: ChildPolicyHandler(std::move(args),
|
1344
1362
|
&grpc_lb_xds_cluster_resolver_trace),
|
1345
|
-
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) {}
|
1346
1366
|
|
1347
1367
|
bool ConfigChangeRequiresNewPolicyInstance(
|
1348
1368
|
LoadBalancingPolicy::Config* old_config,
|
@@ -1359,11 +1379,14 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1359
1379
|
|
1360
1380
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
1361
1381
|
const char* /*name*/, LoadBalancingPolicy::Args args) const override {
|
1362
|
-
return MakeOrphanable<XdsClusterResolverLb>(xds_client_, std::move(args)
|
1382
|
+
return MakeOrphanable<XdsClusterResolverLb>(xds_client_, std::move(args),
|
1383
|
+
server_name_, is_xds_uri_);
|
1363
1384
|
}
|
1364
1385
|
|
1365
1386
|
private:
|
1366
1387
|
RefCountedPtr<XdsClient> xds_client_;
|
1388
|
+
std::string server_name_;
|
1389
|
+
bool is_xds_uri_;
|
1367
1390
|
};
|
1368
1391
|
};
|
1369
1392
|
|