grpc 1.73.0 → 1.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (786) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +116 -53
  3. data/include/grpc/create_channel_from_endpoint.h +54 -0
  4. data/include/grpc/credentials.h +18 -6
  5. data/include/grpc/event_engine/event_engine.h +74 -17
  6. data/include/grpc/grpc_posix.h +20 -1
  7. data/include/grpc/impl/channel_arg_names.h +2 -4
  8. data/include/grpc/module.modulemap +1 -0
  9. data/include/grpc/support/json.h +24 -0
  10. data/src/core/call/client_call.cc +4 -4
  11. data/src/core/call/filter_fusion.h +1230 -0
  12. data/src/core/call/interception_chain.h +7 -11
  13. data/src/core/call/metadata.cc +22 -0
  14. data/src/core/call/metadata.h +24 -2
  15. data/src/core/channelz/channel_trace.cc +213 -115
  16. data/src/core/channelz/channel_trace.h +380 -86
  17. data/src/core/channelz/channelz.cc +274 -192
  18. data/src/core/channelz/channelz.h +224 -72
  19. data/src/core/channelz/channelz_registry.cc +2 -163
  20. data/src/core/channelz/channelz_registry.h +37 -6
  21. data/src/core/channelz/property_list.cc +353 -0
  22. data/src/core/channelz/property_list.h +204 -0
  23. data/src/core/channelz/v2tov1/convert.cc +683 -0
  24. data/src/core/channelz/v2tov1/convert.h +58 -0
  25. data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
  26. data/src/core/channelz/v2tov1/legacy_api.h +32 -0
  27. data/src/core/channelz/v2tov1/property_list.cc +118 -0
  28. data/src/core/channelz/v2tov1/property_list.h +52 -0
  29. data/src/core/channelz/ztrace_collector.h +3 -2
  30. data/src/core/client_channel/backup_poller.cc +17 -2
  31. data/src/core/client_channel/client_channel.cc +17 -28
  32. data/src/core/client_channel/client_channel_filter.cc +24 -33
  33. data/src/core/client_channel/client_channel_filter.h +2 -2
  34. data/src/core/client_channel/client_channel_internal.h +2 -1
  35. data/src/core/client_channel/config_selector.h +8 -2
  36. data/src/core/client_channel/dynamic_filters.cc +5 -6
  37. data/src/core/client_channel/dynamic_filters.h +1 -1
  38. data/src/core/client_channel/global_subchannel_pool.cc +4 -1
  39. data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
  40. data/src/core/client_channel/retry_filter.cc +21 -27
  41. data/src/core/client_channel/retry_filter.h +10 -7
  42. data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
  43. data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
  44. data/src/core/client_channel/retry_interceptor.cc +30 -44
  45. data/src/core/client_channel/retry_interceptor.h +18 -17
  46. data/src/core/client_channel/retry_throttle.cc +46 -61
  47. data/src/core/client_channel/retry_throttle.h +17 -39
  48. data/src/core/client_channel/subchannel.cc +57 -25
  49. data/src/core/client_channel/subchannel.h +10 -0
  50. data/src/core/config/config_vars.cc +2 -0
  51. data/src/core/config/core_configuration.cc +4 -1
  52. data/src/core/config/core_configuration.h +23 -0
  53. data/src/core/credentials/call/call_creds_registry.h +125 -0
  54. data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
  55. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
  56. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
  57. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
  58. data/src/core/credentials/call/jwt_util.cc +70 -0
  59. data/src/core/credentials/call/jwt_util.h +32 -0
  60. data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
  61. data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
  62. data/src/core/credentials/transport/channel_creds_registry_init.cc +4 -2
  63. data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
  64. data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -2
  65. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
  66. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
  67. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
  68. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
  69. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
  70. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
  71. data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
  72. data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
  73. data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
  74. data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
  75. data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
  76. data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
  77. data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
  78. data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
  79. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
  80. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
  81. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
  82. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
  83. data/src/core/ext/filters/http/client_authority_filter.cc +3 -6
  84. data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
  85. data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
  86. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
  87. data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
  88. data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
  89. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
  90. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
  91. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
  92. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
  93. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +165 -117
  94. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
  95. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
  96. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
  97. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  98. data/src/core/ext/transport/chttp2/transport/flow_control.h +23 -17
  99. data/src/core/ext/transport/chttp2/transport/frame.cc +99 -6
  100. data/src/core/ext/transport/chttp2/transport/frame.h +40 -2
  101. data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
  102. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
  103. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
  104. data/src/core/ext/transport/chttp2/transport/header_assembler.h +290 -0
  105. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
  106. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
  107. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
  108. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
  109. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1233 -0
  110. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +712 -0
  111. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
  112. data/src/core/ext/transport/chttp2/transport/http2_settings.h +65 -51
  113. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
  114. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
  115. data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
  116. data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
  117. data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
  118. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +121 -0
  119. data/src/core/ext/transport/chttp2/transport/http2_transport.h +76 -0
  120. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
  121. data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
  122. data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
  123. data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
  124. data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
  125. data/src/core/ext/transport/chttp2/transport/parsing.cc +4 -5
  126. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
  127. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +152 -0
  128. data/src/core/ext/transport/chttp2/transport/ping_promise.h +197 -0
  129. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
  130. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
  131. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
  132. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
  133. data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
  134. data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
  135. data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
  136. data/src/core/ext/transport/chttp2/transport/writing.cc +41 -13
  137. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
  138. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
  139. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
  140. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
  141. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
  142. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
  143. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
  144. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
  145. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
  146. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +1072 -0
  147. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +230 -0
  148. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
  149. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
  150. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
  151. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
  152. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
  153. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +133 -0
  154. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
  155. data/src/core/filter/auth/auth_filters.h +2 -27
  156. data/src/core/filter/auth/client_auth_filter.cc +0 -118
  157. data/src/core/filter/filter_args.h +9 -23
  158. data/src/core/filter/fused_filters.cc +154 -0
  159. data/src/core/handshaker/handshaker.cc +23 -14
  160. data/src/core/handshaker/handshaker.h +3 -0
  161. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
  162. data/src/core/handshaker/security/legacy_secure_endpoint.cc +7 -6
  163. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
  164. data/src/core/handshaker/security/secure_endpoint.cc +98 -38
  165. data/src/core/handshaker/security/secure_endpoint.h +8 -0
  166. data/src/core/handshaker/security/security_handshaker.cc +4 -1
  167. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
  168. data/src/core/lib/channel/channel_args.cc +15 -0
  169. data/src/core/lib/channel/channel_args.h +3 -0
  170. data/src/core/lib/channel/channel_stack.cc +22 -23
  171. data/src/core/lib/channel/channel_stack.h +9 -7
  172. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  173. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
  174. data/src/core/lib/channel/promise_based_filter.cc +15 -25
  175. data/src/core/lib/channel/promise_based_filter.h +11 -10
  176. data/src/core/lib/debug/trace_impl.h +0 -1
  177. data/src/core/lib/event_engine/ares_resolver.cc +165 -46
  178. data/src/core/lib/event_engine/ares_resolver.h +51 -3
  179. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +12 -6
  180. data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -4
  181. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
  182. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
  183. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
  184. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +14 -6
  185. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
  186. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
  187. data/src/core/lib/event_engine/event_engine.cc +7 -0
  188. data/src/core/lib/event_engine/extensions/channelz.h +10 -6
  189. data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
  190. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +139 -169
  191. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +17 -19
  192. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +90 -131
  193. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +13 -13
  194. data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -23
  195. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -23
  196. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
  197. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
  198. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
  199. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +30 -19
  200. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
  201. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
  202. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
  203. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
  204. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +147 -94
  205. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
  206. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +435 -229
  207. data/src/core/lib/event_engine/posix_engine/posix_engine.h +78 -50
  208. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +46 -38
  209. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
  210. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
  211. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
  212. data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
  213. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
  214. data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
  215. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
  216. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
  217. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
  218. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +11 -171
  219. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
  220. data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
  221. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
  222. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
  223. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
  224. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
  225. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
  226. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
  227. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
  228. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
  229. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
  230. data/src/core/lib/event_engine/shim.cc +9 -0
  231. data/src/core/lib/event_engine/shim.h +3 -0
  232. data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
  233. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
  234. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
  235. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
  236. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +6 -1
  237. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
  238. data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
  239. data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
  240. data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
  241. data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
  242. data/src/core/lib/experiments/experiments.cc +165 -99
  243. data/src/core/lib/experiments/experiments.h +65 -52
  244. data/src/core/lib/iomgr/combiner.cc +1 -1
  245. data/src/core/lib/iomgr/endpoint.cc +4 -3
  246. data/src/core/lib/iomgr/endpoint.h +7 -4
  247. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
  248. data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
  249. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
  250. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
  251. data/src/core/lib/iomgr/exec_ctx.h +3 -9
  252. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  253. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
  254. data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
  255. data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
  256. data/src/core/lib/iomgr/tcp_posix.cc +15 -9
  257. data/src/core/lib/iomgr/tcp_windows.cc +3 -2
  258. data/src/core/lib/promise/activity.h +3 -2
  259. data/src/core/lib/promise/arena_promise.h +23 -7
  260. data/src/core/lib/promise/detail/promise_factory.h +10 -0
  261. data/src/core/lib/promise/detail/promise_like.h +118 -11
  262. data/src/core/lib/promise/detail/promise_variant.h +50 -0
  263. data/src/core/lib/promise/detail/seq_state.h +687 -548
  264. data/src/core/lib/promise/if.h +20 -0
  265. data/src/core/lib/promise/inter_activity_latch.h +147 -0
  266. data/src/core/lib/promise/inter_activity_mutex.h +547 -0
  267. data/src/core/lib/promise/loop.h +65 -3
  268. data/src/core/lib/promise/map.h +24 -0
  269. data/src/core/lib/promise/match_promise.h +103 -0
  270. data/src/core/lib/promise/mpsc.cc +425 -0
  271. data/src/core/lib/promise/mpsc.h +490 -0
  272. data/src/core/lib/promise/party.cc +55 -6
  273. data/src/core/lib/promise/party.h +68 -3
  274. data/src/core/lib/promise/poll.h +10 -0
  275. data/src/core/lib/promise/race.h +31 -0
  276. data/src/core/lib/promise/seq.h +4 -1
  277. data/src/core/lib/promise/status_flag.h +7 -0
  278. data/src/core/lib/promise/try_seq.h +4 -1
  279. data/src/core/lib/promise/wait_set.cc +28 -0
  280. data/src/core/lib/promise/wait_set.h +86 -0
  281. data/src/core/lib/resource_quota/arena.h +19 -0
  282. data/src/core/lib/resource_quota/memory_quota.cc +90 -3
  283. data/src/core/lib/resource_quota/memory_quota.h +20 -9
  284. data/src/core/lib/resource_quota/periodic_update.cc +14 -0
  285. data/src/core/lib/resource_quota/periodic_update.h +8 -0
  286. data/src/core/lib/resource_quota/resource_quota.cc +15 -4
  287. data/src/core/lib/resource_quota/resource_quota.h +3 -0
  288. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
  289. data/src/core/lib/slice/slice.h +5 -0
  290. data/src/core/lib/surface/call.cc +5 -5
  291. data/src/core/lib/surface/call.h +6 -5
  292. data/src/core/lib/surface/channel_create.cc +88 -13
  293. data/src/core/lib/surface/channel_create.h +4 -0
  294. data/src/core/lib/surface/channel_init.cc +164 -47
  295. data/src/core/lib/surface/channel_init.h +64 -1
  296. data/src/core/lib/surface/completion_queue.cc +2 -4
  297. data/src/core/lib/surface/filter_stack_call.cc +19 -10
  298. data/src/core/lib/surface/init.cc +6 -15
  299. data/src/core/lib/surface/legacy_channel.cc +3 -5
  300. data/src/core/lib/surface/legacy_channel.h +3 -1
  301. data/src/core/lib/surface/version.cc +2 -2
  302. data/src/core/lib/transport/promise_endpoint.cc +110 -0
  303. data/src/core/lib/transport/promise_endpoint.h +307 -0
  304. data/src/core/load_balancing/child_policy_handler.cc +2 -4
  305. data/src/core/load_balancing/delegating_helper.h +2 -3
  306. data/src/core/load_balancing/endpoint_list.cc +29 -2
  307. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
  308. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
  309. data/src/core/load_balancing/health_check_client.cc +1 -5
  310. data/src/core/load_balancing/lb_policy.h +1 -3
  311. data/src/core/load_balancing/oob_backend_metric.cc +1 -5
  312. data/src/core/load_balancing/pick_first/pick_first.cc +15 -5
  313. data/src/core/load_balancing/xds/cds.cc +10 -1
  314. data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
  315. data/src/core/net/socket_mutator.cc +19 -0
  316. data/src/core/net/socket_mutator.h +25 -0
  317. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
  318. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  319. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
  320. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
  321. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
  322. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
  323. data/src/core/resolver/xds/xds_config.cc +6 -3
  324. data/src/core/resolver/xds/xds_config.h +9 -4
  325. data/src/core/resolver/xds/xds_dependency_manager.cc +22 -7
  326. data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
  327. data/src/core/resolver/xds/xds_resolver.cc +31 -11
  328. data/src/core/server/server.cc +84 -13
  329. data/src/core/server/server.h +21 -2
  330. data/src/core/server/server_call_tracer_filter.cc +0 -66
  331. data/src/core/server/server_call_tracer_filter.h +64 -0
  332. data/src/core/server/server_config_selector_filter.cc +1 -1
  333. data/src/core/server/xds_server_config_fetcher.cc +63 -25
  334. data/src/core/service_config/service_config.h +1 -1
  335. data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
  336. data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
  337. data/src/core/service_config/service_config_impl.h +1 -1
  338. data/src/core/telemetry/call_tracer.cc +20 -14
  339. data/src/core/telemetry/call_tracer.h +22 -17
  340. data/src/core/telemetry/context_list_entry.cc +38 -0
  341. data/src/core/telemetry/context_list_entry.h +42 -12
  342. data/src/core/telemetry/metrics.h +8 -8
  343. data/src/core/telemetry/stats_data.cc +369 -343
  344. data/src/core/telemetry/stats_data.h +341 -244
  345. data/src/core/telemetry/tcp_tracer.h +1 -1
  346. data/src/core/transport/auth_context.cc +20 -0
  347. data/src/core/transport/auth_context.h +4 -0
  348. data/src/core/transport/auth_context_comparator_registry.h +69 -0
  349. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
  350. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
  351. data/src/core/tsi/fake_transport_security.cc +17 -0
  352. data/src/core/tsi/ssl_transport_security.cc +205 -32
  353. data/src/core/tsi/ssl_transport_security.h +19 -10
  354. data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
  355. data/src/core/tsi/ssl_transport_security_utils.h +4 -0
  356. data/src/core/tsi/transport_security_grpc.cc +8 -0
  357. data/src/core/tsi/transport_security_grpc.h +15 -0
  358. data/src/core/util/backoff.cc +1 -5
  359. data/src/core/util/backoff.h +1 -0
  360. data/src/core/util/down_cast.h +1 -1
  361. data/src/core/util/function_signature.h +15 -1
  362. data/src/core/util/http_client/httpcli.cc +12 -5
  363. data/src/core/util/http_client/httpcli.h +4 -1
  364. data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
  365. data/src/core/util/latent_see.cc +178 -146
  366. data/src/core/util/latent_see.h +249 -189
  367. data/src/core/util/log.cc +4 -0
  368. data/src/core/util/memory_usage.h +268 -0
  369. data/src/core/util/per_cpu.cc +2 -0
  370. data/src/core/util/per_cpu.h +7 -0
  371. data/src/core/util/shared_bit_gen.h +20 -0
  372. data/src/core/util/single_set_ptr.h +7 -4
  373. data/src/core/util/upb_utils.h +42 -0
  374. data/src/core/util/uri.cc +3 -2
  375. data/src/core/util/useful.h +144 -2
  376. data/src/core/util/wait_for_single_owner.cc +31 -0
  377. data/src/core/util/wait_for_single_owner.h +24 -0
  378. data/src/core/util/windows/directory_reader.cc +1 -0
  379. data/src/core/util/windows/thd.cc +1 -3
  380. data/src/core/util/work_serializer.cc +1 -1
  381. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
  382. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
  383. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
  384. data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
  385. data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
  386. data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
  387. data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
  388. data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
  389. data/src/core/xds/grpc/xds_http_filter.h +7 -0
  390. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
  391. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
  392. data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
  393. data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
  394. data/src/core/xds/grpc/xds_server_grpc.h +10 -2
  395. data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
  396. data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
  397. data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
  398. data/src/core/xds/xds_client/xds_client.cc +26 -5
  399. data/src/ruby/ext/grpc/extconf.rb +2 -0
  400. data/src/ruby/ext/grpc/rb_call.c +1 -8
  401. data/src/ruby/ext/grpc/rb_channel.c +70 -557
  402. data/src/ruby/ext/grpc/rb_channel.h +0 -3
  403. data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
  404. data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
  405. data/src/ruby/ext/grpc/rb_grpc.c +9 -5
  406. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  407. data/src/ruby/ext/grpc/rb_loader.c +0 -4
  408. data/src/ruby/ext/grpc/rb_server.c +31 -50
  409. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
  410. data/src/ruby/lib/grpc/version.rb +1 -1
  411. data/src/ruby/spec/core_spec.rb +22 -0
  412. data/src/ruby/spec/generic/active_call_spec.rb +1 -1
  413. data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
  414. data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
  415. data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
  416. data/third_party/abseil-cpp/absl/base/config.h +20 -129
  417. data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
  418. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  419. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  420. data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
  421. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  422. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
  423. data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
  424. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
  425. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
  426. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  427. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
  428. data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
  429. data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
  430. data/third_party/abseil-cpp/absl/base/options.h +3 -80
  431. data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
  432. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  433. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  434. data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
  435. data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
  436. data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
  437. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
  438. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
  439. data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
  440. data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
  441. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
  442. data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
  443. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
  444. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
  445. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
  446. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
  447. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
  448. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
  449. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
  450. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
  451. data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
  452. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  453. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
  454. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
  455. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
  456. data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
  457. data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
  458. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  459. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
  460. data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  461. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  462. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  463. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
  464. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  465. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
  466. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  467. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  468. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  469. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  470. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
  471. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  472. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  473. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
  474. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
  475. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  476. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
  477. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  478. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  479. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
  480. data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
  481. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  482. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
  483. data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
  484. data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
  485. data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
  486. data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
  487. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
  488. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
  489. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  490. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  491. data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
  492. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
  493. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
  494. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
  495. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
  496. data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
  497. data/third_party/abseil-cpp/absl/log/check.h +2 -1
  498. data/third_party/abseil-cpp/absl/log/globals.h +4 -5
  499. data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  500. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
  501. data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
  502. data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  503. data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
  504. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
  505. data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
  506. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  507. data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
  508. data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
  509. data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
  510. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  511. data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
  512. data/third_party/abseil-cpp/absl/log/log.h +48 -35
  513. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
  514. data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
  515. data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
  516. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
  517. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
  518. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  519. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
  520. data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
  521. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
  522. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
  523. data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
  524. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
  525. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  526. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
  527. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  528. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  529. data/third_party/abseil-cpp/absl/random/random.h +88 -53
  530. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  531. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
  532. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  533. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
  534. data/third_party/abseil-cpp/absl/status/status.cc +4 -8
  535. data/third_party/abseil-cpp/absl/status/status.h +8 -8
  536. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  537. data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
  538. data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
  539. data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
  540. data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
  541. data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
  542. data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
  543. data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
  544. data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
  545. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  546. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  547. data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
  548. data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
  549. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  550. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
  551. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  552. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
  553. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  554. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  555. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  556. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  557. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  558. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  559. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  560. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  561. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  562. data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
  563. data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
  564. data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
  565. data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
  566. data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
  567. data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
  568. data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
  569. data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
  570. data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
  571. data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
  572. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
  573. data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
  574. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  575. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  576. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  577. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  578. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  579. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  580. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  581. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
  582. data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
  583. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  584. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
  585. data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
  586. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  587. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
  588. data/third_party/abseil-cpp/absl/time/time.h +20 -15
  589. data/third_party/abseil-cpp/absl/types/optional.h +7 -747
  590. data/third_party/abseil-cpp/absl/types/span.h +13 -11
  591. data/third_party/abseil-cpp/absl/types/variant.h +5 -784
  592. data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
  593. data/third_party/cares/cares/include/ares.h +925 -460
  594. data/third_party/cares/cares/include/ares_dns.h +86 -71
  595. data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
  596. data/third_party/cares/cares/include/ares_nameser.h +215 -189
  597. data/third_party/cares/cares/include/ares_version.h +37 -14
  598. data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
  599. data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
  600. data/third_party/cares/cares/src/lib/ares_android.c +216 -164
  601. data/third_party/cares/cares/src/lib/ares_android.h +25 -14
  602. data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
  603. data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
  604. data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
  605. data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
  606. data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
  607. data/third_party/cares/cares/src/lib/ares_data.c +93 -181
  608. data/third_party/cares/cares/src/lib/ares_data.h +50 -39
  609. data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
  610. data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
  611. data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
  612. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
  613. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
  614. data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
  615. data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
  616. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
  617. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
  618. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
  619. data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
  620. data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
  621. data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
  622. data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
  623. data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
  624. data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
  625. data/third_party/cares/cares/src/lib/ares_options.c +418 -332
  626. data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
  627. data/third_party/cares/cares/src/lib/ares_private.h +558 -356
  628. data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
  629. data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
  630. data/third_party/cares/cares/src/lib/ares_query.c +126 -121
  631. data/third_party/cares/cares/src/lib/ares_search.c +564 -262
  632. data/third_party/cares/cares/src/lib/ares_send.c +264 -93
  633. data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
  634. data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
  635. data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
  636. data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
  637. data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
  638. data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
  639. data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
  640. data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
  641. data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
  642. data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
  643. data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
  644. data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
  645. data/third_party/cares/cares/src/lib/ares_version.c +29 -4
  646. data/third_party/cares/cares/src/lib/config-dos.h +88 -89
  647. data/third_party/cares/cares/src/lib/config-win32.h +122 -77
  648. data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
  649. data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
  650. data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
  651. data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
  652. data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
  653. data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
  654. data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
  655. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
  656. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
  657. data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
  658. data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
  659. data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
  660. data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
  661. data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
  662. data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
  663. data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
  664. data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
  665. data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
  666. data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
  667. data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
  668. data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
  669. data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
  670. data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
  671. data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
  672. data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
  673. data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
  674. data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
  675. data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
  676. data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
  677. data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
  678. data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
  679. data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
  680. data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
  681. data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
  682. data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
  683. data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
  684. data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
  685. data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
  686. data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
  687. data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
  688. data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
  689. data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
  690. data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
  691. data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
  692. data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
  693. data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
  694. data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
  695. data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
  696. data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
  697. data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
  698. data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
  699. data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
  700. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
  701. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
  702. data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
  703. data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
  704. data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
  705. data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
  706. data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
  707. data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
  708. data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
  709. data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
  710. data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
  711. data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
  712. data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
  713. data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
  714. data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
  715. data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
  716. data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
  717. data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
  718. data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
  719. data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
  720. data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
  721. data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
  722. data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
  723. data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
  724. data/third_party/cares/cares/src/lib/windows_port.c +16 -9
  725. metadata +192 -68
  726. data/src/core/lib/event_engine/forkable.cc +0 -105
  727. data/src/core/lib/event_engine/forkable.h +0 -67
  728. data/src/core/lib/iomgr/python_util.h +0 -46
  729. data/src/core/util/ring_buffer.h +0 -122
  730. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  731. data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
  732. data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
  733. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  734. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  735. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  736. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  737. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  738. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
  739. data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
  740. data/third_party/cares/cares/include/ares_rules.h +0 -125
  741. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
  742. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
  743. data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
  744. data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
  745. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
  746. data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
  747. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
  748. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
  749. data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
  750. data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
  751. data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
  752. data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
  753. data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
  754. data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
  755. data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
  756. data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
  757. data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
  758. data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
  759. data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
  760. data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
  761. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
  762. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
  763. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
  764. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
  765. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
  766. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
  767. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
  768. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
  769. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
  770. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
  771. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
  772. data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
  773. data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
  774. data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
  775. data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
  776. data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
  777. data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
  778. data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
  779. data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
  780. data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
  781. data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
  782. data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
  783. data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
  784. data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
  785. data/third_party/cares/cares/src/lib/setup_once.h +0 -554
  786. data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
