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.
Files changed (368) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +83 -41
  3. data/include/grpc/credentials.h +7 -1
  4. data/src/core/call/client_call.cc +4 -4
  5. data/src/core/call/filter_fusion.h +1230 -0
  6. data/src/core/call/metadata.cc +22 -0
  7. data/src/core/call/metadata.h +24 -2
  8. data/src/core/channelz/channelz.cc +10 -17
  9. data/src/core/channelz/channelz.h +58 -19
  10. data/src/core/channelz/channelz_registry.cc +0 -162
  11. data/src/core/channelz/channelz_registry.h +14 -7
  12. data/src/core/channelz/property_list.cc +19 -23
  13. data/src/core/channelz/property_list.h +3 -1
  14. data/src/core/channelz/v2tov1/convert.cc +683 -0
  15. data/src/core/channelz/v2tov1/convert.h +58 -0
  16. data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
  17. data/src/core/channelz/v2tov1/legacy_api.h +32 -0
  18. data/src/core/channelz/v2tov1/property_list.cc +118 -0
  19. data/src/core/channelz/v2tov1/property_list.h +52 -0
  20. data/src/core/client_channel/client_channel_filter.cc +5 -4
  21. data/src/core/client_channel/client_channel_filter.h +2 -2
  22. data/src/core/client_channel/client_channel_internal.h +2 -1
  23. data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
  24. data/src/core/client_channel/subchannel.cc +14 -6
  25. data/src/core/client_channel/subchannel.h +2 -0
  26. data/src/core/config/core_configuration.cc +3 -1
  27. data/src/core/config/core_configuration.h +12 -0
  28. data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
  29. data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
  30. data/src/core/credentials/transport/channel_creds_registry_init.cc +3 -1
  31. data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -1
  32. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
  33. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
  34. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
  35. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
  36. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
  37. data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
  38. data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
  39. data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
  40. data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
  41. data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
  42. data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
  43. data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
  44. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
  45. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
  46. data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
  47. data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
  48. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
  49. data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
  50. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
  51. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
  52. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +3 -2
  53. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  54. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
  55. data/src/core/ext/transport/chttp2/transport/frame.cc +89 -6
  56. data/src/core/ext/transport/chttp2/transport/frame.h +38 -0
  57. data/src/core/ext/transport/chttp2/transport/header_assembler.h +5 -14
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
  59. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +294 -78
  60. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +128 -9
  61. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
  62. data/src/core/ext/transport/chttp2/transport/http2_settings.h +52 -35
  63. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
  64. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
  65. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +81 -3
  66. data/src/core/ext/transport/chttp2/transport/http2_transport.h +12 -1
  67. data/src/core/ext/transport/chttp2/transport/message_assembler.h +2 -2
  68. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
  69. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +2 -1
  70. data/src/core/ext/transport/chttp2/transport/ping_promise.h +22 -5
  71. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
  72. data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
  73. data/src/core/ext/transport/chttp2/transport/writing.cc +6 -4
  74. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
  75. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
  76. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
  77. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +142 -54
  78. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +18 -14
  79. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +2 -2
  80. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
  81. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
  82. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +86 -88
  83. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +2 -2
  84. data/src/core/filter/auth/auth_filters.h +2 -2
  85. data/src/core/filter/fused_filters.cc +154 -0
  86. data/src/core/handshaker/security/legacy_secure_endpoint.cc +1 -1
  87. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
  88. data/src/core/handshaker/security/secure_endpoint.cc +28 -13
  89. data/src/core/handshaker/security/secure_endpoint.h +8 -0
  90. data/src/core/lib/channel/promise_based_filter.cc +15 -25
  91. data/src/core/lib/channel/promise_based_filter.h +6 -5
  92. data/src/core/lib/event_engine/ares_resolver.h +3 -1
  93. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +9 -5
  94. data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -1
  95. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
  96. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
  97. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
  98. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +12 -0
  99. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +12 -10
  100. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +6 -4
  101. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +15 -14
  102. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -5
  103. data/src/core/lib/event_engine/posix_engine/event_poller.h +0 -8
  104. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -5
  105. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
  106. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +1 -0
  107. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
  108. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
  109. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +2 -2
  110. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +188 -199
  111. data/src/core/lib/event_engine/posix_engine/posix_engine.h +30 -45
  112. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -1
  113. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
  114. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +2 -1
  115. data/src/core/lib/experiments/experiments.cc +120 -6
  116. data/src/core/lib/experiments/experiments.h +46 -3
  117. data/src/core/lib/iomgr/combiner.cc +1 -1
  118. data/src/core/lib/iomgr/exec_ctx.h +3 -9
  119. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  120. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
  121. data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
  122. data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
  123. data/src/core/lib/iomgr/tcp_posix.cc +3 -3
  124. data/src/core/lib/promise/activity.h +2 -2
  125. data/src/core/lib/promise/mpsc.cc +8 -8
  126. data/src/core/lib/promise/party.cc +7 -7
  127. data/src/core/lib/promise/party.h +4 -4
  128. data/src/core/lib/promise/poll.h +10 -0
  129. data/src/core/lib/resource_quota/memory_quota.cc +90 -3
  130. data/src/core/lib/resource_quota/memory_quota.h +20 -9
  131. data/src/core/lib/resource_quota/periodic_update.cc +14 -0
  132. data/src/core/lib/resource_quota/periodic_update.h +8 -0
  133. data/src/core/lib/resource_quota/resource_quota.cc +15 -4
  134. data/src/core/lib/resource_quota/resource_quota.h +3 -0
  135. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
  136. data/src/core/lib/surface/call.cc +5 -5
  137. data/src/core/lib/surface/call.h +6 -5
  138. data/src/core/lib/surface/completion_queue.cc +2 -4
  139. data/src/core/lib/surface/filter_stack_call.cc +1 -1
  140. data/src/core/lib/surface/version.cc +2 -2
  141. data/src/core/lib/transport/promise_endpoint.cc +2 -2
  142. data/src/core/lib/transport/promise_endpoint.h +3 -3
  143. data/src/core/load_balancing/endpoint_list.cc +29 -2
  144. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
  145. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
  146. data/src/core/load_balancing/pick_first/pick_first.cc +12 -5
  147. data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
  148. data/src/core/net/socket_mutator.cc +19 -0
  149. data/src/core/net/socket_mutator.h +25 -0
  150. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
  151. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
  152. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
  153. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
  154. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
  155. data/src/core/resolver/xds/xds_dependency_manager.cc +1 -1
  156. data/src/core/server/server.cc +1 -1
  157. data/src/core/server/server_call_tracer_filter.cc +0 -66
  158. data/src/core/server/server_call_tracer_filter.h +64 -0
  159. data/src/core/server/server_config_selector_filter.cc +1 -1
  160. data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
  161. data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
  162. data/src/core/telemetry/call_tracer.cc +20 -14
  163. data/src/core/telemetry/call_tracer.h +22 -17
  164. data/src/core/telemetry/metrics.h +8 -8
  165. data/src/core/telemetry/stats_data.cc +151 -151
  166. data/src/core/telemetry/stats_data.h +87 -87
  167. data/src/core/transport/auth_context.cc +20 -0
  168. data/src/core/transport/auth_context.h +4 -0
  169. data/src/core/transport/auth_context_comparator_registry.h +69 -0
  170. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
  171. data/src/core/tsi/ssl_transport_security.cc +202 -32
  172. data/src/core/tsi/ssl_transport_security.h +19 -10
  173. data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
  174. data/src/core/tsi/ssl_transport_security_utils.h +4 -0
  175. data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
  176. data/src/core/util/latent_see.cc +178 -146
  177. data/src/core/util/latent_see.h +245 -188
  178. data/src/core/util/single_set_ptr.h +5 -2
  179. data/src/core/util/useful.h +91 -0
  180. data/src/core/util/windows/directory_reader.cc +1 -0
  181. data/src/core/util/windows/thd.cc +1 -3
  182. data/src/core/util/work_serializer.cc +1 -1
  183. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
  184. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
  185. data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
  186. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  187. data/src/ruby/lib/grpc/version.rb +1 -1
  188. data/third_party/cares/cares/include/ares.h +925 -460
  189. data/third_party/cares/cares/include/ares_dns.h +86 -71
  190. data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
  191. data/third_party/cares/cares/include/ares_nameser.h +215 -189
  192. data/third_party/cares/cares/include/ares_version.h +37 -14
  193. data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
  194. data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
  195. data/third_party/cares/cares/src/lib/ares_android.c +216 -164
  196. data/third_party/cares/cares/src/lib/ares_android.h +25 -14
  197. data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
  198. data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
  199. data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
  200. data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
  201. data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
  202. data/third_party/cares/cares/src/lib/ares_data.c +93 -181
  203. data/third_party/cares/cares/src/lib/ares_data.h +50 -39
  204. data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
  205. data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
  206. data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
  207. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
  208. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
  209. data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
  210. data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
  211. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
  212. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
  213. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
  214. data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
  215. data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
  216. data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
  217. data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
  218. data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
  219. data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
  220. data/third_party/cares/cares/src/lib/ares_options.c +418 -332
  221. data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
  222. data/third_party/cares/cares/src/lib/ares_private.h +558 -356
  223. data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
  224. data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
  225. data/third_party/cares/cares/src/lib/ares_query.c +126 -121
  226. data/third_party/cares/cares/src/lib/ares_search.c +564 -262
  227. data/third_party/cares/cares/src/lib/ares_send.c +264 -93
  228. data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
  229. data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
  230. data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
  231. data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
  232. data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
  233. data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
  234. data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
  235. data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
  236. data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
  237. data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
  238. data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
  239. data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
  240. data/third_party/cares/cares/src/lib/ares_version.c +29 -4
  241. data/third_party/cares/cares/src/lib/config-dos.h +88 -89
  242. data/third_party/cares/cares/src/lib/config-win32.h +122 -77
  243. data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
  244. data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
  245. data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
  246. data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
  247. data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
  248. data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
  249. data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
  250. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
  251. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
  252. data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
  253. data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
  254. data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
  255. data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
  256. data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
  257. data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
  258. data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
  259. data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
  260. data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
  261. data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
  262. data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
  263. data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
  264. data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
  265. data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
  266. data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
  267. data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
  268. data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
  269. data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
  270. data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
  271. data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
  272. data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
  273. data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
  274. data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
  275. data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
  276. data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
  277. data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
  278. data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
  279. data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
  280. data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
  281. data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
  282. data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
  283. data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
  284. data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
  285. data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
  286. data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
  287. data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
  288. data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
  289. data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
  290. data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
  291. data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
  292. data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
  293. data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
  294. data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
  295. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
  296. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
  297. data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
  298. data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
  299. data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
  300. data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
  301. data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
  302. data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
  303. data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
  304. data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
  305. data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
  306. data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
  307. data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
  308. data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
  309. data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
  310. data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
  311. data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
  312. data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
  313. data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
  314. data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
  315. data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
  316. data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
  317. data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
  318. data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
  319. data/third_party/cares/cares/src/lib/windows_port.c +16 -9
  320. metadata +121 -49
  321. data/src/core/util/ring_buffer.h +0 -122
  322. data/third_party/cares/cares/include/ares_rules.h +0 -125
  323. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
  324. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
  325. data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
  326. data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
  327. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
  328. data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
  329. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
  330. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
  331. data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
  332. data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
  333. data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
  334. data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
  335. data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
  336. data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
  337. data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
  338. data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
  339. data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
  340. data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
  341. data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
  342. data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
  343. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
  344. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
  345. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
  346. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
  347. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
  348. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
  349. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
  350. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
  351. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
  352. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
  353. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
  354. data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
  355. data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
  356. data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
  357. data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
  358. data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
  359. data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
  360. data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
  361. data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
  362. data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
  363. data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
  364. data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
  365. data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
  366. data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
  367. data/third_party/cares/cares/src/lib/setup_once.h +0 -554
  368. 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
