grpc 1.37.1 → 1.38.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +64 -58
- 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 +2 -2
- 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 +5 -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 +628 -3101
- 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_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +1 -1
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +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 +1 -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/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 +23 -23
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +84 -61
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver.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 +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_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 +13 -11
- 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 +43 -28
- 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 +1 -1
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
- data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
- data/src/core/ext/filters/client_channel/subchannel.h +7 -6
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +16 -15
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +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 +4 -3
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
- 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 +2 -2
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -116
- 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 +8 -8
- 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_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 +31 -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/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 +101 -93
- data/src/core/ext/xds/xds_api.h +6 -6
- data/src/core/ext/xds/xds_bootstrap.cc +97 -159
- data/src/core/ext/xds/xds_bootstrap.h +19 -24
- data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
- data/src/core/ext/xds/xds_certificate_provider.h +4 -4
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +310 -178
- data/src/core/ext/xds/xds_client.h +41 -27
- data/src/core/ext/xds/xds_client_stats.h +3 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +3 -20
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +6 -11
- data/src/core/lib/channel/channel_stack.cc +10 -9
- data/src/core/lib/channel/channel_stack.h +10 -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 +21 -13
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +7 -6
- data/src/core/lib/channel/handshaker.h +5 -5
- 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/gprpp/ref_counted.h +28 -14
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +180 -0
- 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 +4 -5
- data/src/core/lib/iomgr/call_combiner.cc +15 -12
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +14 -12
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +1 -1
- data/src/core/lib/iomgr/endpoint.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +167 -61
- data/src/core/lib/iomgr/error.h +217 -106
- data/src/core/lib/iomgr/error_cfstream.cc +3 -2
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +5 -1
- data/src/core/lib/iomgr/ev_apple.cc +5 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
- data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +9 -8
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/exec_ctx.cc +4 -4
- 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 +11 -10
- 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 +36 -34
- 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 +25 -23
- data/src/core/lib/iomgr/tcp_windows.cc +13 -13
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +6 -6
- data/src/core/lib/iomgr/udp_server.cc +21 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_reader.cc +4 -4
- data/src/core/lib/matchers/matchers.cc +39 -39
- data/src/core/lib/matchers/matchers.h +28 -28
- 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 +22 -4
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -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 +33 -32
- data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
- 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/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 +3 -2
- 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 +11 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +28 -22
- data/src/core/lib/surface/server.h +16 -15
- 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 +37 -37
- data/src/core/lib/transport/metadata_batch.h +19 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +4 -4
- data/src/core/lib/transport/transport_op_string.cc +5 -5
- data/src/core/tsi/alts/crypt/gsec.h +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/ssl_transport_security.cc +32 -14
- data/src/core/tsi/ssl_transport_security.h +3 -4
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/boringssl-with-bazel/err_data.c +477 -461
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +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/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 +11 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/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/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 -2
- 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 +7 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
- data/third_party/boringssl-with-bazel/src/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 -8
- 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 +185 -17
- 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 -121
- 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 +98 -64
- 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
- metadata +68 -45
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
@@ -76,7 +76,7 @@ extern void (*grpc_cancel_ares_request_locked)(grpc_ares_request* request);
|
|
76
76
|
|
77
77
|
/* Initialize gRPC ares wrapper. Must be called at least once before
|
78
78
|
grpc_resolve_address_ares(). */
|
79
|
-
|
79
|
+
grpc_error_handle grpc_ares_init(void);
|
80
80
|
|
81
81
|
/* Uninitialized gRPC ares wrapper. If there was more than one previous call to
|
82
82
|
grpc_ares_init(), this function uninitializes the gRPC ares wrapper only if
|
@@ -25,8 +25,8 @@
|
|
25
25
|
|
26
26
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
27
27
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
28
|
+
#include "src/core/lib/address_utils/parse_address.h"
|
28
29
|
#include "src/core/lib/gpr/string.h"
|
29
|
-
#include "src/core/lib/iomgr/parse_address.h"
|
30
30
|
|
31
31
|
bool grpc_ares_query_ipv6() {
|
32
32
|
/* The libuv grpc code currently does not have the code to probe for this,
|
@@ -25,8 +25,8 @@
|
|
25
25
|
|
26
26
|
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
27
27
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
28
|
+
#include "src/core/lib/address_utils/parse_address.h"
|
28
29
|
#include "src/core/lib/gpr/string.h"
|
29
|
-
#include "src/core/lib/iomgr/parse_address.h"
|
30
30
|
#include "src/core/lib/iomgr/socket_windows.h"
|
31
31
|
|
32
32
|
bool grpc_ares_query_ipv6() { return grpc_ipv6_loopback_available(); }
|
@@ -68,10 +68,10 @@ class NativeDnsResolver : public Resolver {
|
|
68
68
|
void MaybeStartResolvingLocked();
|
69
69
|
void StartResolvingLocked();
|
70
70
|
|
71
|
-
static void OnNextResolution(void* arg,
|
72
|
-
void OnNextResolutionLocked(
|
73
|
-
static void OnResolved(void* arg,
|
74
|
-
void OnResolvedLocked(
|
71
|
+
static void OnNextResolution(void* arg, grpc_error_handle error);
|
72
|
+
void OnNextResolutionLocked(grpc_error_handle error);
|
73
|
+
static void OnResolved(void* arg, grpc_error_handle error);
|
74
|
+
void OnResolvedLocked(grpc_error_handle error);
|
75
75
|
|
76
76
|
/// name to resolve
|
77
77
|
std::string name_to_resolve_;
|
@@ -148,14 +148,14 @@ void NativeDnsResolver::ShutdownLocked() {
|
|
148
148
|
}
|
149
149
|
}
|
150
150
|
|
151
|
-
void NativeDnsResolver::OnNextResolution(void* arg,
|
151
|
+
void NativeDnsResolver::OnNextResolution(void* arg, grpc_error_handle error) {
|
152
152
|
NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
|
153
153
|
GRPC_ERROR_REF(error); // ref owned by lambda
|
154
154
|
r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
|
155
155
|
DEBUG_LOCATION);
|
156
156
|
}
|
157
157
|
|
158
|
-
void NativeDnsResolver::OnNextResolutionLocked(
|
158
|
+
void NativeDnsResolver::OnNextResolutionLocked(grpc_error_handle error) {
|
159
159
|
have_next_resolution_timer_ = false;
|
160
160
|
if (error == GRPC_ERROR_NONE && !resolving_) {
|
161
161
|
StartResolvingLocked();
|
@@ -164,14 +164,14 @@ void NativeDnsResolver::OnNextResolutionLocked(grpc_error* error) {
|
|
164
164
|
GRPC_ERROR_UNREF(error);
|
165
165
|
}
|
166
166
|
|
167
|
-
void NativeDnsResolver::OnResolved(void* arg,
|
167
|
+
void NativeDnsResolver::OnResolved(void* arg, grpc_error_handle error) {
|
168
168
|
NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
|
169
169
|
GRPC_ERROR_REF(error); // owned by lambda
|
170
170
|
r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); },
|
171
171
|
DEBUG_LOCATION);
|
172
172
|
}
|
173
173
|
|
174
|
-
void NativeDnsResolver::OnResolvedLocked(
|
174
|
+
void NativeDnsResolver::OnResolvedLocked(grpc_error_handle error) {
|
175
175
|
GPR_ASSERT(resolving_);
|
176
176
|
resolving_ = false;
|
177
177
|
if (shutdown_) {
|
@@ -194,7 +194,7 @@ void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
|
|
194
194
|
backoff_.Reset();
|
195
195
|
} else {
|
196
196
|
gpr_log(GPR_INFO, "dns resolution failed (will retry): %s",
|
197
|
-
|
197
|
+
grpc_error_std_string(error).c_str());
|
198
198
|
// Return transient error.
|
199
199
|
std::string error_message =
|
200
200
|
absl::StrCat("DNS resolution failed for service: ", name_to_resolve_);
|
@@ -203,6 +203,10 @@ void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
|
|
203
203
|
&error, 1),
|
204
204
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
|
205
205
|
// Set up for retry.
|
206
|
+
// InvalidateNow to avoid getting stuck re-initializing this timer
|
207
|
+
// in a loop while draining the currently-held WorkSerializer.
|
208
|
+
// Also see https://github.com/grpc/grpc/issues/26079.
|
209
|
+
ExecCtx::Get()->InvalidateNow();
|
206
210
|
grpc_millis next_try = backoff_.NextAttemptTime();
|
207
211
|
grpc_millis timeout = next_try - ExecCtx::Get()->Now();
|
208
212
|
GPR_ASSERT(!have_next_resolution_timer_);
|
@@ -229,6 +233,10 @@ void NativeDnsResolver::MaybeStartResolvingLocked() {
|
|
229
233
|
// can start the next resolution.
|
230
234
|
if (have_next_resolution_timer_) return;
|
231
235
|
if (last_resolution_timestamp_ >= 0) {
|
236
|
+
// InvalidateNow to avoid getting stuck re-initializing this timer
|
237
|
+
// in a loop while draining the currently-held WorkSerializer.
|
238
|
+
// Also see https://github.com/grpc/grpc/issues/26079.
|
239
|
+
ExecCtx::Get()->InvalidateNow();
|
232
240
|
const grpc_millis earliest_next_resolution =
|
233
241
|
last_resolution_timestamp_ + min_time_between_resolutions_;
|
234
242
|
const grpc_millis ms_until_next_resolution =
|
@@ -30,11 +30,11 @@
|
|
30
30
|
|
31
31
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
32
32
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
33
|
+
#include "src/core/lib/address_utils/parse_address.h"
|
33
34
|
#include "src/core/lib/channel/channel_args.h"
|
34
35
|
#include "src/core/lib/gpr/string.h"
|
35
36
|
#include "src/core/lib/gpr/useful.h"
|
36
37
|
#include "src/core/lib/iomgr/closure.h"
|
37
|
-
#include "src/core/lib/iomgr/parse_address.h"
|
38
38
|
#include "src/core/lib/iomgr/resolve_address.h"
|
39
39
|
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
40
40
|
#include "src/core/lib/iomgr/work_serializer.h"
|
@@ -313,48 +313,40 @@ void FakeResolverResponseGenerator::SetFakeResolver(
|
|
313
313
|
|
314
314
|
namespace {
|
315
315
|
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
// TODO(roth): We currently deal with this ref manually. Once the
|
320
|
-
// new channel args code is converted to C++, find a way to track this ref
|
321
|
-
// in a cleaner way.
|
322
|
-
RefCountedPtr<FakeResolverResponseGenerator> copy = generator->Ref();
|
323
|
-
copy.release();
|
316
|
+
void* ResponseGeneratorChannelArgCopy(void* p) {
|
317
|
+
auto* generator = static_cast<FakeResolverResponseGenerator*>(p);
|
318
|
+
generator->Ref().release();
|
324
319
|
return p;
|
325
320
|
}
|
326
321
|
|
327
|
-
|
328
|
-
|
329
|
-
static_cast<FakeResolverResponseGenerator*>(p);
|
322
|
+
void ResponseGeneratorChannelArgDestroy(void* p) {
|
323
|
+
auto* generator = static_cast<FakeResolverResponseGenerator*>(p);
|
330
324
|
generator->Unref();
|
331
325
|
}
|
332
326
|
|
333
|
-
|
334
|
-
|
335
|
-
static const grpc_arg_pointer_vtable response_generator_arg_vtable = {
|
336
|
-
response_generator_arg_copy, response_generator_arg_destroy,
|
337
|
-
response_generator_cmp};
|
327
|
+
int ResponseGeneratorChannelArgCmp(void* a, void* b) { return GPR_ICMP(a, b); }
|
338
328
|
|
339
329
|
} // namespace
|
340
330
|
|
331
|
+
const grpc_arg_pointer_vtable
|
332
|
+
FakeResolverResponseGenerator::kChannelArgPointerVtable = {
|
333
|
+
ResponseGeneratorChannelArgCopy, ResponseGeneratorChannelArgDestroy,
|
334
|
+
ResponseGeneratorChannelArgCmp};
|
335
|
+
|
341
336
|
grpc_arg FakeResolverResponseGenerator::MakeChannelArg(
|
342
337
|
FakeResolverResponseGenerator* generator) {
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
arg.value.pointer.p = generator;
|
347
|
-
arg.value.pointer.vtable = &response_generator_arg_vtable;
|
348
|
-
return arg;
|
338
|
+
return grpc_channel_arg_pointer_create(
|
339
|
+
const_cast<char*>(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR), generator,
|
340
|
+
&kChannelArgPointerVtable);
|
349
341
|
}
|
350
342
|
|
351
343
|
RefCountedPtr<FakeResolverResponseGenerator>
|
352
344
|
FakeResolverResponseGenerator::GetFromArgs(const grpc_channel_args* args) {
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
345
|
+
auto* response_generator =
|
346
|
+
grpc_channel_args_find_pointer<FakeResolverResponseGenerator>(
|
347
|
+
args, GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR);
|
348
|
+
if (response_generator == nullptr) return nullptr;
|
349
|
+
return response_generator->Ref();
|
358
350
|
}
|
359
351
|
|
360
352
|
//
|
@@ -42,6 +42,8 @@ class FakeResolver;
|
|
42
42
|
class FakeResolverResponseGenerator
|
43
43
|
: public RefCounted<FakeResolverResponseGenerator> {
|
44
44
|
public:
|
45
|
+
static const grpc_arg_pointer_vtable kChannelArgPointerVtable;
|
46
|
+
|
45
47
|
FakeResolverResponseGenerator();
|
46
48
|
~FakeResolverResponseGenerator() override;
|
47
49
|
|
@@ -69,6 +71,7 @@ class FakeResolverResponseGenerator
|
|
69
71
|
void SetFailureOnReresolution();
|
70
72
|
|
71
73
|
// Returns a channel arg containing \a generator.
|
74
|
+
// TODO(roth): When we have time, make this a non-static method.
|
72
75
|
static grpc_arg MakeChannelArg(FakeResolverResponseGenerator* generator);
|
73
76
|
|
74
77
|
// Returns the response generator in \a args, or null if not found.
|
@@ -82,12 +85,11 @@ class FakeResolverResponseGenerator
|
|
82
85
|
|
83
86
|
// Mutex protecting the members below.
|
84
87
|
Mutex mu_;
|
85
|
-
RefCountedPtr<FakeResolver> resolver_;
|
86
|
-
Resolver::Result result_;
|
87
|
-
bool has_result_ = false;
|
88
|
+
RefCountedPtr<FakeResolver> resolver_ ABSL_GUARDED_BY(mu_);
|
89
|
+
Resolver::Result result_ ABSL_GUARDED_BY(mu_);
|
90
|
+
bool has_result_ ABSL_GUARDED_BY(mu_) = false;
|
88
91
|
};
|
89
92
|
|
90
93
|
} // namespace grpc_core
|
91
94
|
|
92
|
-
#endif
|
93
|
-
*/
|
95
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FAKE_FAKE_RESOLVER_H
|
@@ -48,15 +48,15 @@ class GoogleCloud2ProdResolver : public Resolver {
|
|
48
48
|
void Orphan() override;
|
49
49
|
|
50
50
|
private:
|
51
|
-
static void OnHttpRequestDone(void* arg,
|
51
|
+
static void OnHttpRequestDone(void* arg, grpc_error_handle error);
|
52
52
|
|
53
53
|
// Calls OnDone() if not already called. Releases a ref.
|
54
|
-
void MaybeCallOnDone(
|
54
|
+
void MaybeCallOnDone(grpc_error_handle error);
|
55
55
|
|
56
56
|
// If error is not GRPC_ERROR_NONE, then it's not safe to look at response.
|
57
57
|
virtual void OnDone(GoogleCloud2ProdResolver* resolver,
|
58
58
|
const grpc_http_response* response,
|
59
|
-
|
59
|
+
grpc_error_handle error) = 0;
|
60
60
|
|
61
61
|
RefCountedPtr<GoogleCloud2ProdResolver> resolver_;
|
62
62
|
grpc_httpcli_context context_;
|
@@ -73,7 +73,8 @@ class GoogleCloud2ProdResolver : public Resolver {
|
|
73
73
|
|
74
74
|
private:
|
75
75
|
void OnDone(GoogleCloud2ProdResolver* resolver,
|
76
|
-
const grpc_http_response* response,
|
76
|
+
const grpc_http_response* response,
|
77
|
+
grpc_error_handle error) override;
|
77
78
|
};
|
78
79
|
|
79
80
|
// A metadata server query to get the IPv6 address.
|
@@ -84,7 +85,8 @@ class GoogleCloud2ProdResolver : public Resolver {
|
|
84
85
|
|
85
86
|
private:
|
86
87
|
void OnDone(GoogleCloud2ProdResolver* resolver,
|
87
|
-
const grpc_http_response* response,
|
88
|
+
const grpc_http_response* response,
|
89
|
+
grpc_error_handle error) override;
|
88
90
|
};
|
89
91
|
|
90
92
|
void ZoneQueryDone(std::string zone);
|
@@ -143,13 +145,13 @@ void GoogleCloud2ProdResolver::MetadataQuery::Orphan() {
|
|
143
145
|
}
|
144
146
|
|
145
147
|
void GoogleCloud2ProdResolver::MetadataQuery::OnHttpRequestDone(
|
146
|
-
void* arg,
|
148
|
+
void* arg, grpc_error_handle error) {
|
147
149
|
auto* self = static_cast<MetadataQuery*>(arg);
|
148
150
|
self->MaybeCallOnDone(GRPC_ERROR_REF(error));
|
149
151
|
}
|
150
152
|
|
151
153
|
void GoogleCloud2ProdResolver::MetadataQuery::MaybeCallOnDone(
|
152
|
-
|
154
|
+
grpc_error_handle error) {
|
153
155
|
bool expected = false;
|
154
156
|
if (!on_done_called_.CompareExchangeStrong(
|
155
157
|
&expected, true, MemoryOrder::RELAXED, MemoryOrder::RELAXED)) {
|
@@ -180,10 +182,10 @@ GoogleCloud2ProdResolver::ZoneQuery::ZoneQuery(
|
|
180
182
|
|
181
183
|
void GoogleCloud2ProdResolver::ZoneQuery::OnDone(
|
182
184
|
GoogleCloud2ProdResolver* resolver, const grpc_http_response* response,
|
183
|
-
|
185
|
+
grpc_error_handle error) {
|
184
186
|
if (error != GRPC_ERROR_NONE) {
|
185
187
|
gpr_log(GPR_ERROR, "error fetching zone from metadata server: %s",
|
186
|
-
|
188
|
+
grpc_error_std_string(error).c_str());
|
187
189
|
}
|
188
190
|
std::string zone;
|
189
191
|
if (error == GRPC_ERROR_NONE && response->status == 200) {
|
@@ -213,10 +215,10 @@ GoogleCloud2ProdResolver::IPv6Query::IPv6Query(
|
|
213
215
|
|
214
216
|
void GoogleCloud2ProdResolver::IPv6Query::OnDone(
|
215
217
|
GoogleCloud2ProdResolver* resolver, const grpc_http_response* response,
|
216
|
-
|
218
|
+
grpc_error_handle error) {
|
217
219
|
if (error != GRPC_ERROR_NONE) {
|
218
220
|
gpr_log(GPR_ERROR, "error fetching IPv6 address from metadata server: %s",
|
219
|
-
|
221
|
+
grpc_error_std_string(error).c_str());
|
220
222
|
}
|
221
223
|
resolver->IPv6QueryDone(error == GRPC_ERROR_NONE && response->status == 200);
|
222
224
|
GRPC_ERROR_UNREF(error);
|
@@ -30,9 +30,9 @@
|
|
30
30
|
|
31
31
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
32
32
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
33
|
+
#include "src/core/lib/address_utils/parse_address.h"
|
33
34
|
#include "src/core/lib/channel/channel_args.h"
|
34
35
|
#include "src/core/lib/gpr/string.h"
|
35
|
-
#include "src/core/lib/iomgr/parse_address.h"
|
36
36
|
#include "src/core/lib/iomgr/resolve_address.h"
|
37
37
|
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
38
38
|
#include "src/core/lib/slice/slice_internal.h"
|
@@ -28,6 +28,7 @@
|
|
28
28
|
#include "src/core/ext/filters/client_channel/config_selector.h"
|
29
29
|
#include "src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h"
|
30
30
|
#include "src/core/ext/filters/client_channel/resolver_registry.h"
|
31
|
+
#include "src/core/ext/xds/xds_channel_args.h"
|
31
32
|
#include "src/core/ext/xds/xds_client.h"
|
32
33
|
#include "src/core/ext/xds/xds_http_filters.h"
|
33
34
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -73,19 +74,23 @@ class XdsResolver : public Resolver {
|
|
73
74
|
|
74
75
|
void ShutdownLocked() override;
|
75
76
|
|
77
|
+
void ResetBackoffLocked() override {
|
78
|
+
if (xds_client_ != nullptr) xds_client_->ResetBackoff();
|
79
|
+
}
|
80
|
+
|
76
81
|
private:
|
77
82
|
class Notifier {
|
78
83
|
public:
|
79
84
|
Notifier(RefCountedPtr<XdsResolver> resolver, XdsApi::LdsUpdate update);
|
80
85
|
Notifier(RefCountedPtr<XdsResolver> resolver, XdsApi::RdsUpdate update);
|
81
|
-
Notifier(RefCountedPtr<XdsResolver> resolver,
|
86
|
+
Notifier(RefCountedPtr<XdsResolver> resolver, grpc_error_handle error);
|
82
87
|
explicit Notifier(RefCountedPtr<XdsResolver> resolver);
|
83
88
|
|
84
89
|
private:
|
85
90
|
enum Type { kLdsUpdate, kRdsUpdate, kError, kDoesNotExist };
|
86
91
|
|
87
|
-
static void RunInExecCtx(void* arg,
|
88
|
-
void RunInWorkSerializer(
|
92
|
+
static void RunInExecCtx(void* arg, grpc_error_handle error);
|
93
|
+
void RunInWorkSerializer(grpc_error_handle error);
|
89
94
|
|
90
95
|
RefCountedPtr<XdsResolver> resolver_;
|
91
96
|
grpc_closure closure_;
|
@@ -100,7 +105,9 @@ class XdsResolver : public Resolver {
|
|
100
105
|
void OnListenerChanged(XdsApi::LdsUpdate listener) override {
|
101
106
|
new Notifier(resolver_, std::move(listener));
|
102
107
|
}
|
103
|
-
void OnError(
|
108
|
+
void OnError(grpc_error_handle error) override {
|
109
|
+
new Notifier(resolver_, error);
|
110
|
+
}
|
104
111
|
void OnResourceDoesNotExist() override { new Notifier(resolver_); }
|
105
112
|
|
106
113
|
private:
|
@@ -114,7 +121,9 @@ class XdsResolver : public Resolver {
|
|
114
121
|
void OnRouteConfigChanged(XdsApi::RdsUpdate route_config) override {
|
115
122
|
new Notifier(resolver_, std::move(route_config));
|
116
123
|
}
|
117
|
-
void OnError(
|
124
|
+
void OnError(grpc_error_handle error) override {
|
125
|
+
new Notifier(resolver_, error);
|
126
|
+
}
|
118
127
|
void OnResourceDoesNotExist() override { new Notifier(resolver_); }
|
119
128
|
|
120
129
|
private:
|
@@ -122,7 +131,7 @@ class XdsResolver : public Resolver {
|
|
122
131
|
};
|
123
132
|
|
124
133
|
class ClusterState
|
125
|
-
: public RefCounted<ClusterState, PolymorphicRefCount,
|
134
|
+
: public RefCounted<ClusterState, PolymorphicRefCount, kUnrefNoDelete> {
|
126
135
|
public:
|
127
136
|
using ClusterStateMap =
|
128
137
|
std::map<std::string, std::unique_ptr<ClusterState>>;
|
@@ -140,7 +149,8 @@ class XdsResolver : public Resolver {
|
|
140
149
|
|
141
150
|
class XdsConfigSelector : public ConfigSelector {
|
142
151
|
public:
|
143
|
-
XdsConfigSelector(RefCountedPtr<XdsResolver> resolver,
|
152
|
+
XdsConfigSelector(RefCountedPtr<XdsResolver> resolver,
|
153
|
+
grpc_error_handle* error);
|
144
154
|
~XdsConfigSelector() override;
|
145
155
|
|
146
156
|
const char* name() const override { return "XdsConfigSelector"; }
|
@@ -179,7 +189,7 @@ class XdsResolver : public Resolver {
|
|
179
189
|
using RouteTable = std::vector<Route>;
|
180
190
|
|
181
191
|
void MaybeAddCluster(const std::string& name);
|
182
|
-
|
192
|
+
grpc_error_handle CreateMethodConfig(
|
183
193
|
const XdsApi::Route& route,
|
184
194
|
const XdsApi::Route::ClusterWeight* cluster_weight,
|
185
195
|
RefCountedPtr<ServiceConfig>* method_config);
|
@@ -188,15 +198,16 @@ class XdsResolver : public Resolver {
|
|
188
198
|
RouteTable route_table_;
|
189
199
|
std::map<absl::string_view, RefCountedPtr<ClusterState>> clusters_;
|
190
200
|
std::vector<const grpc_channel_filter*> filters_;
|
191
|
-
|
201
|
+
grpc_error_handle filter_error_ = GRPC_ERROR_NONE;
|
192
202
|
};
|
193
203
|
|
194
204
|
void OnListenerUpdate(XdsApi::LdsUpdate listener);
|
195
205
|
void OnRouteConfigUpdate(XdsApi::RdsUpdate rds_update);
|
196
|
-
void OnError(
|
206
|
+
void OnError(grpc_error_handle error);
|
197
207
|
void OnResourceDoesNotExist();
|
198
208
|
|
199
|
-
|
209
|
+
grpc_error_handle CreateServiceConfig(
|
210
|
+
RefCountedPtr<ServiceConfig>* service_config);
|
200
211
|
void GenerateResult();
|
201
212
|
void MaybeRemoveUnusedClusters();
|
202
213
|
|
@@ -243,7 +254,7 @@ XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver,
|
|
243
254
|
}
|
244
255
|
|
245
256
|
XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver,
|
246
|
-
|
257
|
+
grpc_error_handle error)
|
247
258
|
: resolver_(std::move(resolver)), type_(kError) {
|
248
259
|
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
249
260
|
ExecCtx::Run(DEBUG_LOCATION, &closure_, error);
|
@@ -255,14 +266,14 @@ XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver)
|
|
255
266
|
ExecCtx::Run(DEBUG_LOCATION, &closure_, GRPC_ERROR_NONE);
|
256
267
|
}
|
257
268
|
|
258
|
-
void XdsResolver::Notifier::RunInExecCtx(void* arg,
|
269
|
+
void XdsResolver::Notifier::RunInExecCtx(void* arg, grpc_error_handle error) {
|
259
270
|
Notifier* self = static_cast<Notifier*>(arg);
|
260
271
|
GRPC_ERROR_REF(error);
|
261
272
|
self->resolver_->work_serializer_->Run(
|
262
273
|
[self, error]() { self->RunInWorkSerializer(error); }, DEBUG_LOCATION);
|
263
274
|
}
|
264
275
|
|
265
|
-
void XdsResolver::Notifier::RunInWorkSerializer(
|
276
|
+
void XdsResolver::Notifier::RunInWorkSerializer(grpc_error_handle error) {
|
266
277
|
if (resolver_->xds_client_ == nullptr) {
|
267
278
|
GRPC_ERROR_UNREF(error);
|
268
279
|
delete this;
|
@@ -314,7 +325,7 @@ bool XdsResolver::XdsConfigSelector::Route::operator==(
|
|
314
325
|
//
|
315
326
|
|
316
327
|
XdsResolver::XdsConfigSelector::XdsConfigSelector(
|
317
|
-
RefCountedPtr<XdsResolver> resolver,
|
328
|
+
RefCountedPtr<XdsResolver> resolver, grpc_error_handle* error)
|
318
329
|
: resolver_(std::move(resolver)) {
|
319
330
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
|
320
331
|
gpr_log(GPR_INFO, "[xds_resolver %p] creating XdsConfigSelector %p",
|
@@ -425,7 +436,7 @@ const XdsHttpFilterImpl::FilterConfig* FindFilterConfigOverride(
|
|
425
436
|
return nullptr;
|
426
437
|
}
|
427
438
|
|
428
|
-
|
439
|
+
grpc_error_handle XdsResolver::XdsConfigSelector::CreateMethodConfig(
|
429
440
|
const XdsApi::Route& route,
|
430
441
|
const XdsApi::Route::ClusterWeight* cluster_weight,
|
431
442
|
RefCountedPtr<ServiceConfig>* method_config) {
|
@@ -482,7 +493,7 @@ grpc_error* XdsResolver::XdsConfigSelector::CreateMethodConfig(
|
|
482
493
|
"\n ]"));
|
483
494
|
}
|
484
495
|
// Construct service config.
|
485
|
-
|
496
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
486
497
|
if (!fields.empty()) {
|
487
498
|
std::string json = absl::StrCat(
|
488
499
|
"{\n"
|
@@ -684,7 +695,7 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
684
695
|
// the data plane mutex.
|
685
696
|
DEBUG_LOCATION,
|
686
697
|
GRPC_CLOSURE_CREATE(
|
687
|
-
[](void* arg,
|
698
|
+
[](void* arg, grpc_error_handle /*error*/) {
|
688
699
|
auto* resolver = static_cast<XdsResolver*>(arg);
|
689
700
|
resolver->work_serializer_->Run(
|
690
701
|
[resolver]() {
|
@@ -706,13 +717,13 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
706
717
|
//
|
707
718
|
|
708
719
|
void XdsResolver::StartLocked() {
|
709
|
-
|
710
|
-
xds_client_ = XdsClient::GetOrCreate(&error);
|
720
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
721
|
+
xds_client_ = XdsClient::GetOrCreate(args_, &error);
|
711
722
|
if (error != GRPC_ERROR_NONE) {
|
712
723
|
gpr_log(GPR_ERROR,
|
713
724
|
"Failed to create xds client -- channel will remain in "
|
714
725
|
"TRANSIENT_FAILURE: %s",
|
715
|
-
|
726
|
+
grpc_error_std_string(error).c_str());
|
716
727
|
result_handler_->ReturnError(error);
|
717
728
|
return;
|
718
729
|
}
|
@@ -809,9 +820,9 @@ void XdsResolver::OnRouteConfigUpdate(XdsApi::RdsUpdate rds_update) {
|
|
809
820
|
GenerateResult();
|
810
821
|
}
|
811
822
|
|
812
|
-
void XdsResolver::OnError(
|
823
|
+
void XdsResolver::OnError(grpc_error_handle error) {
|
813
824
|
gpr_log(GPR_ERROR, "[xds_resolver %p] received error from XdsClient: %s",
|
814
|
-
this,
|
825
|
+
this, grpc_error_std_string(error).c_str());
|
815
826
|
Result result;
|
816
827
|
result.args = grpc_channel_args_copy(args_);
|
817
828
|
result.service_config_error = error;
|
@@ -832,7 +843,7 @@ void XdsResolver::OnResourceDoesNotExist() {
|
|
832
843
|
result_handler_->ReturnResult(std::move(result));
|
833
844
|
}
|
834
845
|
|
835
|
-
|
846
|
+
grpc_error_handle XdsResolver::CreateServiceConfig(
|
836
847
|
RefCountedPtr<ServiceConfig>* service_config) {
|
837
848
|
std::vector<std::string> clusters;
|
838
849
|
for (const auto& cluster : cluster_state_map_) {
|
@@ -859,7 +870,7 @@ grpc_error* XdsResolver::CreateServiceConfig(
|
|
859
870
|
" ]\n"
|
860
871
|
"}");
|
861
872
|
std::string json = absl::StrJoin(config_parts, "");
|
862
|
-
|
873
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
863
874
|
*service_config = ServiceConfig::Create(args_, json.c_str(), &error);
|
864
875
|
return error;
|
865
876
|
}
|
@@ -868,7 +879,7 @@ void XdsResolver::GenerateResult() {
|
|
868
879
|
if (current_virtual_host_.routes.empty()) return;
|
869
880
|
// First create XdsConfigSelector, which may add new entries to the cluster
|
870
881
|
// state map, and then CreateServiceConfig for LB policies.
|
871
|
-
|
882
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
872
883
|
auto config_selector = MakeRefCounted<XdsConfigSelector>(Ref(), &error);
|
873
884
|
if (error != GRPC_ERROR_NONE) {
|
874
885
|
OnError(error);
|
@@ -884,8 +895,12 @@ void XdsResolver::GenerateResult() {
|
|
884
895
|
gpr_log(GPR_INFO, "[xds_resolver %p] generated service config: %s", this,
|
885
896
|
result.service_config->json_string().c_str());
|
886
897
|
}
|
887
|
-
grpc_arg
|
888
|
-
|
898
|
+
grpc_arg new_args[] = {
|
899
|
+
xds_client_->MakeChannelArg(),
|
900
|
+
config_selector->MakeChannelArg(),
|
901
|
+
};
|
902
|
+
result.args =
|
903
|
+
grpc_channel_args_copy_and_add(args_, new_args, GPR_ARRAY_SIZE(new_args));
|
889
904
|
result_handler_->ReturnResult(std::move(result));
|
890
905
|
}
|
891
906
|
|