@@ -26,9 +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_callv3_client_auth_filter =
30
- "Use the CallV3 client auth filter.";
31
- const char* const additional_constraints_callv3_client_auth_filter = "{}";
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 = "{}";
32
35
  const char* const description_chaotic_good_framing_layer =
33
36
  "Enable the chaotic good framing layer.";
34
37
  const char* const additional_constraints_chaotic_good_framing_layer = "{}";
@@ -79,6 +82,9 @@ const char* const additional_constraints_event_engine_secure_endpoint = "{}";
79
82
  const char* const description_free_large_allocator =
80
83
  "If set, return all free bytes from a \042big\042 allocator";
81
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 = "{}";
82
88
  const char* const description_keep_alive_ping_timer_batch =
83
89
  "Avoid explicitly cancelling the keepalive timer. Instead adjust the "
84
90
  "callback to re-schedule itself to the next ping interval.";
@@ -90,17 +96,22 @@ const char* const additional_constraints_local_connector_secure = "{}";
90
96
  const char* const description_max_inflight_pings_strict_limit =
91
97
  "If set, the max inflight pings limit is strictly enforced.";
92
98
  const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
93
- const char* const description_max_pings_wo_data_throttle =
94
- "Experiment to throttle pings to a period of 1 min when "
95
- "GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA limit has reached (instead of "
96
- "completely blocking).";
97
- const char* const additional_constraints_max_pings_wo_data_throttle = "{}";
98
99
  const char* const description_monitoring_experiment =
