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
@@ -34,11 +34,11 @@
|
|
34
34
|
#include "src/core/ext/filters/client_channel/lb_policy/subchannel_list.h"
|
35
35
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
36
36
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
37
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
37
38
|
#include "src/core/lib/channel/channel_args.h"
|
38
39
|
#include "src/core/lib/debug/trace.h"
|
39
40
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
40
41
|
#include "src/core/lib/gprpp/sync.h"
|
41
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
42
42
|
#include "src/core/lib/transport/connectivity_state.h"
|
43
43
|
#include "src/core/lib/transport/error_utils.h"
|
44
44
|
#include "src/core/lib/transport/static_metadata.h"
|
@@ -331,7 +331,7 @@ void RoundRobin::RoundRobinSubchannelList::
|
|
331
331
|
absl::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
|
332
332
|
} else if (num_transient_failure_ == num_subchannels()) {
|
333
333
|
/* 3) TRANSIENT_FAILURE */
|
334
|
-
|
334
|
+
grpc_error_handle error =
|
335
335
|
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
336
336
|
"connections to all backends failing"),
|
337
337
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
@@ -449,7 +449,7 @@ void RoundRobin::UpdateLocked(UpdateArgs args) {
|
|
449
449
|
if (latest_pending_subchannel_list_->num_subchannels() == 0) {
|
450
450
|
// If the new list is empty, immediately promote the new list to the
|
451
451
|
// current list and transition to TRANSIENT_FAILURE.
|
452
|
-
|
452
|
+
grpc_error_handle error =
|
453
453
|
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty update"),
|
454
454
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
455
455
|
channel_control_helper()->UpdateState(
|
@@ -487,7 +487,7 @@ class RoundRobinFactory : public LoadBalancingPolicyFactory {
|
|
487
487
|
const char* name() const override { return kRoundRobin; }
|
488
488
|
|
489
489
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
490
|
-
const Json& /*json*/,
|
490
|
+
const Json& /*json*/, grpc_error_handle* /*error*/) const override {
|
491
491
|
return MakeRefCounted<RoundRobinConfig>();
|
492
492
|
}
|
493
493
|
};
|
@@ -33,13 +33,13 @@
|
|
33
33
|
// that implementation should be hidden from the LB policy API.
|
34
34
|
#include "src/core/ext/filters/client_channel/subchannel.h"
|
35
35
|
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
36
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
36
37
|
#include "src/core/lib/channel/channel_args.h"
|
37
38
|
#include "src/core/lib/debug/trace.h"
|
38
39
|
#include "src/core/lib/gprpp/orphanable.h"
|
39
40
|
#include "src/core/lib/gprpp/ref_counted.h"
|
40
41
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
41
42
|
#include "src/core/lib/iomgr/closure.h"
|
42
|
-
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
43
43
|
#include "src/core/lib/transport/connectivity_state.h"
|
44
44
|
|
45
45
|
// Code for maintaining a list of subchannels within an LB policy.
|
@@ -165,8 +165,8 @@ class WeightedTargetLb : public LoadBalancingPolicy {
|
|
165
165
|
grpc_connectivity_state state, const absl::Status& status,
|
166
166
|
std::unique_ptr<SubchannelPicker> picker);
|
167
167
|
|
168
|
-
static void OnDelayedRemovalTimer(void* arg,
|
169
|
-
void OnDelayedRemovalTimerLocked(
|
168
|
+
static void OnDelayedRemovalTimer(void* arg, grpc_error_handle error);
|
169
|
+
void OnDelayedRemovalTimerLocked(grpc_error_handle error);
|
170
170
|
|
171
171
|
// The owning LB policy.
|
172
172
|
RefCountedPtr<WeightedTargetLb> weighted_target_policy_;
|
@@ -387,7 +387,7 @@ void WeightedTargetLb::UpdateStateLocked() {
|
|
387
387
|
absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker"));
|
388
388
|
break;
|
389
389
|
default:
|
390
|
-
|
390
|
+
grpc_error_handle error = grpc_error_set_int(
|
391
391
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
392
392
|
"weighted_target: all children report state TRANSIENT_FAILURE"),
|
393
393
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
@@ -564,8 +564,8 @@ void WeightedTargetLb::WeightedChild::DeactivateLocked() {
|
|
564
564
|
&on_delayed_removal_timer_);
|
565
565
|
}
|
566
566
|
|
567
|
-
void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimer(
|
568
|
-
|
567
|
+
void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimer(
|
568
|
+
void* arg, grpc_error_handle error) {
|
569
569
|
WeightedChild* self = static_cast<WeightedChild*>(arg);
|
570
570
|
GRPC_ERROR_REF(error); // ref owned by lambda
|
571
571
|
self->weighted_target_policy_->work_serializer()->Run(
|
@@ -574,7 +574,7 @@ void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimer(void* arg,
|
|
574
574
|
}
|
575
575
|
|
576
576
|
void WeightedTargetLb::WeightedChild::OnDelayedRemovalTimerLocked(
|
577
|
-
|
577
|
+
grpc_error_handle error) {
|
578
578
|
if (error == GRPC_ERROR_NONE && delayed_removal_timer_callback_pending_ &&
|
579
579
|
!shutdown_ && weight_ == 0) {
|
580
580
|
delayed_removal_timer_callback_pending_ = false;
|
@@ -631,7 +631,7 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
|
|
631
631
|
const char* name() const override { return kWeightedTarget; }
|
632
632
|
|
633
633
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
634
|
-
const Json& json,
|
634
|
+
const Json& json, grpc_error_handle* error) const override {
|
635
635
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
636
636
|
if (json.type() == Json::Type::JSON_NULL) {
|
637
637
|
// weighted_target was mentioned as a policy in the deprecated
|
@@ -642,7 +642,7 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
|
|
642
642
|
"config instead.");
|
643
643
|
return nullptr;
|
644
644
|
}
|
645
|
-
std::vector<
|
645
|
+
std::vector<grpc_error_handle> error_list;
|
646
646
|
// Weight map.
|
647
647
|
WeightedTargetLbConfig::TargetMap target_map;
|
648
648
|
auto it = json.object_value().find("targets");
|
@@ -655,14 +655,14 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
|
|
655
655
|
} else {
|
656
656
|
for (const auto& p : it->second.object_value()) {
|
657
657
|
WeightedTargetLbConfig::ChildConfig child_config;
|
658
|
-
std::vector<
|
658
|
+
std::vector<grpc_error_handle> child_errors =
|
659
659
|
ParseChildConfig(p.second, &child_config);
|
660
660
|
if (!child_errors.empty()) {
|
661
661
|
// Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
|
662
662
|
// string is not static in this case.
|
663
|
-
|
663
|
+
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
664
664
|
absl::StrCat("field:targets key:", p.first).c_str());
|
665
|
-
for (
|
665
|
+
for (grpc_error_handle child_error : child_errors) {
|
666
666
|
error = grpc_error_add_child(error, child_error);
|
667
667
|
}
|
668
668
|
error_list.push_back(error);
|
@@ -680,9 +680,9 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
|
|
680
680
|
}
|
681
681
|
|
682
682
|
private:
|
683
|
-
static std::vector<
|
683
|
+
static std::vector<grpc_error_handle> ParseChildConfig(
|
684
684
|
const Json& json, WeightedTargetLbConfig::ChildConfig* child_config) {
|
685
|
-
std::vector<
|
685
|
+
std::vector<grpc_error_handle> error_list;
|
686
686
|
if (json.type() != Json::Type::OBJECT) {
|
687
687
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
688
688
|
"value should be of type object"));
|
@@ -711,13 +711,13 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
|
|
711
711
|
// Child policy.
|
712
712
|
it = json.object_value().find("childPolicy");
|
713
713
|
if (it != json.object_value().end()) {
|
714
|
-
|
714
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
715
715
|
child_config->config =
|
716
716
|
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(it->second,
|
717
717
|
&parse_error);
|
718
718
|
if (child_config->config == nullptr) {
|
719
719
|
GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
|
720
|
-
std::vector<
|
720
|
+
std::vector<grpc_error_handle> child_errors;
|
721
721
|
child_errors.push_back(parse_error);
|
722
722
|
error_list.push_back(
|
723
723
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
@@ -75,7 +75,7 @@ class CdsLb : public LoadBalancingPolicy {
|
|
75
75
|
void OnClusterChanged(XdsApi::CdsUpdate cluster_data) override {
|
76
76
|
new Notifier(parent_, name_, std::move(cluster_data));
|
77
77
|
}
|
78
|
-
void OnError(
|
78
|
+
void OnError(grpc_error_handle error) override {
|
79
79
|
new Notifier(parent_, name_, error);
|
80
80
|
}
|
81
81
|
void OnResourceDoesNotExist() override { new Notifier(parent_, name_); }
|
@@ -86,14 +86,14 @@ class CdsLb : public LoadBalancingPolicy {
|
|
86
86
|
Notifier(RefCountedPtr<CdsLb> parent, std::string name,
|
87
87
|
XdsApi::CdsUpdate update);
|
88
88
|
Notifier(RefCountedPtr<CdsLb> parent, std::string name,
|
89
|
-
|
89
|
+
grpc_error_handle error);
|
90
90
|
explicit Notifier(RefCountedPtr<CdsLb> parent, std::string name);
|
91
91
|
|
92
92
|
private:
|
93
93
|
enum Type { kUpdate, kError, kDoesNotExist };
|
94
94
|
|
95
|
-
static void RunInExecCtx(void* arg,
|
96
|
-
void RunInWorkSerializer(
|
95
|
+
static void RunInExecCtx(void* arg, grpc_error_handle error);
|
96
|
+
void RunInWorkSerializer(grpc_error_handle error);
|
97
97
|
|
98
98
|
RefCountedPtr<CdsLb> parent_;
|
99
99
|
std::string name_;
|
@@ -139,10 +139,10 @@ class CdsLb : public LoadBalancingPolicy {
|
|
139
139
|
std::set<std::string>* clusters_needed);
|
140
140
|
void OnClusterChanged(const std::string& name,
|
141
141
|
XdsApi::CdsUpdate cluster_data);
|
142
|
-
void OnError(const std::string& name,
|
142
|
+
void OnError(const std::string& name, grpc_error_handle error);
|
143
143
|
void OnResourceDoesNotExist(const std::string& name);
|
144
144
|
|
145
|
-
|
145
|
+
grpc_error_handle UpdateXdsCertificateProvider(
|
146
146
|
const std::string& cluster_name, const XdsApi::CdsUpdate& cluster_data);
|
147
147
|
|
148
148
|
void CancelClusterDataWatch(absl::string_view cluster_name,
|
@@ -190,7 +190,8 @@ CdsLb::ClusterWatcher::Notifier::Notifier(RefCountedPtr<CdsLb> parent,
|
|
190
190
|
}
|
191
191
|
|
192
192
|
CdsLb::ClusterWatcher::Notifier::Notifier(RefCountedPtr<CdsLb> parent,
|
193
|
-
std::string name,
|
193
|
+
std::string name,
|
194
|
+
grpc_error_handle error)
|
194
195
|
: parent_(std::move(parent)), name_(std::move(name)), type_(kError) {
|
195
196
|
GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
|
196
197
|
ExecCtx::Run(DEBUG_LOCATION, &closure_, error);
|
@@ -204,14 +205,15 @@ CdsLb::ClusterWatcher::Notifier::Notifier(RefCountedPtr<CdsLb> parent,
|
|
204
205
|
}
|
205
206
|
|
206
207
|
void CdsLb::ClusterWatcher::Notifier::RunInExecCtx(void* arg,
|
207
|
-
|
208
|
+
grpc_error_handle error) {
|
208
209
|
Notifier* self = static_cast<Notifier*>(arg);
|
209
210
|
GRPC_ERROR_REF(error);
|
210
211
|
self->parent_->work_serializer()->Run(
|
211
212
|
[self, error]() { self->RunInWorkSerializer(error); }, DEBUG_LOCATION);
|
212
213
|
}
|
213
214
|
|
214
|
-
void CdsLb::ClusterWatcher::Notifier::RunInWorkSerializer(
|
215
|
+
void CdsLb::ClusterWatcher::Notifier::RunInWorkSerializer(
|
216
|
+
grpc_error_handle error) {
|
215
217
|
switch (type_) {
|
216
218
|
case kUpdate:
|
217
219
|
parent_->OnClusterChanged(name_, std::move(update_));
|
@@ -434,7 +436,7 @@ void CdsLb::OnClusterChanged(const std::string& name,
|
|
434
436
|
if (it == watchers_.end()) return;
|
435
437
|
it->second.update = cluster_data;
|
436
438
|
// Take care of integration with new certificate code.
|
437
|
-
|
439
|
+
grpc_error_handle error = GRPC_ERROR_NONE;
|
438
440
|
error = UpdateXdsCertificateProvider(name, it->second.update.value());
|
439
441
|
if (error != GRPC_ERROR_NONE) {
|
440
442
|
return OnError(name, error);
|
@@ -541,9 +543,9 @@ void CdsLb::OnClusterChanged(const std::string& name,
|
|
541
543
|
}
|
542
544
|
}
|
543
545
|
|
544
|
-
void CdsLb::OnError(const std::string& name,
|
546
|
+
void CdsLb::OnError(const std::string& name, grpc_error_handle error) {
|
545
547
|
gpr_log(GPR_ERROR, "[cdslb %p] xds error obtaining data for cluster %s: %s",
|
546
|
-
this, name.c_str(),
|
548
|
+
this, name.c_str(), grpc_error_std_string(error).c_str());
|
547
549
|
// Go into TRANSIENT_FAILURE if we have not yet created the child
|
548
550
|
// policy (i.e., we have not yet received data from xds). Otherwise,
|
549
551
|
// we keep running with the data we had previously.
|
@@ -561,7 +563,7 @@ void CdsLb::OnResourceDoesNotExist(const std::string& name) {
|
|
561
563
|
"[cdslb %p] CDS resource for %s does not exist -- reporting "
|
562
564
|
"TRANSIENT_FAILURE",
|
563
565
|
this, name.c_str());
|
564
|
-
|
566
|
+
grpc_error_handle error =
|
565
567
|
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
566
568
|
absl::StrCat("CDS resource \"", config_->cluster(),
|
567
569
|
"\" does not exist")
|
@@ -573,7 +575,7 @@ void CdsLb::OnResourceDoesNotExist(const std::string& name) {
|
|
573
575
|
MaybeDestroyChildPolicyLocked();
|
574
576
|
}
|
575
577
|
|
576
|
-
|
578
|
+
grpc_error_handle CdsLb::UpdateXdsCertificateProvider(
|
577
579
|
const std::string& cluster_name, const XdsApi::CdsUpdate& cluster_data) {
|
578
580
|
// Early out if channel is not configured to use xds security.
|
579
581
|
grpc_channel_credentials* channel_credentials =
|
@@ -599,10 +601,12 @@ grpc_error* CdsLb::UpdateXdsCertificateProvider(
|
|
599
601
|
xds_client_->certificate_provider_store()
|
600
602
|
.CreateOrGetCertificateProvider(root_provider_instance_name);
|
601
603
|
if (new_root_provider == nullptr) {
|
602
|
-
return
|
603
|
-
|
604
|
-
|
605
|
-
|
604
|
+
return grpc_error_set_int(
|
605
|
+
GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
606
|
+
absl::StrCat("Certificate provider instance name: \"",
|
607
|
+
root_provider_instance_name, "\" not recognized.")
|
608
|
+
.c_str()),
|
609
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
606
610
|
}
|
607
611
|
}
|
608
612
|
if (root_certificate_provider_ != new_root_provider) {
|
@@ -637,10 +641,13 @@ grpc_error* CdsLb::UpdateXdsCertificateProvider(
|
|
637
641
|
xds_client_->certificate_provider_store()
|
638
642
|
.CreateOrGetCertificateProvider(identity_provider_instance_name);
|
639
643
|
if (new_identity_provider == nullptr) {
|
640
|
-
return
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
+
return grpc_error_set_int(
|
645
|
+
GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
646
|
+
absl::StrCat("Certificate provider instance name: \"",
|
647
|
+
identity_provider_instance_name,
|
648
|
+
"\" not recognized.")
|
649
|
+
.c_str()),
|
650
|
+
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
|
644
651
|
}
|
645
652
|
}
|
646
653
|
if (identity_certificate_provider_ != new_identity_provider) {
|
@@ -693,13 +700,12 @@ class CdsLbFactory : public LoadBalancingPolicyFactory {
|
|
693
700
|
public:
|
694
701
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
695
702
|
LoadBalancingPolicy::Args args) const override {
|
696
|
-
|
697
|
-
|
698
|
-
if (
|
703
|
+
RefCountedPtr<XdsClient> xds_client =
|
704
|
+
XdsClient::GetFromChannelArgs(*args.args);
|
705
|
+
if (xds_client == nullptr) {
|
699
706
|
gpr_log(GPR_ERROR,
|
700
|
-
"
|
701
|
-
|
702
|
-
GRPC_ERROR_UNREF(error);
|
707
|
+
"XdsClient not present in channel args -- cannot instantiate "
|
708
|
+
"cds LB policy");
|
703
709
|
return nullptr;
|
704
710
|
}
|
705
711
|
return MakeOrphanable<CdsLb>(std::move(xds_client), std::move(args));
|
@@ -708,7 +714,7 @@ class CdsLbFactory : public LoadBalancingPolicyFactory {
|
|
708
714
|
const char* name() const override { return kCds; }
|
709
715
|
|
710
716
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
711
|
-
const Json& json,
|
717
|
+
const Json& json, grpc_error_handle* error) const override {
|
712
718
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
713
719
|
if (json.type() == Json::Type::JSON_NULL) {
|
714
720
|
// xds was mentioned as a policy in the deprecated loadBalancingPolicy
|
@@ -718,7 +724,7 @@ class CdsLbFactory : public LoadBalancingPolicyFactory {
|
|
718
724
|
"Please use loadBalancingConfig field of service config instead.");
|
719
725
|
return nullptr;
|
720
726
|
}
|
721
|
-
std::vector<
|
727
|
+
std::vector<grpc_error_handle> error_list;
|
722
728
|
// cluster name.
|
723
729
|
std::string cluster;
|
724
730
|
auto it = json.object_value().find("cluster");
|
@@ -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;
|
@@ -287,15 +289,15 @@ LoadBalancingPolicy::PickResult XdsClusterImplLb::Picker::Pick(
|
|
287
289
|
return result;
|
288
290
|
}
|
289
291
|
// Handle circuit breaking.
|
290
|
-
uint32_t current = call_counter_->
|
292
|
+
uint32_t current = call_counter_->Load();
|
291
293
|
// Check and see if we exceeded the max concurrent requests count.
|
292
294
|
if (current >= max_concurrent_requests_) {
|
293
|
-
call_counter_->Decrement();
|
294
295
|
if (drop_stats_ != nullptr) drop_stats_->AddUncategorizedDrops();
|
295
296
|
PickResult result;
|
296
297
|
result.type = PickResult::PICK_COMPLETE;
|
297
298
|
return result;
|
298
299
|
}
|
300
|
+
call_counter_->Increment();
|
299
301
|
// If we're not dropping the call, we should always have a child picker.
|
300
302
|
if (picker_ == nullptr) { // Should never happen.
|
301
303
|
PickResult result;
|
@@ -329,7 +331,7 @@ LoadBalancingPolicy::PickResult XdsClusterImplLb::Picker::Pick(
|
|
329
331
|
// Note: This callback does not run in either the control plane
|
330
332
|
// work serializer or in the data plane mutex.
|
331
333
|
[locality_stats, original_recv_trailing_metadata_ready, call_counter](
|
332
|
-
|
334
|
+
grpc_error_handle error, MetadataInterface* metadata,
|
333
335
|
CallState* call_state) {
|
334
336
|
// Record call completion for load reporting.
|
335
337
|
if (locality_stats != nullptr) {
|
@@ -594,14 +596,12 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
594
596
|
public:
|
595
597
|
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
|
596
598
|
LoadBalancingPolicy::Args args) const override {
|
597
|
-
|
598
|
-
|
599
|
-
if (
|
600
|
-
gpr_log(
|
601
|
-
|
602
|
-
|
603
|
-
grpc_error_string(error));
|
604
|
-
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");
|
605
605
|
return nullptr;
|
606
606
|
}
|
607
607
|
return MakeOrphanable<XdsClusterImplLb>(std::move(xds_client),
|
@@ -611,7 +611,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
611
611
|
const char* name() const override { return kXdsClusterImpl; }
|
612
612
|
|
613
613
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
614
|
-
const Json& json,
|
614
|
+
const Json& json, grpc_error_handle* error) const override {
|
615
615
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
616
616
|
if (json.type() == Json::Type::JSON_NULL) {
|
617
617
|
// This policy was configured in the deprecated loadBalancingPolicy
|
@@ -622,7 +622,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
622
622
|
"config instead.");
|
623
623
|
return nullptr;
|
624
624
|
}
|
625
|
-
std::vector<
|
625
|
+
std::vector<grpc_error_handle> error_list;
|
626
626
|
// Child policy.
|
627
627
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy;
|
628
628
|
auto it = json.object_value().find("childPolicy");
|
@@ -630,12 +630,12 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
630
630
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
631
631
|
"field:childPolicy error:required field missing"));
|
632
632
|
} else {
|
633
|
-
|
633
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
634
634
|
child_policy = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
635
635
|
it->second, &parse_error);
|
636
636
|
if (child_policy == nullptr) {
|
637
637
|
GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
|
638
|
-
std::vector<
|
638
|
+
std::vector<grpc_error_handle> child_errors;
|
639
639
|
child_errors.push_back(parse_error);
|
640
640
|
error_list.push_back(
|
641
641
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
@@ -694,7 +694,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
694
694
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
695
695
|
"field:dropCategories error:required field missing"));
|
696
696
|
} else {
|
697
|
-
std::vector<
|
697
|
+
std::vector<grpc_error_handle> child_errors =
|
698
698
|
ParseDropCategories(it->second, drop_config.get());
|
699
699
|
if (!child_errors.empty()) {
|
700
700
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR(
|
@@ -713,9 +713,9 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
713
713
|
}
|
714
714
|
|
715
715
|
private:
|
716
|
-
static std::vector<
|
716
|
+
static std::vector<grpc_error_handle> ParseDropCategories(
|
717
717
|
const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) {
|
718
|
-
std::vector<
|
718
|
+
std::vector<grpc_error_handle> error_list;
|
719
719
|
if (json.type() != Json::Type::ARRAY) {
|
720
720
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
721
721
|
"dropCategories field is not an array"));
|
@@ -723,10 +723,10 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
723
723
|
}
|
724
724
|
for (size_t i = 0; i < json.array_value().size(); ++i) {
|
725
725
|
const Json& entry = json.array_value()[i];
|
726
|
-
std::vector<
|
726
|
+
std::vector<grpc_error_handle> child_errors =
|
727
727
|
ParseDropCategory(entry, drop_config);
|
728
728
|
if (!child_errors.empty()) {
|
729
|
-
|
729
|
+
grpc_error_handle error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
730
730
|
absl::StrCat("errors parsing index ", i).c_str());
|
731
731
|
for (size_t i = 0; i < child_errors.size(); ++i) {
|
732
732
|
error = grpc_error_add_child(error, child_errors[i]);
|
@@ -737,9 +737,9 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
737
737
|
return error_list;
|
738
738
|
}
|
739
739
|
|
740
|
-
static std::vector<
|
740
|
+
static std::vector<grpc_error_handle> ParseDropCategory(
|
741
741
|
const Json& json, XdsApi::EdsUpdate::DropConfig* drop_config) {
|
742
|
-
std::vector<
|
742
|
+
std::vector<grpc_error_handle> error_list;
|
743
743
|
if (json.type() != Json::Type::OBJECT) {
|
744
744
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
745
745
|
"dropCategories entry is not an object"));
|