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
@@ -48,6 +48,13 @@
48
48
  #include "src/core/lib/event_engine/posix_engine/tcp_socket_utils.h"
49
49
  #endif // GRPC_POSIX_SOCKET_TCP
50
50
 
51
+ #if defined(GRPC_POSIX_SOCKET_TCP) && \
52
+ !defined(GRPC_DO_NOT_INSTANTIATE_POSIX_POLLER)
53
+ #define GRPC_PLATFORM_SUPPORTS_POSIX_POLLING true
54
+ #else
55
+ #define GRPC_PLATFORM_SUPPORTS_POSIX_POLLING false
56
+ #endif
57
+
51
58
  namespace grpc_event_engine::experimental {
52
59
 
53
60
  #ifdef GRPC_POSIX_SOCKET_TCP
@@ -94,38 +101,6 @@ class AsyncConnect {
94
101
  bool connect_cancelled_;
95
102
  };
96
103
 
97
- // A helper class to manager lifetime of the poller associated with the
98
- // posix EventEngine.
99
- class PosixEnginePollerManager
100
- : public grpc_event_engine::experimental::Scheduler {
101
- public:
102
- explicit PosixEnginePollerManager(std::shared_ptr<ThreadPool> executor);
103
- explicit PosixEnginePollerManager(
104
- std::shared_ptr<grpc_event_engine::experimental::PosixEventPoller>
105
- poller);
106
- grpc_event_engine::experimental::PosixEventPoller* Poller() const {
107
- return poller_.get();
108
- }
109
-
110
- ThreadPool* Executor() { return executor_.get(); }
111
-
112
- void Run(experimental::EventEngine::Closure* closure) override;
113
- void Run(absl::AnyInvocable<void()>) override;
114
-
115
- bool IsShuttingDown() {
116
- return poller_state_.load(std::memory_order_acquire) ==
117
- PollerState::kShuttingDown;
118
- }
119
- void TriggerShutdown();
120
-
121
- private:
122
- enum class PollerState { kExternal, kOk, kShuttingDown };
123
- std::shared_ptr<grpc_event_engine::experimental::PosixEventPoller> poller_;
124
- std::atomic<PollerState> poller_state_{PollerState::kOk};
125
- std::shared_ptr<ThreadPool> executor_;
126
- bool trigger_shutdown_called_;
127
- };
128
-
129
104
  #endif // GRPC_POSIX_SOCKET_TCP
130
105
 
131
106
  // An iomgr-based Posix EventEngine implementation.
@@ -219,14 +194,14 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport {
219
194
 
220
195
  PosixEventEngine();
221
196
 
222
- #ifdef GRPC_POSIX_SOCKET_TCP
197
+ #if GRPC_PLATFORM_SUPPORTS_POSIX_POLLING
223
198
  // Constructs an EventEngine which has a shared ownership of the poller. Use
224
199
  // the MakeTestOnlyPosixEventEngine static method to call this. Its expected
225
200
  // to be used only in tests.
226
201
  explicit PosixEventEngine(
227
202
  std::shared_ptr<grpc_event_engine::experimental::PosixEventPoller>
228
203
  poller);
229
- #endif // GRPC_POSIX_SOCKET_TCP
204
+ #endif // GRPC_PLATFORM_SUPPORTS_POSIX_POLLING
230
205
 
231
206
  EventEngine::TaskHandle RunAfterInternal(Duration when,
232
207
  absl::AnyInvocable<void()> cb);
@@ -258,30 +233,36 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport {
258
233
  grpc_core::Mutex mu_;
259
234
  TaskHandleSet known_handles_ ABSL_GUARDED_BY(mu_);
260
235
  std::atomic<intptr_t> aba_token_{0};
261
- #if GRPC_ENABLE_FORK_SUPPORT && GRPC_ARES == 1 && \
262
- defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
236
+ #if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
237
+
238
+ void RegisterAresResolverForFork(AresResolver* resolver);
239
+
240
+ #if GRPC_ENABLE_FORK_SUPPORT
263
241
  // A separate mutex to avoid deadlocks.
264
242
  grpc_core::Mutex resolver_handles_mu_;
265
243
  absl::InlinedVector<std::weak_ptr<AresResolver::ReinitHandle>, 16>
266
244
  resolver_handles_ ABSL_GUARDED_BY(resolver_handles_mu_);
267
- #endif // defined(GRPC_ENABLE_FORK_SUPPORT) && GRPC_ARES == 1 &&
268
- // defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
245
+ #endif // GRPC_ENABLE_FORK_SUPPORT
246
+ #endif // GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
269
247
  std::shared_ptr<ThreadPool> executor_;
270
248
 
271
- #if defined(GRPC_POSIX_SOCKET_TCP) && \
272
- !defined(GRPC_DO_NOT_INSTANTIATE_POSIX_POLLER)
249
+ #if GRPC_PLATFORM_SUPPORTS_POSIX_POLLING
273
250
 
274
251
  // RAII wrapper for a polling cycle. Starts a new one in ctor and stops
275
252
  // in dtor.
276
253
  class PollingCycle {
277
254
  public:
278
- explicit PollingCycle(PosixEnginePollerManager* poller_manager);
255
+ explicit PollingCycle(
256
+ std::shared_ptr<ThreadPool> executor,
257
+ std::shared_ptr<grpc_event_engine::experimental::PosixEventPoller>
258
+ poller);
279
259
  ~PollingCycle();
280
260
 
281
261
  private:
282
262
  void PollerWorkInternal();
283
263
 
284
- PosixEnginePollerManager* poller_manager_;
264
+ std::shared_ptr<ThreadPool> executor_;
265
+ std::shared_ptr<grpc_event_engine::experimental::PosixEventPoller> poller_;
285
266
  grpc_core::Mutex mu_;
286
267
  std::atomic_bool done_{false};
287
268
  int is_scheduled_ ABSL_GUARDED_BY(&mu_) = 0;
@@ -291,13 +272,17 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport {
291
272
  void SchedulePoller();
292
273
  void ResetPollCycle();
293
274
 
294
- PosixEnginePollerManager poller_manager_;
275
+ PosixEventPoller* GetPollerChecked() const {
276
+ CHECK_NE(poller_, nullptr);
277
+ return poller_.get();
278
+ }
279
+
280
+ std::shared_ptr<grpc_event_engine::experimental::PosixEventPoller> poller_;
295
281
 
296
282
  // Ensures there's ever only one of these.
297
283
  std::optional<PollingCycle> polling_cycle_ ABSL_GUARDED_BY(&mu_);
298
284
 
299
- #endif // defined(GRPC_POSIX_SOCKET_TCP) &&
300
- // !defined(GRPC_DO_NOT_INSTANTIATE_POSIX_POLLER)
285
+ #endif // GRPC_PLATFORM_SUPPORTS_POSIX_POLLING
301
286
 
302
287
  std::shared_ptr<TimerManager> timer_manager_;
303
288
  };
@@ -44,7 +44,7 @@
44
44
  #include "src/core/lib/event_engine/posix_engine/posix_interface.h"
45
45
  #include "src/core/lib/event_engine/posix_engine/tcp_socket_utils.h"
46
46
  #include "src/core/lib/event_engine/tcp_socket_utils.h"
47
- #include "src/core/lib/iomgr/socket_mutator.h"
47
+ #include "src/core/net/socket_mutator.h"
48
48
  #include "src/core/util/status_helper.h"
49
49
  #include "src/core/util/strerror.h"
50
50
  #include "src/core/util/time.h"
@@ -24,8 +24,8 @@
24
24
  #include <utility>
25
25
 
26
26
  #include "src/core/lib/iomgr/port.h"
27
- #include "src/core/lib/iomgr/socket_mutator.h"
28
27
  #include "src/core/lib/resource_quota/resource_quota.h"
28
+ #include "src/core/net/socket_mutator.h"
29
29
  #include "src/core/util/ref_counted_ptr.h"
30
30
 
31
31
  #ifdef GRPC_POSIX_SOCKET_UTILS_COMMON
@@ -18,7 +18,6 @@
18
18
 
19
19
  #if GRPC_ARES == 1 && defined(GRPC_WINDOWS_SOCKET_ARES_EV_DRIVER)
20
20
 
21
- #include <ares.h>
22
21
  #include <grpc/support/log_windows.h>
23
22
  #include <winsock2.h>
24
23
 
@@ -27,6 +26,8 @@
27
26
  #include "absl/status/status.h"
28
27
  #include "absl/strings/str_format.h"
29
28
  #include "src/core/lib/address_utils/sockaddr_utils.h"
29
+ // We pull in ares.h transitively here, ares.h is not self-contained
30
+ // w.r.t. windows headers though, so make sure pull them in above.
30
31
  #include "src/core/lib/event_engine/ares_resolver.h"
31
32
  #include "src/core/lib/event_engine/grpc_polled_fd.h"
32
33
  #include "src/core/lib/event_engine/windows/grpc_polled_fd_windows.h"
@@ -26,6 +26,12 @@ namespace {
26
26
  const char* const description_call_tracer_in_transport =
27
27
  "Transport directly passes byte counts to CallTracer.";
28
28
  const char* const additional_constraints_call_tracer_in_transport = "{}";
29
+ const char* const description_channelz_use_v2_for_v1_api =
30
+ "Use the v2 channelz API for the v1 channelz API.";
31
+ const char* const additional_constraints_channelz_use_v2_for_v1_api = "{}";
32
+ const char* const description_channelz_use_v2_for_v1_service =
33
+ "Use the v2 channelz service for the v1 channelz service.";
34
+ const char* const additional_constraints_channelz_use_v2_for_v1_service = "{}";
29
35
  const char* const description_chaotic_good_framing_layer =
30
36
  "Enable the chaotic good framing layer.";
31
37
  const char* const additional_constraints_chaotic_good_framing_layer = "{}";
@@ -76,6 +82,9 @@ const char* const additional_constraints_event_engine_secure_endpoint = "{}";
76
82
  const char* const description_free_large_allocator =
77
83
  "If set, return all free bytes from a \042big\042 allocator";
78
84
  const char* const additional_constraints_free_large_allocator = "{}";
85
+ const char* const description_fuse_filters =
86
+ "If set, individual filters are merged into fused filters";
87
+ const char* const additional_constraints_fuse_filters = "{}";
79
88
  const char* const description_keep_alive_ping_timer_batch =
80
89
  "Avoid explicitly cancelling the keepalive timer. Instead adjust the "
81
90
  "callback to re-schedule itself to the next ping interval.";
@@ -96,6 +105,13 @@ const char* const additional_constraints_multiping = "{}";
96
105
  const char* const description_pick_first_ignore_empty_updates =
97
106
  "Ignore empty resolutions in pick_first";
98
107
  const char* const additional_constraints_pick_first_ignore_empty_updates = "{}";
108
+ const char* const description_pipelined_read_secure_endpoint =
109
+ "Enable pipelined reads for EventEngine secure endpoints";
110
+ const char* const additional_constraints_pipelined_read_secure_endpoint = "{}";
111
+ const uint8_t required_experiments_pipelined_read_secure_endpoint[] = {
112
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
113
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener),
114
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineSecureEndpoint)};
99
115
  const char* const description_pollset_alternative =
100
116
  "Code outside iomgr that relies directly on pollsets will use non-pollset "
101
117
  "alternatives when enabled.";
@@ -124,6 +140,11 @@ const char* const description_promise_based_inproc_transport =
124
140
  const char* const additional_constraints_promise_based_inproc_transport = "{}";
125
141
  const char* const description_retry_in_callv3 = "Support retries with call-v3";
126
142
  const char* const additional_constraints_retry_in_callv3 = "{}";
143
+ const char* const description_rr_wrr_connect_from_random_index =
144
+ "RR and WRR LB policies start connecting from a random index in the "
145
+ "address list.";
146
+ const char* const additional_constraints_rr_wrr_connect_from_random_index =
147
+ "{}";
127
148
  const char* const description_schedule_cancellation_over_write =
128
149
  "Allow cancellation op to be scheduled over a write";
129
150
  const char* const additional_constraints_schedule_cancellation_over_write =
@@ -179,6 +200,13 @@ namespace grpc_core {
179
200
  const ExperimentMetadata g_experiment_metadata[] = {
180
201
  {"call_tracer_in_transport", description_call_tracer_in_transport,
181
202
  additional_constraints_call_tracer_in_transport, nullptr, 0, true, false},
203
+ {"channelz_use_v2_for_v1_api", description_channelz_use_v2_for_v1_api,
204
+ additional_constraints_channelz_use_v2_for_v1_api, nullptr, 0, false,
205
+ true},
206
+ {"channelz_use_v2_for_v1_service",
207
+ description_channelz_use_v2_for_v1_service,
208
+ additional_constraints_channelz_use_v2_for_v1_service, nullptr, 0, false,
209
+ true},
182
210
  {"chaotic_good_framing_layer", description_chaotic_good_framing_layer,
183
211
  additional_constraints_chaotic_good_framing_layer, nullptr, 0, true,
184
212
  false},
@@ -210,6 +238,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
210
238
  false},
211
239
  {"free_large_allocator", description_free_large_allocator,
212
240
  additional_constraints_free_large_allocator, nullptr, 0, false, true},
241
+ {"fuse_filters", description_fuse_filters,
242
+ additional_constraints_fuse_filters, nullptr, 0, false, false},
213
243
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
214
244
  additional_constraints_keep_alive_ping_timer_batch, nullptr, 0, false,
215
245
  true},
@@ -227,6 +257,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
227
257
  description_pick_first_ignore_empty_updates,
228
258
  additional_constraints_pick_first_ignore_empty_updates, nullptr, 0, false,
229
259
  true},
260
+ {"pipelined_read_secure_endpoint",
261
+ description_pipelined_read_secure_endpoint,
262
+ additional_constraints_pipelined_read_secure_endpoint,
263
+ required_experiments_pipelined_read_secure_endpoint, 3, false, false},
230
264
  {"pollset_alternative", description_pollset_alternative,
231
265
  additional_constraints_pollset_alternative,
232
266
  required_experiments_pollset_alternative, 2, false, false},
@@ -247,6 +281,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
247
281
  false},
248
282
  {"retry_in_callv3", description_retry_in_callv3,
249
283
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
284
+ {"rr_wrr_connect_from_random_index",
285
+ description_rr_wrr_connect_from_random_index,
286
+ additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, false,
287
+ true},
250
288
  {"schedule_cancellation_over_write",
251
289
  description_schedule_cancellation_over_write,
252
290
  additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
@@ -261,8 +299,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
261
299
  required_experiments_secure_endpoint_offload_large_writes, 3, false, true},
262
300
  {"server_global_callbacks_ownership",
263
301
  description_server_global_callbacks_ownership,
264
- additional_constraints_server_global_callbacks_ownership, nullptr, 0,
265
- false, true},
302
+ additional_constraints_server_global_callbacks_ownership, nullptr, 0, true,
303
+ true},
266
304
  {"shard_global_connection_pool", description_shard_global_connection_pool,
267
305
  additional_constraints_shard_global_connection_pool, nullptr, 0, true,
268
306
  true},
@@ -291,6 +329,12 @@ namespace {
291
329
  const char* const description_call_tracer_in_transport =
292
330
  "Transport directly passes byte counts to CallTracer.";
293
331
  const char* const additional_constraints_call_tracer_in_transport = "{}";
332
+ const char* const description_channelz_use_v2_for_v1_api =
333
+ "Use the v2 channelz API for the v1 channelz API.";
334
+ const char* const additional_constraints_channelz_use_v2_for_v1_api = "{}";
335
+ const char* const description_channelz_use_v2_for_v1_service =
336
+ "Use the v2 channelz service for the v1 channelz service.";
337
+ const char* const additional_constraints_channelz_use_v2_for_v1_service = "{}";
294
338
  const char* const description_chaotic_good_framing_layer =
295
339
  "Enable the chaotic good framing layer.";
296
340
  const char* const additional_constraints_chaotic_good_framing_layer = "{}";
@@ -341,6 +385,9 @@ const char* const additional_constraints_event_engine_secure_endpoint = "{}";
341
385
  const char* const description_free_large_allocator =
342
386
  "If set, return all free bytes from a \042big\042 allocator";
343
387
  const char* const additional_constraints_free_large_allocator = "{}";
388
+ const char* const description_fuse_filters =
389
+ "If set, individual filters are merged into fused filters";
390
+ const char* const additional_constraints_fuse_filters = "{}";
344
391
  const char* const description_keep_alive_ping_timer_batch =
345
392
  "Avoid explicitly cancelling the keepalive timer. Instead adjust the "
346
393
  "callback to re-schedule itself to the next ping interval.";
@@ -361,6 +408,13 @@ const char* const additional_constraints_multiping = "{}";
361
408
  const char* const description_pick_first_ignore_empty_updates =
362
409
  "Ignore empty resolutions in pick_first";
363
410
  const char* const additional_constraints_pick_first_ignore_empty_updates = "{}";
411
+ const char* const description_pipelined_read_secure_endpoint =
412
+ "Enable pipelined reads for EventEngine secure endpoints";
413
+ const char* const additional_constraints_pipelined_read_secure_endpoint = "{}";
414
+ const uint8_t required_experiments_pipelined_read_secure_endpoint[] = {
415
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
416
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener),
417
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineSecureEndpoint)};
364
418
  const char* const description_pollset_alternative =