99
100
  "Placeholder experiment to prove/disprove our monitoring is working";
100
101
  const char* const additional_constraints_monitoring_experiment = "{}";
101
102
  const char* const description_multiping =
102
103
  "Allow more than one ping to be in flight at a time by default.";
103
104
  const char* const additional_constraints_multiping = "{}";
105
+ const char* const description_pick_first_ignore_empty_updates =
106
+ "Ignore empty resolutions in pick_first";
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)};
104
115
  const char* const description_pollset_alternative =
105
116
  "Code outside iomgr that relies directly on pollsets will use non-pollset "
106
117
  "alternatives when enabled.";
@@ -108,10 +119,10 @@ const char* const additional_constraints_pollset_alternative = "{}";
108
119
  const uint8_t required_experiments_pollset_alternative[] = {
109
120
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
110
121
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
111
- const char* const description_posix_ee_skip_grpc_init =
112
- "Prevent the PosixEventEngine from calling grpc_init & grpc_shutdown on "
113
- "creation and destruction.";
114
- const char* const additional_constraints_posix_ee_skip_grpc_init = "{}";
122
+ const char* const description_prioritize_finished_requests =
123
+ "Prioritize flushing out finished requests over other in-flight requests "
124
+ "during transport writes.";
125
+ const char* const additional_constraints_prioritize_finished_requests = "{}";
115
126
  const char* const description_promise_based_http2_client_transport =
116
127
  "Use promises for the http2 client transport. We have kept client and "
117
128
  "server transport experiments separate to help with smoother roll outs and "
@@ -129,14 +140,11 @@ const char* const description_promise_based_inproc_transport =
129
140
  const char* const additional_constraints_promise_based_inproc_transport = "{}";
130
141
  const char* const description_retry_in_callv3 = "Support retries with call-v3";
131
142
  const char* const additional_constraints_retry_in_callv3 = "{}";
132
- const char* const description_rq_fast_reject =
133
- "Resource quota rejects requests immediately (before allocating the "
134
- "request structure) under very high memory pressure.";
135
- const char* const additional_constraints_rq_fast_reject = "{}";
136
- const char* const description_rst_stream_fix =
137
- "Fix for RST_STREAM - do not send for idle streams "
138
- "(https://github.com/grpc/grpc/issues/38758)";
139
- const char* const additional_constraints_rst_stream_fix = "{}";
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
+ "{}";
140
148
  const char* const description_schedule_cancellation_over_write =
141
149
  "Allow cancellation op to be scheduled over a write";
142
150
  const char* const additional_constraints_schedule_cancellation_over_write =
@@ -192,8 +200,13 @@ namespace grpc_core {
192
200
  const ExperimentMetadata g_experiment_metadata[] = {
193
201
  {"call_tracer_in_transport", description_call_tracer_in_transport,
194
202
  additional_constraints_call_tracer_in_transport, nullptr, 0, true, false},
195
- {"callv3_client_auth_filter", description_callv3_client_auth_filter,
196
- additional_constraints_callv3_client_auth_filter, nullptr, 0, false, true},
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},
197
210
  {"chaotic_good_framing_layer", description_chaotic_good_framing_layer,
198
211
  additional_constraints_chaotic_good_framing_layer, nullptr, 0, true,
199
212
  false},
@@ -208,7 +221,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
208
221
  {"event_engine_dns_non_client_channel",
209
222
  description_event_engine_dns_non_client_channel,
210
223
  additional_constraints_event_engine_dns_non_client_channel, nullptr, 0,
211
- false, false},
224
+ true, false},
212
225
  {"event_engine_fork", description_event_engine_fork,
213
226
  additional_constraints_event_engine_fork, nullptr, 0, false, false},
214
227
  {"event_engine_listener", description_event_engine_listener,
@@ -225,6 +238,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
225
238
  false},
226
239
  {"free_large_allocator", description_free_large_allocator,
227
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},
228
243
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
229
244
  additional_constraints_keep_alive_ping_timer_batch, nullptr, 0, false,
230
245
  true},
