grpc 1.47.0-x86_64-linux → 1.48.0.pre1-x86_64-linux
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/2.5/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/grpc_c.so +0 -0
- 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
@@ -1,20 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2015 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
18
16
|
|
19
17
|
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
|
20
18
|
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
|
@@ -27,8 +25,10 @@
|
|
27
25
|
#include <memory>
|
28
26
|
#include <string>
|
29
27
|
#include <utility>
|
28
|
+
#include <vector>
|
30
29
|
|
31
|
-
#include "absl/
|
30
|
+
#include "absl/status/status.h"
|
31
|
+
#include "absl/types/optional.h"
|
32
32
|
|
33
33
|
#include <grpc/impl/codegen/connectivity_state.h>
|
34
34
|
#include <grpc/impl/codegen/grpc_types.h>
|
@@ -55,7 +55,8 @@ class MySubchannelData
|
|
55
55
|
: public SubchannelData<MySubchannelList, MySubchannelData> {
|
56
56
|
public:
|
57
57
|
void ProcessConnectivityChangeLocked(
|
58
|
-
grpc_connectivity_state
|
58
|
+
absl::optional<grpc_connectivity_state> old_state,
|
59
|
+
grpc_connectivity_state new_state) override {
|
59
60
|
// ...code to handle connectivity changes...
|
60
61
|
}
|
61
62
|
};
|
@@ -93,29 +94,15 @@ class SubchannelData {
|
|
93
94
|
// Returns a pointer to the subchannel.
|
94
95
|
SubchannelInterface* subchannel() const { return subchannel_.get(); }
|
95
96
|
|
96
|
-
//
|
97
|
-
|
98
|
-
// pending (i.e., between calling StartConnectivityWatchLocked() and
|
99
|
-
// calling CancelConnectivityWatchLocked()).
|
100
|
-
grpc_connectivity_state CheckConnectivityStateLocked() {
|
101
|
-
GPR_ASSERT(pending_watcher_ == nullptr);
|
102
|
-
connectivity_state_ = subchannel_->CheckConnectivityState();
|
97
|
+
// Returns the cached connectivity state, if any.
|
98
|
+
absl::optional<grpc_connectivity_state> connectivity_state() {
|
103
99
|
return connectivity_state_;
|
104
100
|
}
|
101
|
+
absl::Status connectivity_status() { return connectivity_status_; }
|
105
102
|
|
106
103
|
// Resets the connection backoff.
|
107
|
-
// TODO(roth): This method should go away when we move the backoff
|
108
|
-
// code out of the subchannel and into the LB policies.
|
109
104
|
void ResetBackoffLocked();
|
110
105
|
|
111
|
-
// Starts watching the connectivity state of the subchannel.
|
112
|
-
// ProcessConnectivityChangeLocked() will be called whenever the
|
113
|
-
// connectivity state changes.
|
114
|
-
void StartConnectivityWatchLocked();
|
115
|
-
|
116
|
-
// Cancels watching the connectivity state of the subchannel.
|
117
|
-
void CancelConnectivityWatchLocked(const char* reason);
|
118
|
-
|
119
106
|
// Cancels any pending connectivity watch and unrefs the subchannel.
|
120
107
|
void ShutdownLocked();
|
121
108
|
|
@@ -127,13 +114,17 @@ class SubchannelData {
|
|
127
114
|
|
128
115
|
virtual ~SubchannelData();
|
129
116
|
|
130
|
-
//
|
131
|
-
//
|
132
|
-
//
|
117
|
+
// This method will be invoked once soon after instantiation to report
|
118
|
+
// the current connectivity state, and it will then be invoked again
|
119
|
+
// whenever the connectivity state changes.
|
133
120
|
virtual void ProcessConnectivityChangeLocked(
|
134
|
-
grpc_connectivity_state
|
121
|
+
absl::optional<grpc_connectivity_state> old_state,
|
122
|
+
grpc_connectivity_state new_state) = 0;
|
135
123
|
|
136
124
|
private:
|
125
|
+
// For accessing StartConnectivityWatchLocked().
|
126
|
+
friend class SubchannelList<SubchannelListType, SubchannelDataType>;
|
127
|
+
|
137
128
|
// Watcher for subchannel connectivity state.
|
138
129
|
class Watcher
|
139
130
|
: public SubchannelInterface::ConnectivityStateWatcherInterface {
|
@@ -148,7 +139,8 @@ class SubchannelData {
|
|
148
139
|
subchannel_list_.reset(DEBUG_LOCATION, "Watcher dtor");
|
149
140
|
}
|
150
141
|
|
151
|
-
void OnConnectivityStateChange(grpc_connectivity_state new_state
|
142
|
+
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
143
|
+
absl::Status status) override;
|
152
144
|
|
153
145
|
grpc_pollset_set* interested_parties() override {
|
154
146
|
return subchannel_list_->policy()->interested_parties();
|
@@ -159,6 +151,14 @@ class SubchannelData {
|
|
159
151
|
RefCountedPtr<SubchannelListType> subchannel_list_;
|
160
152
|
};
|
161
153
|
|
154
|
+
// Starts watching the connectivity state of the subchannel.
|
155
|
+
// ProcessConnectivityChangeLocked() will be called whenever the
|
156
|
+
// connectivity state changes.
|
157
|
+
void StartConnectivityWatchLocked();
|
158
|
+
|
159
|
+
// Cancels watching the connectivity state of the subchannel.
|
160
|
+
void CancelConnectivityWatchLocked(const char* reason);
|
161
|
+
|
162
162
|
// Unrefs the subchannel.
|
163
163
|
void UnrefSubchannelLocked(const char* reason);
|
164
164
|
|
@@ -170,7 +170,8 @@ class SubchannelData {
|
|
170
170
|
SubchannelInterface::ConnectivityStateWatcherInterface* pending_watcher_ =
|
171
171
|
nullptr;
|
172
172
|
// Data updated by the watcher.
|
173
|
-
grpc_connectivity_state connectivity_state_;
|
173
|
+
absl::optional<grpc_connectivity_state> connectivity_state_;
|
174
|
+
absl::Status connectivity_status_;
|
174
175
|
};
|
175
176
|
|
176
177
|
// A list of subchannels.
|
@@ -179,8 +180,7 @@ class SubchannelList : public InternallyRefCounted<SubchannelListType> {
|
|
179
180
|
public:
|
180
181
|
// We use ManualConstructor here to support SubchannelDataType classes
|
181
182
|
// that are not copyable.
|
182
|
-
|
183
|
-
SubchannelVector;
|
183
|
+
using SubchannelVector = std::vector<ManualConstructor<SubchannelDataType>>;
|
184
184
|
|
185
185
|
// The number of subchannels in the list.
|
186
186
|
size_t num_subchannels() const { return subchannels_.size(); }
|
@@ -198,8 +198,6 @@ class SubchannelList : public InternallyRefCounted<SubchannelListType> {
|
|
198
198
|
const char* tracer() const { return tracer_; }
|
199
199
|
|
200
200
|
// Resets connection backoff of all subchannels.
|
201
|
-
// TODO(roth): We will probably need to rethink this as part of moving
|
202
|
-
// the backoff code out of subchannels and into LB policies.
|
203
201
|
void ResetBackoffLocked();
|
204
202
|
|
205
203
|
void Orphan() override {
|
@@ -215,12 +213,12 @@ class SubchannelList : public InternallyRefCounted<SubchannelListType> {
|
|
215
213
|
|
216
214
|
virtual ~SubchannelList();
|
217
215
|
|
216
|
+
virtual void ShutdownLocked();
|
217
|
+
|
218
218
|
private:
|
219
219
|
// For accessing Ref() and Unref().
|
220
220
|
friend class SubchannelData<SubchannelListType, SubchannelDataType>;
|
221
221
|
|
222
|
-
void ShutdownLocked();
|
223
|
-
|
224
222
|
// Backpointer to owning policy.
|
225
223
|
LoadBalancingPolicy* policy_;
|
226
224
|
|
@@ -245,24 +243,32 @@ class SubchannelList : public InternallyRefCounted<SubchannelListType> {
|
|
245
243
|
|
246
244
|
template <typename SubchannelListType, typename SubchannelDataType>
|
247
245
|
void SubchannelData<SubchannelListType, SubchannelDataType>::Watcher::
|
248
|
-
OnConnectivityStateChange(grpc_connectivity_state new_state
|
246
|
+
OnConnectivityStateChange(grpc_connectivity_state new_state,
|
247
|
+
absl::Status status) {
|
249
248
|
if (GPR_UNLIKELY(subchannel_list_->tracer() != nullptr)) {
|
250
|
-
gpr_log(
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
249
|
+
gpr_log(
|
250
|
+
GPR_INFO,
|
251
|
+
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
252
|
+
" (subchannel %p): connectivity changed: old_state=%s, new_state=%s, "
|
253
|
+
"status=%s, shutting_down=%d, pending_watcher=%p",
|
254
|
+
subchannel_list_->tracer(), subchannel_list_->policy(),
|
255
|
+
subchannel_list_.get(), subchannel_data_->Index(),
|
256
|
+
subchannel_list_->num_subchannels(),
|
257
|
+
subchannel_data_->subchannel_.get(),
|
258
|
+
(subchannel_data_->connectivity_state_.has_value()
|
259
|
+
? ConnectivityStateName(*subchannel_data_->connectivity_state_)
|
260
|
+
: "N/A"),
|
261
|
+
ConnectivityStateName(new_state), status.ToString().c_str(),
|
262
|
+
subchannel_list_->shutting_down(), subchannel_data_->pending_watcher_);
|
260
263
|
}
|
261
264
|
if (!subchannel_list_->shutting_down() &&
|
262
265
|
subchannel_data_->pending_watcher_ != nullptr) {
|
266
|
+
absl::optional<grpc_connectivity_state> old_state =
|
267
|
+
subchannel_data_->connectivity_state_;
|
263
268
|
subchannel_data_->connectivity_state_ = new_state;
|
269
|
+
subchannel_data_->connectivity_status_ = status;
|
264
270
|
// Call the subclass's ProcessConnectivityChangeLocked() method.
|
265
|
-
subchannel_data_->ProcessConnectivityChangeLocked(new_state);
|
271
|
+
subchannel_data_->ProcessConnectivityChangeLocked(old_state, new_state);
|
266
272
|
}
|
267
273
|
}
|
268
274
|
|
@@ -275,11 +281,7 @@ SubchannelData<SubchannelListType, SubchannelDataType>::SubchannelData(
|
|
275
281
|
SubchannelList<SubchannelListType, SubchannelDataType>* subchannel_list,
|
276
282
|
const ServerAddress& /*address*/,
|
277
283
|
RefCountedPtr<SubchannelInterface> subchannel)
|
278
|
-
: subchannel_list_(subchannel_list),
|
279
|
-
subchannel_(std::move(subchannel)),
|
280
|
-
// We assume that the current state is IDLE. If not, we'll get a
|
281
|
-
// callback telling us that.
|
282
|
-
connectivity_state_(GRPC_CHANNEL_IDLE) {}
|
284
|
+
: subchannel_list_(subchannel_list), subchannel_(std::move(subchannel)) {}
|
283
285
|
|
284
286
|
template <typename SubchannelListType, typename SubchannelDataType>
|
285
287
|
SubchannelData<SubchannelListType, SubchannelDataType>::~SubchannelData() {
|
@@ -316,16 +318,15 @@ void SubchannelData<SubchannelListType,
|
|
316
318
|
if (GPR_UNLIKELY(subchannel_list_->tracer() != nullptr)) {
|
317
319
|
gpr_log(GPR_INFO,
|
318
320
|
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
319
|
-
" (subchannel %p): starting watch
|
321
|
+
" (subchannel %p): starting watch",
|
320
322
|
subchannel_list_->tracer(), subchannel_list_->policy(),
|
321
323
|
subchannel_list_, Index(), subchannel_list_->num_subchannels(),
|
322
|
-
subchannel_.get()
|
324
|
+
subchannel_.get());
|
323
325
|
}
|
324
326
|
GPR_ASSERT(pending_watcher_ == nullptr);
|
325
327
|
pending_watcher_ =
|
326
328
|
new Watcher(this, subchannel_list()->Ref(DEBUG_LOCATION, "Watcher"));
|
327
329
|
subchannel_->WatchConnectivityState(
|
328
|
-
connectivity_state_,
|
329
330
|
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>(
|
330
331
|
pending_watcher_));
|
331
332
|
}
|
@@ -333,15 +334,15 @@ void SubchannelData<SubchannelListType,
|
|
333
334
|
template <typename SubchannelListType, typename SubchannelDataType>
|
334
335
|
void SubchannelData<SubchannelListType, SubchannelDataType>::
|
335
336
|
CancelConnectivityWatchLocked(const char* reason) {
|
336
|
-
if (GPR_UNLIKELY(subchannel_list_->tracer() != nullptr)) {
|
337
|
-
gpr_log(GPR_INFO,
|
338
|
-
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
339
|
-
" (subchannel %p): canceling connectivity watch (%s)",
|
340
|
-
subchannel_list_->tracer(), subchannel_list_->policy(),
|
341
|
-
subchannel_list_, Index(), subchannel_list_->num_subchannels(),
|
342
|
-
subchannel_.get(), reason);
|
343
|
-
}
|
344
337
|
if (pending_watcher_ != nullptr) {
|
338
|
+
if (GPR_UNLIKELY(subchannel_list_->tracer() != nullptr)) {
|
339
|
+
gpr_log(GPR_INFO,
|
340
|
+
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
341
|
+
" (subchannel %p): canceling connectivity watch (%s)",
|
342
|
+
subchannel_list_->tracer(), subchannel_list_->policy(),
|
343
|
+
subchannel_list_, Index(), subchannel_list_->num_subchannels(),
|
344
|
+
subchannel_.get(), reason);
|
345
|
+
}
|
345
346
|
subchannel_->CancelConnectivityStateWatch(pending_watcher_);
|
346
347
|
pending_watcher_ = nullptr;
|
347
348
|
}
|
@@ -349,7 +350,7 @@ void SubchannelData<SubchannelListType, SubchannelDataType>::
|
|
349
350
|
|
350
351
|
template <typename SubchannelListType, typename SubchannelDataType>
|
351
352
|
void SubchannelData<SubchannelListType, SubchannelDataType>::ShutdownLocked() {
|
352
|
-
|
353
|
+
CancelConnectivityWatchLocked("shutdown");
|
353
354
|
UnrefSubchannelLocked("shutdown");
|
354
355
|
}
|
355
356
|
|
@@ -395,6 +396,10 @@ SubchannelList<SubchannelListType, SubchannelDataType>::SubchannelList(
|
|
395
396
|
subchannels_.emplace_back();
|
396
397
|
subchannels_.back().Init(this, std::move(address), std::move(subchannel));
|
397
398
|
}
|
399
|
+
// Start watching subchannel connectivity state.
|
400
|
+
for (auto& sd : subchannels_) {
|
401
|
+
sd->StartConnectivityWatchLocked();
|
402
|
+
}
|
398
403
|
}
|
399
404
|
|
400
405
|
template <typename SubchannelListType, typename SubchannelDataType>
|
@@ -431,4 +436,4 @@ void SubchannelList<SubchannelListType,
|
|
431
436
|
|
432
437
|
} // namespace grpc_core
|
433
438
|
|
434
|
-
#endif
|
439
|
+
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
|
@@ -26,13 +26,14 @@
|
|
26
26
|
#include <utility>
|
27
27
|
#include <vector>
|
28
28
|
|
29
|
-
#include "absl/container/inlined_vector.h"
|
30
29
|
#include "absl/memory/memory.h"
|
31
30
|
#include "absl/status/status.h"
|
32
31
|
#include "absl/status/statusor.h"
|
33
32
|
#include "absl/strings/str_cat.h"
|
34
33
|
#include "absl/strings/string_view.h"
|
34
|
+
#include "absl/types/optional.h"
|
35
35
|
|
36
|
+
#include <grpc/event_engine/event_engine.h>
|
36
37
|
#include <grpc/impl/codegen/connectivity_state.h>
|
37
38
|
#include <grpc/impl/codegen/grpc_types.h>
|
38
39
|
#include <grpc/support/log.h>
|
@@ -45,17 +46,15 @@
|
|
45
46
|
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
46
47
|
#include "src/core/lib/channel/channel_args.h"
|
47
48
|
#include "src/core/lib/debug/trace.h"
|
49
|
+
#include "src/core/lib/event_engine/event_engine_factory.h"
|
48
50
|
#include "src/core/lib/gpr/string.h"
|
49
51
|
#include "src/core/lib/gprpp/debug_location.h"
|
50
52
|
#include "src/core/lib/gprpp/orphanable.h"
|
51
53
|
#include "src/core/lib/gprpp/ref_counted.h"
|
52
54
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
53
55
|
#include "src/core/lib/gprpp/time.h"
|
54
|
-
#include "src/core/lib/iomgr/closure.h"
|
55
56
|
#include "src/core/lib/iomgr/error.h"
|
56
|
-
#include "src/core/lib/iomgr/exec_ctx.h"
|
57
57
|
#include "src/core/lib/iomgr/pollset_set.h"
|
58
|
-
#include "src/core/lib/iomgr/timer.h"
|
59
58
|
#include "src/core/lib/iomgr/work_serializer.h"
|
60
59
|
#include "src/core/lib/json/json.h"
|
61
60
|
#include "src/core/lib/resolver/server_address.h"
|
@@ -69,6 +68,9 @@ TraceFlag grpc_lb_weighted_target_trace(false, "weighted_target_lb");
|
|
69
68
|
|
70
69
|
namespace {
|
71
70
|
|
71
|
+
using ::grpc_event_engine::experimental::EventEngine;
|
72
|
+
using ::grpc_event_engine::experimental::GetDefaultEventEngine;
|
73
|
+
|
72
74
|
constexpr char kWeightedTarget[] = "weighted_target_experimental";
|
73
75
|
|
74
76
|
// How long we keep a child around for after it has been removed from
|
@@ -126,8 +128,8 @@ class WeightedTargetLb : public LoadBalancingPolicy {
|
|
126
128
|
// ready state. The first element in the pair represents the end of a
|
127
129
|
// range proportional to the child's weight. The start of the range
|
128
130
|
// is the previous value in the vector and is 0 for the first element.
|
129
|
-
using PickerList =
|
130
|
-
std::pair<uint32_t, RefCountedPtr<ChildPickerWrapper
|
131
|
+
using PickerList =
|
132
|
+
std::vector<std::pair<uint32_t, RefCountedPtr<ChildPickerWrapper>>>;
|
131
133
|
|
132
134
|
explicit WeightedPicker(PickerList pickers)
|
133
135
|
: pickers_(std::move(pickers)) {}
|
@@ -191,13 +193,10 @@ class WeightedTargetLb : public LoadBalancingPolicy {
|
|
191
193
|
void Orphan() override;
|
192
194
|
|
193
195
|
private:
|
194
|
-
|
195
|
-
void OnTimerLocked(grpc_error_handle error);
|
196
|
+
void OnTimerLocked();
|
196
197
|
|
197
198
|
RefCountedPtr<WeightedChild> weighted_child_;
|
198
|
-
|
199
|
-
grpc_closure on_timer_;
|
200
|
-
bool timer_pending_ = true;
|
199
|
+
absl::optional<EventEngine::TaskHandle> timer_handle_;
|
201
200
|
};
|
202
201
|
|
203
202
|
// Methods for dealing with the child policy.
|
@@ -219,7 +218,6 @@ class WeightedTargetLb : public LoadBalancingPolicy {
|
|
219
218
|
|
220
219
|
RefCountedPtr<ChildPickerWrapper> picker_wrapper_;
|
221
220
|
grpc_connectivity_state connectivity_state_ = GRPC_CHANNEL_CONNECTING;
|
222
|
-
bool seen_failure_since_ready_ = false;
|
223
221
|
|
224
222
|
OrphanablePtr<DelayedRemovalTimer> delayed_removal_timer_;
|
225
223
|
};
|
@@ -339,6 +337,14 @@ void WeightedTargetLb::UpdateLocked(UpdateArgs args) {
|
|
339
337
|
target->UpdateLocked(config, std::move(addresses), args.args);
|
340
338
|
}
|
341
339
|
update_in_progress_ = false;
|
340
|
+
if (config_->target_map().empty()) {
|
341
|
+
absl::Status status = absl::UnavailableError(absl::StrCat(
|
342
|
+
"no children in weighted_target policy: ", args.resolution_note));
|
343
|
+
channel_control_helper()->UpdateState(
|
344
|
+
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
|
345
|
+
absl::make_unique<TransientFailurePicker>(status));
|
346
|
+
return;
|
347
|
+
}
|
342
348
|
UpdateStateLocked();
|
343
349
|
}
|
344
350
|
|
@@ -355,17 +361,19 @@ void WeightedTargetLb::UpdateStateLocked() {
|
|
355
361
|
"connectivity state",
|
356
362
|
this);
|
357
363
|
}
|
358
|
-
// Construct
|
359
|
-
// that are
|
360
|
-
//
|
361
|
-
//
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
364
|
+
// Construct lists of child pickers with associated weights, one for
|
365
|
+
// children that are in state READY and another for children that are
|
366
|
+
// in state TRANSIENT_FAILURE. Each child is represented by a portion of
|
367
|
+
// the range proportional to its weight, such that the total range is the
|
368
|
+
// sum of the weights of all children.
|
369
|
+
WeightedPicker::PickerList ready_picker_list;
|
370
|
+
uint32_t ready_end = 0;
|
371
|
+
WeightedPicker::PickerList tf_picker_list;
|
372
|
+
uint32_t tf_end = 0;
|
373
|
+
// Also count the number of children in CONNECTING and IDLE, to determine
|
374
|
+
// the aggregated state.
|
366
375
|
size_t num_connecting = 0;
|
367
376
|
size_t num_idle = 0;
|
368
|
-
size_t num_transient_failures = 0;
|
369
377
|
for (const auto& p : targets_) {
|
370
378
|
const std::string& child_name = p.first;
|
371
379
|
const WeightedChild* child = p.second.get();
|
@@ -383,8 +391,8 @@ void WeightedTargetLb::UpdateStateLocked() {
|
|
383
391
|
switch (child->connectivity_state()) {
|
384
392
|
case GRPC_CHANNEL_READY: {
|
385
393
|
GPR_ASSERT(child->weight() > 0);
|
386
|
-
|
387
|
-
|
394
|
+
ready_end += child->weight();
|
395
|
+
ready_picker_list.emplace_back(ready_end, child->picker_wrapper());
|
388
396
|
break;
|
389
397
|
}
|
390
398
|
case GRPC_CHANNEL_CONNECTING: {
|
@@ -396,7 +404,9 @@ void WeightedTargetLb::UpdateStateLocked() {
|
|
396
404
|
break;
|
397
405
|
}
|
398
406
|
case GRPC_CHANNEL_TRANSIENT_FAILURE: {
|
399
|
-
|
407
|
+
GPR_ASSERT(child->weight() > 0);
|
408
|
+
tf_end += child->weight();
|
409
|
+
tf_picker_list.emplace_back(tf_end, child->picker_wrapper());
|
400
410
|
break;
|
401
411
|
}
|
402
412
|
default:
|
@@ -405,7 +415,7 @@ void WeightedTargetLb::UpdateStateLocked() {
|
|
405
415
|
}
|
406
416
|
// Determine aggregated connectivity state.
|
407
417
|
grpc_connectivity_state connectivity_state;
|
408
|
-
if (!
|
418
|
+
if (!ready_picker_list.empty()) {
|
409
419
|
connectivity_state = GRPC_CHANNEL_READY;
|
410
420
|
} else if (num_connecting > 0) {
|
411
421
|
connectivity_state = GRPC_CHANNEL_CONNECTING;
|
@@ -422,7 +432,7 @@ void WeightedTargetLb::UpdateStateLocked() {
|
|
422
432
|
absl::Status status;
|
423
433
|
switch (connectivity_state) {
|
424
434
|
case GRPC_CHANNEL_READY:
|
425
|
-
picker = absl::make_unique<WeightedPicker>(std::move(
|
435
|
+
picker = absl::make_unique<WeightedPicker>(std::move(ready_picker_list));
|
426
436
|
break;
|
427
437
|
case GRPC_CHANNEL_CONNECTING:
|
428
438
|
case GRPC_CHANNEL_IDLE:
|
@@ -430,9 +440,7 @@ void WeightedTargetLb::UpdateStateLocked() {
|
|
430
440
|
absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker"));
|
431
441
|
break;
|
432
442
|
default:
|
433
|
-
|
434
|
-
"weighted_target: all children report state TRANSIENT_FAILURE");
|
435
|
-
picker = absl::make_unique<TransientFailurePicker>(status);
|
443
|
+
picker = absl::make_unique<WeightedPicker>(std::move(tf_picker_list));
|
436
444
|
}
|
437
445
|
channel_control_helper()->UpdateState(connectivity_state, status,
|
438
446
|
std::move(picker));
|
@@ -445,14 +453,16 @@ void WeightedTargetLb::UpdateStateLocked() {
|
|
445
453
|
WeightedTargetLb::WeightedChild::DelayedRemovalTimer::DelayedRemovalTimer(
|
446
454
|
RefCountedPtr<WeightedTargetLb::WeightedChild> weighted_child)
|
447
455
|
: weighted_child_(std::move(weighted_child)) {
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
456
|
+
timer_handle_ = GetDefaultEventEngine()->RunAfter(
|
457
|
+
kChildRetentionInterval, [self = Ref()]() mutable {
|
458
|
+
self->weighted_child_->weighted_target_policy_->work_serializer()->Run(
|
459
|
+
[self = std::move(self)] { self->OnTimerLocked(); },
|
460
|
+
DEBUG_LOCATION);
|
461
|
+
});
|
452
462
|
}
|
453
463
|
|
454
464
|
void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::Orphan() {
|
455
|
-
if (
|
465
|
+
if (timer_handle_.has_value()) {
|
456
466
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_weighted_target_trace)) {
|
457
467
|
gpr_log(GPR_INFO,
|
458
468
|
"[weighted_target_lb %p] WeightedChild %p %s: cancelling "
|
@@ -460,29 +470,16 @@ void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::Orphan() {
|
|
460
470
|
weighted_child_->weighted_target_policy_.get(),
|
461
471
|
weighted_child_.get(), weighted_child_->name_.c_str());
|
462
472
|
}
|
463
|
-
|
464
|
-
grpc_timer_cancel(&timer_);
|
473
|
+
GetDefaultEventEngine()->Cancel(*timer_handle_);
|
465
474
|
}
|
466
475
|
Unref();
|
467
476
|
}
|
468
477
|
|
469
|
-
void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::
|
470
|
-
|
471
|
-
|
472
|
-
(
|
473
|
-
|
474
|
-
[self, error]() { self->OnTimerLocked(error); }, DEBUG_LOCATION);
|
475
|
-
}
|
476
|
-
|
477
|
-
void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::OnTimerLocked(
|
478
|
-
grpc_error_handle error) {
|
479
|
-
if (error == GRPC_ERROR_NONE && timer_pending_) {
|
480
|
-
timer_pending_ = false;
|
481
|
-
weighted_child_->weighted_target_policy_->targets_.erase(
|
482
|
-
weighted_child_->name_);
|
483
|
-
}
|
484
|
-
GRPC_ERROR_UNREF(error);
|
485
|
-
Unref();
|
478
|
+
void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::OnTimerLocked() {
|
479
|
+
GPR_ASSERT(timer_handle_.has_value());
|
480
|
+
timer_handle_.reset();
|
481
|
+
weighted_child_->weighted_target_policy_->targets_.erase(
|
482
|
+
weighted_child_->name_);
|
486
483
|
}
|
487
484
|
|
488
485
|
//
|
@@ -610,19 +607,12 @@ void WeightedTargetLb::WeightedChild::OnConnectivityStateUpdateLocked(
|
|
610
607
|
// If the child reports IDLE, immediately tell it to exit idle.
|
611
608
|
if (state == GRPC_CHANNEL_IDLE) child_policy_->ExitIdleLocked();
|
612
609
|
// Decide what state to report for aggregation purposes.
|
613
|
-
// If
|
614
|
-
// READY,
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
if (state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
619
|
-
seen_failure_since_ready_ = true;
|
620
|
-
}
|
621
|
-
} else {
|
622
|
-
if (state != GRPC_CHANNEL_READY) return;
|
623
|
-
seen_failure_since_ready_ = false;
|
610
|
+
// If the last recorded state was TRANSIENT_FAILURE and the new state
|
611
|
+
// is something other than READY, don't change the state.
|
612
|
+
if (connectivity_state_ != GRPC_CHANNEL_TRANSIENT_FAILURE ||
|
613
|
+
state == GRPC_CHANNEL_READY) {
|
614
|
+
connectivity_state_ = state;
|
624
615
|
}
|
625
|
-
connectivity_state_ = state;
|
626
616
|
// Notify the LB policy.
|
627
617
|
weighted_target_policy_->UpdateStateLocked();
|
628
618
|
}
|
@@ -695,7 +685,7 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
|
|
695
685
|
|
696
686
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
697
687
|
const Json& json, grpc_error_handle* error) const override {
|
698
|
-
GPR_DEBUG_ASSERT(error != nullptr && *error
|
688
|
+
GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
|
699
689
|
if (json.type() == Json::Type::JSON_NULL) {
|
700
690
|
// weighted_target was mentioned as a policy in the deprecated
|
701
691
|
// loadBalancingPolicy field or in the client API.
|
@@ -773,7 +763,7 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
|
|
773
763
|
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(it->second,
|
774
764
|
&parse_error);
|
775
765
|
if (child_config->config == nullptr) {
|
776
|
-
GPR_DEBUG_ASSERT(parse_error
|
766
|
+
GPR_DEBUG_ASSERT(!GRPC_ERROR_IS_NONE(parse_error));
|
777
767
|
std::vector<grpc_error_handle> child_errors;
|
778
768
|
child_errors.push_back(parse_error);
|
779
769
|
error_list.push_back(
|
@@ -521,7 +521,7 @@ void CdsLb::OnClusterChanged(const std::string& name,
|
|
521
521
|
grpc_error_handle error = GRPC_ERROR_NONE;
|
522
522
|
RefCountedPtr<LoadBalancingPolicy::Config> config =
|
523
523
|
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(json, &error);
|
524
|
-
if (error
|
524
|
+
if (!GRPC_ERROR_IS_NONE(error)) {
|
525
525
|
OnError(name, absl::UnavailableError(grpc_error_std_string(error)));
|
526
526
|
GRPC_ERROR_UNREF(error);
|
527
527
|
return;
|
@@ -733,7 +733,7 @@ class CdsLbFactory : public LoadBalancingPolicyFactory {
|
|
733
733
|
|
734
734
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
735
735
|
const Json& json, grpc_error_handle* error) const override {
|
736
|
-
GPR_DEBUG_ASSERT(error != nullptr && *error
|
736
|
+
GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
|
737
737
|
if (json.type() == Json::Type::JSON_NULL) {
|
738
738
|
// xds was mentioned as a policy in the deprecated loadBalancingPolicy
|
739
739
|
// field or in the client API.
|
@@ -530,8 +530,7 @@ void XdsClusterImplLb::MaybeUpdatePickerLocked() {
|
|
530
530
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
|
531
531
|
gpr_log(GPR_INFO,
|
532
532
|
"[xds_cluster_impl_lb %p] updating connectivity (drop all): "
|
533
|
-
"state=READY "
|
534
|
-
"picker=%p",
|
533
|
+
"state=READY picker=%p",
|
535
534
|
this, drop_picker.get());
|
536
535
|
}
|
537
536
|
channel_control_helper()->UpdateState(GRPC_CHANNEL_READY, absl::Status(),
|
@@ -544,8 +543,7 @@ void XdsClusterImplLb::MaybeUpdatePickerLocked() {
|
|
544
543
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
|
545
544
|
gpr_log(GPR_INFO,
|
546
545
|
"[xds_cluster_impl_lb %p] updating connectivity: state=%s "
|
547
|
-
"status=(%s) "
|
548
|
-
"picker=%p",
|
546
|
+
"status=(%s) picker=%p",
|
549
547
|
this, ConnectivityStateName(state_), status_.ToString().c_str(),
|
550
548
|
drop_picker.get());
|
551
549
|
}
|
@@ -708,7 +706,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
708
706
|
|
709
707
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
710
708
|
const Json& json, grpc_error_handle* error) const override {
|
711
|
-
GPR_DEBUG_ASSERT(error != nullptr && *error
|
709
|
+
GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
|
712
710
|
if (json.type() == Json::Type::JSON_NULL) {
|
713
711
|
// This policy was configured in the deprecated loadBalancingPolicy
|
714
712
|
// field or in the client API.
|
@@ -730,7 +728,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
730
728
|
child_policy = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
731
729
|
it->second, &parse_error);
|
732
730
|
if (child_policy == nullptr) {
|
733
|
-
GPR_DEBUG_ASSERT(parse_error
|
731
|
+
GPR_DEBUG_ASSERT(!GRPC_ERROR_IS_NONE(parse_error));
|
734
732
|
std::vector<grpc_error_handle> child_errors;
|
735
733
|
child_errors.push_back(parse_error);
|
736
734
|
error_list.push_back(
|
@@ -771,7 +769,7 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
|
|
771
769
|
grpc_error_handle parser_error;
|
772
770
|
lrs_load_reporting_server = XdsBootstrap::XdsServer::Parse(
|
773
771
|
it->second.object_value(), &parser_error);
|
774
|
-
if (parser_error
|
772
|
+
if (!GRPC_ERROR_IS_NONE(parser_error)) {
|
775
773
|
error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
776
774
|
absl::StrCat("errors parsing lrs_load_reporting_server")));
|
777
775
|
error_list.push_back(parser_error);
|