365
419
  "Code outside iomgr that relies directly on pollsets will use non-pollset "
366
420
  "alternatives when enabled.";
@@ -389,6 +443,11 @@ const char* const description_promise_based_inproc_transport =
389
443
  const char* const additional_constraints_promise_based_inproc_transport = "{}";
390
444
  const char* const description_retry_in_callv3 = "Support retries with call-v3";
391
445
  const char* const additional_constraints_retry_in_callv3 = "{}";
446
+ const char* const description_rr_wrr_connect_from_random_index =
447
+ "RR and WRR LB policies start connecting from a random index in the "
448
+ "address list.";
449
+ const char* const additional_constraints_rr_wrr_connect_from_random_index =
450
+ "{}";
392
451
  const char* const description_schedule_cancellation_over_write =
393
452
  "Allow cancellation op to be scheduled over a write";
394
453
  const char* const additional_constraints_schedule_cancellation_over_write =
@@ -444,6 +503,13 @@ namespace grpc_core {
444
503
  const ExperimentMetadata g_experiment_metadata[] = {
445
504
  {"call_tracer_in_transport", description_call_tracer_in_transport,
446
505
  additional_constraints_call_tracer_in_transport, nullptr, 0, true, false},
506
+ {"channelz_use_v2_for_v1_api", description_channelz_use_v2_for_v1_api,
507
+ additional_constraints_channelz_use_v2_for_v1_api, nullptr, 0, false,
508
+ true},
509
+ {"channelz_use_v2_for_v1_service",
510
+ description_channelz_use_v2_for_v1_service,
511
+ additional_constraints_channelz_use_v2_for_v1_service, nullptr, 0, false,
512
+ true},
447
513
  {"chaotic_good_framing_layer", description_chaotic_good_framing_layer,
448
514
  additional_constraints_chaotic_good_framing_layer, nullptr, 0, true,
449
515
  false},
@@ -475,6 +541,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
475
541
  false},
476
542
  {"free_large_allocator", description_free_large_allocator,
477
543
  additional_constraints_free_large_allocator, nullptr, 0, false, true},
544
+ {"fuse_filters", description_fuse_filters,
545
+ additional_constraints_fuse_filters, nullptr, 0, false, false},
478
546
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
479
547
  additional_constraints_keep_alive_ping_timer_batch, nullptr, 0, false,
480
548
  true},