@@ -234,17 +249,24 @@ const ExperimentMetadata g_experiment_metadata[] = {
234
249
  description_max_inflight_pings_strict_limit,
235
250
  additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
236
251
  true},
237
- {"max_pings_wo_data_throttle", description_max_pings_wo_data_throttle,
238
- additional_constraints_max_pings_wo_data_throttle, nullptr, 0, true, true},
239
252
  {"monitoring_experiment", description_monitoring_experiment,
240
253
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
241
254
  {"multiping", description_multiping, additional_constraints_multiping,
242
255
  nullptr, 0, false, true},
256
+ {"pick_first_ignore_empty_updates",
257
+ description_pick_first_ignore_empty_updates,
258
+ additional_constraints_pick_first_ignore_empty_updates, nullptr, 0, false,
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},
243
264
  {"pollset_alternative", description_pollset_alternative,
244
265
  additional_constraints_pollset_alternative,
245
266
  required_experiments_pollset_alternative, 2, false, false},
246
- {"posix_ee_skip_grpc_init", description_posix_ee_skip_grpc_init,
247
- additional_constraints_posix_ee_skip_grpc_init, nullptr, 0, true, true},
267
+ {"prioritize_finished_requests", description_prioritize_finished_requests,
268
+ additional_constraints_prioritize_finished_requests, nullptr, 0, false,
269
+ true},
248
270
  {"promise_based_http2_client_transport",
249
271
  description_promise_based_http2_client_transport,
250
272
  additional_constraints_promise_based_http2_client_transport, nullptr, 0,
@@ -259,10 +281,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
259
281
  false},
260
282
  {"retry_in_callv3", description_retry_in_callv3,
261
283
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
262
- {"rq_fast_reject", description_rq_fast_reject,
263
- additional_constraints_rq_fast_reject, nullptr, 0, false, true},
264
- {"rst_stream_fix", description_rst_stream_fix,
265
- additional_constraints_rst_stream_fix, nullptr, 0, true, 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},
266
288
  {"schedule_cancellation_over_write",
267
289
  description_schedule_cancellation_over_write,
268
290
  additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
@@ -277,8 +299,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
277
299
  required_experiments_secure_endpoint_offload_large_writes, 3, false, true},
278
300
  {"server_global_callbacks_ownership",
279
301
  description_server_global_callbacks_ownership,
280
- additional_constraints_server_global_callbacks_ownership, nullptr, 0,
281
- false, true},
302
+ additional_constraints_server_global_callbacks_ownership, nullptr, 0, true,
303
+ true},
282
304
  {"shard_global_connection_pool", description_shard_global_connection_pool,
283
305
  additional_constraints_shard_global_connection_pool, nullptr, 0, true,
284
306
  true},
@@ -307,9 +329,12 @@ namespace {
307
329
  const char* const description_call_tracer_in_transport =
308
330
  "Transport directly passes byte counts to CallTracer.";
309
331
  const char* const additional_constraints_call_tracer_in_transport = "{}";
310
- const char* const description_callv3_client_auth_filter =
311
- "Use the CallV3 client auth filter.";
312
- const char* const additional_constraints_callv3_client_auth_filter = "{}";
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 = "{}";
313
338
  const char* const description_chaotic_good_framing_layer =
314
339
  "Enable the chaotic good framing layer.";
315
340
  const char* const additional_constraints_chaotic_good_framing_layer = "{}";
@@ -360,6 +385,9 @@ const char* const additional_constraints_event_engine_secure_endpoint = "{}";
360
385
  const char* const description_free_large_allocator =
361
386
  "If set, return all free bytes from a \042big\042 allocator";
362
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 = "{}";
363
391
  const char* const description_keep_alive_ping_timer_batch =
364
392
  "Avoid explicitly cancelling the keepalive timer. Instead adjust the "
365
393
  "callback to re-schedule itself to the next ping interval.";
@@ -371,17 +399,22 @@ const char* const additional_constraints_local_connector_secure = "{}";
371
399
  const char* const description_max_inflight_pings_strict_limit =
372
400
  "If set, the max inflight pings limit is strictly enforced.";
373
401
  const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
374
- const char* const description_max_pings_wo_data_throttle =
375
- "Experiment to throttle pings to a period of 1 min when "
376
- "GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA limit has reached (instead of "
377
- "completely blocking).";
378
- const char* const additional_constraints_max_pings_wo_data_throttle = "{}";
379
402
  const char* const description_monitoring_experiment =
380
403
  "Placeholder experiment to prove/disprove our monitoring is working";
381
404
  const char* const additional_constraints_monitoring_experiment = "{}";
382
405
  const char* const description_multiping =
383
406
  "Allow more than one ping to be in flight at a time by default.";
384
407
  const char* const additional_constraints_multiping = "{}";
408
+ const char* const description_pick_first_ignore_empty_updates =
409
+ "Ignore empty resolutions in pick_first";
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)};
385
418
  const char* const description_pollset_alternative =
