grpc 1.73.0 → 1.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +116 -53
- data/include/grpc/create_channel_from_endpoint.h +54 -0
- data/include/grpc/credentials.h +18 -6
- data/include/grpc/event_engine/event_engine.h +74 -17
- data/include/grpc/grpc_posix.h +20 -1
- data/include/grpc/impl/channel_arg_names.h +2 -4
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/support/json.h +24 -0
- data/src/core/call/client_call.cc +4 -4
- data/src/core/call/filter_fusion.h +1230 -0
- data/src/core/call/interception_chain.h +7 -11
- data/src/core/call/metadata.cc +22 -0
- data/src/core/call/metadata.h +24 -2
- data/src/core/channelz/channel_trace.cc +213 -115
- data/src/core/channelz/channel_trace.h +380 -86
- data/src/core/channelz/channelz.cc +274 -192
- data/src/core/channelz/channelz.h +224 -72
- data/src/core/channelz/channelz_registry.cc +2 -163
- data/src/core/channelz/channelz_registry.h +37 -6
- data/src/core/channelz/property_list.cc +353 -0
- data/src/core/channelz/property_list.h +204 -0
- data/src/core/channelz/v2tov1/convert.cc +683 -0
- data/src/core/channelz/v2tov1/convert.h +58 -0
- data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
- data/src/core/channelz/v2tov1/legacy_api.h +32 -0
- data/src/core/channelz/v2tov1/property_list.cc +118 -0
- data/src/core/channelz/v2tov1/property_list.h +52 -0
- data/src/core/channelz/ztrace_collector.h +3 -2
- data/src/core/client_channel/backup_poller.cc +17 -2
- data/src/core/client_channel/client_channel.cc +17 -28
- data/src/core/client_channel/client_channel_filter.cc +24 -33
- data/src/core/client_channel/client_channel_filter.h +2 -2
- data/src/core/client_channel/client_channel_internal.h +2 -1
- data/src/core/client_channel/config_selector.h +8 -2
- data/src/core/client_channel/dynamic_filters.cc +5 -6
- data/src/core/client_channel/dynamic_filters.h +1 -1
- data/src/core/client_channel/global_subchannel_pool.cc +4 -1
- data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
- data/src/core/client_channel/retry_filter.cc +21 -27
- data/src/core/client_channel/retry_filter.h +10 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
- data/src/core/client_channel/retry_interceptor.cc +30 -44
- data/src/core/client_channel/retry_interceptor.h +18 -17
- data/src/core/client_channel/retry_throttle.cc +46 -61
- data/src/core/client_channel/retry_throttle.h +17 -39
- data/src/core/client_channel/subchannel.cc +57 -25
- data/src/core/client_channel/subchannel.h +10 -0
- data/src/core/config/config_vars.cc +2 -0
- data/src/core/config/core_configuration.cc +4 -1
- data/src/core/config/core_configuration.h +23 -0
- data/src/core/credentials/call/call_creds_registry.h +125 -0
- data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
- data/src/core/credentials/call/jwt_util.cc +70 -0
- data/src/core/credentials/call/jwt_util.h +32 -0
- data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
- data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
- data/src/core/credentials/transport/channel_creds_registry_init.cc +4 -2
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -2
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
- data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
- data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
- data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
- data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
- data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
- data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
- data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
- data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -6
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
- data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
- data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
- data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +165 -117
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +23 -17
- data/src/core/ext/transport/chttp2/transport/frame.cc +99 -6
- data/src/core/ext/transport/chttp2/transport/frame.h +40 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +290 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1233 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +712 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +65 -51
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
- data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
- data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
- data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +121 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +76 -0
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
- data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +152 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +197 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +41 -13
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +1072 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +230 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
- data/src/core/filter/auth/auth_filters.h +2 -27
- data/src/core/filter/auth/client_auth_filter.cc +0 -118
- data/src/core/filter/filter_args.h +9 -23
- data/src/core/filter/fused_filters.cc +154 -0
- data/src/core/handshaker/handshaker.cc +23 -14
- data/src/core/handshaker/handshaker.h +3 -0
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +7 -6
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
- data/src/core/handshaker/security/secure_endpoint.cc +98 -38
- data/src/core/handshaker/security/secure_endpoint.h +8 -0
- data/src/core/handshaker/security/security_handshaker.cc +4 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
- data/src/core/lib/channel/channel_args.cc +15 -0
- data/src/core/lib/channel/channel_args.h +3 -0
- data/src/core/lib/channel/channel_stack.cc +22 -23
- data/src/core/lib/channel/channel_stack.h +9 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
- data/src/core/lib/channel/promise_based_filter.cc +15 -25
- data/src/core/lib/channel/promise_based_filter.h +11 -10
- data/src/core/lib/debug/trace_impl.h +0 -1
- data/src/core/lib/event_engine/ares_resolver.cc +165 -46
- data/src/core/lib/event_engine/ares_resolver.h +51 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +12 -6
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -4
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +14 -6
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
- data/src/core/lib/event_engine/event_engine.cc +7 -0
- data/src/core/lib/event_engine/extensions/channelz.h +10 -6
- data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +139 -169
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +17 -19
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +90 -131
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +13 -13
- data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -23
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -23
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +30 -19
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +147 -94
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +435 -229
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +78 -50
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +46 -38
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +11 -171
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
- data/src/core/lib/event_engine/shim.cc +9 -0
- data/src/core/lib/event_engine/shim.h +3 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +6 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
- data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
- data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
- data/src/core/lib/experiments/experiments.cc +165 -99
- data/src/core/lib/experiments/experiments.h +65 -52
- data/src/core/lib/iomgr/combiner.cc +1 -1
- data/src/core/lib/iomgr/endpoint.cc +4 -3
- data/src/core/lib/iomgr/endpoint.h +7 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
- data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
- data/src/core/lib/iomgr/exec_ctx.h +3 -9
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_posix.cc +15 -9
- data/src/core/lib/iomgr/tcp_windows.cc +3 -2
- data/src/core/lib/promise/activity.h +3 -2
- data/src/core/lib/promise/arena_promise.h +23 -7
- data/src/core/lib/promise/detail/promise_factory.h +10 -0
- data/src/core/lib/promise/detail/promise_like.h +118 -11
- data/src/core/lib/promise/detail/promise_variant.h +50 -0
- data/src/core/lib/promise/detail/seq_state.h +687 -548
- data/src/core/lib/promise/if.h +20 -0
- data/src/core/lib/promise/inter_activity_latch.h +147 -0
- data/src/core/lib/promise/inter_activity_mutex.h +547 -0
- data/src/core/lib/promise/loop.h +65 -3
- data/src/core/lib/promise/map.h +24 -0
- data/src/core/lib/promise/match_promise.h +103 -0
- data/src/core/lib/promise/mpsc.cc +425 -0
- data/src/core/lib/promise/mpsc.h +490 -0
- data/src/core/lib/promise/party.cc +55 -6
- data/src/core/lib/promise/party.h +68 -3
- data/src/core/lib/promise/poll.h +10 -0
- data/src/core/lib/promise/race.h +31 -0
- data/src/core/lib/promise/seq.h +4 -1
- data/src/core/lib/promise/status_flag.h +7 -0
- data/src/core/lib/promise/try_seq.h +4 -1
- data/src/core/lib/promise/wait_set.cc +28 -0
- data/src/core/lib/promise/wait_set.h +86 -0
- data/src/core/lib/resource_quota/arena.h +19 -0
- data/src/core/lib/resource_quota/memory_quota.cc +90 -3
- data/src/core/lib/resource_quota/memory_quota.h +20 -9
- data/src/core/lib/resource_quota/periodic_update.cc +14 -0
- data/src/core/lib/resource_quota/periodic_update.h +8 -0
- data/src/core/lib/resource_quota/resource_quota.cc +15 -4
- data/src/core/lib/resource_quota/resource_quota.h +3 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
- data/src/core/lib/slice/slice.h +5 -0
- data/src/core/lib/surface/call.cc +5 -5
- data/src/core/lib/surface/call.h +6 -5
- data/src/core/lib/surface/channel_create.cc +88 -13
- data/src/core/lib/surface/channel_create.h +4 -0
- data/src/core/lib/surface/channel_init.cc +164 -47
- data/src/core/lib/surface/channel_init.h +64 -1
- data/src/core/lib/surface/completion_queue.cc +2 -4
- data/src/core/lib/surface/filter_stack_call.cc +19 -10
- data/src/core/lib/surface/init.cc +6 -15
- data/src/core/lib/surface/legacy_channel.cc +3 -5
- data/src/core/lib/surface/legacy_channel.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +110 -0
- data/src/core/lib/transport/promise_endpoint.h +307 -0
- data/src/core/load_balancing/child_policy_handler.cc +2 -4
- data/src/core/load_balancing/delegating_helper.h +2 -3
- data/src/core/load_balancing/endpoint_list.cc +29 -2
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
- data/src/core/load_balancing/health_check_client.cc +1 -5
- data/src/core/load_balancing/lb_policy.h +1 -3
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +15 -5
- data/src/core/load_balancing/xds/cds.cc +10 -1
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
- data/src/core/net/socket_mutator.cc +19 -0
- data/src/core/net/socket_mutator.h +25 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
- data/src/core/resolver/xds/xds_config.cc +6 -3
- data/src/core/resolver/xds/xds_config.h +9 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +22 -7
- data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +31 -11
- data/src/core/server/server.cc +84 -13
- data/src/core/server/server.h +21 -2
- data/src/core/server/server_call_tracer_filter.cc +0 -66
- data/src/core/server/server_call_tracer_filter.h +64 -0
- data/src/core/server/server_config_selector_filter.cc +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +63 -25
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
- data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/telemetry/call_tracer.cc +20 -14
- data/src/core/telemetry/call_tracer.h +22 -17
- data/src/core/telemetry/context_list_entry.cc +38 -0
- data/src/core/telemetry/context_list_entry.h +42 -12
- data/src/core/telemetry/metrics.h +8 -8
- data/src/core/telemetry/stats_data.cc +369 -343
- data/src/core/telemetry/stats_data.h +341 -244
- data/src/core/telemetry/tcp_tracer.h +1 -1
- data/src/core/transport/auth_context.cc +20 -0
- data/src/core/transport/auth_context.h +4 -0
- data/src/core/transport/auth_context_comparator_registry.h +69 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
- data/src/core/tsi/fake_transport_security.cc +17 -0
- data/src/core/tsi/ssl_transport_security.cc +205 -32
- data/src/core/tsi/ssl_transport_security.h +19 -10
- data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
- data/src/core/tsi/ssl_transport_security_utils.h +4 -0
- data/src/core/tsi/transport_security_grpc.cc +8 -0
- data/src/core/tsi/transport_security_grpc.h +15 -0
- data/src/core/util/backoff.cc +1 -5
- data/src/core/util/backoff.h +1 -0
- data/src/core/util/down_cast.h +1 -1
- data/src/core/util/function_signature.h +15 -1
- data/src/core/util/http_client/httpcli.cc +12 -5
- data/src/core/util/http_client/httpcli.h +4 -1
- data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
- data/src/core/util/latent_see.cc +178 -146
- data/src/core/util/latent_see.h +249 -189
- data/src/core/util/log.cc +4 -0
- data/src/core/util/memory_usage.h +268 -0
- data/src/core/util/per_cpu.cc +2 -0
- data/src/core/util/per_cpu.h +7 -0
- data/src/core/util/shared_bit_gen.h +20 -0
- data/src/core/util/single_set_ptr.h +7 -4
- data/src/core/util/upb_utils.h +42 -0
- data/src/core/util/uri.cc +3 -2
- data/src/core/util/useful.h +144 -2
- data/src/core/util/wait_for_single_owner.cc +31 -0
- data/src/core/util/wait_for_single_owner.h +24 -0
- data/src/core/util/windows/directory_reader.cc +1 -0
- data/src/core/util/windows/thd.cc +1 -3
- data/src/core/util/work_serializer.cc +1 -1
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
- data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
- data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
- data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_filter.h +7 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
- data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
- data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
- data/src/core/xds/grpc/xds_server_grpc.h +10 -2
- data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
- data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
- data/src/core/xds/xds_client/xds_client.cc +26 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -8
- data/src/ruby/ext/grpc/rb_channel.c +70 -557
- data/src/ruby/ext/grpc/rb_channel.h +0 -3
- data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
- data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
- data/src/ruby/ext/grpc/rb_grpc.c +9 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/ext/grpc/rb_loader.c +0 -4
- data/src/ruby/ext/grpc/rb_server.c +31 -50
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/core_spec.rb +22 -0
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
- data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
- data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
- data/third_party/abseil-cpp/absl/base/config.h +20 -129
- data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
- data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
- data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
- data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
- data/third_party/abseil-cpp/absl/base/options.h +3 -80
- data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
- data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
- data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
- data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
- data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
- data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
- data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
- data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
- data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
- data/third_party/abseil-cpp/absl/log/check.h +2 -1
- data/third_party/abseil-cpp/absl/log/globals.h +4 -5
- data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
- data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
- data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
- data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
- data/third_party/abseil-cpp/absl/log/log.h +48 -35
- data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
- data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
- data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
- data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- data/third_party/abseil-cpp/absl/random/random.h +88 -53
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
- data/third_party/abseil-cpp/absl/status/status.cc +4 -8
- data/third_party/abseil-cpp/absl/status/status.h +8 -8
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
- data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
- data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
- data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
- data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
- data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- 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 +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
- data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
- data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
- data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
- data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
- data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
- data/third_party/abseil-cpp/absl/time/time.h +20 -15
- data/third_party/abseil-cpp/absl/types/optional.h +7 -747
- data/third_party/abseil-cpp/absl/types/span.h +13 -11
- data/third_party/abseil-cpp/absl/types/variant.h +5 -784
- data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
- data/third_party/cares/cares/include/ares.h +925 -460
- data/third_party/cares/cares/include/ares_dns.h +86 -71
- data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
- data/third_party/cares/cares/include/ares_nameser.h +215 -189
- data/third_party/cares/cares/include/ares_version.h +37 -14
- data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
- data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
- data/third_party/cares/cares/src/lib/ares_android.c +216 -164
- data/third_party/cares/cares/src/lib/ares_android.h +25 -14
- data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
- data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
- data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
- data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
- data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
- data/third_party/cares/cares/src/lib/ares_data.c +93 -181
- data/third_party/cares/cares/src/lib/ares_data.h +50 -39
- data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
- data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
- data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
- data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
- data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
- data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
- data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
- data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
- data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
- data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
- data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
- data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
- data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
- data/third_party/cares/cares/src/lib/ares_options.c +418 -332
- data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
- data/third_party/cares/cares/src/lib/ares_private.h +558 -356
- data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
- data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
- data/third_party/cares/cares/src/lib/ares_query.c +126 -121
- data/third_party/cares/cares/src/lib/ares_search.c +564 -262
- data/third_party/cares/cares/src/lib/ares_send.c +264 -93
- data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
- data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
- data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
- data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
- data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
- data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
- data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
- data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
- data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
- data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
- data/third_party/cares/cares/src/lib/ares_version.c +29 -4
- data/third_party/cares/cares/src/lib/config-dos.h +88 -89
- data/third_party/cares/cares/src/lib/config-win32.h +122 -77
- data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
- data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
- data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
- data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
- data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
- data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
- data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
- data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
- data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
- data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
- data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
- data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
- data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
- data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
- data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
- data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
- data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
- data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
- data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
- data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
- data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
- data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
- data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
- data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
- data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
- data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
- data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
- data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
- data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
- data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
- data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
- data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
- data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
- data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
- data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
- data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
- data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
- data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
- data/third_party/cares/cares/src/lib/windows_port.c +16 -9
- metadata +192 -68
- data/src/core/lib/event_engine/forkable.cc +0 -105
- data/src/core/lib/event_engine/forkable.h +0 -67
- data/src/core/lib/iomgr/python_util.h +0 -46
- data/src/core/util/ring_buffer.h +0 -122
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
- data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
- data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
- data/third_party/cares/cares/include/ares_rules.h +0 -125
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
- data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
- data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
- data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
- data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
- data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
- data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
- data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
- data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
- data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
- data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
- data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
- data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
- data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
- data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
- data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
- data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
- data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
- data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
- data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
- data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
- data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
- data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
- data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
- data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
- data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
- data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
- data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
- data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
- data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
- data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
- data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
- data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
- data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
- data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
- data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
- data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
- data/third_party/cares/cares/src/lib/setup_once.h +0 -554
- data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
@@ -102,11 +102,10 @@ class ChildPolicyHandler::Helper final
|
|
102
102
|
parent()->channel_control_helper()->RequestReresolution();
|
103
103
|
}
|
104
104
|
|
105
|
-
void AddTraceEvent(
|
106
|
-
absl::string_view message) override {
|
105
|
+
void AddTraceEvent(absl::string_view message) override {
|
107
106
|
if (parent()->shutting_down_) return;
|
108
107
|
if (!CalledByPendingChild() && !CalledByCurrentChild()) return;
|
109
|
-
parent()->channel_control_helper()->AddTraceEvent(
|
108
|
+
parent()->channel_control_helper()->AddTraceEvent(message);
|
110
109
|
}
|
111
110
|
|
112
111
|
void set_child(LoadBalancingPolicy* child) { child_ = child; }
|
@@ -289,7 +288,6 @@ OrphanablePtr<LoadBalancingPolicy> ChildPolicyHandler::CreateChildPolicy(
|
|
289
288
|
<< lb_policy.get() << ")";
|
290
289
|
}
|
291
290
|
channel_control_helper()->AddTraceEvent(
|
292
|
-
ChannelControlHelper::TRACE_INFO,
|
293
291
|
absl::StrCat("Created new LB policy \"", child_policy_name, "\""));
|
294
292
|
grpc_pollset_set_add_pollset_set(lb_policy->interested_parties(),
|
295
293
|
interested_parties());
|
@@ -81,9 +81,8 @@ class LoadBalancingPolicy::DelegatingChannelControlHelper
|
|
81
81
|
return parent_helper()->GetStatsPluginGroup();
|
82
82
|
}
|
83
83
|
|
84
|
-
void AddTraceEvent(
|
85
|
-
|
86
|
-
parent_helper()->AddTraceEvent(severity, message);
|
84
|
+
void AddTraceEvent(absl::string_view message) override {
|
85
|
+
parent_helper()->AddTraceEvent(message);
|
87
86
|
}
|
88
87
|
|
89
88
|
private:
|
@@ -28,10 +28,12 @@
|
|
28
28
|
|
29
29
|
#include "absl/log/check.h"
|
30
30
|
#include "absl/log/log.h"
|
31
|
+
#include "absl/random/random.h"
|
31
32
|
#include "absl/status/status.h"
|
32
33
|
#include "absl/status/statusor.h"
|
33
34
|
#include "src/core/config/core_configuration.h"
|
34
35
|
#include "src/core/lib/channel/channel_args.h"
|
36
|
+
#include "src/core/lib/experiments/experiments.h"
|
35
37
|
#include "src/core/lib/iomgr/pollset_set.h"
|
36
38
|
#include "src/core/load_balancing/delegating_helper.h"
|
37
39
|
#include "src/core/load_balancing/lb_policy.h"
|
@@ -42,6 +44,7 @@
|
|
42
44
|
#include "src/core/util/json/json.h"
|
43
45
|
#include "src/core/util/orphanable.h"
|
44
46
|
#include "src/core/util/ref_counted_ptr.h"
|
47
|
+
#include "src/core/util/shared_bit_gen.h"
|
45
48
|
|
46
49
|
namespace grpc_core {
|
47
50
|
|
@@ -168,10 +171,34 @@ void EndpointList::Init(
|
|
168
171
|
const ChannelArgs&)>
|
169
172
|
create_endpoint) {
|
170
173
|
if (endpoints == nullptr) return;
|
174
|
+
if (!IsRrWrrConnectFromRandomIndexEnabled()) {
|
175
|
+
endpoints->ForEach([&](const EndpointAddresses& endpoint) {
|
176
|
+
endpoints_.push_back(
|
177
|
+
create_endpoint(Ref(DEBUG_LOCATION, "Endpoint"), endpoint, args));
|
178
|
+
});
|
179
|
+
return;
|
180
|
+
}
|
181
|
+
// If all clients get the same endpoint list in the same order, and they
|
182
|
+
// all start connection attempts in that order, and all connection attempts
|
183
|
+
// take approximately the same amount of time, then all clients are
|
184
|
+
// likely to connect to the first endpoint in the list before any of
|
185
|
+
// the others. As soon as the client has that initial connection,
|
186
|
+
// it will send all queued RPCs on that connection while it waits for
|
187
|
+
// other endpoints to become connected. This can result in sending a
|
188
|
+
// potentially large burst of traffic to the first endpoint in the list.
|
189
|
+
// To avoid that, we start connecting from a random index into the list.
|
190
|
+
std::vector<EndpointAddresses> endpoint_list;
|
171
191
|
endpoints->ForEach([&](const EndpointAddresses& endpoint) {
|
172
|
-
|
173
|
-
create_endpoint(Ref(DEBUG_LOCATION, "Endpoint"), endpoint, args));
|
192
|
+
endpoint_list.push_back(endpoint);
|
174
193
|
});
|
194
|
+
endpoints_.resize(endpoint_list.size());
|
195
|
+
size_t start_index = absl::Uniform(SharedBitGen(), 0UL, endpoint_list.size());
|
196
|
+
for (size_t i = 0; i < endpoint_list.size(); ++i) {
|
197
|
+
size_t index = (start_index + i) % endpoint_list.size();
|
198
|
+
EndpointAddresses& endpoint = endpoint_list[index];
|
199
|
+
endpoints_[index] =
|
200
|
+
create_endpoint(Ref(DEBUG_LOCATION, "Endpoint"), endpoint, args);
|
201
|
+
}
|
175
202
|
}
|
176
203
|
|
177
204
|
void EndpointList::ResetBackoffLocked() {
|
@@ -50,7 +50,7 @@ ClientLoadReportingFilter::Create(const ChannelArgs&, ChannelFilter::Args) {
|
|
50
50
|
|
51
51
|
void ClientLoadReportingFilter::Call::OnClientInitialMetadata(
|
52
52
|
ClientMetadata& client_initial_metadata) {
|
53
|
-
|
53
|
+
GRPC_LATENT_SEE_SCOPE(
|
54
54
|
"ClientLoadReportingFilter::Call::OnClientInitialMetadata");
|
55
55
|
// Handle client initial metadata.
|
56
56
|
// Grab client stats object from metadata.
|
@@ -62,14 +62,14 @@ void ClientLoadReportingFilter::Call::OnClientInitialMetadata(
|
|
62
62
|
}
|
63
63
|
|
64
64
|
void ClientLoadReportingFilter::Call::OnServerInitialMetadata(ServerMetadata&) {
|
65
|
-
|
65
|
+
GRPC_LATENT_SEE_SCOPE(
|
66
66
|
"ClientLoadReportingFilter::Call::OnServerInitialMetadata");
|
67
67
|
saw_initial_metadata_ = true;
|
68
68
|
}
|
69
69
|
|
70
70
|
void ClientLoadReportingFilter::Call::OnServerTrailingMetadata(
|
71
71
|
ServerMetadata& server_trailing_metadata) {
|
72
|
-
|
72
|
+
GRPC_LATENT_SEE_SCOPE(
|
73
73
|
"ClientLoadReportingFilter::Call::OnServerTrailingMetadata");
|
74
74
|
if (client_stats_ != nullptr) {
|
75
75
|
client_stats_->AddCallFinished(
|
@@ -221,11 +221,7 @@ class HealthProducer::HealthChecker::HealthStreamEventHandler final
|
|
221
221
|
LOG(ERROR) << kErrorMessage;
|
222
222
|
auto* channelz_node =
|
223
223
|
health_checker_->producer_->subchannel_->channelz_node();
|
224
|
-
|
225
|
-
channelz_node->AddTraceEvent(
|
226
|
-
channelz::ChannelTrace::Error,
|
227
|
-
grpc_slice_from_static_string(kErrorMessage));
|
228
|
-
}
|
224
|
+
GRPC_CHANNELZ_LOG(channelz_node) << kErrorMessage;
|
229
225
|
SetHealthStatusLocked(client, GRPC_CHANNEL_READY, kErrorMessage);
|
230
226
|
}
|
231
227
|
}
|
@@ -336,9 +336,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
336
336
|
GetStatsPluginGroup() = 0;
|
337
337
|
|
338
338
|
/// Adds a trace message associated with the channel.
|
339
|
-
|
340
|
-
virtual void AddTraceEvent(TraceSeverity severity,
|
341
|
-
absl::string_view message) = 0;
|
339
|
+
virtual void AddTraceEvent(absl::string_view message) = 0;
|
342
340
|
};
|
343
341
|
|
344
342
|
class DelegatingChannelControlHelper;
|
@@ -145,11 +145,7 @@ class OrcaProducer::OrcaStreamEventHandler final
|
|
145
145
|
"Orca stream returned UNIMPLEMENTED; disabling";
|
146
146
|
LOG(ERROR) << kErrorMessage;
|
147
147
|
auto* channelz_node = producer_->subchannel_->channelz_node();
|
148
|
-
|
149
|
-
channelz_node->AddTraceEvent(
|
150
|
-
channelz::ChannelTrace::Error,
|
151
|
-
grpc_slice_from_static_string(kErrorMessage));
|
152
|
-
}
|
148
|
+
GRPC_CHANNELZ_LOG(channelz_node) << kErrorMessage;
|
153
149
|
}
|
154
150
|
}
|
155
151
|
|
@@ -528,6 +528,9 @@ absl::Status PickFirst::UpdateLocked(UpdateArgs args) {
|
|
528
528
|
});
|
529
529
|
if (endpoints.empty()) {
|
530
530
|
status = absl::UnavailableError("address list must not be empty");
|
531
|
+
// TODO(roth): Replace this one-off special case with a more
|
532
|
+
// general solution.
|
533
|
+
if (IsPickFirstIgnoreEmptyUpdatesEnabled()) args.addresses = status;
|
531
534
|
} else {
|
532
535
|
// Shuffle the list if needed.
|
533
536
|
auto config = static_cast<PickFirstConfig*>(args.config.get());
|
@@ -872,11 +875,18 @@ void PickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange(
|
|
872
875
|
// Otherwise, process connectivity state change.
|
873
876
|
switch (*connectivity_state_) {
|
874
877
|
case GRPC_CHANNEL_TRANSIENT_FAILURE: {
|
875
|
-
bool prev_seen_transient_failure =
|
876
|
-
std::exchange(seen_transient_failure_, true);
|
877
878
|
// If this is the first failure we've seen on this subchannel,
|
878
879
|
// then we're still in the Happy Eyeballs pass.
|
879
|
-
if (!
|
880
|
+
if (!seen_transient_failure_) {
|
881
|
+
// Only set seen_transient_failure_ on subchannels that we've
|
882
|
+
// already gotten to in this Happy Eyeballs pass. We don't want
|
883
|
+
// to do this if a subchannel that we haven't yet gotten to reports
|
884
|
+
// TF, since that connection attempt might have been triggered by a
|
885
|
+
// different channel, and the subchannel may already be back in IDLE
|
886
|
+
// by the time we get there later in our Happy Eyeballs pass.
|
887
|
+
if (index_ <= subchannel_list_->attempting_index_) {
|
888
|
+
seen_transient_failure_ = true;
|
889
|
+
}
|
880
890
|
// If a connection attempt fails before the timer fires, then
|
881
891
|
// cancel the timer and start connecting on the next subchannel.
|
882
892
|
if (index_ == subchannel_list_->attempting_index_) {
|
@@ -887,8 +897,8 @@ void PickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange(
|
|
887
897
|
++subchannel_list_->attempting_index_;
|
888
898
|
subchannel_list_->StartConnectingNextSubchannel();
|
889
899
|
} else {
|
890
|
-
//
|
891
|
-
// Eyeballs pass is complete.
|
900
|
+
// In case this was the last subchannel to fail, check if the
|
901
|
+
// Happy Eyeballs pass is complete.
|
892
902
|
subchannel_list_->MaybeFinishHappyEyeballsPass();
|
893
903
|
}
|
894
904
|
} else if (subchannel_list_->IsHappyEyeballsPassComplete()) {
|
@@ -397,7 +397,14 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
|
|
397
397
|
cluster_name_, new_cluster_config->cluster->use_http_connect,
|
398
398
|
endpoint_config.endpoints,
|
399
399
|
child_name_state_.priority_child_numbers);
|
400
|
-
|
400
|
+
std::vector<absl::string_view> resolution_notes;
|
401
|
+
if (!args.resolution_note.empty()) {
|
402
|
+
resolution_notes.emplace_back(args.resolution_note);
|
403
|
+
}
|
404
|
+
if (!endpoint_config.resolution_note.empty()) {
|
405
|
+
resolution_notes.emplace_back(endpoint_config.resolution_note);
|
406
|
+
}
|
407
|
+
update_args.resolution_note = absl::StrJoin(resolution_notes, "; ");
|
401
408
|
// Construct child policy config.
|
402
409
|
child_policy_config_json = CreateChildPolicyConfigForLeafCluster(
|
403
410
|
*new_cluster_config, endpoint_config, aggregate_cluster_resource);
|
@@ -405,6 +412,8 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
|
|
405
412
|
// Aggregate cluster.
|
406
413
|
[&](const XdsConfig::ClusterConfig::AggregateConfig& aggregate_config) {
|
407
414
|
child_name_state_.Reset();
|
415
|
+
// Populate resolution_note for child policy.
|
416
|
+
update_args.resolution_note = aggregate_config.resolution_note;
|
408
417
|
// Construct child policy config.
|
409
418
|
child_policy_config_json =
|
410
419
|
CreateChildPolicyConfigForAggregateCluster(aggregate_config);
|
@@ -407,10 +407,11 @@ LoadBalancingPolicy::PickResult XdsClusterImplLb::Picker::Pick(
|
|
407
407
|
auto* call_attempt_tracer = call_state->GetCallAttemptTracer();
|
408
408
|
if (call_attempt_tracer != nullptr) {
|
409
409
|
call_attempt_tracer->SetOptionalLabel(
|
410
|
-
|
410
|
+
ClientCallTracerInterface::CallAttemptTracer::OptionalLabelKey::
|
411
|
+
kXdsServiceName,
|
411
412
|
service_telemetry_label_);
|
412
413
|
call_attempt_tracer->SetOptionalLabel(
|
413
|
-
|
414
|
+
ClientCallTracerInterface::CallAttemptTracer::OptionalLabelKey::
|
414
415
|
kXdsServiceNamespace,
|
415
416
|
namespace_telemetry_label_);
|
416
417
|
}
|
@@ -444,7 +445,8 @@ LoadBalancingPolicy::PickResult XdsClusterImplLb::Picker::Pick(
|
|
444
445
|
// Add locality label to per-call metrics if needed.
|
445
446
|
if (call_attempt_tracer != nullptr) {
|
446
447
|
call_attempt_tracer->SetOptionalLabel(
|
447
|
-
|
448
|
+
ClientCallTracerInterface::CallAttemptTracer::OptionalLabelKey::
|
449
|
+
kLocality,
|
448
450
|
subchannel_wrapper->locality());
|
449
451
|
}
|
450
452
|
// Handle load reporting.
|
@@ -0,0 +1,19 @@
|
|
1
|
+
//
|
2
|
+
//
|
3
|
+
// Copyright 2015 gRPC authors.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
//
|
17
|
+
//
|
18
|
+
|
19
|
+
// TODO(hork): move src/core/lib/iomgr/socket_mutator.cc here
|
@@ -0,0 +1,25 @@
|
|
1
|
+
//
|
2
|
+
//
|
3
|
+
// Copyright 2015 gRPC authors.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
//
|
17
|
+
//
|
18
|
+
|
19
|
+
#ifndef GRPC_SRC_CORE_NET_SOCKET_MUTATOR_H
|
20
|
+
#define GRPC_SRC_CORE_NET_SOCKET_MUTATOR_H
|
21
|
+
|
22
|
+
// TODO(hork): move src/core/lib/iomgr/socket_mutator.h here
|
23
|
+
#include "src/core/lib/iomgr/socket_mutator.h"
|
24
|
+
|
25
|
+
#endif // GRPC_SRC_CORE_NET_SOCKET_MUTATOR_H
|
@@ -71,6 +71,7 @@ extern void RegisterConnectedChannel(CoreConfiguration::Builder* builder);
|
|
71
71
|
extern void RegisterLoadBalancedCallDestination(
|
72
72
|
CoreConfiguration::Builder* builder);
|
73
73
|
extern void RegisterChttp2Transport(CoreConfiguration::Builder* builder);
|
74
|
+
extern void RegisterFusedFilters(CoreConfiguration::Builder* builder);
|
74
75
|
#ifndef GRPC_NO_RLS
|
75
76
|
extern void RegisterRlsLbPolicy(CoreConfiguration::Builder* builder);
|
76
77
|
#endif // !GRPC_NO_RLS
|
@@ -100,13 +101,17 @@ void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
|
|
100
101
|
RegisterHttpConnectHandshaker(builder);
|
101
102
|
RegisterTCPConnectHandshaker(builder);
|
102
103
|
RegisterChttp2Transport(builder);
|
104
|
+
#ifndef GRPC_MINIMAL_LB_POLICY
|
103
105
|
RegisterPriorityLbPolicy(builder);
|
104
106
|
RegisterOutlierDetectionLbPolicy(builder);
|
105
107
|
RegisterWeightedTargetLbPolicy(builder);
|
108
|
+
#endif
|
106
109
|
RegisterPickFirstLbPolicy(builder);
|
110
|
+
#ifndef GRPC_MINIMAL_LB_POLICY
|
107
111
|
RegisterRoundRobinLbPolicy(builder);
|
108
112
|
RegisterRingHashLbPolicy(builder);
|
109
113
|
RegisterWeightedRoundRobinLbPolicy(builder);
|
114
|
+
#endif
|
110
115
|
BuildClientChannelConfiguration(builder);
|
111
116
|
SecurityRegisterHandshakerFactories(builder);
|
112
117
|
RegisterClientAuthorityFilter(builder);
|
@@ -131,6 +136,7 @@ void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
|
|
131
136
|
RegisterBackendMetricFilter(builder);
|
132
137
|
RegisterSecurityFilters(builder);
|
133
138
|
RegisterExtraFilters(builder);
|
139
|
+
RegisterFusedFilters(builder);
|
134
140
|
RegisterBuiltins(builder);
|
135
141
|
}
|
136
142
|
|
@@ -28,6 +28,7 @@ extern void GcpAuthenticationFilterRegister(
|
|
28
28
|
extern void RegisterXdsChannelStackModifier(
|
29
29
|
CoreConfiguration::Builder* builder);
|
30
30
|
extern void RegisterChannelDefaultCreds(CoreConfiguration::Builder* builder);
|
31
|
+
extern void RegisterDefaultCallCreds(CoreConfiguration::Builder* builder);
|
31
32
|
extern void RegisterXdsResolver(CoreConfiguration::Builder* builder);
|
32
33
|
extern void RegisterCloud2ProdResolver(CoreConfiguration::Builder* builder);
|
33
34
|
extern void RegisterXdsClusterManagerLbPolicy(
|
@@ -52,6 +53,7 @@ void RegisterExtraFilters(CoreConfiguration::Builder* builder) {
|
|
52
53
|
GcpAuthenticationFilterRegister(builder);
|
53
54
|
RegisterXdsChannelStackModifier(builder);
|
54
55
|
RegisterChannelDefaultCreds(builder);
|
56
|
+
RegisterDefaultCallCreds(builder);
|
55
57
|
RegisterXdsResolver(builder);
|
56
58
|
RegisterCloud2ProdResolver(builder);
|
57
59
|
RegisterXdsClusterManagerLbPolicy(builder);
|
@@ -19,7 +19,6 @@
|
|
19
19
|
#ifndef GRPC_SRC_CORE_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H
|
20
20
|
#define GRPC_SRC_CORE_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H
|
21
21
|
|
22
|
-
#include <ares.h>
|
23
22
|
#include <grpc/support/port_platform.h>
|
24
23
|
|
25
24
|
#include <memory>
|
@@ -31,6 +30,10 @@
|
|
31
30
|
#include "src/core/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
32
31
|
#include "src/core/util/sync.h"
|
33
32
|
|
33
|
+
#if GRPC_ARES == 1
|
34
|
+
|
35
|
+
#include <ares.h>
|
36
|
+
|
34
37
|
namespace grpc_core {
|
35
38
|
|
36
39
|
// A wrapped fd that integrates with the grpc iomgr of the current platform.
|
@@ -85,4 +88,6 @@ std::unique_ptr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(Mutex* mu);
|
|
85
88
|
|
86
89
|
} // namespace grpc_core
|
87
90
|
|
91
|
+
#endif // GRPC_ARES
|
92
|
+
|
88
93
|
#endif // GRPC_SRC_CORE_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H
|
@@ -20,7 +20,6 @@
|
|
20
20
|
#include "src/core/lib/iomgr/port.h" // IWYU pragma: keep
|
21
21
|
#if GRPC_ARES == 1 && defined(GRPC_WINDOWS_SOCKET_ARES_EV_DRIVER)
|
22
22
|
|
23
|
-
#include <ares.h>
|
24
23
|
#include <grpc/support/alloc.h>
|
25
24
|
#include <grpc/support/log_windows.h>
|
26
25
|
#include <grpc/support/string_util.h>
|
@@ -41,6 +40,8 @@
|
|
41
40
|
#include "src/core/lib/iomgr/tcp_windows.h"
|
42
41
|
#include "src/core/lib/slice/slice.h"
|
43
42
|
#include "src/core/lib/slice/slice_internal.h"
|
43
|
+
// We pull in ares.h transitively here, ares.h is not self-contained
|
44
|
+
// w.r.t. windows headers though, so make sure pull them in above.
|
44
45
|
#include "src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h"
|
45
46
|
#include "src/core/resolver/dns/c_ares/grpc_ares_wrapper.h"
|
46
47
|
#include "src/core/util/crash.h"
|
@@ -484,14 +484,17 @@ static void grpc_ares_notify_on_event_locked(grpc_ares_ev_driver* ev_driver)
|
|
484
484
|
}
|
485
485
|
}
|
486
486
|
}
|
487
|
-
//
|
488
|
-
//
|
489
|
-
//
|
487
|
+
// We may be shutting down to completion of all requests, or due to a timeout
|
488
|
+
// or explicit caller-triggered cancellation. In any of these cases, shut
|
489
|
+
// down and destroy any remaining fds.
|
490
490
|
while (ev_driver->fds != nullptr) {
|
491
491
|
fd_node* cur = ev_driver->fds;
|
492
492
|
ev_driver->fds = ev_driver->fds->next;
|
493
|
-
|
494
|
-
|
493
|
+
if (ev_driver->shutting_down) {
|
494
|
+
fd_node_shutdown_locked(cur, "grpc_ares_notify_on_event_locked");
|
495
|
+
}
|
496
|
+
if (cur->already_shutdown && !cur->readable_registered &&
|
497
|
+
!cur->writable_registered) {
|
495
498
|
fd_node_destroy_locked(cur);
|
496
499
|
} else {
|
497
500
|
cur->next = new_list;
|
@@ -19,7 +19,6 @@
|
|
19
19
|
#ifndef GRPC_SRC_CORE_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H
|
20
20
|
#define GRPC_SRC_CORE_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H
|
21
21
|
|
22
|
-
#include <ares.h>
|
23
22
|
#include <grpc/support/port_platform.h>
|
24
23
|
#include <stddef.h>
|
25
24
|
|
@@ -36,6 +35,8 @@
|
|
36
35
|
|
37
36
|
#if GRPC_ARES == 1
|
38
37
|
|
38
|
+
#include <ares.h>
|
39
|
+
|
39
40
|
#define GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS 120000
|
40
41
|
|
41
42
|
typedef struct grpc_ares_ev_driver grpc_ares_ev_driver;
|
@@ -41,10 +41,10 @@ XdsConfig::ClusterConfig::ClusterConfig(
|
|
41
41
|
|
42
42
|
XdsConfig::ClusterConfig::ClusterConfig(
|
43
43
|
std::shared_ptr<const XdsClusterResource> cluster,
|
44
|
-
std::vector<absl::string_view> leaf_clusters)
|
44
|
+
std::vector<absl::string_view> leaf_clusters, std::string resolution_note)
|
45
45
|
: cluster(std::move(cluster)),
|
46
46
|
children(absl::in_place_type_t<AggregateConfig>(),
|
47
|
-
std::move(leaf_clusters)) {}
|
47
|
+
std::move(leaf_clusters), std::move(resolution_note)) {}
|
48
48
|
|
49
49
|
//
|
50
50
|
// XdsConfig
|
@@ -81,7 +81,10 @@ std::string XdsConfig::ToString() const {
|
|
81
81
|
[&](const ClusterConfig::AggregateConfig& aggregate_config) {
|
82
82
|
parts.push_back(absl::StrCat(
|
83
83
|
" leaf_clusters: [",
|
84
|
-
absl::StrJoin(aggregate_config.leaf_clusters, ", "),
|
84
|
+
absl::StrJoin(aggregate_config.leaf_clusters, ", "),
|
85
|
+
"],\n"
|
86
|
+
" resolution_note: \"",
|
87
|
+
aggregate_config.resolution_note, "\"\n"));
|
85
88
|
});
|
86
89
|
parts.push_back(
|
87
90
|
" }\n"
|
@@ -66,11 +66,15 @@ struct XdsConfig : public RefCounted<XdsConfig> {
|
|
66
66
|
// The list of leaf clusters for an aggregate cluster.
|
67
67
|
struct AggregateConfig {
|
68
68
|
std::vector<absl::string_view> leaf_clusters;
|
69
|
+
std::string resolution_note;
|
69
70
|
|
70
|
-
|
71
|
-
|
71
|
+
AggregateConfig(std::vector<absl::string_view> leaf_clusters,
|
72
|
+
std::string resolution_note)
|
73
|
+
: leaf_clusters(std::move(leaf_clusters)),
|
74
|
+
resolution_note(std::move(resolution_note)) {}
|
72
75
|
bool operator==(const AggregateConfig& other) const {
|
73
|
-
return leaf_clusters == other.leaf_clusters
|
76
|
+
return leaf_clusters == other.leaf_clusters &&
|
77
|
+
resolution_note == other.resolution_note;
|
74
78
|
}
|
75
79
|
};
|
76
80
|
std::variant<EndpointConfig, AggregateConfig> children;
|
@@ -81,7 +85,8 @@ struct XdsConfig : public RefCounted<XdsConfig> {
|
|
81
85
|
std::string resolution_note);
|
82
86
|
// Ctor for aggregate clusters.
|
83
87
|
ClusterConfig(std::shared_ptr<const XdsClusterResource> cluster,
|
84
|
-
std::vector<absl::string_view> leaf_clusters
|
88
|
+
std::vector<absl::string_view> leaf_clusters,
|
89
|
+
std::string resolution_note);
|
85
90
|
|
86
91
|
bool operator==(const ClusterConfig& other) const {
|
87
92
|
return cluster == other.cluster && children == other.children;
|
@@ -656,8 +656,12 @@ bool XdsDependencyManager::PopulateClusterConfigMap(
|
|
656
656
|
cluster_config_map,
|
657
657
|
std::set<absl::string_view>* eds_resources_seen,
|
658
658
|
std::set<absl::string_view>* dns_names_seen,
|
659
|
-
absl::StatusOr<std::vector<absl::string_view>>* leaf_clusters
|
660
|
-
|
659
|
+
absl::StatusOr<std::vector<absl::string_view>>* leaf_clusters,
|
660
|
+
std::vector<std::string>* resolution_notes) {
|
661
|
+
if (depth > 0) {
|
662
|
+
CHECK_NE(leaf_clusters, nullptr);
|
663
|
+
CHECK_NE(resolution_notes, nullptr);
|
664
|
+
}
|
661
665
|
if (depth == kMaxXdsAggregateClusterRecursionDepth) {
|
662
666
|
*leaf_clusters =
|
663
667
|
absl::UnavailableError("aggregate cluster graph exceeds max depth");
|
@@ -687,6 +691,9 @@ bool XdsDependencyManager::PopulateClusterConfigMap(
|
|
687
691
|
// If there was an error fetching the CDS resource, report the error.
|
688
692
|
if (!state.update.ok()) {
|
689
693
|
cluster_config = state.update.status();
|
694
|
+
if (resolution_notes != nullptr) {
|
695
|
+
resolution_notes->emplace_back(state.update.status().message());
|
696
|
+
}
|
690
697
|
return true;
|
691
698
|
}
|
692
699
|
// If we don't have the resource yet, we can't return a config yet.
|
@@ -785,12 +792,13 @@ bool XdsDependencyManager::PopulateClusterConfigMap(
|
|
785
792
|
// Recursively expand leaf clusters.
|
786
793
|
absl::StatusOr<std::vector<absl::string_view>> child_leaf_clusters;
|
787
794
|
child_leaf_clusters.emplace();
|
795
|
+
std::vector<std::string> child_resolution_notes;
|
788
796
|
bool have_all_resources = true;
|
789
797
|
for (const std::string& child_name :
|
790
798
|
aggregate.prioritized_cluster_names) {
|
791
799
|
have_all_resources &= PopulateClusterConfigMap(
|
792
800
|
child_name, depth + 1, cluster_config_map, eds_resources_seen,
|
793
|
-
dns_names_seen, &child_leaf_clusters);
|
801
|
+
dns_names_seen, &child_leaf_clusters, &child_resolution_notes);
|
794
802
|
if (!child_leaf_clusters.ok()) break;
|
795
803
|
}
|
796
804
|
// Note that we cannot use the cluster_config reference we
|
@@ -807,12 +815,18 @@ bool XdsDependencyManager::PopulateClusterConfigMap(
|
|
807
815
|
}
|
808
816
|
return true;
|
809
817
|
}
|
810
|
-
// If needed, propagate leaf cluster list
|
818
|
+
// If needed, propagate leaf cluster list and resolution note
|
819
|
+
// lists up the tree.
|
811
820
|
if (leaf_clusters != nullptr) {
|
812
821
|
(*leaf_clusters)
|
813
822
|
->insert((*leaf_clusters)->end(), child_leaf_clusters->begin(),
|
814
823
|
child_leaf_clusters->end());
|
815
824
|
}
|
825
|
+
if (resolution_notes != nullptr) {
|
826
|
+
resolution_notes->insert(resolution_notes->end(),
|
827
|
+
child_resolution_notes.begin(),
|
828
|
+
child_resolution_notes.end());
|
829
|
+
}
|
816
830
|
// If there are no leaf clusters, report an error for the cluster.
|
817
831
|
if (have_all_resources && child_leaf_clusters->empty()) {
|
818
832
|
aggregate_cluster_config = absl::UnavailableError(
|
@@ -825,8 +839,9 @@ bool XdsDependencyManager::PopulateClusterConfigMap(
|
|
825
839
|
// at the root of the tree, because we need to make sure the list
|
826
840
|
// of underlying cluster names stays alive so that the leaf cluster
|
827
841
|
// list of the root aggregate cluster can point to those strings.
|
828
|
-
aggregate_cluster_config.emplace(
|
829
|
-
|
842
|
+
aggregate_cluster_config.emplace(
|
843
|
+
std::move(cluster_resource), std::move(*child_leaf_clusters),
|
844
|
+
absl::StrJoin(child_resolution_notes, "; "));
|
830
845
|
return have_all_resources;
|
831
846
|
});
|
832
847
|
}
|
@@ -925,7 +940,7 @@ void XdsDependencyManager::MaybeReportUpdate() {
|
|
925
940
|
endpoint_watchers_.erase(it++);
|
926
941
|
}
|
927
942
|
// Remove entries in dns_resolvers_ for any DNS name not in
|
928
|
-
//
|
943
|
+
// dns_names_seen.
|
929
944
|
for (auto it = dns_resolvers_.begin(); it != dns_resolvers_.end();) {
|
930
945
|
const std::string& dns_name = it->first;
|
931
946
|
if (dns_names_seen.find(dns_name) != dns_names_seen.end()) {
|
@@ -172,7 +172,8 @@ class XdsDependencyManager final : public RefCounted<XdsDependencyManager>,
|
|
172
172
|
cluster_config_map,
|
173
173
|
std::set<absl::string_view>* eds_resources_seen,
|
174
174
|
std::set<absl::string_view>* dns_names_seen,
|
175
|
-
absl::StatusOr<std::vector<absl::string_view>>* leaf_clusters = nullptr
|
175
|
+
absl::StatusOr<std::vector<absl::string_view>>* leaf_clusters = nullptr,
|
176
|
+
std::vector<std::string>* resolution_notes = nullptr);
|
176
177
|
|
177
178
|
// Called when an external cluster subscription is unreffed.
|
178
179
|
void OnClusterSubscriptionUnref(absl::string_view cluster_name,
|