@@ -492,6 +560,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
492
560
  description_pick_first_ignore_empty_updates,
493
561
  additional_constraints_pick_first_ignore_empty_updates, nullptr, 0, false,
494
562
  true},
563
+ {"pipelined_read_secure_endpoint",
564
+ description_pipelined_read_secure_endpoint,
565
+ additional_constraints_pipelined_read_secure_endpoint,
566
+ required_experiments_pipelined_read_secure_endpoint, 3, false, false},
495
567
  {"pollset_alternative", description_pollset_alternative,
496
568
  additional_constraints_pollset_alternative,
497
569
  required_experiments_pollset_alternative, 2, false, false},
@@ -512,6 +584,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
512
584
  false},
513
585
  {"retry_in_callv3", description_retry_in_callv3,
514
586
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
587
+ {"rr_wrr_connect_from_random_index",
588
+ description_rr_wrr_connect_from_random_index,
589
+ additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, false,
590
+ true},
515
591
  {"schedule_cancellation_over_write",
516
592
  description_schedule_cancellation_over_write,
517
593
  additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
@@ -526,8 +602,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
526
602
  required_experiments_secure_endpoint_offload_large_writes, 3, false, true},
527
603
  {"server_global_callbacks_ownership",
528
604
  description_server_global_callbacks_ownership,
529
- additional_constraints_server_global_callbacks_ownership, nullptr, 0,
530
- false, true},
605
+ additional_constraints_server_global_callbacks_ownership, nullptr, 0, true,
606
+ true},
531
607
  {"shard_global_connection_pool", description_shard_global_connection_pool,
532
608
  additional_constraints_shard_global_connection_pool, nullptr, 0, true,
533
609
  true},