386
419
  "Code outside iomgr that relies directly on pollsets will use non-pollset "
387
420
  "alternatives when enabled.";
@@ -389,10 +422,10 @@ const char* const additional_constraints_pollset_alternative = "{}";
389
422
  const uint8_t required_experiments_pollset_alternative[] = {
390
423
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
391
424
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
392
- const char* const description_posix_ee_skip_grpc_init =
393
- "Prevent the PosixEventEngine from calling grpc_init & grpc_shutdown on "
394
- "creation and destruction.";
395
- const char* const additional_constraints_posix_ee_skip_grpc_init = "{}";
425
+ const char* const description_prioritize_finished_requests =
426
+ "Prioritize flushing out finished requests over other in-flight requests "
427
+ "during transport writes.";
428
+ const char* const additional_constraints_prioritize_finished_requests = "{}";
396
429
  const char* const description_promise_based_http2_client_transport =
397
430
  "Use promises for the http2 client transport. We have kept client and "
398
431
  "server transport experiments separate to help with smoother roll outs and "
@@ -410,14 +443,11 @@ const char* const description_promise_based_inproc_transport =
410
443
  const char* const additional_constraints_promise_based_inproc_transport = "{}";
411
444
  const char* const description_retry_in_callv3 = "Support retries with call-v3";
412
445
  const char* const additional_constraints_retry_in_callv3 = "{}";
413
- const char* const description_rq_fast_reject =
414
- "Resource quota rejects requests immediately (before allocating the "
415
- "request structure) under very high memory pressure.";
416
- const char* const additional_constraints_rq_fast_reject = "{}";
417
- const char* const description_rst_stream_fix =
418
- "Fix for RST_STREAM - do not send for idle streams "
419
- "(https://github.com/grpc/grpc/issues/38758)";
420
- const char* const additional_constraints_rst_stream_fix = "{}";
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
+ "{}";
421
451
  const char* const description_schedule_cancellation_over_write =
422
452
  "Allow cancellation op to be scheduled over a write";
423
453
  const char* const additional_constraints_schedule_cancellation_over_write =
@@ -473,8 +503,13 @@ namespace grpc_core {
473
503
  const ExperimentMetadata g_experiment_metadata[] = {
474
504
  {"call_tracer_in_transport", description_call_tracer_in_transport,
475
505
  additional_constraints_call_tracer_in_transport, nullptr, 0, true, false},
476
- {"callv3_client_auth_filter", description_callv3_client_auth_filter,
477
- additional_constraints_callv3_client_auth_filter, nullptr, 0, false, true},
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},
478
513
  {"chaotic_good_framing_layer", description_chaotic_good_framing_layer,
479
514
  additional_constraints_chaotic_good_framing_layer, nullptr, 0, true,
480
515
  false},
@@ -489,7 +524,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
489
524
  {"event_engine_dns_non_client_channel",
490
525
  description_event_engine_dns_non_client_channel,
491
526
  additional_constraints_event_engine_dns_non_client_channel, nullptr, 0,
492
- false, false},
527
+ true, false},
493
528
  {"event_engine_fork", description_event_engine_fork,
494
529
  additional_constraints_event_engine_fork, nullptr, 0, false, false},
495
530
  {"event_engine_listener", description_event_engine_listener,
@@ -506,6 +541,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
506
541
  false},
507
542
  {"free_large_allocator", description_free_large_allocator,
508
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},
509
546
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
510
547
  additional_constraints_keep_alive_ping_timer_batch, nullptr, 0, false,
511
548
  true},
