grpc 1.74.1 → 1.75.0.pre1
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 +83 -41
- data/include/grpc/credentials.h +7 -1
- data/src/core/call/client_call.cc +4 -4
- data/src/core/call/filter_fusion.h +1230 -0
- data/src/core/call/metadata.cc +22 -0
- data/src/core/call/metadata.h +24 -2
- data/src/core/channelz/channelz.cc +10 -17
- data/src/core/channelz/channelz.h +58 -19
- data/src/core/channelz/channelz_registry.cc +0 -162
- data/src/core/channelz/channelz_registry.h +14 -7
- data/src/core/channelz/property_list.cc +19 -23
- data/src/core/channelz/property_list.h +3 -1
- 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/client_channel/client_channel_filter.cc +5 -4
- 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/load_balanced_call_destination.cc +6 -5
- data/src/core/client_channel/subchannel.cc +14 -6
- data/src/core/client_channel/subchannel.h +2 -0
- data/src/core/config/core_configuration.cc +3 -1
- data/src/core/config/core_configuration.h +12 -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 +3 -1
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -1
- 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/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/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
- data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
- 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/transport/chttp2_transport.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
- data/src/core/ext/transport/chttp2/transport/frame.cc +89 -6
- data/src/core/ext/transport/chttp2/transport/frame.h +38 -0
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +5 -14
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +294 -78
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +128 -9
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +52 -35
- 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/src/core/ext/transport/chttp2/transport/http2_transport.cc +81 -3
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +2 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +22 -5
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
- data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +6 -4
- 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/property_list.upb.h +142 -54
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +18 -14
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +2 -2
- 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/property_list.upbdefs.c +86 -88
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +2 -2
- data/src/core/filter/auth/auth_filters.h +2 -2
- data/src/core/filter/fused_filters.cc +154 -0
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +1 -1
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
- data/src/core/handshaker/security/secure_endpoint.cc +28 -13
- data/src/core/handshaker/security/secure_endpoint.h +8 -0
- data/src/core/lib/channel/promise_based_filter.cc +15 -25
- data/src/core/lib/channel/promise_based_filter.h +6 -5
- data/src/core/lib/event_engine/ares_resolver.h +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +9 -5
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -1
- 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 +12 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +12 -10
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +6 -4
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +15 -14
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -5
- data/src/core/lib/event_engine/posix_engine/event_poller.h +0 -8
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -5
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +1 -0
- 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 +2 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +188 -199
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +30 -45
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +2 -1
- data/src/core/lib/experiments/experiments.cc +120 -6
- data/src/core/lib/experiments/experiments.h +46 -3
- data/src/core/lib/iomgr/combiner.cc +1 -1
- 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 +3 -3
- data/src/core/lib/promise/activity.h +2 -2
- data/src/core/lib/promise/mpsc.cc +8 -8
- data/src/core/lib/promise/party.cc +7 -7
- data/src/core/lib/promise/party.h +4 -4
- data/src/core/lib/promise/poll.h +10 -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/surface/call.cc +5 -5
- data/src/core/lib/surface/call.h +6 -5
- data/src/core/lib/surface/completion_queue.cc +2 -4
- data/src/core/lib/surface/filter_stack_call.cc +1 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.h +3 -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/pick_first/pick_first.cc +12 -5
- 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/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_dependency_manager.cc +1 -1
- data/src/core/server/server.cc +1 -1
- 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/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/telemetry/call_tracer.cc +20 -14
- data/src/core/telemetry/call_tracer.h +22 -17
- data/src/core/telemetry/metrics.h +8 -8
- data/src/core/telemetry/stats_data.cc +151 -151
- data/src/core/telemetry/stats_data.h +87 -87
- 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/ssl_transport_security.cc +202 -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/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 +245 -188
- data/src/core/util/single_set_ptr.h +5 -2
- data/src/core/util/useful.h +91 -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_certificate_provider.cc +5 -6
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- 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 +121 -49
- data/src/core/util/ring_buffer.h +0 -122
- 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
@@ -59,6 +59,8 @@ namespace grpc_core {
|
|
59
59
|
#if defined(GRPC_CFSTREAM)
|
60
60
|
#define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT
|
61
61
|
inline bool IsCallTracerInTransportEnabled() { return true; }
|
62
|
+
inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; }
|
63
|
+
inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; }
|
62
64
|
#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
|
63
65
|
inline bool IsChaoticGoodFramingLayerEnabled() { return true; }
|
64
66
|
inline bool IsChttp2BoundWriteSizeEnabled() { return false; }
|
@@ -79,6 +81,7 @@ inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
|
|
79
81
|
#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
|
80
82
|
inline bool IsEventEngineSecureEndpointEnabled() { return true; }
|
81
83
|
inline bool IsFreeLargeAllocatorEnabled() { return false; }
|
84
|
+
inline bool IsFuseFiltersEnabled() { return false; }
|
82
85
|
inline bool IsKeepAlivePingTimerBatchEnabled() { return false; }
|
83
86
|
inline bool IsLocalConnectorSecureEnabled() { return false; }
|
84
87
|
#define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
|
@@ -87,16 +90,19 @@ inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; }
|
|
87
90
|
inline bool IsMonitoringExperimentEnabled() { return true; }
|
88
91
|
inline bool IsMultipingEnabled() { return false; }
|
89
92
|
inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() { return false; }
|
93
|
+
inline bool IsPipelinedReadSecureEndpointEnabled() { return false; }
|
90
94
|
inline bool IsPollsetAlternativeEnabled() { return false; }
|
91
95
|
inline bool IsPrioritizeFinishedRequestsEnabled() { return false; }
|
92
96
|
inline bool IsPromiseBasedHttp2ClientTransportEnabled() { return false; }
|
93
97
|
inline bool IsPromiseBasedHttp2ServerTransportEnabled() { return false; }
|
94
98
|
inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
|
95
99
|
inline bool IsRetryInCallv3Enabled() { return false; }
|
100
|
+
inline bool IsRrWrrConnectFromRandomIndexEnabled() { return false; }
|
96
101
|
inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
|
97
102
|
inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
|
98
103
|
inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
|
99
|
-
|
104
|
+
#define GRPC_EXPERIMENT_IS_INCLUDED_SERVER_GLOBAL_CALLBACKS_OWNERSHIP
|
105
|
+
inline bool IsServerGlobalCallbacksOwnershipEnabled() { return true; }
|
100
106
|
#define GRPC_EXPERIMENT_IS_INCLUDED_SHARD_GLOBAL_CONNECTION_POOL
|
101
107
|
inline bool IsShardGlobalConnectionPoolEnabled() { return true; }
|
102
108
|
inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; }
|
@@ -108,6 +114,8 @@ inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
|
|
108
114
|
#elif defined(GPR_WINDOWS)
|
109
115
|
#define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT
|
110
116
|
inline bool IsCallTracerInTransportEnabled() { return true; }
|
117
|
+
inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; }
|
118
|
+
inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; }
|
111
119
|
#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
|
112
120
|
inline bool IsChaoticGoodFramingLayerEnabled() { return true; }
|
113
121
|
inline bool IsChttp2BoundWriteSizeEnabled() { return false; }
|
@@ -128,6 +136,7 @@ inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
|
|
128
136
|
#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
|
129
137
|
inline bool IsEventEngineSecureEndpointEnabled() { return true; }
|
130
138
|
inline bool IsFreeLargeAllocatorEnabled() { return false; }
|
139
|
+
inline bool IsFuseFiltersEnabled() { return false; }
|
131
140
|
inline bool IsKeepAlivePingTimerBatchEnabled() { return false; }
|
132
141
|
inline bool IsLocalConnectorSecureEnabled() { return false; }
|
133
142
|
#define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
|
@@ -136,16 +145,19 @@ inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; }
|
|
136
145
|
inline bool IsMonitoringExperimentEnabled() { return true; }
|
137
146
|
inline bool IsMultipingEnabled() { return false; }
|
138
147
|
inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() { return false; }
|
148
|
+
inline bool IsPipelinedReadSecureEndpointEnabled() { return false; }
|
139
149
|
inline bool IsPollsetAlternativeEnabled() { return false; }
|
140
150
|
inline bool IsPrioritizeFinishedRequestsEnabled() { return false; }
|
141
151
|
inline bool IsPromiseBasedHttp2ClientTransportEnabled() { return false; }
|
142
152
|
inline bool IsPromiseBasedHttp2ServerTransportEnabled() { return false; }
|
143
153
|
inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
|
144
154
|
inline bool IsRetryInCallv3Enabled() { return false; }
|
155
|
+
inline bool IsRrWrrConnectFromRandomIndexEnabled() { return false; }
|
145
156
|
inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
|
146
157
|
inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
|
147
158
|
inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
|
148
|
-
|
159
|
+
#define GRPC_EXPERIMENT_IS_INCLUDED_SERVER_GLOBAL_CALLBACKS_OWNERSHIP
|
160
|
+
inline bool IsServerGlobalCallbacksOwnershipEnabled() { return true; }
|
149
161
|
#define GRPC_EXPERIMENT_IS_INCLUDED_SHARD_GLOBAL_CONNECTION_POOL
|
150
162
|
inline bool IsShardGlobalConnectionPoolEnabled() { return true; }
|
151
163
|
inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; }
|
@@ -157,6 +169,8 @@ inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
|
|
157
169
|
#else
|
158
170
|
#define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT
|
159
171
|
inline bool IsCallTracerInTransportEnabled() { return true; }
|
172
|
+
inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; }
|
173
|
+
inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; }
|
160
174
|
#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
|
161
175
|
inline bool IsChaoticGoodFramingLayerEnabled() { return true; }
|
162
176
|
inline bool IsChttp2BoundWriteSizeEnabled() { return false; }
|
@@ -177,6 +191,7 @@ inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
|
|
177
191
|
#define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
|
178
192
|
inline bool IsEventEngineSecureEndpointEnabled() { return true; }
|
179
193
|
inline bool IsFreeLargeAllocatorEnabled() { return false; }
|
194
|
+
inline bool IsFuseFiltersEnabled() { return false; }
|
180
195
|
inline bool IsKeepAlivePingTimerBatchEnabled() { return false; }
|
181
196
|
inline bool IsLocalConnectorSecureEnabled() { return false; }
|
182
197
|
#define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
|
@@ -185,16 +200,19 @@ inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; }
|
|
185
200
|
inline bool IsMonitoringExperimentEnabled() { return true; }
|
186
201
|
inline bool IsMultipingEnabled() { return false; }
|
187
202
|
inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() { return false; }
|
203
|
+
inline bool IsPipelinedReadSecureEndpointEnabled() { return false; }
|
188
204
|
inline bool IsPollsetAlternativeEnabled() { return false; }
|
189
205
|
inline bool IsPrioritizeFinishedRequestsEnabled() { return false; }
|
190
206
|
inline bool IsPromiseBasedHttp2ClientTransportEnabled() { return false; }
|
191
207
|
inline bool IsPromiseBasedHttp2ServerTransportEnabled() { return false; }
|
192
208
|
inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
|
193
209
|
inline bool IsRetryInCallv3Enabled() { return false; }
|
210
|
+
inline bool IsRrWrrConnectFromRandomIndexEnabled() { return false; }
|
194
211
|
inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
|
195
212
|
inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
|
196
213
|
inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
|
197
|
-
|
214
|
+
#define GRPC_EXPERIMENT_IS_INCLUDED_SERVER_GLOBAL_CALLBACKS_OWNERSHIP
|
215
|
+
inline bool IsServerGlobalCallbacksOwnershipEnabled() { return true; }
|
198
216
|
#define GRPC_EXPERIMENT_IS_INCLUDED_SHARD_GLOBAL_CONNECTION_POOL
|
199
217
|
inline bool IsShardGlobalConnectionPoolEnabled() { return true; }
|
200
218
|
inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; }
|
@@ -207,6 +225,8 @@ inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
|
|
207
225
|
#else
|
208
226
|
enum ExperimentIds {
|
209
227
|
kExperimentIdCallTracerInTransport,
|
228
|
+
kExperimentIdChannelzUseV2ForV1Api,
|
229
|
+
kExperimentIdChannelzUseV2ForV1Service,
|
210
230
|
kExperimentIdChaoticGoodFramingLayer,
|
211
231
|
kExperimentIdChttp2BoundWriteSize,
|
212
232
|
kExperimentIdErrorFlatten,
|
@@ -219,18 +239,21 @@ enum ExperimentIds {
|
|
219
239
|
kExperimentIdEventEngineForAllOtherEndpoints,
|
220
240
|
kExperimentIdEventEngineSecureEndpoint,
|
221
241
|
kExperimentIdFreeLargeAllocator,
|
242
|
+
kExperimentIdFuseFilters,
|
222
243
|
kExperimentIdKeepAlivePingTimerBatch,
|
223
244
|
kExperimentIdLocalConnectorSecure,
|
224
245
|
kExperimentIdMaxInflightPingsStrictLimit,
|
225
246
|
kExperimentIdMonitoringExperiment,
|
226
247
|
kExperimentIdMultiping,
|
227
248
|
kExperimentIdPickFirstIgnoreEmptyUpdates,
|
249
|
+
kExperimentIdPipelinedReadSecureEndpoint,
|
228
250
|
kExperimentIdPollsetAlternative,
|
229
251
|
kExperimentIdPrioritizeFinishedRequests,
|
230
252
|
kExperimentIdPromiseBasedHttp2ClientTransport,
|
231
253
|
kExperimentIdPromiseBasedHttp2ServerTransport,
|
232
254
|
kExperimentIdPromiseBasedInprocTransport,
|
233
255
|
kExperimentIdRetryInCallv3,
|
256
|
+
kExperimentIdRrWrrConnectFromRandomIndex,
|
234
257
|
kExperimentIdScheduleCancellationOverWrite,
|
235
258
|
kExperimentIdSecureEndpointOffloadLargeReads,
|
236
259
|
kExperimentIdSecureEndpointOffloadLargeWrites,
|
@@ -247,6 +270,14 @@ enum ExperimentIds {
|
|
247
270
|
inline bool IsCallTracerInTransportEnabled() {
|
248
271
|
return IsExperimentEnabled<kExperimentIdCallTracerInTransport>();
|
249
272
|
}
|
273
|
+
#define GRPC_EXPERIMENT_IS_INCLUDED_CHANNELZ_USE_V2_FOR_V1_API
|
274
|
+
inline bool IsChannelzUseV2ForV1ApiEnabled() {
|
275
|
+
return IsExperimentEnabled<kExperimentIdChannelzUseV2ForV1Api>();
|
276
|
+
}
|
277
|
+
#define GRPC_EXPERIMENT_IS_INCLUDED_CHANNELZ_USE_V2_FOR_V1_SERVICE
|
278
|
+
inline bool IsChannelzUseV2ForV1ServiceEnabled() {
|
279
|
+
return IsExperimentEnabled<kExperimentIdChannelzUseV2ForV1Service>();
|
280
|
+
}
|
250
281
|
#define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
|
251
282
|
inline bool IsChaoticGoodFramingLayerEnabled() {
|
252
283
|
return IsExperimentEnabled<kExperimentIdChaoticGoodFramingLayer>();
|
@@ -295,6 +326,10 @@ inline bool IsEventEngineSecureEndpointEnabled() {
|
|
295
326
|
inline bool IsFreeLargeAllocatorEnabled() {
|
296
327
|
return IsExperimentEnabled<kExperimentIdFreeLargeAllocator>();
|
297
328
|
}
|
329
|
+
#define GRPC_EXPERIMENT_IS_INCLUDED_FUSE_FILTERS
|
330
|
+
inline bool IsFuseFiltersEnabled() {
|
331
|
+
return IsExperimentEnabled<kExperimentIdFuseFilters>();
|
332
|
+
}
|
298
333
|
#define GRPC_EXPERIMENT_IS_INCLUDED_KEEP_ALIVE_PING_TIMER_BATCH
|
299
334
|
inline bool IsKeepAlivePingTimerBatchEnabled() {
|
300
335
|
return IsExperimentEnabled<kExperimentIdKeepAlivePingTimerBatch>();
|
@@ -319,6 +354,10 @@ inline bool IsMultipingEnabled() {
|
|
319
354
|
inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() {
|
320
355
|
return IsExperimentEnabled<kExperimentIdPickFirstIgnoreEmptyUpdates>();
|
321
356
|
}
|
357
|
+
#define GRPC_EXPERIMENT_IS_INCLUDED_PIPELINED_READ_SECURE_ENDPOINT
|
358
|
+
inline bool IsPipelinedReadSecureEndpointEnabled() {
|
359
|
+
return IsExperimentEnabled<kExperimentIdPipelinedReadSecureEndpoint>();
|
360
|
+
}
|
322
361
|
#define GRPC_EXPERIMENT_IS_INCLUDED_POLLSET_ALTERNATIVE
|
323
362
|
inline bool IsPollsetAlternativeEnabled() {
|
324
363
|
return IsExperimentEnabled<kExperimentIdPollsetAlternative>();
|
@@ -343,6 +382,10 @@ inline bool IsPromiseBasedInprocTransportEnabled() {
|
|
343
382
|
inline bool IsRetryInCallv3Enabled() {
|
344
383
|
return IsExperimentEnabled<kExperimentIdRetryInCallv3>();
|
345
384
|
}
|
385
|
+
#define GRPC_EXPERIMENT_IS_INCLUDED_RR_WRR_CONNECT_FROM_RANDOM_INDEX
|
386
|
+
inline bool IsRrWrrConnectFromRandomIndexEnabled() {
|
387
|
+
return IsExperimentEnabled<kExperimentIdRrWrrConnectFromRandomIndex>();
|
388
|
+
}
|
346
389
|
#define GRPC_EXPERIMENT_IS_INCLUDED_SCHEDULE_CANCELLATION_OVER_WRITE
|
347
390
|
inline bool IsScheduleCancellationOverWriteEnabled() {
|
348
391
|
return IsExperimentEnabled<kExperimentIdScheduleCancellationOverWrite>();
|
@@ -166,7 +166,7 @@ static void queue_offload(grpc_core::Combiner* lock) {
|
|
166
166
|
}
|
167
167
|
|
168
168
|
bool grpc_combiner_continue_exec_ctx() {
|
169
|
-
|
169
|
+
GRPC_LATENT_SEE_SCOPE("grpc_combiner_continue_exec_ctx");
|
170
170
|
|
171
171
|
grpc_core::Combiner* lock =
|
172
172
|
grpc_core::ExecCtx::Get()->combiner_data()->active_combiner;
|
@@ -108,23 +108,17 @@ class Combiner;
|
|
108
108
|
/// since that implies a core re-entry outside of application
|
109
109
|
/// callbacks.
|
110
110
|
///
|
111
|
-
class GRPC_DLL ExecCtx
|
111
|
+
class GRPC_DLL ExecCtx {
|
112
112
|
public:
|
113
113
|
/// Default Constructor
|
114
114
|
|
115
|
-
ExecCtx()
|
116
|
-
: latent_see::ParentScope(GRPC_LATENT_SEE_METADATA("ExecCtx")),
|
117
|
-
flags_(GRPC_EXEC_CTX_FLAG_IS_FINISHED) {
|
115
|
+
ExecCtx() : flags_(GRPC_EXEC_CTX_FLAG_IS_FINISHED) {
|
118
116
|
Fork::IncExecCtxCount();
|
119
117
|
Set(this);
|
120
118
|
}
|
121
119
|
|
122
120
|
/// Parameterised Constructor
|
123
|
-
explicit ExecCtx(uintptr_t fl)
|
124
|
-
: ExecCtx(fl, GRPC_LATENT_SEE_METADATA("ExecCtx")) {}
|
125
|
-
|
126
|
-
explicit ExecCtx(uintptr_t fl, latent_see::Metadata* latent_see_metadata)
|
127
|
-
: latent_see::ParentScope(latent_see_metadata), flags_(fl) {
|
121
|
+
explicit ExecCtx(uintptr_t fl) : flags_(fl) {
|
128
122
|
if (!(GRPC_EXEC_CTX_FLAG_IS_INTERNAL_THREAD & flags_)) {
|
129
123
|
Fork::IncExecCtxCount();
|
130
124
|
}
|
@@ -40,9 +40,9 @@
|
|
40
40
|
#include <grpc/impl/grpc_types.h>
|
41
41
|
|
42
42
|
#include "src/core/lib/channel/channel_args.h"
|
43
|
-
#include "src/core/lib/iomgr/socket_mutator.h"
|
44
43
|
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
45
44
|
#include "src/core/lib/resource_quota/resource_quota.h"
|
45
|
+
#include "src/core/net/socket_mutator.h"
|
46
46
|
#include "src/core/util/useful.h"
|
47
47
|
|
48
48
|
namespace {
|
@@ -30,8 +30,8 @@
|
|
30
30
|
|
31
31
|
#include "src/core/lib/iomgr/error.h"
|
32
32
|
#include "src/core/lib/iomgr/resolved_address.h"
|
33
|
-
#include "src/core/lib/iomgr/socket_mutator.h"
|
34
33
|
#include "src/core/lib/resource_quota/resource_quota.h"
|
34
|
+
#include "src/core/net/socket_mutator.h"
|
35
35
|
#include "src/core/util/ref_counted_ptr.h"
|
36
36
|
|
37
37
|
#ifdef GRPC_LINUX_ERRQUEUE
|
@@ -44,7 +44,6 @@
|
|
44
44
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
45
45
|
#include "src/core/lib/iomgr/iomgr_internal.h"
|
46
46
|
#include "src/core/lib/iomgr/sockaddr.h"
|
47
|
-
#include "src/core/lib/iomgr/socket_mutator.h"
|
48
47
|
#include "src/core/lib/iomgr/socket_utils_posix.h"
|
49
48
|
#include "src/core/lib/iomgr/tcp_client_posix.h"
|
50
49
|
#include "src/core/lib/iomgr/tcp_posix.h"
|
@@ -52,6 +51,7 @@
|
|
52
51
|
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
53
52
|
#include "src/core/lib/iomgr/vsock.h"
|
54
53
|
#include "src/core/lib/slice/slice_internal.h"
|
54
|
+
#include "src/core/net/socket_mutator.h"
|
55
55
|
#include "src/core/util/crash.h"
|
56
56
|
#include "src/core/util/status_helper.h"
|
57
57
|
#include "src/core/util/string.h"
|
@@ -894,7 +894,7 @@ static void update_rcvlowat(grpc_tcp* tcp)
|
|
894
894
|
#define MAX_READ_IOVEC 64
|
895
895
|
static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
|
896
896
|
ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
|
897
|
-
|
897
|
+
GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("tcp_do_read");
|
898
898
|
GRPC_TRACE_LOG(tcp, INFO) << "TCP:" << tcp << " do_read";
|
899
899
|
struct msghdr msg;
|
900
900
|
struct iovec iov[MAX_READ_IOVEC];
|
@@ -1184,7 +1184,7 @@ static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
|
|
1184
1184
|
// of bytes sent.
|
1185
1185
|
ssize_t tcp_send(int fd, const struct msghdr* msg, int* saved_errno,
|
1186
1186
|
int additional_flags = 0) {
|
1187
|
-
|
1187
|
+
GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("tcp_send");
|
1188
1188
|
ssize_t sent_length;
|
1189
1189
|
do {
|
1190
1190
|
// TODO(klempner): Cork if this is a partial write
|
@@ -1375,7 +1375,7 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
|
|
1375
1375
|
/// messages from the queue.
|
1376
1376
|
///
|
1377
1377
|
static bool process_errors(grpc_tcp* tcp) {
|
1378
|
-
|
1378
|
+
GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("process_errors");
|
1379
1379
|
bool processed_err = false;
|
1380
1380
|
struct iovec iov;
|
1381
1381
|
iov.iov_base = nullptr;
|
@@ -565,7 +565,7 @@ class PromiseActivity final
|
|
565
565
|
}
|
566
566
|
|
567
567
|
void WakeupAsync(WakeupMask) final {
|
568
|
-
|
568
|
+
GRPC_LATENT_SEE_SCOPE("PromiseActivity::WakeupAsync");
|
569
569
|
wakeup_flow_.Begin(GRPC_LATENT_SEE_METADATA("Activity::Wakeup"));
|
570
570
|
if (!wakeup_scheduled_.exchange(true, std::memory_order_acq_rel)) {
|
571
571
|
// Can't safely run, so ask to run later.
|
@@ -590,7 +590,7 @@ class PromiseActivity final
|
|
590
590
|
// In response to Wakeup, run the Promise state machine again until it
|
591
591
|
// settles. Then check for completion, and if we have completed, call on_done.
|
592
592
|
void Step() ABSL_LOCKS_EXCLUDED(mu()) {
|
593
|
-
|
593
|
+
GRPC_LATENT_SEE_SCOPE("PromiseActivity::Step");
|
594
594
|
wakeup_flow_.End();
|
595
595
|
// Poll the promise until things settle out under a lock.
|
596
596
|
mu()->Lock();
|
@@ -27,7 +27,7 @@ namespace grpc_core::mpscpipe_detail {
|
|
27
27
|
Mpsc::~Mpsc() { Close(false); }
|
28
28
|
|
29
29
|
void Mpsc::Enqueue(Node* node) {
|
30
|
-
|
30
|
+
GRPC_LATENT_SEE_SCOPE("Mpsc::Enqueue");
|
31
31
|
auto actors = actors_.load(std::memory_order_relaxed);
|
32
32
|
while (true) {
|
33
33
|
if (actors == 0) {
|
@@ -67,7 +67,7 @@ void Mpsc::Enqueue(Node* node) {
|
|
67
67
|
}
|
68
68
|
|
69
69
|
StatusFlag Mpsc::UnbufferedImmediateSend(Node* node) {
|
70
|
-
|
70
|
+
GRPC_LATENT_SEE_SCOPE("Mpsc::UnbufferedImmediateSend");
|
71
71
|
auto actors = actors_.load(std::memory_order_relaxed);
|
72
72
|
while (true) {
|
73
73
|
if (actors == 0) {
|
@@ -120,7 +120,7 @@ channelz::PropertyList Mpsc::PollNextChannelzProperties() const {
|
|
120
120
|
}
|
121
121
|
|
122
122
|
Poll<ValueOrFailure<Mpsc::Node*>> Mpsc::PollNext() {
|
123
|
-
|
123
|
+
GRPC_LATENT_SEE_SCOPE("Mpsc::Next");
|
124
124
|
Node* accepted_head = accepted_head_;
|
125
125
|
if (accepted_head != nullptr) {
|
126
126
|
accepted_head_ = accepted_head->spsc_next_;
|
@@ -150,7 +150,7 @@ Poll<ValueOrFailure<Mpsc::Node*>> Mpsc::PollNext() {
|
|
150
150
|
}
|
151
151
|
|
152
152
|
bool Mpsc::AcceptNode(Node* node) {
|
153
|
-
|
153
|
+
GRPC_LATENT_SEE_SCOPE("Mpsc::AcceptNode");
|
154
154
|
DCHECK_NE(node, nullptr);
|
155
155
|
if (node->state_.fetch_and(255 - Node::kBlockedState,
|
156
156
|
std::memory_order_relaxed) &
|
@@ -163,7 +163,7 @@ bool Mpsc::AcceptNode(Node* node) {
|
|
163
163
|
}
|
164
164
|
|
165
165
|
bool Mpsc::CheckActiveTokens() {
|
166
|
-
|
166
|
+
GRPC_LATENT_SEE_SCOPE("Mpsc::CheckActiveTokens");
|
167
167
|
// First step: see if the active token count is lower than max_queued_.
|
168
168
|
// If it's not, we do not supply any nodes.
|
169
169
|
auto active_tokens = active_tokens_.load(std::memory_order_relaxed);
|
@@ -189,7 +189,7 @@ bool Mpsc::CheckActiveTokens() {
|
|
189
189
|
}
|
190
190
|
|
191
191
|
void Mpsc::DrainMpsc() {
|
192
|
-
|
192
|
+
GRPC_LATENT_SEE_SCOPE("Mpsc::DrainMpsc");
|
193
193
|
#ifndef NDEBUG
|
194
194
|
DCHECK(!drained);
|
195
195
|
drained = true;
|
@@ -213,7 +213,7 @@ void Mpsc::DrainMpsc() {
|
|
213
213
|
}
|
214
214
|
|
215
215
|
Poll<Mpsc::Node*> Mpsc::Dequeue() {
|
216
|
-
|
216
|
+
GRPC_LATENT_SEE_SCOPE("Mpsc::Dequeue");
|
217
217
|
Node* tail = tail_;
|
218
218
|
uintptr_t next = tail->next_.load(std::memory_order_acquire);
|
219
219
|
retry_all:
|
@@ -304,7 +304,7 @@ void Mpsc::PushStub() {
|
|
304
304
|
}
|
305
305
|
|
306
306
|
Mpsc::Node* Mpsc::DequeueImmediate() {
|
307
|
-
|
307
|
+
GRPC_LATENT_SEE_SCOPE("Mpsc::DequeueImmediate");
|
308
308
|
Node* tail = tail_;
|
309
309
|
uintptr_t next = tail->next_.load(std::memory_order_acquire);
|
310
310
|
if (tail == &stub_) {
|
@@ -155,7 +155,7 @@ Party::Participant::~Participant() {
|
|
155
155
|
// Party::SpawnSerializer
|
156
156
|
|
157
157
|
bool Party::SpawnSerializer::PollParticipantPromise() {
|
158
|
-
|
158
|
+
GRPC_LATENT_SEE_SCOPE("SpawnSerializer::PollParticipantPromise");
|
159
159
|
if (active_ == nullptr) {
|
160
160
|
active_ = next_.Pop().value_or(nullptr);
|
161
161
|
}
|
@@ -278,7 +278,7 @@ void Party::ForceImmediateRepoll(WakeupMask mask) {
|
|
278
278
|
}
|
279
279
|
|
280
280
|
void Party::RunLockedAndUnref(Party* party, uint64_t prev_state) {
|
281
|
-
|
281
|
+
GRPC_LATENT_SEE_SCOPE("Party::RunLocked");
|
282
282
|
#ifdef GRPC_MAXIMIZE_THREADYNESS
|
283
283
|
Thread thd(
|
284
284
|
"RunParty",
|
@@ -305,7 +305,7 @@ void Party::RunLockedAndUnref(Party* party, uint64_t prev_state) {
|
|
305
305
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void Run() {
|
306
306
|
g_run_state = this;
|
307
307
|
do {
|
308
|
-
|
308
|
+
GRPC_LATENT_SEE_SCOPE("run_one_party");
|
309
309
|
CHECK(first.party != nullptr);
|
310
310
|
first.party->RunPartyAndUnref(first.prev_state);
|
311
311
|
first = std::exchange(next, PartyWakeup{});
|
@@ -342,9 +342,9 @@ void Party::RunLockedAndUnref(Party* party, uint64_t prev_state) {
|
|
342
342
|
auto* event_engine =
|
343
343
|
arena->GetContext<grpc_event_engine::experimental::EventEngine>();
|
344
344
|
CHECK(event_engine != nullptr) << "; " << GRPC_DUMP_ARGS(party, arena);
|
345
|
-
|
345
|
+
GRPC_LATENT_SEE_SCOPE("offload_one_party");
|
346
346
|
event_engine->Run([wakeup]() {
|
347
|
-
|
347
|
+
GRPC_LATENT_SEE_SCOPE("Party::RunLocked offload");
|
348
348
|
ExecCtx exec_ctx;
|
349
349
|
RunState{wakeup}.Run();
|
350
350
|
});
|
@@ -478,7 +478,7 @@ uint64_t Party::NextAllocationMask(uint64_t current_allocation_mask) {
|
|
478
478
|
#endif
|
479
479
|
|
480
480
|
size_t Party::AddParticipant(Participant* participant) {
|
481
|
-
|
481
|
+
GRPC_LATENT_SEE_SCOPE("Party::AddParticipant");
|
482
482
|
uint64_t state = state_.load(std::memory_order_acquire);
|
483
483
|
uint64_t allocated;
|
484
484
|
size_t slot;
|
@@ -544,7 +544,7 @@ void Party::WakeupAsync(WakeupMask wakeup_mask) {
|
|
544
544
|
wakeup_mask_ |= wakeup_mask;
|
545
545
|
arena_->GetContext<grpc_event_engine::experimental::EventEngine>()->Run(
|
546
546
|
[this, prev_state]() {
|
547
|
-
|
547
|
+
GRPC_LATENT_SEE_SCOPE("Party::WakeupAsync");
|
548
548
|
ExecCtx exec_ctx;
|
549
549
|
RunLockedAndUnref(this, prev_state);
|
550
550
|
});
|
@@ -436,7 +436,7 @@ class Party : public Activity, private Wakeable {
|
|
436
436
|
}
|
437
437
|
|
438
438
|
bool PollParticipantPromise() override {
|
439
|
-
|
439
|
+
GRPC_LATENT_SEE_SCOPE(TypeName<SuppliedFactory>());
|
440
440
|
if (!started_) {
|
441
441
|
auto p = factory_.Make();
|
442
442
|
Destruct(&factory_);
|
@@ -508,7 +508,7 @@ class Party : public Activity, private Wakeable {
|
|
508
508
|
|
509
509
|
// Inside party poll: drive from factory -> promise -> result
|
510
510
|
bool PollParticipantPromise() override {
|
511
|
-
|
511
|
+
GRPC_LATENT_SEE_SCOPE(TypeName<SuppliedFactory>());
|
512
512
|
switch (state_.load(std::memory_order_relaxed)) {
|
513
513
|
case State::kFactory: {
|
514
514
|
auto p = factory_.Make();
|
@@ -623,7 +623,7 @@ class Party : public Activity, private Wakeable {
|
|
623
623
|
|
624
624
|
// Wakeable implementation
|
625
625
|
void Wakeup(WakeupMask wakeup_mask) final {
|
626
|
-
|
626
|
+
GRPC_LATENT_SEE_SCOPE("Party::Wakeup");
|
627
627
|
if (Activity::current() == this) {
|
628
628
|
wakeup_mask_ |= wakeup_mask;
|
629
629
|
Unref();
|
@@ -635,7 +635,7 @@ class Party : public Activity, private Wakeable {
|
|
635
635
|
template <bool kReffed>
|
636
636
|
GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void WakeupFromState(
|
637
637
|
uint64_t cur_state, WakeupMask wakeup_mask) {
|
638
|
-
|
638
|
+
GRPC_LATENT_SEE_SCOPE("Party::WakeupFromState");
|
639
639
|
DCHECK_NE(wakeup_mask & kWakeupMask, 0u)
|
640
640
|
<< "Wakeup mask must be non-zero: " << wakeup_mask;
|
641
641
|
while (true) {
|
data/src/core/lib/promise/poll.h
CHANGED
@@ -270,6 +270,16 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline Poll<T> poll_cast(U poll) {
|
|
270
270
|
return PollCastImpl<T, U>::Cast(std::move(poll));
|
271
271
|
}
|
272
272
|
|
273
|
+
template <typename T>
|
274
|
+
bool IsPending(const T&) {
|
275
|
+
return false;
|
276
|
+
}
|
277
|
+
|
278
|
+
template <typename T>
|
279
|
+
bool IsPending(const Poll<T>& poll) {
|
280
|
+
return poll.pending();
|
281
|
+
}
|
282
|
+
|
273
283
|
// Convert a poll to a string
|
274
284
|
template <typename T, typename F>
|
275
285
|
std::string PollToString(
|
@@ -32,6 +32,8 @@
|
|
32
32
|
#include "absl/log/log.h"
|
33
33
|
#include "absl/status/status.h"
|
34
34
|
#include "absl/strings/str_cat.h"
|
35
|
+
#include "src/core/channelz/channelz.h"
|
36
|
+
#include "src/core/channelz/property_list.h"
|
35
37
|
#include "src/core/lib/debug/trace.h"
|
36
38
|
#include "src/core/lib/promise/exec_ctx_wakeup_scheduler.h"
|
37
39
|
#include "src/core/lib/promise/loop.h"
|
@@ -407,6 +409,20 @@ grpc_slice GrpcMemoryAllocatorImpl::MakeSlice(MemoryRequest request) {
|
|
407
409
|
return slice;
|
408
410
|
}
|
409
411
|
|
412
|
+
void GrpcMemoryAllocatorImpl::FillChannelzProperties(
|
413
|
+
channelz::PropertyList& list) {
|
414
|
+
list.Set("free_bytes", free_bytes_.load(std::memory_order_relaxed))
|
415
|
+
.Set("taken_bytes", taken_bytes_.load(std::memory_order_relaxed))
|
416
|
+
.Set("chosen_shard_idx",
|
417
|
+
chosen_shard_idx_.load(std::memory_order_relaxed))
|
418
|
+
.Set("donate_back_period", donate_back_.period());
|
419
|
+
donate_back_.Interrupt([&list](Duration so_far) {
|
420
|
+
list.Set("donate_back_period_expired", so_far);
|
421
|
+
});
|
422
|
+
MutexLock lock(&reclaimer_mu_);
|
423
|
+
list.Set("shutdown", shutdown_);
|
424
|
+
}
|
425
|
+
|
410
426
|
//
|
411
427
|
// BasicMemoryQuota
|
412
428
|
//
|
@@ -431,7 +447,11 @@ class BasicMemoryQuota::WaitForSweepPromise {
|
|
431
447
|
uint64_t token_;
|
432
448
|
};
|
433
449
|
|
434
|
-
BasicMemoryQuota::BasicMemoryQuota(
|
450
|
+
BasicMemoryQuota::BasicMemoryQuota(
|
451
|
+
RefCountedPtr<channelz::ResourceQuotaNode> channelz_node)
|
452
|
+
: channelz::DataSource(channelz_node) {
|
453
|
+
channelz::DataSource::SourceConstructed();
|
454
|
+
}
|
435
455
|
|
436
456
|
void BasicMemoryQuota::Start() {
|
437
457
|
auto self = shared_from_this();
|
@@ -471,7 +491,7 @@ void BasicMemoryQuota::Start() {
|
|
471
491
|
if (GRPC_TRACE_FLAG_ENABLED(resource_quota)) {
|
472
492
|
double free = std::max(intptr_t{0}, self->free_bytes_.load());
|
473
493
|
size_t quota_size = self->quota_size_.load();
|
474
|
-
LOG(INFO) << "RQ: " << self->
|
494
|
+
LOG(INFO) << "RQ: " << self->name() << " perform "
|
475
495
|
<< std::get<0>(arg)
|
476
496
|
<< " reclamation. Available free bytes: " << free
|
477
497
|
<< ", total quota_size: " << quota_size;
|
@@ -555,7 +575,7 @@ void BasicMemoryQuota::FinishReclamation(uint64_t token, Waker waker) {
|
|
555
575
|
if (GRPC_TRACE_FLAG_ENABLED(resource_quota)) {
|
556
576
|
double free = std::max(intptr_t{0}, free_bytes_.load());
|
557
577
|
size_t quota_size = quota_size_.load();
|
558
|
-
LOG(INFO) << "RQ: " <<
|
578
|
+
LOG(INFO) << "RQ: " << name()
|
559
579
|
<< " reclamation complete. Available free bytes: " << free
|
560
580
|
<< ", total quota_size: " << quota_size;
|
561
581
|
}
|
@@ -678,6 +698,44 @@ BasicMemoryQuota::PressureInfo BasicMemoryQuota::GetPressureInfo() {
|
|
678
698
|
return pressure_info;
|
679
699
|
}
|
680
700
|
|
701
|
+
void BasicMemoryQuota::AddData(channelz::DataSink sink) {
|
702
|
+
sink.AddData(
|
703
|
+
"memory_quota",
|
704
|
+
channelz::PropertyList()
|
705
|
+
.Set("free_bytes", free_bytes_.load(std::memory_order_relaxed))
|
706
|
+
.Set("quota_size", quota_size_.load(std::memory_order_relaxed))
|
707
|
+
.Merge(pressure_tracker_.ChannelzProperties())
|
708
|
+
.Set("allocators",
|
709
|
+
[this]() {
|
710
|
+
channelz::PropertyTable table;
|
711
|
+
for (auto& shard : small_allocators_.shards) {
|
712
|
+
MutexLock l(&shard.shard_mu);
|
713
|
+
size_t i = 0;
|
714
|
+
for (auto& allocator : shard.allocators) {
|
715
|
+
i++;
|
716
|
+
channelz::PropertyList list;
|
717
|
+
list.Set("shard", absl::StrCat("small", i));
|
718
|
+
allocator->FillChannelzProperties(list);
|
719
|
+
table.AppendRow(std::move(list));
|
720
|
+
}
|
721
|
+
}
|
722
|
+
for (auto& shard : big_allocators_.shards) {
|
723
|
+
MutexLock l(&shard.shard_mu);
|
724
|
+
size_t i = 0;
|
725
|
+
for (auto& allocator : shard.allocators) {
|
726
|
+
i++;
|
727
|
+
channelz::PropertyList list;
|
728
|
+
list.Set("shard", absl::StrCat("big", i));
|
729
|
+
allocator->FillChannelzProperties(list);
|
730
|
+
table.AppendRow(std::move(list));
|
731
|
+
}
|
732
|
+
}
|
733
|
+
return table;
|
734
|
+
}())
|
735
|
+
.Set("reclamation_counter",
|
736
|
+
reclamation_counter_.load(std::memory_order_relaxed)));
|
737
|
+
}
|
738
|
+
|
681
739
|
//
|
682
740
|
// PressureTracker
|
683
741
|
//
|
@@ -789,6 +847,35 @@ double PressureTracker::AddSampleAndGetControlValue(double sample) {
|
|
789
847
|
return report_.load(std::memory_order_relaxed);
|
790
848
|
}
|
791
849
|
|
850
|
+
channelz::PropertyList PressureController::ChannelzProperties() const {
|
851
|
+
return channelz::PropertyList()
|
852
|
+
.Set("ticks_same_pressure", ticks_same_)
|
853
|
+
.Set("max_ticks_same_pressure", max_ticks_same_)
|
854
|
+
.Set("max_pressure_reduction_per_tick", max_reduction_per_tick_ * 0.001)
|
855
|
+
.Set("last_pressure_was_low", last_was_low_)
|
856
|
+
.Set("min_pressure", min_)
|
857
|
+
.Set("max_pressure", max_)
|
858
|
+
.Set("last_control", last_control_);
|
859
|
+
}
|
860
|
+
|
861
|
+
channelz::PropertyList PressureTracker::ChannelzProperties() {
|
862
|
+
return channelz::PropertyList()
|
863
|
+
.Set("max_pressure_this_round",
|
864
|
+
max_this_round_.load(std::memory_order_relaxed))
|
865
|
+
.Set("pressure_report", report_.load(std::memory_order_relaxed))
|
866
|
+
.Merge([this]() {
|
867
|
+
channelz::PropertyList list;
|
868
|
+
if (!update_.Interrupt([&](Duration duration) {
|
869
|
+
list = controller_.ChannelzProperties();
|
870
|
+
list.Set("time_since_last_pressure_update", duration);
|
871
|
+
list.Set("pressure_update_period", update_.period());
|
872
|
+
})) {
|
873
|
+
list.Set("pressure_controller_busy", true)
|
874
|
+
.Set("pressure_update_period", update_.period());
|
875
|
+
}
|
876
|
+
return list;
|
877
|
+
}());
|
878
|
+
}
|
792
879
|
} // namespace memory_quota_detail
|
793
880
|
|
794
881
|
//
|