@@ -556,6 +632,12 @@ namespace {
556
632
  const char* const description_call_tracer_in_transport =
557
633
  "Transport directly passes byte counts to CallTracer.";
558
634
  const char* const additional_constraints_call_tracer_in_transport = "{}";
635
+ const char* const description_channelz_use_v2_for_v1_api =
636
+ "Use the v2 channelz API for the v1 channelz API.";
637
+ const char* const additional_constraints_channelz_use_v2_for_v1_api = "{}";
638
+ const char* const description_channelz_use_v2_for_v1_service =
639
+ "Use the v2 channelz service for the v1 channelz service.";
640
+ const char* const additional_constraints_channelz_use_v2_for_v1_service = "{}";
559
641
  const char* const description_chaotic_good_framing_layer =
560
642
  "Enable the chaotic good framing layer.";
561
643
  const char* const additional_constraints_chaotic_good_framing_layer = "{}";
@@ -606,6 +688,9 @@ const char* const additional_constraints_event_engine_secure_endpoint = "{}";
606
688
  const char* const description_free_large_allocator =
607
689
  "If set, return all free bytes from a \042big\042 allocator";
608
690
  const char* const additional_constraints_free_large_allocator = "{}";
691
+ const char* const description_fuse_filters =
692
+ "If set, individual filters are merged into fused filters";
693
+ const char* const additional_constraints_fuse_filters = "{}";
609
694
  const char* const description_keep_alive_ping_timer_batch =
610
695
  "Avoid explicitly cancelling the keepalive timer. Instead adjust the "
611
696
  "callback to re-schedule itself to the next ping interval.";
@@ -626,6 +711,13 @@ const char* const additional_constraints_multiping = "{}";
626
711
  const char* const description_pick_first_ignore_empty_updates =
627
712
  "Ignore empty resolutions in pick_first";
628
713
  const char* const additional_constraints_pick_first_ignore_empty_updates = "{}";
714
+ const char* const description_pipelined_read_secure_endpoint =
715
+ "Enable pipelined reads for EventEngine secure endpoints";
716
+ const char* const additional_constraints_pipelined_read_secure_endpoint = "{}";
717
+ const uint8_t required_experiments_pipelined_read_secure_endpoint[] = {
718
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
719
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener),
720
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineSecureEndpoint)};
629
721
  const char* const description_pollset_alternative =