@@ -515,17 +552,24 @@ const ExperimentMetadata g_experiment_metadata[] = {
515
552
  description_max_inflight_pings_strict_limit,
516
553
  additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
517
554
  true},
518
- {"max_pings_wo_data_throttle", description_max_pings_wo_data_throttle,
519
- additional_constraints_max_pings_wo_data_throttle, nullptr, 0, true, true},
520
555
  {"monitoring_experiment", description_monitoring_experiment,
521
556
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
522
557
  {"multiping", description_multiping, additional_constraints_multiping,
523
558
  nullptr, 0, false, true},
559
+ {"pick_first_ignore_empty_updates",
560
+ description_pick_first_ignore_empty_updates,
561
+ additional_constraints_pick_first_ignore_empty_updates, nullptr, 0, false,
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},
524
567
  {"pollset_alternative", description_pollset_alternative,
525
568
  additional_constraints_pollset_alternative,
526
569
  required_experiments_pollset_alternative, 2, false, false},
527
- {"posix_ee_skip_grpc_init", description_posix_ee_skip_grpc_init,
528
- additional_constraints_posix_ee_skip_grpc_init, nullptr, 0, true, true},
570
+ {"prioritize_finished_requests", description_prioritize_finished_requests,
571
+ additional_constraints_prioritize_finished_requests, nullptr, 0, false,
572
+ true},
529
573
  {"promise_based_http2_client_transport",
530
574
  description_promise_based_http2_client_transport,
531
575
  additional_constraints_promise_based_http2_client_transport, nullptr, 0,
@@ -540,10 +584,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
540
584
  false},
541
585
  {"retry_in_callv3", description_retry_in_callv3,
542
586
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
543
- {"rq_fast_reject", description_rq_fast_reject,
544
- additional_constraints_rq_fast_reject, nullptr, 0, false, true},
545
- {"rst_stream_fix", description_rst_stream_fix,
546
- additional_constraints_rst_stream_fix, nullptr, 0, true, 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},
547
591
  {"schedule_cancellation_over_write",
548
592
  description_schedule_cancellation_over_write,
549
593
  additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
@@ -558,8 +602,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
558
602
  required_experiments_secure_endpoint_offload_large_writes, 3, false, true},
559
603
  {"server_global_callbacks_ownership",
560
604
  description_server_global_callbacks_ownership,
561
- additional_constraints_server_global_callbacks_ownership, nullptr, 0,
562
- false, true},
605
+ additional_constraints_server_global_callbacks_ownership, nullptr, 0, true,
606
+ true},
563
607
  {"shard_global_connection_pool", description_shard_global_connection_pool,
564
608
  additional_constraints_shard_global_connection_pool, nullptr, 0, true,
565
609
  true},
@@ -588,9 +632,12 @@ namespace {
588
632
  const char* const description_call_tracer_in_transport =
589
633
  "Transport directly passes byte counts to CallTracer.";
590
634
  const char* const additional_constraints_call_tracer_in_transport = "{}";
591
- const char* const description_callv3_client_auth_filter =
592
- "Use the CallV3 client auth filter.";
593
- const char* const additional_constraints_callv3_client_auth_filter = "{}";
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 = "{}";
594
641
  const char* const description_chaotic_good_framing_layer =
595
642
  "Enable the chaotic good framing layer.";
596
643
  const char* const additional_constraints_chaotic_good_framing_layer = "{}";
@@ -641,6 +688,9 @@ const char* const additional_constraints_event_engine_secure_endpoint = "{}";
641
688
  const char* const description_free_large_allocator =
642
689
  "If set, return all free bytes from a \042big\042 allocator";
643
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 = "{}";
644
694
  const char* const description_keep_alive_ping_timer_batch =
645
695
  "Avoid explicitly cancelling the keepalive timer. Instead adjust the "
646
696
  "callback to re-schedule itself to the next ping interval.";
@@ -652,17 +702,22 @@ const char* const additional_constraints_local_connector_secure = "{}";
652
702
  const char* const description_max_inflight_pings_strict_limit =
653
703
  "If set, the max inflight pings limit is strictly enforced.";
654
704
  const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
655
- const char* const description_max_pings_wo_data_throttle =
656
- "Experiment to throttle pings to a period of 1 min when "
657
- "GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA limit has reached (instead of "
658
- "completely blocking).";
659
- const char* const additional_constraints_max_pings_wo_data_throttle = "{}";
660
705
  const char* const description_monitoring_experiment =
661
706
  "Placeholder experiment to prove/disprove our monitoring is working";
662
707
  const char* const additional_constraints_monitoring_experiment = "{}";
663
708
  const char* const description_multiping =
664
709
  "Allow more than one ping to be in flight at a time by default.";
665
710
  const char* const additional_constraints_multiping = "{}";
711
+ const char* const description_pick_first_ignore_empty_updates =
712
+ "Ignore empty resolutions in pick_first";
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)};
666
721
  const char* const description_pollset_alternative =