- inline bool IsServerGlobalCallbacksOwnershipEnabled() { return false; }
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
- inline bool IsServerGlobalCallbacksOwnershipEnabled() { return false; }
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
- inline bool IsServerGlobalCallbacksOwnershipEnabled() { return false; }
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
- GRPC_LATENT_SEE_PARENT_SCOPE("grpc_combiner_continue_exec_ctx");
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 : public latent_see::ParentScope {
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
  }
@@ -16,7 +16,7 @@
16
16
  //
17
17
  //
18
18
 
19
- #include "src/core/lib/iomgr/socket_mutator.h"
19
+ #include "src/core/net/socket_mutator.h"
20
20
 
21
21
  #include <grpc/impl/grpc_types.h>
22
22
  #include <grpc/support/port_platform.h>
@@ -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
- GRPC_LATENT_SEE_INNER_SCOPE("tcp_do_read");
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
- GRPC_LATENT_SEE_INNER_SCOPE("tcp_send");
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
- GRPC_LATENT_SEE_INNER_SCOPE("process_errors");
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
- GRPC_LATENT_SEE_INNER_SCOPE("PromiseActivity::WakeupAsync");
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
- GRPC_LATENT_SEE_PARENT_SCOPE("PromiseActivity::Step");
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
- GRPC_LATENT_SEE_INNER_SCOPE("Mpsc::Enqueue");
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
- GRPC_LATENT_SEE_INNER_SCOPE("Mpsc::UnbufferedImmediateSend");
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
- GRPC_LATENT_SEE_INNER_SCOPE("Mpsc::Next");
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
- GRPC_LATENT_SEE_INNER_SCOPE("Mpsc::AcceptNode");
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
- GRPC_LATENT_SEE_INNER_SCOPE("Mpsc::CheckActiveTokens");
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
- GRPC_LATENT_SEE_INNER_SCOPE("Mpsc::DrainMpsc");
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
- GRPC_LATENT_SEE_INNER_SCOPE("Mpsc::Dequeue");
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
- GRPC_LATENT_SEE_INNER_SCOPE("Mpsc::DequeueImmediate");
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
- GRPC_LATENT_SEE_INNER_SCOPE("SpawnSerializer::PollParticipantPromise");
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
- GRPC_LATENT_SEE_PARENT_SCOPE("Party::RunLocked");
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
- GRPC_LATENT_SEE_INNER_SCOPE("run_one_party");
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
- GRPC_LATENT_SEE_INNER_SCOPE("offload_one_party");
345
+ GRPC_LATENT_SEE_SCOPE("offload_one_party");
346
346
  event_engine->Run([wakeup]() {
347
- GRPC_LATENT_SEE_PARENT_SCOPE("Party::RunLocked offload");
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
- GRPC_LATENT_SEE_INNER_SCOPE("Party::AddParticipant");
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
- GRPC_LATENT_SEE_PARENT_SCOPE("Party::WakeupAsync");
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
- GRPC_LATENT_SEE_INNER_SCOPE(TypeName<SuppliedFactory>());
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
- GRPC_LATENT_SEE_INNER_SCOPE(TypeName<SuppliedFactory>());
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
- GRPC_LATENT_SEE_INNER_SCOPE("Party::Wakeup");
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
- GRPC_LATENT_SEE_INNER_SCOPE("Party::WakeupFromState");
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) {
@@ -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(std::string name) : name_(std::move(name)) {}
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->name_ << " perform "
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: " << name_
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
  //