630
722
  "Code outside iomgr that relies directly on pollsets will use non-pollset "
631
723
  "alternatives when enabled.";
@@ -654,6 +746,11 @@ const char* const description_promise_based_inproc_transport =
654
746
  const char* const additional_constraints_promise_based_inproc_transport = "{}";
655
747
  const char* const description_retry_in_callv3 = "Support retries with call-v3";
656
748
  const char* const additional_constraints_retry_in_callv3 = "{}";
749
+ const char* const description_rr_wrr_connect_from_random_index =
750
+ "RR and WRR LB policies start connecting from a random index in the "
751
+ "address list.";
752
+ const char* const additional_constraints_rr_wrr_connect_from_random_index =
753
+ "{}";
657
754
  const char* const description_schedule_cancellation_over_write =
658
755
  "Allow cancellation op to be scheduled over a write";
659
756
  const char* const additional_constraints_schedule_cancellation_over_write =
@@ -709,6 +806,13 @@ namespace grpc_core {
709
806
  const ExperimentMetadata g_experiment_metadata[] = {
710
807
  {"call_tracer_in_transport", description_call_tracer_in_transport,
711
808
  additional_constraints_call_tracer_in_transport, nullptr, 0, true, false},
809
+ {"channelz_use_v2_for_v1_api", description_channelz_use_v2_for_v1_api,
810
+ additional_constraints_channelz_use_v2_for_v1_api, nullptr, 0, false,
811
+ true},
812
+ {"channelz_use_v2_for_v1_service",
813
+ description_channelz_use_v2_for_v1_service,
814
+ additional_constraints_channelz_use_v2_for_v1_service, nullptr, 0, false,
815
+ true},
712
816
  {"chaotic_good_framing_layer", description_chaotic_good_framing_layer,
713
817
  additional_constraints_chaotic_good_framing_layer, nullptr, 0, true,
714
818
  false},
@@ -740,6 +844,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
740
844
  false},
741
845
  {"free_large_allocator", description_free_large_allocator,
742
846
  additional_constraints_free_large_allocator, nullptr, 0, false, true},
847
+ {"fuse_filters", description_fuse_filters,
848
+ additional_constraints_fuse_filters, nullptr, 0, false, false},
743
849
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
744
850
  additional_constraints_keep_alive_ping_timer_batch, nullptr, 0, false,
745
851
  true},