667
722
  "Code outside iomgr that relies directly on pollsets will use non-pollset "
668
723
  "alternatives when enabled.";
@@ -670,10 +725,10 @@ const char* const additional_constraints_pollset_alternative = "{}";
670
725
  const uint8_t required_experiments_pollset_alternative[] = {
671
726
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
672
727
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
673
- const char* const description_posix_ee_skip_grpc_init =
674
- "Prevent the PosixEventEngine from calling grpc_init & grpc_shutdown on "
675
- "creation and destruction.";
676
- const char* const additional_constraints_posix_ee_skip_grpc_init = "{}";
728
+ const char* const description_prioritize_finished_requests =
729
+ "Prioritize flushing out finished requests over other in-flight requests "
730
+ "during transport writes.";
731
+ const char* const additional_constraints_prioritize_finished_requests = "{}";
677
732
  const char* const description_promise_based_http2_client_transport =
678
733
  "Use promises for the http2 client transport. We have kept client and "
679
734
  "server transport experiments separate to help with smoother roll outs and "
@@ -691,14 +746,11 @@ const char* const description_promise_based_inproc_transport =
691
746
  const char* const additional_constraints_promise_based_inproc_transport = "{}";
692
747
  const char* const description_retry_in_callv3 = "Support retries with call-v3";
693
748
  const char* const additional_constraints_retry_in_callv3 = "{}";
694
- const char* const description_rq_fast_reject =
695
- "Resource quota rejects requests immediately (before allocating the "
696
- "request structure) under very high memory pressure.";
697
- const char* const additional_constraints_rq_fast_reject = "{}";
698
- const char* const description_rst_stream_fix =
699
- "Fix for RST_STREAM - do not send for idle streams "
700
- "(https://github.com/grpc/grpc/issues/38758)";
701
- const char* const additional_constraints_rst_stream_fix = "{}";
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
+ "{}";
702
754
  const char* const description_schedule_cancellation_over_write =
703
755
  "Allow cancellation op to be scheduled over a write";
704
756
  const char* const additional_constraints_schedule_cancellation_over_write =
@@ -754,8 +806,13 @@ namespace grpc_core {
754
806
  const ExperimentMetadata g_experiment_metadata[] = {
755
807
  {"call_tracer_in_transport", description_call_tracer_in_transport,
756
808
  additional_constraints_call_tracer_in_transport, nullptr, 0, true, false},
757
- {"callv3_client_auth_filter", description_callv3_client_auth_filter,
758
- additional_constraints_callv3_client_auth_filter, nullptr, 0, false, true},
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},
759
816
  {"chaotic_good_framing_layer", description_chaotic_good_framing_layer,
760
817
  additional_constraints_chaotic_good_framing_layer, nullptr, 0, true,
761
818
  false},
@@ -770,7 +827,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
770
827
  {"event_engine_dns_non_client_channel",
771
828
  description_event_engine_dns_non_client_channel,
772
829
  additional_constraints_event_engine_dns_non_client_channel, nullptr, 0,
773
- false, false},
830
+ true, false},
774
831
  {"event_engine_fork", description_event_engine_fork,
775
832
  additional_constraints_event_engine_fork, nullptr, 0, false, false},
776
833
  {"event_engine_listener", description_event_engine_listener,
@@ -787,6 +844,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
787
844
  false},
788
845
  {"free_large_allocator", description_free_large_allocator,
789
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},
790
849
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
791
850
  additional_constraints_keep_alive_ping_timer_batch, nullptr, 0, false,
792
851
  true},
