grpc 1.47.0 → 1.48.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 +105 -47
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +20 -11
- data/include/grpc/event_engine/slice_buffer.h +8 -2
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +2 -1
- data/include/grpc/impl/codegen/port_platform.h +6 -3
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +17 -5
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +16 -0
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +51 -65
- data/src/core/ext/filters/client_channel/client_channel.h +19 -4
- 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 +6 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +73 -43
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -112
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +91 -42
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +177 -138
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +4 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +47 -44
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +118 -103
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +83 -78
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +57 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -7
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +13 -17
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -5
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -1
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +6 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -5
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +12 -3
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +3 -4
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +24 -15
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -7
- data/src/core/ext/filters/client_channel/retry_filter.cc +35 -36
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +4 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -50
- data/src/core/ext/filters/client_channel/subchannel.h +6 -22
- data/src/core/ext/filters/client_channel/subchannel_interface.h +10 -18
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +12 -97
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +12 -7
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +21 -2
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +16 -5
- data/src/core/ext/filters/http/client/http_client_filter.h +8 -1
- data/src/core/ext/filters/http/client_authority_filter.cc +11 -10
- data/src/core/ext/filters/http/client_authority_filter.h +5 -2
- data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +16 -9
- data/src/core/ext/filters/http/server/http_server_filter.h +6 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +25 -15
- data/src/core/ext/filters/message_size/message_size_filter.h +13 -0
- data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -15
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +196 -476
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +141 -261
- data/src/core/ext/transport/chttp2/transport/flow_control.h +176 -289
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -6
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +9 -111
- data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +85 -81
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +2 -0
- data/src/core/ext/xds/certificate_provider_store.h +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +1 -2
- data/src/core/ext/xds/xds_api.cc +16 -18
- data/src/core/ext/xds/xds_api.h +12 -5
- data/src/core/ext/xds/xds_bootstrap.cc +37 -24
- data/src/core/ext/xds/xds_bootstrap.h +9 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
- data/src/core/ext/xds/xds_certificate_provider.h +16 -1
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +9 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
- data/src/core/ext/xds/xds_client.cc +71 -22
- data/src/core/ext/xds/xds_client.h +17 -3
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +21 -10
- data/src/core/ext/xds/xds_cluster.h +9 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
- data/src/core/ext/xds/xds_common_types.cc +36 -22
- data/src/core/ext/xds/xds_common_types.h +12 -4
- data/src/core/ext/xds/xds_endpoint.cc +25 -15
- data/src/core/ext/xds/xds_endpoint.h +13 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +7 -5
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +51 -33
- data/src/core/ext/xds/xds_listener.h +10 -1
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +56 -28
- data/src/core/ext/xds/xds_route_config.h +11 -2
- data/src/core/ext/xds/xds_routing.cc +16 -0
- data/src/core/ext/xds/xds_routing.h +7 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +54 -6
- data/src/core/lib/address_utils/parse_address.cc +5 -8
- data/src/core/lib/address_utils/parse_address.h +3 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
- data/src/core/lib/avl/avl.h +3 -3
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_tracer.h +3 -3
- data/src/core/lib/channel/channel_args.h +1 -0
- data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +4 -4
- data/src/core/lib/channel/channel_stack.h +1 -11
- data/src/core/lib/channel/channel_stack_builder.h +2 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
- data/src/core/lib/channel/channelz.cc +2 -1
- data/src/core/lib/channel/channelz.h +2 -3
- data/src/core/lib/channel/channelz_registry.cc +4 -5
- data/src/core/lib/channel/connected_channel.cc +1 -0
- data/src/core/lib/channel/connected_channel.h +1 -0
- data/src/core/lib/channel/promise_based_filter.cc +11 -5
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +3 -6
- data/src/core/lib/compression/compression_internal.h +3 -2
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/debug/stats.cc +9 -9
- data/src/core/lib/debug/stats.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -1
- data/src/core/lib/event_engine/event_engine.cc +24 -19
- data/src/core/lib/event_engine/event_engine_factory.h +2 -2
- data/src/core/lib/event_engine/{iomgr_engine.cc → iomgr_engine/iomgr_engine.cc} +44 -91
- data/src/core/lib/event_engine/{iomgr_engine.h → iomgr_engine/iomgr_engine.h} +20 -16
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
- data/src/core/lib/event_engine/promise.h +69 -0
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gprpp/manual_constructor.h +0 -67
- data/src/core/lib/gprpp/status_helper.cc +44 -30
- data/src/core/lib/gprpp/time.cc +8 -0
- data/src/core/lib/gprpp/time.h +4 -0
- data/src/core/lib/http/format_request.cc +5 -4
- data/src/core/lib/http/format_request.h +1 -1
- data/src/core/lib/http/httpcli.cc +18 -12
- data/src/core/lib/http/httpcli.h +19 -3
- data/src/core/lib/http/httpcli_security_connector.cc +16 -4
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
- data/src/core/lib/iomgr/error.cc +11 -9
- data/src/core/lib/iomgr/error.h +9 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +54 -92
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/iomgr.cc +7 -0
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
- data/src/core/lib/iomgr/tcp_posix.cc +91 -29
- data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
- data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
- data/src/core/lib/iomgr/tcp_windows.cc +5 -5
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/iomgr/work_serializer.h +2 -3
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +0 -1
- data/src/core/lib/promise/activity.h +7 -13
- data/src/core/lib/promise/loop.h +1 -0
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/sleep.cc +36 -31
- data/src/core/lib/promise/sleep.h +25 -25
- data/src/core/lib/resolver/resolver.cc +5 -0
- data/src/core/lib/resolver/resolver.h +3 -0
- data/src/core/lib/resolver/resolver_factory.h +5 -2
- data/src/core/lib/resolver/resolver_registry.cc +2 -9
- data/src/core/lib/resolver/resolver_registry.h +12 -1
- data/src/core/lib/resolver/server_address.cc +8 -0
- data/src/core/lib/resolver/server_address.h +9 -2
- data/src/core/lib/resource_quota/memory_quota.cc +18 -60
- data/src/core/lib/resource_quota/memory_quota.h +11 -25
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
- data/src/core/lib/security/authorization/matchers.cc +9 -1
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +4 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -1
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +16 -2
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +10 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +28 -10
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +24 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -10
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +4 -0
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +5 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +11 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +4 -3
- data/src/core/lib/security/credentials/local/local_credentials.h +7 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +26 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +9 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +7 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.h +14 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +17 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -6
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -9
- data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +44 -11
- data/src/core/lib/security/transport/security_handshaker.h +4 -0
- data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config_call_data.h +2 -1
- data/src/core/lib/service_config/service_config_impl.cc +6 -6
- data/src/core/lib/service_config/service_config_impl.h +1 -3
- data/src/core/lib/service_config/service_config_parser.cc +2 -4
- data/src/core/lib/slice/slice_buffer.cc +30 -1
- data/src/core/lib/slice/slice_buffer.h +37 -6
- data/src/core/lib/slice/slice_string_helpers.cc +0 -20
- data/src/core/lib/slice/slice_string_helpers.h +0 -4
- data/src/core/lib/surface/call.cc +53 -115
- data/src/core/lib/surface/call.h +5 -1
- data/src/core/lib/surface/channel.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +15 -14
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +14 -8
- data/src/core/lib/surface/server.h +4 -1
- data/src/core/lib/surface/validate_metadata.cc +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.cc +13 -7
- data/src/core/lib/transport/handshaker.cc +3 -3
- data/src/core/lib/transport/http_connect_handshaker.cc +4 -4
- data/src/core/lib/transport/tcp_connect_handshaker.cc +2 -2
- data/src/core/lib/transport/transport.cc +0 -3
- data/src/core/lib/transport/transport.h +20 -14
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +1 -0
- data/src/core/lib/transport/transport_op_string.cc +9 -9
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +13 -1
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +49 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- metadata +39 -15
- data/src/core/lib/slice/slice_split.cc +0 -103
- data/src/core/lib/slice/slice_split.h +0 -36
- data/src/core/lib/transport/byte_stream.cc +0 -165
- data/src/core/lib/transport/byte_stream.h +0 -170
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -36,6 +36,7 @@
|
|
36
36
|
#include <grpc/impl/codegen/grpc_types.h>
|
37
37
|
#include <grpc/support/log.h>
|
38
38
|
|
39
|
+
#include "src/core/ext/filters/client_channel/client_channel.h"
|
39
40
|
#include "src/core/ext/filters/client_channel/lb_policy.h"
|
40
41
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
41
42
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
@@ -196,7 +197,6 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
|
|
196
197
|
|
197
198
|
RefCountedPtr<ChildPickerWrapper> picker_wrapper_;
|
198
199
|
grpc_connectivity_state connectivity_state_ = GRPC_CHANNEL_IDLE;
|
199
|
-
bool seen_failure_since_ready_ = false;
|
200
200
|
|
201
201
|
// States for delayed removal.
|
202
202
|
grpc_timer delayed_removal_timer_;
|
@@ -228,8 +228,10 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
|
|
228
228
|
|
229
229
|
XdsClusterManagerLb::PickResult XdsClusterManagerLb::ClusterPicker::Pick(
|
230
230
|
PickArgs args) {
|
231
|
+
auto* call_state = static_cast<ClientChannel::LoadBalancedCall::LbCallState*>(
|
232
|
+
args.call_state);
|
231
233
|
auto cluster_name =
|
232
|
-
|
234
|
+
call_state->GetCallAttribute(XdsClusterAttributeTypeName());
|
233
235
|
auto it = cluster_map_.find(cluster_name);
|
234
236
|
if (it != cluster_map_.end()) {
|
235
237
|
return it->second->Pick(args);
|
@@ -532,7 +534,7 @@ void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimer(
|
|
532
534
|
void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimerLocked(
|
533
535
|
grpc_error_handle error) {
|
534
536
|
delayed_removal_timer_callback_pending_ = false;
|
535
|
-
if (error
|
537
|
+
if (GRPC_ERROR_IS_NONE(error) && !shutdown_) {
|
536
538
|
xds_cluster_manager_policy_->children_.erase(name_);
|
537
539
|
}
|
538
540
|
Unref(DEBUG_LOCATION, "ClusterChild+timer");
|
@@ -574,19 +576,13 @@ void XdsClusterManagerLb::ClusterChild::Helper::UpdateState(
|
|
574
576
|
MakeRefCounted<ChildPickerWrapper>(xds_cluster_manager_child_->name_,
|
575
577
|
std::move(picker));
|
576
578
|
// Decide what state to report for aggregation purposes.
|
577
|
-
// If
|
578
|
-
// READY,
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
xds_cluster_manager_child_->seen_failure_since_ready_ = true;
|
584
|
-
}
|
585
|
-
} else {
|
586
|
-
if (state != GRPC_CHANNEL_READY) return;
|
587
|
-
xds_cluster_manager_child_->seen_failure_since_ready_ = false;
|
579
|
+
// If the last recorded state was TRANSIENT_FAILURE and the new state
|
580
|
+
// is something other than READY, don't change the state.
|
581
|
+
if (xds_cluster_manager_child_->connectivity_state_ !=
|
582
|
+
GRPC_CHANNEL_TRANSIENT_FAILURE ||
|
583
|
+
state == GRPC_CHANNEL_READY) {
|
584
|
+
xds_cluster_manager_child_->connectivity_state_ = state;
|
588
585
|
}
|
589
|
-
xds_cluster_manager_child_->connectivity_state_ = state;
|
590
586
|
// Notify the LB policy.
|
591
587
|
xds_cluster_manager_child_->xds_cluster_manager_policy_->UpdateStateLocked();
|
592
588
|
}
|
@@ -631,7 +627,7 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
631
627
|
|
632
628
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
633
629
|
const Json& json, grpc_error_handle* error) const override {
|
634
|
-
GPR_DEBUG_ASSERT(error != nullptr && *error
|
630
|
+
GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
|
635
631
|
if (json.type() == Json::Type::JSON_NULL) {
|
636
632
|
// xds_cluster_manager was mentioned as a policy in the deprecated
|
637
633
|
// loadBalancingPolicy field or in the client API.
|
@@ -702,7 +698,7 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
|
|
702
698
|
*child_config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
703
699
|
it->second, &parse_error);
|
704
700
|
if (*child_config == nullptr) {
|
705
|
-
GPR_DEBUG_ASSERT(parse_error
|
701
|
+
GPR_DEBUG_ASSERT(!GRPC_ERROR_IS_NONE(parse_error));
|
706
702
|
std::vector<grpc_error_handle> child_errors;
|
707
703
|
child_errors.push_back(parse_error);
|
708
704
|
error_list.push_back(
|
@@ -933,7 +933,7 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
|
|
933
933
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
934
934
|
RefCountedPtr<LoadBalancingPolicy::Config> config =
|
935
935
|
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(json, &error);
|
936
|
-
if (error
|
936
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
937
937
|
// This should never happen, but if it does, we basically have no
|
938
938
|
// way to fix it, so we put the channel in TRANSIENT_FAILURE.
|
939
939
|
gpr_log(GPR_ERROR,
|
@@ -1032,7 +1032,7 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1032
1032
|
|
1033
1033
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
1034
1034
|
const Json& json, grpc_error_handle* error) const override {
|
1035
|
-
GPR_DEBUG_ASSERT(error != nullptr && *error
|
1035
|
+
GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
|
1036
1036
|
if (json.type() == Json::Type::JSON_NULL) {
|
1037
1037
|
// xds_cluster_resolver was mentioned as a policy in the deprecated
|
1038
1038
|
// loadBalancingPolicy field or in the client API.
|
@@ -1152,7 +1152,7 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
|
|
1152
1152
|
grpc_error_handle parse_error;
|
1153
1153
|
discovery_mechanism->lrs_load_reporting_server.emplace(
|
1154
1154
|
XdsBootstrap::XdsServer::Parse(it->second, &parse_error));
|
1155
|
-
if (parse_error
|
1155
|
+
if (!GRPC_ERROR_IS_NONE(parse_error)) {
|
1156
1156
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
1157
1157
|
absl::StrCat("errors parsing lrs_load_reporting_server")));
|
1158
1158
|
error_list.push_back(parse_error);
|
@@ -106,13 +106,6 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
106
106
|
/// It is more efficient to use this than to allocate memory directly
|
107
107
|
/// for allocations that need to be made on a per-call basis.
|
108
108
|
virtual void* Alloc(size_t size) = 0;
|
109
|
-
|
110
|
-
/// EXPERIMENTAL API.
|
111
|
-
/// Returns the value of the call attribute \a key.
|
112
|
-
/// Keys are static strings, so an attribute can be accessed by an LB
|
113
|
-
/// policy implementation only if it knows about the internal key.
|
114
|
-
/// Returns a null string_view if key not found.
|
115
|
-
virtual absl::string_view ExperimentalGetCallAttribute(const char* key) = 0;
|
116
109
|
};
|
117
110
|
|
118
111
|
/// Interface for accessing metadata.
|
@@ -28,7 +28,6 @@
|
|
28
28
|
#include <utility>
|
29
29
|
#include <vector>
|
30
30
|
|
31
|
-
#include "absl/container/inlined_vector.h"
|
32
31
|
#include "absl/strings/str_cat.h"
|
33
32
|
#include "absl/strings/str_format.h"
|
34
33
|
#include "absl/strings/str_join.h"
|
@@ -65,8 +64,7 @@ class RegistryState {
|
|
65
64
|
}
|
66
65
|
|
67
66
|
private:
|
68
|
-
|
69
|
-
factories_;
|
67
|
+
std::vector<std::unique_ptr<LoadBalancingPolicyFactory>> factories_;
|
70
68
|
};
|
71
69
|
|
72
70
|
RegistryState* g_state = nullptr;
|
@@ -170,11 +168,11 @@ grpc_error_handle ParseLoadBalancingConfigHelper(
|
|
170
168
|
RefCountedPtr<LoadBalancingPolicy::Config>
|
171
169
|
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
172
170
|
const Json& json, grpc_error_handle* error) {
|
173
|
-
GPR_DEBUG_ASSERT(error != nullptr && *error
|
171
|
+
GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
|
174
172
|
GPR_ASSERT(g_state != nullptr);
|
175
173
|
Json::Object::const_iterator policy;
|
176
174
|
*error = ParseLoadBalancingConfigHelper(json, &policy);
|
177
|
-
if (*error
|
175
|
+
if (!GRPC_ERROR_IS_NONE(*error)) {
|
178
176
|
return nullptr;
|
179
177
|
}
|
180
178
|
// Find factory.
|
@@ -14,6 +14,8 @@
|
|
14
14
|
|
15
15
|
#include <grpc/support/port_platform.h>
|
16
16
|
|
17
|
+
#include <algorithm>
|
18
|
+
|
17
19
|
#include "src/core/lib/iomgr/port.h" // IWYU pragma: keep
|
18
20
|
|
19
21
|
#ifdef GRPC_HAVE_UNIX_SOCKET
|
@@ -126,7 +128,7 @@ class BinderResolverFactory : public ResolverFactory {
|
|
126
128
|
return false;
|
127
129
|
}
|
128
130
|
grpc_error_handle error = BinderAddrPopulate(uri.path(), &addr);
|
129
|
-
if (error
|
131
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
130
132
|
gpr_log(GPR_ERROR, "%s", grpc_error_std_string(error).c_str());
|
131
133
|
GRPC_ERROR_UNREF(error);
|
132
134
|
return false;
|
@@ -200,14 +200,14 @@ bool ValueInJsonArray(const Json::Array& array, const char* value) {
|
|
200
200
|
std::string ChooseServiceConfig(char* service_config_choice_json,
|
201
201
|
grpc_error_handle* error) {
|
202
202
|
Json json = Json::Parse(service_config_choice_json, error);
|
203
|
-
if (*error
|
203
|
+
if (!GRPC_ERROR_IS_NONE(*error)) return "";
|
204
204
|
if (json.type() != Json::Type::ARRAY) {
|
205
205
|
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
206
206
|
"Service Config Choices, error: should be of type array");
|
207
207
|
return "";
|
208
208
|
}
|
209
209
|
const Json* service_config = nullptr;
|
210
|
-
|
210
|
+
std::vector<grpc_error_handle> error_list;
|
211
211
|
for (const Json& choice : json.array_value()) {
|
212
212
|
if (choice.type() != Json::Type::OBJECT) {
|
213
213
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
@@ -300,7 +300,7 @@ void AresClientChannelDNSResolver::AresRequestWrapper::OnResolved(
|
|
300
300
|
std::string service_config_string =
|
301
301
|
ChooseServiceConfig(service_config_json_, &service_config_error);
|
302
302
|
RefCountedPtr<ServiceConfig> service_config;
|
303
|
-
if (service_config_error
|
303
|
+
if (GRPC_ERROR_IS_NONE(service_config_error) &&
|
304
304
|
!service_config_string.empty()) {
|
305
305
|
GRPC_CARES_TRACE_LOG("resolver:%p selected service config choice: %s",
|
306
306
|
this, service_config_string.c_str());
|
@@ -308,7 +308,7 @@ void AresClientChannelDNSResolver::AresRequestWrapper::OnResolved(
|
|
308
308
|
service_config_string,
|
309
309
|
&service_config_error);
|
310
310
|
}
|
311
|
-
if (service_config_error
|
311
|
+
if (!GRPC_ERROR_IS_NONE(service_config_error)) {
|
312
312
|
result.service_config = absl::UnavailableError(
|
313
313
|
absl::StrCat("failed to parse service config: ",
|
314
314
|
grpc_error_std_string(service_config_error)));
|
@@ -438,7 +438,7 @@ class AresDNSResolver : public DNSResolver {
|
|
438
438
|
}
|
439
439
|
grpc_pollset_set_del_pollset_set(request->pollset_set_,
|
440
440
|
request->interested_parties_);
|
441
|
-
if (error
|
441
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
442
442
|
request->on_resolve_address_done_(grpc_error_to_absl_status(error));
|
443
443
|
return;
|
444
444
|
}
|
@@ -563,7 +563,7 @@ void grpc_resolver_dns_ares_init() {
|
|
563
563
|
if (grpc_core::UseAresDnsResolver()) {
|
564
564
|
address_sorting_init();
|
565
565
|
grpc_error_handle error = grpc_ares_init();
|
566
|
-
if (error
|
566
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
567
567
|
GRPC_LOG_IF_ERROR("grpc_ares_init() failed", error);
|
568
568
|
return;
|
569
569
|
}
|
@@ -435,7 +435,7 @@ class GrpcPolledFdWindows {
|
|
435
435
|
GPR_ASSERT(!connect_done_);
|
436
436
|
connect_done_ = true;
|
437
437
|
GPR_ASSERT(wsa_connect_error_ == 0);
|
438
|
-
if (error
|
438
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
439
439
|
DWORD transferred_bytes = 0;
|
440
440
|
DWORD flags;
|
441
441
|
BOOL wsa_success =
|
@@ -579,7 +579,7 @@ class GrpcPolledFdWindows {
|
|
579
579
|
// the entire resolution attempt. Doing so will allow the "inject broken
|
580
580
|
// nameserver list" test to pass on Windows.
|
581
581
|
void OnIocpReadableLocked(grpc_error_handle error) {
|
582
|
-
if (error
|
582
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
583
583
|
if (winsocket_->read_info.wsa_error != 0) {
|
584
584
|
/* WSAEMSGSIZE would be due to receiving more data
|
585
585
|
* than our read buffer's fixed capacity. Assume that
|
@@ -596,7 +596,7 @@ class GrpcPolledFdWindows {
|
|
596
596
|
}
|
597
597
|
}
|
598
598
|
}
|
599
|
-
if (error
|
599
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
600
600
|
read_buf_ = grpc_slice_sub_no_ref(
|
601
601
|
read_buf_, 0, winsocket_->read_info.bytes_transferred);
|
602
602
|
read_buf_has_data_ = true;
|
@@ -620,7 +620,7 @@ class GrpcPolledFdWindows {
|
|
620
620
|
void OnIocpWriteableLocked(grpc_error_handle error) {
|
621
621
|
GRPC_CARES_TRACE_LOG("OnIocpWriteableInner. fd:|%s|", GetName());
|
622
622
|
GPR_ASSERT(socket_type_ == SOCK_STREAM);
|
623
|
-
if (error
|
623
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
624
624
|
if (winsocket_->write_info.wsa_error != 0) {
|
625
625
|
error = GRPC_WSA_ERROR(winsocket_->write_info.wsa_error,
|
626
626
|
"OnIocpWriteableInner");
|
@@ -632,7 +632,7 @@ class GrpcPolledFdWindows {
|
|
632
632
|
}
|
633
633
|
}
|
634
634
|
GPR_ASSERT(tcp_write_state_ == WRITE_PENDING);
|
635
|
-
if (error
|
635
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
636
636
|
tcp_write_state_ = WRITE_WAITING_FOR_VERIFICATION_UPON_RETRY;
|
637
637
|
write_buf_ = grpc_slice_sub_no_ref(
|
638
638
|
write_buf_, 0, winsocket_->write_info.bytes_transferred);
|
@@ -18,6 +18,11 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
+
#include <algorithm>
|
22
|
+
#include <vector>
|
23
|
+
|
24
|
+
#include "src/core/lib/iomgr/sockaddr.h"
|
25
|
+
|
21
26
|
// IWYU pragma: no_include <arpa/nameser.h>
|
22
27
|
// IWYU pragma: no_include <inttypes.h>
|
23
28
|
// IWYU pragma: no_include <netdb.h>
|
@@ -289,7 +294,7 @@ static void on_timeout(void* arg, grpc_error_handle error) {
|
|
289
294
|
"err=%s",
|
290
295
|
driver->request, driver, driver->shutting_down,
|
291
296
|
grpc_error_std_string(error).c_str());
|
292
|
-
if (!driver->shutting_down && error
|
297
|
+
if (!driver->shutting_down && GRPC_ERROR_IS_NONE(error)) {
|
293
298
|
grpc_ares_ev_driver_shutdown_locked(driver);
|
294
299
|
}
|
295
300
|
grpc_ares_ev_driver_unref(driver);
|
@@ -315,7 +320,7 @@ static void on_ares_backup_poll_alarm(void* arg, grpc_error_handle error) {
|
|
315
320
|
"err=%s",
|
316
321
|
driver->request, driver, driver->shutting_down,
|
317
322
|
grpc_error_std_string(error).c_str());
|
318
|
-
if (!driver->shutting_down && error
|
323
|
+
if (!driver->shutting_down && GRPC_ERROR_IS_NONE(error)) {
|
319
324
|
fd_node* fdn = driver->fds;
|
320
325
|
while (fdn != nullptr) {
|
321
326
|
if (!fdn->already_shutdown) {
|
@@ -357,7 +362,7 @@ static void on_readable(void* arg, grpc_error_handle error) {
|
|
357
362
|
fdn->readable_registered = false;
|
358
363
|
GRPC_CARES_TRACE_LOG("request:%p readable on %s", fdn->ev_driver->request,
|
359
364
|
fdn->grpc_polled_fd->GetName());
|
360
|
-
if (error
|
365
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
361
366
|
do {
|
362
367
|
ares_process_fd(ev_driver->channel, as, ARES_SOCKET_BAD);
|
363
368
|
} while (fdn->grpc_polled_fd->IsFdStillReadableLocked());
|
@@ -383,7 +388,7 @@ static void on_writable(void* arg, grpc_error_handle error) {
|
|
383
388
|
fdn->writable_registered = false;
|
384
389
|
GRPC_CARES_TRACE_LOG("request:%p writable on %s", ev_driver->request,
|
385
390
|
fdn->grpc_polled_fd->GetName());
|
386
|
-
if (error
|
391
|
+
if (GRPC_ERROR_IS_NONE(error)) {
|
387
392
|
ares_process_fd(ev_driver->channel, ARES_SOCKET_BAD, as);
|
388
393
|
} else {
|
389
394
|
// If error is not GRPC_ERROR_NONE, it means the fd has been shutdown or
|
@@ -848,7 +853,7 @@ void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
|
|
848
853
|
}
|
849
854
|
error = grpc_ares_ev_driver_create_locked(&r->ev_driver, interested_parties,
|
850
855
|
query_timeout_ms, r);
|
851
|
-
if (error
|
856
|
+
if (!GRPC_ERROR_IS_NONE(error)) goto error_cleanup;
|
852
857
|
// If dns_server is specified, use it.
|
853
858
|
if (dns_server != nullptr && dns_server[0] != '\0') {
|
854
859
|
GRPC_CARES_TRACE_LOG("request:%p Using DNS server %s", r, dns_server);
|
@@ -18,12 +18,12 @@
|
|
18
18
|
|
19
19
|
#include <limits.h>
|
20
20
|
|
21
|
+
#include <algorithm>
|
21
22
|
#include <memory>
|
22
23
|
#include <string>
|
23
24
|
#include <utility>
|
24
25
|
#include <vector>
|
25
26
|
|
26
|
-
#include "absl/container/inlined_vector.h"
|
27
27
|
#include "absl/functional/bind_front.h"
|
28
28
|
#include "absl/memory/memory.h"
|
29
29
|
#include "absl/status/status.h"
|
@@ -76,6 +76,16 @@ class NativeClientChannelDNSResolver : public PollingResolver {
|
|
76
76
|
OrphanablePtr<Orphanable> StartRequest() override;
|
77
77
|
|
78
78
|
private:
|
79
|
+
// No-op request class, used so that the PollingResolver code knows
|
80
|
+
// when there is a request in flight, even if the request is not
|
81
|
+
// actually cancellable.
|
82
|
+
class Request : public Orphanable {
|
83
|
+
public:
|
84
|
+
Request() = default;
|
85
|
+
|
86
|
+
void Orphan() override {}
|
87
|
+
};
|
88
|
+
|
79
89
|
void OnResolved(
|
80
90
|
absl::StatusOr<std::vector<grpc_resolved_address>> addresses_or);
|
81
91
|
};
|
@@ -115,8 +125,7 @@ OrphanablePtr<Orphanable> NativeClientChannelDNSResolver::StartRequest() {
|
|
115
125
|
gpr_log(GPR_DEBUG, "[dns_resolver=%p] starting request=%p", this,
|
116
126
|
DNSResolver::HandleToString(dns_request_handle).c_str());
|
117
127
|
}
|
118
|
-
|
119
|
-
return nullptr;
|
128
|
+
return MakeOrphanable<Request>();
|
120
129
|
}
|
121
130
|
|
122
131
|
void NativeClientChannelDNSResolver::OnResolved(
|
@@ -151,14 +151,14 @@ void FakeResolver::MaybeSendResultLocked() {
|
|
151
151
|
result_handler_->ReportResult(std::move(result));
|
152
152
|
return_failure_ = false;
|
153
153
|
} else if (has_next_result_) {
|
154
|
-
Result result;
|
155
|
-
result.addresses = std::move(next_result_.addresses);
|
156
|
-
result.service_config = std::move(next_result_.service_config);
|
157
154
|
// When both next_results_ and channel_args_ contain an arg with the same
|
158
155
|
// name, only the one in next_results_ will be kept since next_results_ is
|
159
156
|
// before channel_args_.
|
160
|
-
|
161
|
-
|
157
|
+
grpc_channel_args* new_args =
|
158
|
+
grpc_channel_args_union(next_result_.args, channel_args_);
|
159
|
+
grpc_channel_args_destroy(next_result_.args);
|
160
|
+
next_result_.args = new_args;
|
161
|
+
result_handler_->ReportResult(std::move(next_result_));
|
162
162
|
has_next_result_ = false;
|
163
163
|
}
|
164
164
|
}
|
@@ -23,7 +23,6 @@
|
|
23
23
|
#include <memory>
|
24
24
|
#include <random>
|
25
25
|
#include <string>
|
26
|
-
#include <type_traits>
|
27
26
|
#include <utility>
|
28
27
|
|
29
28
|
#include "absl/memory/memory.h"
|
@@ -216,7 +215,7 @@ void GoogleCloud2ProdResolver::ZoneQuery::OnDone(
|
|
216
215
|
GoogleCloud2ProdResolver* resolver, const grpc_http_response* response,
|
217
216
|
grpc_error_handle error) {
|
218
217
|
absl::StatusOr<std::string> zone;
|
219
|
-
if (error
|
218
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
220
219
|
zone = absl::UnknownError(
|
221
220
|
absl::StrCat("error fetching zone from metadata server: ",
|
222
221
|
grpc_error_std_string(error)));
|
@@ -257,11 +256,11 @@ GoogleCloud2ProdResolver::IPv6Query::IPv6Query(
|
|
257
256
|
void GoogleCloud2ProdResolver::IPv6Query::OnDone(
|
258
257
|
GoogleCloud2ProdResolver* resolver, const grpc_http_response* response,
|
259
258
|
grpc_error_handle error) {
|
260
|
-
if (error
|
259
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
261
260
|
gpr_log(GPR_ERROR, "error fetching IPv6 address from metadata server: %s",
|
262
261
|
grpc_error_std_string(error).c_str());
|
263
262
|
}
|
264
|
-
resolver->IPv6QueryDone(error
|
263
|
+
resolver->IPv6QueryDone(GRPC_ERROR_IS_NONE(error) && response->status == 200);
|
265
264
|
GRPC_ERROR_UNREF(error);
|
266
265
|
}
|
267
266
|
|
@@ -107,7 +107,7 @@ void PollingResolver::OnNextResolutionLocked(grpc_error_handle error) {
|
|
107
107
|
this, grpc_error_std_string(error).c_str(), shutdown_);
|
108
108
|
}
|
109
109
|
have_next_resolution_timer_ = false;
|
110
|
-
if (error
|
110
|
+
if (GRPC_ERROR_IS_NONE(error) && !shutdown_) {
|
111
111
|
StartResolvingLocked();
|
112
112
|
}
|
113
113
|
Unref(DEBUG_LOCATION, "retry-timer");
|
@@ -28,7 +28,6 @@
|
|
28
28
|
#include <utility>
|
29
29
|
#include <vector>
|
30
30
|
|
31
|
-
#include "absl/container/inlined_vector.h"
|
32
31
|
#include "absl/memory/memory.h"
|
33
32
|
#include "absl/meta/type_traits.h"
|
34
33
|
#include "absl/random/random.h"
|
@@ -45,6 +44,8 @@
|
|
45
44
|
#include "absl/types/variant.h"
|
46
45
|
#include "re2/re2.h"
|
47
46
|
|
47
|
+
#include "src/core/lib/gprpp/unique_type_name.h"
|
48
|
+
|
48
49
|
#define XXH_INLINE_ALL
|
49
50
|
#include "xxhash.h"
|
50
51
|
|
@@ -63,7 +64,7 @@
|
|
63
64
|
#include "src/core/ext/xds/xds_route_config.h"
|
64
65
|
#include "src/core/ext/xds/xds_routing.h"
|
65
66
|
#include "src/core/lib/channel/channel_args.h"
|
66
|
-
#include "src/core/lib/channel/
|
67
|
+
#include "src/core/lib/channel/channel_fwd.h"
|
67
68
|
#include "src/core/lib/channel/status_util.h"
|
68
69
|
#include "src/core/lib/config/core_configuration.h"
|
69
70
|
#include "src/core/lib/debug/trace.h"
|
@@ -94,7 +95,10 @@ namespace grpc_core {
|
|
94
95
|
|
95
96
|
TraceFlag grpc_xds_resolver_trace(false, "xds_resolver");
|
96
97
|
|
97
|
-
|
98
|
+
UniqueTypeName XdsClusterAttributeTypeName() {
|
99
|
+
static UniqueTypeName::Factory kFactory("xds_cluster_name");
|
100
|
+
return kFactory.Create();
|
101
|
+
}
|
98
102
|
|
99
103
|
namespace {
|
100
104
|
|
@@ -182,7 +186,9 @@ class XdsResolver : public Resolver {
|
|
182
186
|
Ref().release(); // ref held by lambda
|
183
187
|
resolver_->work_serializer_->Run(
|
184
188
|
[this]() {
|
185
|
-
resolver_->OnResourceDoesNotExist(
|
189
|
+
resolver_->OnResourceDoesNotExist(
|
190
|
+
absl::StrCat(resolver_->lds_resource_name_,
|
191
|
+
": xDS listener resource does not exist"));
|
186
192
|
Unref();
|
187
193
|
},
|
188
194
|
DEBUG_LOCATION);
|
@@ -221,7 +227,9 @@ class XdsResolver : public Resolver {
|
|
221
227
|
Ref().release(); // ref held by lambda
|
222
228
|
resolver_->work_serializer_->Run(
|
223
229
|
[this]() {
|
224
|
-
resolver_->OnResourceDoesNotExist(
|
230
|
+
resolver_->OnResourceDoesNotExist(absl::StrCat(
|
231
|
+
resolver_->route_config_name_,
|
232
|
+
": xDS route configuration resource does not exist"));
|
225
233
|
Unref();
|
226
234
|
},
|
227
235
|
DEBUG_LOCATION);
|
@@ -328,7 +336,7 @@ class XdsResolver : public Resolver {
|
|
328
336
|
|
329
337
|
XdsRouteConfigResource::Route route;
|
330
338
|
RefCountedPtr<ServiceConfig> method_config;
|
331
|
-
|
339
|
+
std::vector<ClusterWeightState> weighted_cluster_state;
|
332
340
|
|
333
341
|
bool operator==(const Route& other) const;
|
334
342
|
};
|
@@ -352,7 +360,7 @@ class XdsResolver : public Resolver {
|
|
352
360
|
void OnListenerUpdate(XdsListenerResource listener);
|
353
361
|
void OnRouteConfigUpdate(XdsRouteConfigResource rds_update);
|
354
362
|
void OnError(absl::string_view context, absl::Status status);
|
355
|
-
void OnResourceDoesNotExist();
|
363
|
+
void OnResourceDoesNotExist(std::string context);
|
356
364
|
|
357
365
|
absl::StatusOr<RefCountedPtr<ServiceConfig>> CreateServiceConfig();
|
358
366
|
void GenerateResult();
|
@@ -487,7 +495,7 @@ XdsResolver::XdsConfigSelector::XdsConfigSelector(
|
|
487
495
|
Route::ClusterWeightState cluster_weight_state;
|
488
496
|
*error = CreateMethodConfig(route_entry.route, &weighted_cluster,
|
489
497
|
&cluster_weight_state.method_config);
|
490
|
-
if (*error
|
498
|
+
if (!GRPC_ERROR_IS_NONE(*error)) return;
|
491
499
|
end += weighted_cluster.weight;
|
492
500
|
cluster_weight_state.range_end = end;
|
493
501
|
cluster_weight_state.cluster = weighted_cluster.name;
|
@@ -591,7 +599,7 @@ grpc_error_handle XdsResolver::XdsConfigSelector::CreateMethodConfig(
|
|
591
599
|
resolver_->current_listener_.http_connection_manager.http_filters,
|
592
600
|
resolver_->current_virtual_host_, route, cluster_weight,
|
593
601
|
grpc_channel_args_copy(resolver_->args_));
|
594
|
-
if (result.error
|
602
|
+
if (!GRPC_ERROR_IS_NONE(result.error)) {
|
595
603
|
return result.error;
|
596
604
|
}
|
597
605
|
for (const auto& p : result.per_filter_configs) {
|
@@ -764,13 +772,13 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
764
772
|
method_config->GetMethodParsedConfigVector(grpc_empty_slice());
|
765
773
|
call_config.service_config = std::move(method_config);
|
766
774
|
}
|
767
|
-
call_config.call_attributes[
|
775
|
+
call_config.call_attributes[XdsClusterAttributeTypeName()] = it->first;
|
768
776
|
std::string hash_string = absl::StrCat(hash.value());
|
769
777
|
char* hash_value =
|
770
778
|
static_cast<char*>(args.arena->Alloc(hash_string.size() + 1));
|
771
779
|
memcpy(hash_value, hash_string.c_str(), hash_string.size());
|
772
780
|
hash_value[hash_string.size()] = '\0';
|
773
|
-
call_config.call_attributes[
|
781
|
+
call_config.call_attributes[RequestHashAttributeName()] = hash_value;
|
774
782
|
call_config.call_dispatch_controller =
|
775
783
|
args.arena->New<XdsCallDispatchController>(it->second->Ref());
|
776
784
|
return call_config;
|
@@ -783,7 +791,7 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
|
|
783
791
|
void XdsResolver::StartLocked() {
|
784
792
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
785
793
|
xds_client_ = XdsClient::GetOrCreate(args_, &error);
|
786
|
-
if (error
|
794
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
787
795
|
gpr_log(GPR_ERROR,
|
788
796
|
"Failed to create xds client -- channel will remain in "
|
789
797
|
"TRANSIENT_FAILURE: %s",
|
@@ -972,7 +980,7 @@ void XdsResolver::OnError(absl::string_view context, absl::Status status) {
|
|
972
980
|
result_handler_->ReportResult(std::move(result));
|
973
981
|
}
|
974
982
|
|
975
|
-
void XdsResolver::OnResourceDoesNotExist() {
|
983
|
+
void XdsResolver::OnResourceDoesNotExist(std::string context) {
|
976
984
|
gpr_log(GPR_ERROR,
|
977
985
|
"[xds_resolver %p] LDS/RDS resource does not exist -- clearing "
|
978
986
|
"update and returning empty service config",
|
@@ -986,6 +994,7 @@ void XdsResolver::OnResourceDoesNotExist() {
|
|
986
994
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
987
995
|
result.service_config = ServiceConfigImpl::Create(args_, "{}", &error);
|
988
996
|
GPR_ASSERT(*result.service_config != nullptr);
|
997
|
+
result.resolution_note = std::move(context);
|
989
998
|
result.args = grpc_channel_args_copy(args_);
|
990
999
|
result_handler_->ReportResult(std::move(result));
|
991
1000
|
}
|
@@ -1031,7 +1040,7 @@ XdsResolver::CreateServiceConfig() {
|
|
1031
1040
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
1032
1041
|
absl::StatusOr<RefCountedPtr<ServiceConfig>> result =
|
1033
1042
|
ServiceConfigImpl::Create(args_, json.c_str(), &error);
|
1034
|
-
if (error
|
1043
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
1035
1044
|
result = grpc_error_to_absl_status(error);
|
1036
1045
|
GRPC_ERROR_UNREF(error);
|
1037
1046
|
}
|
@@ -1044,7 +1053,7 @@ void XdsResolver::GenerateResult() {
|
|
1044
1053
|
// state map, and then CreateServiceConfig for LB policies.
|
1045
1054
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
1046
1055
|
auto config_selector = MakeRefCounted<XdsConfigSelector>(Ref(), &error);
|
1047
|
-
if (error
|
1056
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
1048
1057
|
OnError("could not create ConfigSelector",
|
1049
1058
|
absl::UnavailableError(grpc_error_std_string(error)));
|
1050
1059
|
GRPC_ERROR_UNREF(error);
|
@@ -19,9 +19,11 @@
|
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
|
+
#include "src/core/lib/gprpp/unique_type_name.h"
|
23
|
+
|
22
24
|
namespace grpc_core {
|
23
25
|
|
24
|
-
|
26
|
+
UniqueTypeName XdsClusterAttributeTypeName();
|
25
27
|
|
26
28
|
} // namespace grpc_core
|
27
29
|
|