@@ -757,6 +863,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
757
863
  description_pick_first_ignore_empty_updates,
758
864
  additional_constraints_pick_first_ignore_empty_updates, nullptr, 0, false,
759
865
  true},
866
+ {"pipelined_read_secure_endpoint",
867
+ description_pipelined_read_secure_endpoint,
868
+ additional_constraints_pipelined_read_secure_endpoint,
869
+ required_experiments_pipelined_read_secure_endpoint, 3, false, false},
760
870
  {"pollset_alternative", description_pollset_alternative,
761
871
  additional_constraints_pollset_alternative,
762
872
  required_experiments_pollset_alternative, 2, false, false},
@@ -777,6 +887,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
777
887
  false},
778
888
  {"retry_in_callv3", description_retry_in_callv3,
779
889
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
890
+ {"rr_wrr_connect_from_random_index",
891
+ description_rr_wrr_connect_from_random_index,
892
+ additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, false,
893
+ true},
780
894
  {"schedule_cancellation_over_write",
781
895
  description_schedule_cancellation_over_write,
782
896
  additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
@@ -791,8 +905,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
791
905
  required_experiments_secure_endpoint_offload_large_writes, 3, false, true},
792
906
  {"server_global_callbacks_ownership",
793
907
  description_server_global_callbacks_ownership,
794
- additional_constraints_server_global_callbacks_ownership, nullptr, 0,
795
- false, true},
908
+ additional_constraints_server_global_callbacks_ownership, nullptr, 0, true,
909
+ true},
796
910
  {"shard_global_connection_pool", description_shard_global_connection_pool,
797
911
  additional_constraints_shard_global_connection_pool, nullptr, 0, true,
798
912
  true},