@@ -796,17 +855,24 @@ const ExperimentMetadata g_experiment_metadata[] = {
796
855
  description_max_inflight_pings_strict_limit,
797
856
  additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
798
857
  true},
799
- {"max_pings_wo_data_throttle", description_max_pings_wo_data_throttle,
800
- additional_constraints_max_pings_wo_data_throttle, nullptr, 0, true, true},
801
858
  {"monitoring_experiment", description_monitoring_experiment,
802
859
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
803
860
  {"multiping", description_multiping, additional_constraints_multiping,
804
861
  nullptr, 0, false, true},
862
+ {"pick_first_ignore_empty_updates",
863
+ description_pick_first_ignore_empty_updates,
864
+ additional_constraints_pick_first_ignore_empty_updates, nullptr, 0, false,
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},
805
870
  {"pollset_alternative", description_pollset_alternative,
806
871
  additional_constraints_pollset_alternative,
807
872
  required_experiments_pollset_alternative, 2, false, false},
808
- {"posix_ee_skip_grpc_init", description_posix_ee_skip_grpc_init,
809
- additional_constraints_posix_ee_skip_grpc_init, nullptr, 0, true, true},
873
+ {"prioritize_finished_requests", description_prioritize_finished_requests,
874
+ additional_constraints_prioritize_finished_requests, nullptr, 0, false,
875
+ true},
810
876
  {"promise_based_http2_client_transport",
811
877
  description_promise_based_http2_client_transport,
812
878
  additional_constraints_promise_based_http2_client_transport, nullptr, 0,
@@ -821,10 +887,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
821
887
  false},
822
888
  {"retry_in_callv3", description_retry_in_callv3,
823
889
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
824
- {"rq_fast_reject", description_rq_fast_reject,
825
- additional_constraints_rq_fast_reject, nullptr, 0, false, true},
826
- {"rst_stream_fix", description_rst_stream_fix,
827
- additional_constraints_rst_stream_fix, nullptr, 0, true, 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},
828
894
  {"schedule_cancellation_over_write",
829
895
  description_schedule_cancellation_over_write,
830
896
  additional_constraints_schedule_cancellation_over_write, nullptr, 0, false,
@@ -839,8 +905,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
839
905
  required_experiments_secure_endpoint_offload_large_writes, 3, false, true},
840
906
  {"server_global_callbacks_ownership",
841
907
  description_server_global_callbacks_ownership,
842
- additional_constraints_server_global_callbacks_ownership, nullptr, 0,
843
- false, true},
908
+ additional_constraints_server_global_callbacks_ownership, nullptr, 0, true,
909
+ true},
844
910
  {"shard_global_connection_pool", description_shard_global_connection_pool,
845
911
  additional_constraints_shard_global_connection_pool, nullptr, 0, true,
846
912
  true},