grpc 1.74.0 → 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 (369) 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_channel.c +15 -6
  187. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  188. data/src/ruby/lib/grpc/version.rb +1 -1
  189. data/third_party/cares/cares/include/ares.h +925 -460
  190. data/third_party/cares/cares/include/ares_dns.h +86 -71
  191. data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
  192. data/third_party/cares/cares/include/ares_nameser.h +215 -189
  193. data/third_party/cares/cares/include/ares_version.h +37 -14
  194. data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
  195. data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
  196. data/third_party/cares/cares/src/lib/ares_android.c +216 -164
  197. data/third_party/cares/cares/src/lib/ares_android.h +25 -14
  198. data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
  199. data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
  200. data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
  201. data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
  202. data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
  203. data/third_party/cares/cares/src/lib/ares_data.c +93 -181
  204. data/third_party/cares/cares/src/lib/ares_data.h +50 -39
  205. data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
  206. data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
  207. data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
  208. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
  209. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
  210. data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
  211. data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
  212. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
  213. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
  214. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
  215. data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
  216. data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
  217. data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
  218. data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
  219. data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
  220. data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
  221. data/third_party/cares/cares/src/lib/ares_options.c +418 -332
  222. data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
  223. data/third_party/cares/cares/src/lib/ares_private.h +558 -356
  224. data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
  225. data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
  226. data/third_party/cares/cares/src/lib/ares_query.c +126 -121
  227. data/third_party/cares/cares/src/lib/ares_search.c +564 -262
  228. data/third_party/cares/cares/src/lib/ares_send.c +264 -93
  229. data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
  230. data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
  231. data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
  232. data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
  233. data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
  234. data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
  235. data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
  236. data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
  237. data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
  238. data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
  239. data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
  240. data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
  241. data/third_party/cares/cares/src/lib/ares_version.c +29 -4
  242. data/third_party/cares/cares/src/lib/config-dos.h +88 -89
  243. data/third_party/cares/cares/src/lib/config-win32.h +122 -77
  244. data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
  245. data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
  246. data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
  247. data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
  248. data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
  249. data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
  250. data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
  251. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
  252. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
  253. data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
  254. data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
  255. data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
  256. data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
  257. data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
  258. data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
  259. data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
  260. data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
  261. data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
  262. data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
  263. data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
  264. data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
  265. data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
  266. data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
  267. data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
  268. data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
  269. data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
  270. data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
  271. data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
  272. data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
  273. data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
  274. data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
  275. data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
  276. data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
  277. data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
  278. data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
  279. data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
  280. data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
  281. data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
  282. data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
  283. data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
  284. data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
  285. data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
  286. data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
  287. data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
  288. data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
  289. data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
  290. data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
  291. data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
  292. data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
  293. data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
  294. data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
  295. data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
  296. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
  297. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
  298. data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
  299. data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
  300. data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
  301. data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
  302. data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
  303. data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
  304. data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
  305. data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
  306. data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
  307. data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
  308. data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
  309. data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
  310. data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
  311. data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
  312. data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
  313. data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
  314. data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
  315. data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
  316. data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
  317. data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
  318. data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
  319. data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
  320. data/third_party/cares/cares/src/lib/windows_port.c +16 -9
  321. metadata +121 -49
  322. data/src/core/util/ring_buffer.h +0 -122
  323. data/third_party/cares/cares/include/ares_rules.h +0 -125
  324. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
  325. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
  326. data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
  327. data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
  328. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
  329. data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
  330. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
  331. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
  332. data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
  333. data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
  334. data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
  335. data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
  336. data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
  337. data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
  338. data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
  339. data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
  340. data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
  341. data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
  342. data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
  343. data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
  344. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
  345. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
  346. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
  347. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
  348. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
  349. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
  350. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
  351. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
  352. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
  353. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
  354. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
  355. data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
  356. data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
  357. data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
  358. data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
  359. data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
  360. data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
  361. data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
  362. data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
  363. data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
  364. data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
  365. data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
  366. data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
  367. data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
  368. data/third_party/cares/cares/src/lib/setup_once.h +0 -554
  369. 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},