grpc 1.78.0 → 1.80.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 (431) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +22 -8
  3. data/include/grpc/credentials.h +47 -37
  4. data/include/grpc/credentials_cpp.h +39 -0
  5. data/include/grpc/event_engine/event_engine.h +8 -3
  6. data/include/grpc/grpc.h +4 -0
  7. data/include/grpc/impl/call.h +9 -0
  8. data/include/grpc/impl/channel_arg_names.h +7 -0
  9. data/include/grpc/module.modulemap +2 -0
  10. data/include/grpc/private_key_signer.h +104 -0
  11. data/include/grpc/support/port_platform.h +6 -0
  12. data/src/core/call/call_filters.h +101 -78
  13. data/src/core/call/call_spine.h +91 -68
  14. data/src/core/call/call_state.h +60 -4
  15. data/src/core/call/client_call.cc +9 -9
  16. data/src/core/call/client_call.h +1 -1
  17. data/src/core/call/metadata_batch.cc +2 -0
  18. data/src/core/call/metadata_batch.h +48 -1
  19. data/src/core/call/metadata_info.cc +35 -0
  20. data/src/core/call/metadata_info.h +2 -0
  21. data/src/core/call/simple_slice_based_metadata.h +2 -1
  22. data/src/core/channelz/channelz.cc +9 -6
  23. data/src/core/channelz/channelz.h +7 -4
  24. data/src/core/channelz/property_list.h +5 -0
  25. data/src/core/channelz/v2tov1/convert.cc +1 -1
  26. data/src/core/channelz/v2tov1/legacy_api.cc +164 -307
  27. data/src/core/client_channel/buffered_call.cc +7 -3
  28. data/src/core/client_channel/buffered_call.h +11 -5
  29. data/src/core/client_channel/client_channel.cc +106 -44
  30. data/src/core/client_channel/client_channel.h +3 -6
  31. data/src/core/client_channel/client_channel_filter.cc +90 -64
  32. data/src/core/client_channel/client_channel_filter.h +3 -6
  33. data/src/core/client_channel/client_channel_internal.h +5 -0
  34. data/src/core/client_channel/config_selector.h +17 -12
  35. data/src/core/client_channel/dynamic_filters.cc +8 -7
  36. data/src/core/client_channel/dynamic_filters.h +7 -5
  37. data/src/core/client_channel/retry_filter.cc +1 -1
  38. data/src/core/client_channel/retry_filter.h +2 -2
  39. data/src/core/client_channel/subchannel.cc +1682 -266
  40. data/src/core/client_channel/subchannel.h +411 -134
  41. data/src/core/client_channel/subchannel_stream_client.cc +22 -18
  42. data/src/core/client_channel/subchannel_stream_client.h +8 -9
  43. data/src/core/client_channel/subchannel_stream_limiter.cc +76 -0
  44. data/src/core/client_channel/subchannel_stream_limiter.h +51 -0
  45. data/src/core/config/config_vars.cc +9 -1
  46. data/src/core/config/config_vars.h +6 -0
  47. data/src/core/credentials/call/call_creds_registry.h +51 -22
  48. data/src/core/credentials/call/call_creds_registry_init.cc +86 -2
  49. data/src/core/credentials/call/external/aws_external_account_credentials.cc +2 -2
  50. data/src/core/credentials/call/external/external_account_credentials.cc +11 -4
  51. data/src/core/credentials/call/external/file_external_account_credentials.cc +2 -2
  52. data/src/core/credentials/transport/channel_creds_registry.h +71 -20
  53. data/src/core/credentials/transport/channel_creds_registry_init.cc +338 -29
  54. data/src/core/credentials/transport/ssl/ssl_credentials.cc +43 -24
  55. data/src/core/credentials/transport/ssl/ssl_credentials.h +7 -1
  56. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +2 -8
  57. data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -3
  58. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +25 -5
  59. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +7 -5
  60. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +181 -109
  61. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +55 -42
  62. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +28 -23
  63. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.h +26 -23
  64. data/src/core/credentials/transport/tls/spiffe_utils.cc +2 -2
  65. data/src/core/credentials/transport/tls/ssl_utils.cc +18 -18
  66. data/src/core/credentials/transport/tls/ssl_utils.h +12 -10
  67. data/src/core/credentials/transport/tls/tls_security_connector.cc +106 -74
  68. data/src/core/credentials/transport/tls/tls_security_connector.h +12 -8
  69. data/src/core/credentials/transport/xds/xds_credentials.cc +76 -32
  70. data/src/core/credentials/transport/xds/xds_credentials.h +4 -2
  71. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +117 -35
  72. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +42 -4
  73. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +58 -29
  74. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +19 -11
  75. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +82 -25
  76. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +28 -3
  77. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +9 -7
  78. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +1 -1
  79. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +7 -1
  80. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +117 -67
  81. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +2 -0
  82. data/src/core/ext/transport/chttp2/transport/flow_control.h +11 -1
  83. data/src/core/ext/transport/chttp2/transport/frame.cc +2 -15
  84. data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
  85. data/src/core/ext/transport/chttp2/transport/goaway.cc +17 -2
  86. data/src/core/ext/transport/chttp2/transport/goaway.h +27 -6
  87. data/src/core/ext/transport/chttp2/transport/header_assembler.h +8 -21
  88. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +101 -40
  89. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +95 -0
  90. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +923 -772
  91. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +406 -423
  92. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -0
  93. data/src/core/ext/transport/chttp2/transport/http2_settings.h +8 -1
  94. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +25 -13
  95. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +71 -24
  96. data/src/core/ext/transport/chttp2/transport/http2_transport.h +25 -49
  97. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +2 -2
  98. data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +29 -9
  99. data/src/core/ext/transport/chttp2/transport/internal.h +6 -2
  100. data/src/core/ext/transport/chttp2/transport/keepalive.cc +14 -20
  101. data/src/core/ext/transport/chttp2/transport/keepalive.h +9 -6
  102. data/src/core/ext/transport/chttp2/transport/parsing.cc +11 -0
  103. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +34 -74
  104. data/src/core/ext/transport/chttp2/transport/ping_promise.h +123 -79
  105. data/src/core/ext/transport/chttp2/transport/security_frame.h +233 -3
  106. data/src/core/ext/transport/chttp2/transport/stream.h +152 -73
  107. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +155 -85
  108. data/src/core/ext/transport/chttp2/transport/transport_common.h +0 -5
  109. data/src/core/ext/transport/chttp2/transport/writable_streams.h +8 -7
  110. data/src/core/ext/transport/chttp2/transport/write_cycle.cc +86 -0
  111. data/src/core/ext/transport/chttp2/transport/write_cycle.h +355 -0
  112. data/src/core/ext/transport/chttp2/transport/writing.cc +31 -29
  113. data/src/core/ext/upb-gen/cel/expr/checked.upb.h +1875 -0
  114. data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c +409 -0
  115. data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h +56 -0
  116. data/src/core/ext/upb-gen/cel/expr/syntax.upb.h +2223 -0
  117. data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c +489 -0
  118. data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h +60 -0
  119. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +2 -1
  120. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +130 -18
  121. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +18 -13
  122. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +70 -38
  123. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +20 -17
  124. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +26 -10
  125. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +8 -7
  126. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h +495 -0
  127. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c +114 -0
  128. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h +36 -0
  129. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +26 -10
  130. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +8 -7
  131. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h +121 -0
  132. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c +54 -0
  133. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h +32 -0
  134. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +143 -9
  135. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +18 -6
  136. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +112 -11
  137. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +22 -9
  138. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +276 -0
  139. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +60 -5
  140. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +4 -0
  141. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +72 -0
  142. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +23 -2
  143. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +2 -0
  144. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +129 -13
  145. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +36 -10
  146. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +2 -0
  147. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +30 -0
  148. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +5 -3
  149. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +16 -0
  150. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +4 -3
  151. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +31 -0
  152. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +5 -3
  153. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +2 -1
  154. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +63 -0
  155. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +12 -7
  156. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +97 -81
  157. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +40 -23
  158. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +604 -228
  159. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +146 -100
  160. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +30 -0
  161. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +5 -3
  162. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +35 -3
  163. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +7 -4
  164. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +66 -14
  165. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +22 -11
  166. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +87 -0
  167. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +29 -2
  168. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +2 -0
  169. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +0 -1
  170. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +0 -1
  171. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +20 -4
  172. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +5 -4
  173. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +239 -60
  174. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +59 -28
  175. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +2 -0
  176. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h +89 -0
  177. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c +50 -0
  178. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h +32 -0
  179. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h +135 -0
  180. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c +53 -0
  181. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h +32 -0
  182. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h +105 -0
  183. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c +51 -0
  184. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h +32 -0
  185. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +32 -0
  186. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +6 -3
  187. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +206 -0
  188. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +41 -8
  189. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +2 -0
  190. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +64 -0
  191. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +4 -3
  192. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +64 -0
  193. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +31 -5
  194. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +2 -0
  195. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +283 -14
  196. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +48 -11
  197. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +2 -0
  198. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +144 -6
  199. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +35 -7
  200. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +2 -0
  201. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +42 -21
  202. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +9 -8
  203. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +164 -1
  204. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +37 -6
  205. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +2 -0
  206. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +0 -1
  207. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +0 -1
  208. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +0 -1
  209. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +0 -1
  210. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +26 -11
  211. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +8 -8
  212. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +33 -0
  213. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +14 -3
  214. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +90 -10
  215. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +18 -7
  216. data/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.c +248 -0
  217. data/src/core/ext/upbdefs-gen/cel/expr/checked.upbdefs.h +97 -0
  218. data/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.c +283 -0
  219. data/src/core/ext/upbdefs-gen/cel/expr/syntax.upbdefs.h +107 -0
  220. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +213 -211
  221. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +635 -614
  222. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +1012 -1000
  223. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +276 -273
  224. data/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.c +152 -0
  225. data/src/core/ext/upbdefs-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upbdefs.h +47 -0
  226. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +149 -144
  227. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +367 -370
  228. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.c +63 -0
  229. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/cel.upbdefs.h +37 -0
  230. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +297 -284
  231. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +492 -469
  232. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +74 -43
  233. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +10 -0
  234. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +60 -59
  235. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +202 -184
  236. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -0
  237. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +354 -339
  238. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  239. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +28 -19
  240. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +30 -27
  241. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +71 -66
  242. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +94 -91
  243. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +386 -369
  244. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +60 -57
  245. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +1974 -1884
  246. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +119 -112
  247. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +62 -51
  248. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +109 -88
  249. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +54 -36
  250. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -0
  251. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +78 -84
  252. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +48 -46
  253. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +1041 -984
  254. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
  255. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +304 -290
  256. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +94 -77
  257. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -0
  258. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +246 -193
  259. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -0
  260. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +37 -23
  261. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -0
  262. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +5 -3
  263. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +4 -4
  264. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +4 -5
  265. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +113 -87
  266. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +5 -0
  267. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +5 -5
  268. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +6 -5
  269. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +5 -5
  270. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +5 -5
  271. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +5 -5
  272. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +25 -30
  273. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +14 -20
  274. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +180 -183
  275. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +56 -47
  276. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +69 -47
  277. data/src/core/filter/filter_chain.h +95 -0
  278. data/src/core/handshaker/http_connect/{http_connect_handshaker.cc → http_connect_client_handshaker.cc} +32 -31
  279. data/src/core/handshaker/http_connect/{http_connect_handshaker.h → http_connect_client_handshaker.h} +4 -4
  280. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +1 -1
  281. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +1 -1
  282. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +14 -13
  283. data/src/core/handshaker/security/secure_endpoint.cc +282 -68
  284. data/src/core/handshaker/security/secure_endpoint.h +0 -7
  285. data/src/core/lib/channel/channel_args.h +1 -1
  286. data/src/core/lib/channel/promise_based_filter.cc +17 -4
  287. data/src/core/lib/channel/promise_based_filter.h +3 -2
  288. data/src/core/lib/debug/trace_flags.cc +2 -0
  289. data/src/core/lib/debug/trace_flags.h +1 -0
  290. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +35 -8
  291. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +1 -2
  292. data/src/core/lib/event_engine/event_engine.cc +9 -0
  293. data/src/core/lib/event_engine/extensions/tcp_trace.h +0 -3
  294. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +2 -2
  295. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +1 -1
  296. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +34 -9
  297. data/src/core/lib/event_engine/posix_engine/posix_engine.h +24 -2
  298. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -3
  299. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +141 -14
  300. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +19 -2
  301. data/src/core/lib/event_engine/posix_engine/posix_interface.h +7 -0
  302. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +21 -3
  303. data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +16 -0
  304. data/src/core/lib/experiments/experiments.cc +309 -201
  305. data/src/core/lib/experiments/experiments.h +141 -80
  306. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
  307. data/src/core/lib/iomgr/resolve_address.h +0 -2
  308. data/src/core/lib/iomgr/resolved_address.h +0 -2
  309. data/src/core/lib/iomgr/tcp_posix.cc +13 -5
  310. data/src/core/lib/iomgr/tcp_server.cc +0 -5
  311. data/src/core/lib/iomgr/tcp_server.h +0 -7
  312. data/src/core/lib/iomgr/tcp_server_posix.cc +0 -17
  313. data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -3
  314. data/src/core/lib/iomgr/tcp_server_windows.cc +12 -51
  315. data/src/core/lib/promise/all_ok.h +17 -12
  316. data/src/core/lib/promise/cancel_callback.h +12 -13
  317. data/src/core/lib/promise/detail/join_state.h +626 -0
  318. data/src/core/lib/promise/detail/promise_factory.h +14 -14
  319. data/src/core/lib/promise/for_each.h +32 -8
  320. data/src/core/lib/promise/if.h +9 -7
  321. data/src/core/lib/promise/loop.h +18 -16
  322. data/src/core/lib/promise/map.h +54 -47
  323. data/src/core/lib/promise/mpsc.h +11 -10
  324. data/src/core/lib/promise/observable.h +6 -6
  325. data/src/core/lib/promise/party.h +25 -19
  326. data/src/core/lib/promise/poll.h +5 -5
  327. data/src/core/lib/promise/prioritized_race.h +10 -7
  328. data/src/core/lib/promise/promise.h +16 -11
  329. data/src/core/lib/promise/race.h +6 -5
  330. data/src/core/lib/promise/seq.h +109 -74
  331. data/src/core/lib/promise/try_join.h +14 -6
  332. data/src/core/lib/promise/try_seq.h +76 -60
  333. data/src/core/lib/resource_quota/api.cc +7 -0
  334. data/src/core/lib/resource_quota/arena.h +1 -1
  335. data/src/core/lib/resource_quota/memory_quota.cc +4 -1
  336. data/src/core/lib/resource_quota/resource_quota.cc +2 -1
  337. data/src/core/lib/resource_quota/resource_quota.h +3 -0
  338. data/src/core/lib/resource_quota/stream_quota.cc +77 -1
  339. data/src/core/lib/resource_quota/stream_quota.h +64 -1
  340. data/src/core/lib/resource_quota/telemetry.h +1 -1
  341. data/src/core/lib/surface/call.cc +13 -0
  342. data/src/core/lib/surface/call_utils.h +58 -43
  343. data/src/core/lib/surface/channel.h +1 -4
  344. data/src/core/lib/surface/completion_queue.cc +13 -6
  345. data/src/core/lib/surface/validate_metadata.cc +20 -15
  346. data/src/core/lib/surface/validate_metadata.h +3 -1
  347. data/src/core/lib/surface/version.cc +2 -2
  348. data/src/core/lib/transport/promise_endpoint.cc +1 -1
  349. data/src/core/lib/transport/promise_endpoint.h +1 -1
  350. data/src/core/lib/transport/transport.h +5 -0
  351. data/src/core/load_balancing/health_check_client.cc +1 -15
  352. data/src/core/load_balancing/health_check_client_internal.h +0 -2
  353. data/src/core/load_balancing/oob_backend_metric.cc +1 -5
  354. data/src/core/load_balancing/oob_backend_metric_internal.h +0 -1
  355. data/src/core/load_balancing/xds/xds_cluster_impl.cc +12 -9
  356. data/src/core/plugin_registry/grpc_plugin_registry.cc +3 -2
  357. data/src/core/resolver/xds/xds_resolver.cc +162 -116
  358. data/src/core/server/server.cc +18 -1
  359. data/src/core/server/server.h +2 -0
  360. data/src/core/server/xds_server_config_fetcher.cc +4 -4
  361. data/src/core/telemetry/call_tracer.cc +87 -2
  362. data/src/core/telemetry/call_tracer.h +46 -8
  363. data/src/core/telemetry/instrument.cc +102 -40
  364. data/src/core/telemetry/instrument.h +246 -65
  365. data/src/core/tsi/fake_transport_security.cc +3 -1
  366. data/src/core/tsi/ssl_transport_security.cc +516 -137
  367. data/src/core/tsi/ssl_transport_security.h +28 -22
  368. data/src/core/tsi/ssl_transport_security_utils.cc +2 -2
  369. data/src/core/tsi/ssl_transport_security_utils.h +2 -2
  370. data/src/core/util/bitset.h +6 -0
  371. data/src/core/util/function_signature.h +3 -1
  372. data/src/core/util/http_client/httpcli_security_connector.cc +2 -1
  373. data/src/core/util/json/json_reader.cc +0 -4
  374. data/src/core/xds/grpc/certificate_provider_store.cc +2 -1
  375. data/src/core/xds/grpc/certificate_provider_store.h +3 -17
  376. data/src/core/xds/grpc/certificate_provider_store_interface.h +61 -0
  377. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +48 -0
  378. data/src/core/xds/grpc/xds_bootstrap_grpc.h +18 -0
  379. data/src/core/xds/grpc/xds_certificate_provider.cc +7 -2
  380. data/src/core/xds/grpc/xds_certificate_provider.h +13 -2
  381. data/src/core/xds/grpc/xds_client_grpc.cc +13 -6
  382. data/src/core/xds/grpc/xds_client_grpc.h +10 -7
  383. data/src/core/xds/grpc/xds_cluster.cc +18 -4
  384. data/src/core/xds/grpc/xds_cluster.h +17 -2
  385. data/src/core/xds/grpc/xds_cluster_parser.cc +36 -11
  386. data/src/core/xds/grpc/xds_common_types.cc +45 -0
  387. data/src/core/xds/grpc/xds_common_types.h +31 -0
  388. data/src/core/xds/grpc/xds_common_types_parser.cc +274 -16
  389. data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
  390. data/src/core/xds/grpc/xds_http_fault_filter.cc +128 -24
  391. data/src/core/xds/grpc/xds_http_fault_filter.h +19 -10
  392. data/src/core/xds/grpc/xds_http_filter.cc +38 -0
  393. data/src/core/xds/grpc/xds_http_filter.h +70 -47
  394. data/src/core/xds/grpc/xds_http_filter_registry.cc +48 -14
  395. data/src/core/xds/grpc/xds_http_filter_registry.h +29 -15
  396. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +88 -22
  397. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +22 -11
  398. data/src/core/xds/grpc/xds_http_rbac_filter.cc +36 -20
  399. data/src/core/xds/grpc/xds_http_rbac_filter.h +19 -10
  400. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +143 -26
  401. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +19 -10
  402. data/src/core/xds/grpc/xds_listener.cc +4 -1
  403. data/src/core/xds/grpc/xds_listener.h +10 -2
  404. data/src/core/xds/grpc/xds_listener_parser.cc +23 -18
  405. data/src/core/xds/grpc/xds_matcher.cc +40 -5
  406. data/src/core/xds/grpc/xds_matcher.h +13 -0
  407. data/src/core/xds/grpc/xds_matcher_action.h +1 -1
  408. data/src/core/xds/grpc/xds_matcher_parse.cc +60 -40
  409. data/src/core/xds/grpc/xds_matcher_parse.h +2 -1
  410. data/src/core/xds/grpc/xds_route_config.cc +12 -1
  411. data/src/core/xds/grpc/xds_route_config.h +15 -2
  412. data/src/core/xds/grpc/xds_route_config_parser.cc +11 -5
  413. data/src/core/xds/grpc/xds_routing.cc +181 -6
  414. data/src/core/xds/grpc/xds_routing.h +57 -0
  415. data/src/core/xds/grpc/xds_server_grpc.cc +55 -43
  416. data/src/core/xds/grpc/xds_server_grpc.h +13 -6
  417. data/src/core/xds/grpc/xds_server_grpc_interface.h +3 -2
  418. data/src/core/xds/grpc/xds_transport_grpc.cc +12 -6
  419. data/src/core/xds/grpc/xds_transport_grpc.h +5 -1
  420. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -8
  421. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +18 -12
  422. data/src/ruby/lib/grpc/grpc.rb +7 -9
  423. data/src/ruby/lib/grpc/version.rb +1 -1
  424. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  425. data/src/ruby/spec/client_server_spec.rb +1 -1
  426. data/src/ruby/spec/generic/rpc_server_pool_spec.rb +1 -1
  427. data/src/ruby/spec/generic/rpc_server_spec.rb +3 -4
  428. data/src/ruby/spec/spec_helper.rb +1 -1
  429. metadata +64 -14
  430. data/src/core/ext/transport/chttp2/transport/security_frame.cc +0 -31
  431. data/src/core/handshaker/security/legacy_secure_endpoint.cc +0 -597
@@ -23,24 +23,34 @@
23
23
 
24
24
  #if defined(GRPC_CFSTREAM)
25
25
  namespace {
26
+ const char* const description_buffer_list_deletion_prep =
27
+ "Gate the removal of old TCP timestamp collection mechanism.";
28
+ const char* const additional_constraints_buffer_list_deletion_prep = "{}";
26
29
  const char* const description_call_tracer_in_transport =
27
30
  "Transport directly passes byte counts to CallTracer.";
28
31
  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 = "{}";
32
+ const char* const
33
+ description_call_tracer_send_initial_metadata_is_an_annotation =
34
+ "Use the new annotation-based CallTracer API.";
35
+ const char* const
36
+ additional_constraints_call_tracer_send_initial_metadata_is_an_annotation =
37
+ "{}";
38
+ const char* const
39
+ description_call_tracer_send_trailing_metadata_is_an_annotation =
40
+ "Use the new annotation-based CallTracer API.";
41
+ const char* const
42
+ additional_constraints_call_tracer_send_trailing_metadata_is_an_annotation =
43
+ "{}";
35
44
  const char* const description_chaotic_good_connect_deadline =
36
45
  "Use the deadline from the connect args in chaotic good connector";
37
46
  const char* const additional_constraints_chaotic_good_connect_deadline = "{}";
38
47
  const char* const description_chaotic_good_framing_layer =
39
48
  "Enable the chaotic good framing layer.";
40
49
  const char* const additional_constraints_chaotic_good_framing_layer = "{}";
41
- const char* const description_chttp2_bound_write_size =
42
- "Fix a bug where chttp2 can generate very large writes";
43
- const char* const additional_constraints_chttp2_bound_write_size = "{}";
50
+ const char* const description_chaotic_good_send_supported_features =
51
+ "Send supported features in chaotic good settings frames.";
52
+ const char* const additional_constraints_chaotic_good_send_supported_features =
53
+ "{}";
44
54
  const char* const description_error_flatten =
45
55
  "Flatten errors to ordinary absl::Status form.";
46
56
  const char* const additional_constraints_error_flatten = "{}";
@@ -82,9 +92,6 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
82
92
  const char* const description_event_engine_poller_for_python =
83
93
  "Enable event engine poller in gRPC Python";
84
94
  const char* const additional_constraints_event_engine_poller_for_python = "{}";
85
- const char* const description_event_engine_secure_endpoint =
86
- "Use EventEngine secure endpoint wrapper instead of iomgr when available";
87
- const char* const additional_constraints_event_engine_secure_endpoint = "{}";
88
95
  const char* const description_fail_recv_metadata_on_deadline_exceeded =
89
96
  "Fail recv initial metadata when the deadline is exceeded.";
90
97
  const char* const
@@ -95,10 +102,6 @@ const char* const additional_constraints_free_large_allocator = "{}";
95
102
  const char* const description_fuse_filters =
96
103
  "If set, individual filters are merged into fused filters";
97
104
  const char* const additional_constraints_fuse_filters = "{}";
98
- const char* const description_graceful_external_connection_failure =
99
- "If set, handles external connection failures gracefully";
100
- const char* const additional_constraints_graceful_external_connection_failure =
101
- "{}";
102
105
  const char* const description_keep_alive_ping_timer_batch =
103
106
  "Avoid explicitly cancelling the keepalive timer. Instead adjust the "
104
107
  "callback to re-schedule itself to the next ping interval.";
@@ -110,6 +113,9 @@ const char* const additional_constraints_local_connector_secure = "{}";
110
113
  const char* const description_max_inflight_pings_strict_limit =
111
114
  "If set, the max inflight pings limit is strictly enforced.";
112
115
  const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
116
+ const char* const description_metadata_publish_to_app_tag =
117
+ "Publish metadata to the app using the kPublishToApp metadata field.";
118
+ const char* const additional_constraints_metadata_publish_to_app_tag = "{}";
113
119
  const char* const description_monitoring_experiment =
114
120
  "Placeholder experiment to prove/disprove our monitoring is working";
115
121
  const char* const additional_constraints_monitoring_experiment = "{}";
@@ -131,8 +137,7 @@ const char* const description_pipelined_read_secure_endpoint =
131
137
  const char* const additional_constraints_pipelined_read_secure_endpoint = "{}";
132
138
  const uint8_t required_experiments_pipelined_read_secure_endpoint[] = {
133
139
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
134
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener),
135
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineSecureEndpoint)};
140
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
136
141
  const char* const description_pollset_alternative =
137
142
  "Code outside iomgr that relies directly on pollsets will use non-pollset "
138
143
  "alternatives when enabled.";
@@ -159,8 +164,16 @@ const char* const additional_constraints_promise_based_http2_server_transport =
159
164
  const char* const description_promise_based_inproc_transport =
160
165
  "Use promises for the in-process transport.";
161
166
  const char* const additional_constraints_promise_based_inproc_transport = "{}";
167
+ const char* const description_promise_filter_send_cancel_metadata =
168
+ "Enables sending all trailing metadata fields from server side "
169
+ "promise-based filters upon stream cancellation.";
170
+ const char* const additional_constraints_promise_filter_send_cancel_metadata =
171
+ "{}";
162
172
  const char* const description_retry_in_callv3 = "Support retries with call-v3";
163
173
  const char* const additional_constraints_retry_in_callv3 = "{}";
174
+ const char* const description_return_preexisting_errors =
175
+ "Return errors that exist before the start of the call in RunHandler.";
176
+ const char* const additional_constraints_return_preexisting_errors = "{}";
164
177
  const char* const description_rr_wrr_connect_from_random_index =
165
178
  "RR and WRR LB policies start connecting from a random index in the "
166
179
  "address list.";
@@ -176,16 +189,20 @@ const char* const additional_constraints_secure_endpoint_offload_large_reads =
176
189
  "{}";
177
190
  const uint8_t required_experiments_secure_endpoint_offload_large_reads[] = {
178
191
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
179
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener),
180
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineSecureEndpoint)};
192
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
181
193
  const char* const description_secure_endpoint_offload_large_writes =
182
194
  "If a large read write to be encrypted, use a separate thread.";
183
195
  const char* const additional_constraints_secure_endpoint_offload_large_writes =
184
196
  "{}";
185
197
  const uint8_t required_experiments_secure_endpoint_offload_large_writes[] = {
186
198
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
187
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener),
188
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineSecureEndpoint)};
199
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
200
+ const char* const description_secure_endpoint_read_coalescing =
201
+ "Coalesce decrypted bytes in SecureEndpoint if a read_hint is provided.";
202
+ const char* const additional_constraints_secure_endpoint_read_coalescing = "{}";
203
+ const uint8_t required_experiments_secure_endpoint_read_coalescing[] = {
204
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
205
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
189
206
  const char* const description_skip_clear_peer_on_cancellation =
190
207
  "If set, skips clearing of peer string on call cancellation.";
191
208
  const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}";
@@ -195,6 +212,9 @@ const char* const additional_constraints_sleep_promise_exec_ctx_removal = "{}";
195
212
  const char* const description_sleep_use_non_owning_waker =
196
213
  "If set, the sleep promise uses a non-owning waker.";
197
214
  const char* const additional_constraints_sleep_use_non_owning_waker = "{}";
215
+ const char* const description_subchannel_connection_scaling =
216
+ "Subchannel connection scaling support.";
217
+ const char* const additional_constraints_subchannel_connection_scaling = "{}";
198
218
  const char* const description_subchannel_wrapper_cleanup_on_orphan =
199
219
  "Fixes the subchannel wrapper to drop any non-cancelled watchers when it "
200
220
  "gets orphaned.";
@@ -209,18 +229,6 @@ const char* const additional_constraints_tcp_frame_size_tuning = "{}";
209
229
  const char* const description_tcp_rcv_lowat =
210
230
  "Use SO_RCVLOWAT to avoid wakeups on the read path.";
211
231
  const char* const additional_constraints_tcp_rcv_lowat = "{}";
212
- const char* const description_track_writes_in_resource_quota =
213
- "Track the Write memory in Resource Quota.";
214
- const char* const additional_constraints_track_writes_in_resource_quota = "{}";
215
- const char* const description_track_zero_copy_allocations_in_resource_quota =
216
- "Track the memory allocattions under the zero copy path in Resource Quota. "
217
- "This includes the encryption / decryption for privacy-and-integrity "
218
- "payloads.";
219
- const char* const
220
- additional_constraints_track_zero_copy_allocations_in_resource_quota = "{}";
221
- const char* const description_transport_state_watcher =
222
- "New state watcher API between transport and subchannel.";
223
- const char* const additional_constraints_transport_state_watcher = "{}";
224
232
  const char* const description_tsi_frame_protector_without_locks =
225
233
  "Do not hold locks while using the tsi_frame_protector.";
226
234
  const char* const additional_constraints_tsi_frame_protector_without_locks =
@@ -229,28 +237,45 @@ const char* const description_unconstrained_max_quota_buffer_size =
229
237
  "Discard the cap on the max free pool size for one memory allocator";
230
238
  const char* const additional_constraints_unconstrained_max_quota_buffer_size =
231
239
  "{}";
240
+ const char* const description_use_call_event_engine_in_completion_queue =
241
+ "Use the call event engine to run callbacks in completion queue.";
242
+ const char* const
243
+ additional_constraints_use_call_event_engine_in_completion_queue = "{}";
244
+ const char* const description_wildcard_ip_expansion_restriction =
245
+ "If set, adds optional restriction on when to expand wildcard IPs.";
246
+ const char* const additional_constraints_wildcard_ip_expansion_restriction =
247
+ "{}";
248
+ const char* const description_xds_channel_filter_chain_per_route =
249
+ "xDS channels use a separate filter chain for each route.";
250
+ const char* const additional_constraints_xds_channel_filter_chain_per_route =
251
+ "{}";
232
252
  } // namespace
233
253
 
234
254
  namespace grpc_core {
235
255
 
236
256
  const ExperimentMetadata g_experiment_metadata[] = {
257
+ {"buffer_list_deletion_prep", description_buffer_list_deletion_prep,
258
+ additional_constraints_buffer_list_deletion_prep, nullptr, 0, false, true},
237
259
  {"call_tracer_in_transport", description_call_tracer_in_transport,
238
260
  additional_constraints_call_tracer_in_transport, nullptr, 0, true, false},
239
- {"channelz_use_v2_for_v1_api", description_channelz_use_v2_for_v1_api,
240
- additional_constraints_channelz_use_v2_for_v1_api, nullptr, 0, false,
241
- true},
242
- {"channelz_use_v2_for_v1_service",
243
- description_channelz_use_v2_for_v1_service,
244
- additional_constraints_channelz_use_v2_for_v1_service, nullptr, 0, false,
245
- true},
261
+ {"call_tracer_send_initial_metadata_is_an_annotation",
262
+ description_call_tracer_send_initial_metadata_is_an_annotation,
263
+ additional_constraints_call_tracer_send_initial_metadata_is_an_annotation,
264
+ nullptr, 0, true, true},
265
+ {"call_tracer_send_trailing_metadata_is_an_annotation",
266
+ description_call_tracer_send_trailing_metadata_is_an_annotation,
267
+ additional_constraints_call_tracer_send_trailing_metadata_is_an_annotation,
268
+ nullptr, 0, false, true},
246
269
  {"chaotic_good_connect_deadline", description_chaotic_good_connect_deadline,
247
270
  additional_constraints_chaotic_good_connect_deadline, nullptr, 0, true,
248
271
  true},
249
272
  {"chaotic_good_framing_layer", description_chaotic_good_framing_layer,
250
273
  additional_constraints_chaotic_good_framing_layer, nullptr, 0, true,
251
274
  false},
252
- {"chttp2_bound_write_size", description_chttp2_bound_write_size,
253
- additional_constraints_chttp2_bound_write_size, nullptr, 0, false, true},
275
+ {"chaotic_good_send_supported_features",
276
+ description_chaotic_good_send_supported_features,
277
+ additional_constraints_chaotic_good_send_supported_features, nullptr, 0,
278
+ false, true},
254
279
  {"error_flatten", description_error_flatten,
255
280
  additional_constraints_error_flatten, nullptr, 0, false, false},
256
281
  {"event_engine_client", description_event_engine_client,
@@ -262,7 +287,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
262
287
  additional_constraints_event_engine_dns_non_client_channel, nullptr, 0,
263
288
  true, false},
264
289
  {"event_engine_fork", description_event_engine_fork,
265
- additional_constraints_event_engine_fork, nullptr, 0, false, false},
290
+ additional_constraints_event_engine_fork, nullptr, 0, true, false},
266
291
  {"event_engine_listener", description_event_engine_listener,
267
292
  additional_constraints_event_engine_listener, nullptr, 0, true, false},
268
293
  {"event_engine_callback_cq", description_event_engine_callback_cq,
@@ -274,11 +299,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
274
299
  required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
275
300
  {"event_engine_poller_for_python",
276
301
  description_event_engine_poller_for_python,
277
- additional_constraints_event_engine_poller_for_python, nullptr, 0, false,
302
+ additional_constraints_event_engine_poller_for_python, nullptr, 0, true,
278
303
  true},
279
- {"event_engine_secure_endpoint", description_event_engine_secure_endpoint,
280
- additional_constraints_event_engine_secure_endpoint, nullptr, 0, true,
281
- false},
282
304
  {"fail_recv_metadata_on_deadline_exceeded",
283
305
  description_fail_recv_metadata_on_deadline_exceeded,
284
306
  additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0,
@@ -287,10 +309,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
287
309
  additional_constraints_free_large_allocator, nullptr, 0, false, true},
288
310
  {"fuse_filters", description_fuse_filters,
289
311
  additional_constraints_fuse_filters, nullptr, 0, false, false},
290
- {"graceful_external_connection_failure",
291
- description_graceful_external_connection_failure,
292
- additional_constraints_graceful_external_connection_failure, nullptr, 0,
293
- true, false},
294
312
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
295
313
  additional_constraints_keep_alive_ping_timer_batch, nullptr, 0, false,
296
314
  true},
@@ -300,6 +318,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
300
318
  description_max_inflight_pings_strict_limit,
301
319
  additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
302
320
  true},
321
+ {"metadata_publish_to_app_tag", description_metadata_publish_to_app_tag,
322
+ additional_constraints_metadata_publish_to_app_tag, nullptr, 0, true,
323
+ true},
303
324
  {"monitoring_experiment", description_monitoring_experiment,
304
325
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
305
326
  {"multiping", description_multiping, additional_constraints_multiping,
@@ -313,12 +334,12 @@ const ExperimentMetadata g_experiment_metadata[] = {
313
334
  true},
314
335
  {"pick_first_ready_to_connecting",
315
336
  description_pick_first_ready_to_connecting,
316
- additional_constraints_pick_first_ready_to_connecting, nullptr, 0, false,
337
+ additional_constraints_pick_first_ready_to_connecting, nullptr, 0, true,
317
338
  true},
318
339
  {"pipelined_read_secure_endpoint",
319
340
  description_pipelined_read_secure_endpoint,
320
341
  additional_constraints_pipelined_read_secure_endpoint,
321
- required_experiments_pipelined_read_secure_endpoint, 3, false, false},
342
+ required_experiments_pipelined_read_secure_endpoint, 2, false, false},
322
343
  {"pollset_alternative", description_pollset_alternative,
323
344
  additional_constraints_pollset_alternative,
324
345
  required_experiments_pollset_alternative, 2, false, false},
@@ -337,11 +358,17 @@ const ExperimentMetadata g_experiment_metadata[] = {
337
358
  description_promise_based_inproc_transport,
338
359
  additional_constraints_promise_based_inproc_transport, nullptr, 0, false,
339
360
  false},
361
+ {"promise_filter_send_cancel_metadata",
362
+ description_promise_filter_send_cancel_metadata,
363
+ additional_constraints_promise_filter_send_cancel_metadata, nullptr, 0,
364
+ false, true},
340
365
  {"retry_in_callv3", description_retry_in_callv3,
341
366
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
367
+ {"return_preexisting_errors", description_return_preexisting_errors,
368
+ additional_constraints_return_preexisting_errors, nullptr, 0, false, true},
342
369
  {"rr_wrr_connect_from_random_index",
343
370
  description_rr_wrr_connect_from_random_index,
344
- additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, false,
371
+ additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, true,
345
372
  true},
346
373
  {"schedule_cancellation_over_write",
347
374
  description_schedule_cancellation_over_write,
@@ -350,11 +377,15 @@ const ExperimentMetadata g_experiment_metadata[] = {
350
377
  {"secure_endpoint_offload_large_reads",
351
378
  description_secure_endpoint_offload_large_reads,
352
379
  additional_constraints_secure_endpoint_offload_large_reads,
353
- required_experiments_secure_endpoint_offload_large_reads, 3, false, true},
380
+ required_experiments_secure_endpoint_offload_large_reads, 2, false, true},
354
381
  {"secure_endpoint_offload_large_writes",
355
382
  description_secure_endpoint_offload_large_writes,
356
383
  additional_constraints_secure_endpoint_offload_large_writes,
357
- required_experiments_secure_endpoint_offload_large_writes, 3, false, true},
384
+ required_experiments_secure_endpoint_offload_large_writes, 2, false, true},
385
+ {"secure_endpoint_read_coalescing",
386
+ description_secure_endpoint_read_coalescing,
387
+ additional_constraints_secure_endpoint_read_coalescing,
388
+ required_experiments_secure_endpoint_read_coalescing, 2, false, true},
358
389
  {"skip_clear_peer_on_cancellation",
359
390
  description_skip_clear_peer_on_cancellation,
360
391
  additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false,
@@ -365,6 +396,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
365
396
  true},
366
397
  {"sleep_use_non_owning_waker", description_sleep_use_non_owning_waker,
367
398
  additional_constraints_sleep_use_non_owning_waker, nullptr, 0, true, true},
399
+ {"subchannel_connection_scaling", description_subchannel_connection_scaling,
400
+ additional_constraints_subchannel_connection_scaling, nullptr, 0, false,
401
+ true},
368
402
  {"subchannel_wrapper_cleanup_on_orphan",
369
403
  description_subchannel_wrapper_cleanup_on_orphan,
370
404
  additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0,
@@ -373,16 +407,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
373
407
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
374
408
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
375
409
  additional_constraints_tcp_rcv_lowat, nullptr, 0, false, true},
376
- {"track_writes_in_resource_quota",
377
- description_track_writes_in_resource_quota,
378
- additional_constraints_track_writes_in_resource_quota, nullptr, 0, false,
379
- true},
380
- {"track_zero_copy_allocations_in_resource_quota",
381
- description_track_zero_copy_allocations_in_resource_quota,
382
- additional_constraints_track_zero_copy_allocations_in_resource_quota,
383
- nullptr, 0, false, true},
384
- {"transport_state_watcher", description_transport_state_watcher,
385
- additional_constraints_transport_state_watcher, nullptr, 0, false, true},
386
410
  {"tsi_frame_protector_without_locks",
387
411
  description_tsi_frame_protector_without_locks,
388
412
  additional_constraints_tsi_frame_protector_without_locks, nullptr, 0,
@@ -391,30 +415,52 @@ const ExperimentMetadata g_experiment_metadata[] = {
391
415
  description_unconstrained_max_quota_buffer_size,
392
416
  additional_constraints_unconstrained_max_quota_buffer_size, nullptr, 0,
393
417
  false, true},
418
+ {"use_call_event_engine_in_completion_queue",
419
+ description_use_call_event_engine_in_completion_queue,
420
+ additional_constraints_use_call_event_engine_in_completion_queue, nullptr,
421
+ 0, false, true},
422
+ {"wildcard_ip_expansion_restriction",
423
+ description_wildcard_ip_expansion_restriction,
424
+ additional_constraints_wildcard_ip_expansion_restriction, nullptr, 0,
425
+ false, true},
426
+ {"xds_channel_filter_chain_per_route",
427
+ description_xds_channel_filter_chain_per_route,
428
+ additional_constraints_xds_channel_filter_chain_per_route, nullptr, 0,
429
+ true, true},
394
430
  };
395
431
 
396
432
  } // namespace grpc_core
397
433
 
398
434
  #elif defined(GPR_WINDOWS)
399
435
  namespace {
436
+ const char* const description_buffer_list_deletion_prep =
437
+ "Gate the removal of old TCP timestamp collection mechanism.";
438
+ const char* const additional_constraints_buffer_list_deletion_prep = "{}";
400
439
  const char* const description_call_tracer_in_transport =
401
440
  "Transport directly passes byte counts to CallTracer.";
402
441
  const char* const additional_constraints_call_tracer_in_transport = "{}";
403
- const char* const description_channelz_use_v2_for_v1_api =
404
- "Use the v2 channelz API for the v1 channelz API.";
405
- const char* const additional_constraints_channelz_use_v2_for_v1_api = "{}";
406
- const char* const description_channelz_use_v2_for_v1_service =
407
- "Use the v2 channelz service for the v1 channelz service.";
408
- const char* const additional_constraints_channelz_use_v2_for_v1_service = "{}";
442
+ const char* const
443
+ description_call_tracer_send_initial_metadata_is_an_annotation =
444
+ "Use the new annotation-based CallTracer API.";
445
+ const char* const
446
+ additional_constraints_call_tracer_send_initial_metadata_is_an_annotation =
447
+ "{}";
448
+ const char* const
449
+ description_call_tracer_send_trailing_metadata_is_an_annotation =
450
+ "Use the new annotation-based CallTracer API.";
451
+ const char* const
452
+ additional_constraints_call_tracer_send_trailing_metadata_is_an_annotation =
453
+ "{}";
409
454
  const char* const description_chaotic_good_connect_deadline =
410
455
  "Use the deadline from the connect args in chaotic good connector";
411
456
  const char* const additional_constraints_chaotic_good_connect_deadline = "{}";
412
457
  const char* const description_chaotic_good_framing_layer =
413
458
  "Enable the chaotic good framing layer.";
414
459
  const char* const additional_constraints_chaotic_good_framing_layer = "{}";
415
- const char* const description_chttp2_bound_write_size =
416
- "Fix a bug where chttp2 can generate very large writes";
417
- const char* const additional_constraints_chttp2_bound_write_size = "{}";
460
+ const char* const description_chaotic_good_send_supported_features =
461
+ "Send supported features in chaotic good settings frames.";
462
+ const char* const additional_constraints_chaotic_good_send_supported_features =
463
+ "{}";
418
464
  const char* const description_error_flatten =
419
465
  "Flatten errors to ordinary absl::Status form.";
420
466
  const char* const additional_constraints_error_flatten = "{}";
@@ -456,9 +502,6 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
456
502
  const char* const description_event_engine_poller_for_python =
457
503
  "Enable event engine poller in gRPC Python";
458
504
  const char* const additional_constraints_event_engine_poller_for_python = "{}";
459
- const char* const description_event_engine_secure_endpoint =
460
- "Use EventEngine secure endpoint wrapper instead of iomgr when available";
461
- const char* const additional_constraints_event_engine_secure_endpoint = "{}";
462
505
  const char* const description_fail_recv_metadata_on_deadline_exceeded =
463
506
  "Fail recv initial metadata when the deadline is exceeded.";
464
507
  const char* const
@@ -469,10 +512,6 @@ const char* const additional_constraints_free_large_allocator = "{}";
469
512
  const char* const description_fuse_filters =
470
513
  "If set, individual filters are merged into fused filters";
471
514
  const char* const additional_constraints_fuse_filters = "{}";
472
- const char* const description_graceful_external_connection_failure =
473
- "If set, handles external connection failures gracefully";
474
- const char* const additional_constraints_graceful_external_connection_failure =
475
- "{}";
476
515
  const char* const description_keep_alive_ping_timer_batch =
477
516
  "Avoid explicitly cancelling the keepalive timer. Instead adjust the "
478
517
  "callback to re-schedule itself to the next ping interval.";
@@ -484,6 +523,9 @@ const char* const additional_constraints_local_connector_secure = "{}";
484
523
  const char* const description_max_inflight_pings_strict_limit =
485
524
  "If set, the max inflight pings limit is strictly enforced.";
486
525
  const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
526
+ const char* const description_metadata_publish_to_app_tag =
527
+ "Publish metadata to the app using the kPublishToApp metadata field.";
528
+ const char* const additional_constraints_metadata_publish_to_app_tag = "{}";
487
529
  const char* const description_monitoring_experiment =
488
530
  "Placeholder experiment to prove/disprove our monitoring is working";
489
531
  const char* const additional_constraints_monitoring_experiment = "{}";
@@ -505,8 +547,7 @@ const char* const description_pipelined_read_secure_endpoint =
505
547
  const char* const additional_constraints_pipelined_read_secure_endpoint = "{}";
506
548
  const uint8_t required_experiments_pipelined_read_secure_endpoint[] = {
507
549
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
508
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener),
509
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineSecureEndpoint)};
550
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
510
551
  const char* const description_pollset_alternative =
511
552
  "Code outside iomgr that relies directly on pollsets will use non-pollset "
512
553
  "alternatives when enabled.";
@@ -533,8 +574,16 @@ const char* const additional_constraints_promise_based_http2_server_transport =
533
574
  const char* const description_promise_based_inproc_transport =
534
575
  "Use promises for the in-process transport.";
535
576
  const char* const additional_constraints_promise_based_inproc_transport = "{}";
577
+ const char* const description_promise_filter_send_cancel_metadata =
578
+ "Enables sending all trailing metadata fields from server side "
579
+ "promise-based filters upon stream cancellation.";
580
+ const char* const additional_constraints_promise_filter_send_cancel_metadata =
581
+ "{}";
536
582
  const char* const description_retry_in_callv3 = "Support retries with call-v3";
537
583
  const char* const additional_constraints_retry_in_callv3 = "{}";
584
+ const char* const description_return_preexisting_errors =
585
+ "Return errors that exist before the start of the call in RunHandler.";
586
+ const char* const additional_constraints_return_preexisting_errors = "{}";
538
587
  const char* const description_rr_wrr_connect_from_random_index =
539
588
  "RR and WRR LB policies start connecting from a random index in the "
540
589
  "address list.";
@@ -550,16 +599,20 @@ const char* const additional_constraints_secure_endpoint_offload_large_reads =
550
599
  "{}";
551
600
  const uint8_t required_experiments_secure_endpoint_offload_large_reads[] = {
552
601
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
553
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener),
554
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineSecureEndpoint)};
602
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
555
603
  const char* const description_secure_endpoint_offload_large_writes =
556
604
  "If a large read write to be encrypted, use a separate thread.";
557
605
  const char* const additional_constraints_secure_endpoint_offload_large_writes =
558
606
  "{}";
559
607
  const uint8_t required_experiments_secure_endpoint_offload_large_writes[] = {
560
608
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
561
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener),
562
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineSecureEndpoint)};
609
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
610
+ const char* const description_secure_endpoint_read_coalescing =
611
+ "Coalesce decrypted bytes in SecureEndpoint if a read_hint is provided.";
612
+ const char* const additional_constraints_secure_endpoint_read_coalescing = "{}";
613
+ const uint8_t required_experiments_secure_endpoint_read_coalescing[] = {
614
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
615
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
563
616
  const char* const description_skip_clear_peer_on_cancellation =
564
617
  "If set, skips clearing of peer string on call cancellation.";
565
618
  const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}";
@@ -569,6 +622,9 @@ const char* const additional_constraints_sleep_promise_exec_ctx_removal = "{}";
569
622
  const char* const description_sleep_use_non_owning_waker =
570
623
  "If set, the sleep promise uses a non-owning waker.";
571
624
  const char* const additional_constraints_sleep_use_non_owning_waker = "{}";
625
+ const char* const description_subchannel_connection_scaling =
626
+ "Subchannel connection scaling support.";
627
+ const char* const additional_constraints_subchannel_connection_scaling = "{}";
572
628
  const char* const description_subchannel_wrapper_cleanup_on_orphan =
573
629
  "Fixes the subchannel wrapper to drop any non-cancelled watchers when it "
574
630
  "gets orphaned.";
@@ -583,18 +639,6 @@ const char* const additional_constraints_tcp_frame_size_tuning = "{}";
583
639
  const char* const description_tcp_rcv_lowat =
584
640
  "Use SO_RCVLOWAT to avoid wakeups on the read path.";
585
641
  const char* const additional_constraints_tcp_rcv_lowat = "{}";
586
- const char* const description_track_writes_in_resource_quota =
587
- "Track the Write memory in Resource Quota.";
588
- const char* const additional_constraints_track_writes_in_resource_quota = "{}";
589
- const char* const description_track_zero_copy_allocations_in_resource_quota =
590
- "Track the memory allocattions under the zero copy path in Resource Quota. "
591
- "This includes the encryption / decryption for privacy-and-integrity "
592
- "payloads.";
593
- const char* const
594
- additional_constraints_track_zero_copy_allocations_in_resource_quota = "{}";
595
- const char* const description_transport_state_watcher =
596
- "New state watcher API between transport and subchannel.";
597
- const char* const additional_constraints_transport_state_watcher = "{}";
598
642
  const char* const description_tsi_frame_protector_without_locks =
599
643
  "Do not hold locks while using the tsi_frame_protector.";
600
644
  const char* const additional_constraints_tsi_frame_protector_without_locks =
@@ -603,28 +647,45 @@ const char* const description_unconstrained_max_quota_buffer_size =
603
647
  "Discard the cap on the max free pool size for one memory allocator";
604
648
  const char* const additional_constraints_unconstrained_max_quota_buffer_size =
605
649
  "{}";
650
+ const char* const description_use_call_event_engine_in_completion_queue =
651
+ "Use the call event engine to run callbacks in completion queue.";
652
+ const char* const
653
+ additional_constraints_use_call_event_engine_in_completion_queue = "{}";
654
+ const char* const description_wildcard_ip_expansion_restriction =
655
+ "If set, adds optional restriction on when to expand wildcard IPs.";
656
+ const char* const additional_constraints_wildcard_ip_expansion_restriction =
657
+ "{}";
658
+ const char* const description_xds_channel_filter_chain_per_route =
659
+ "xDS channels use a separate filter chain for each route.";
660
+ const char* const additional_constraints_xds_channel_filter_chain_per_route =
661
+ "{}";
606
662
  } // namespace
607
663
 
608
664
  namespace grpc_core {
609
665
 
610
666
  const ExperimentMetadata g_experiment_metadata[] = {
667
+ {"buffer_list_deletion_prep", description_buffer_list_deletion_prep,
668
+ additional_constraints_buffer_list_deletion_prep, nullptr, 0, false, true},
611
669
  {"call_tracer_in_transport", description_call_tracer_in_transport,
612
670
  additional_constraints_call_tracer_in_transport, nullptr, 0, true, false},
613
- {"channelz_use_v2_for_v1_api", description_channelz_use_v2_for_v1_api,
614
- additional_constraints_channelz_use_v2_for_v1_api, nullptr, 0, false,
615
- true},
616
- {"channelz_use_v2_for_v1_service",
617
- description_channelz_use_v2_for_v1_service,
618
- additional_constraints_channelz_use_v2_for_v1_service, nullptr, 0, false,
619
- true},
671
+ {"call_tracer_send_initial_metadata_is_an_annotation",
672
+ description_call_tracer_send_initial_metadata_is_an_annotation,
673
+ additional_constraints_call_tracer_send_initial_metadata_is_an_annotation,
674
+ nullptr, 0, true, true},
675
+ {"call_tracer_send_trailing_metadata_is_an_annotation",
676
+ description_call_tracer_send_trailing_metadata_is_an_annotation,
677
+ additional_constraints_call_tracer_send_trailing_metadata_is_an_annotation,
678
+ nullptr, 0, false, true},
620
679
  {"chaotic_good_connect_deadline", description_chaotic_good_connect_deadline,
621
680
  additional_constraints_chaotic_good_connect_deadline, nullptr, 0, true,
622
681
  true},
623
682
  {"chaotic_good_framing_layer", description_chaotic_good_framing_layer,
624
683
  additional_constraints_chaotic_good_framing_layer, nullptr, 0, true,
625
684
  false},
626
- {"chttp2_bound_write_size", description_chttp2_bound_write_size,
627
- additional_constraints_chttp2_bound_write_size, nullptr, 0, false, true},
685
+ {"chaotic_good_send_supported_features",
686
+ description_chaotic_good_send_supported_features,
687
+ additional_constraints_chaotic_good_send_supported_features, nullptr, 0,
688
+ false, true},
628
689
  {"error_flatten", description_error_flatten,
629
690
  additional_constraints_error_flatten, nullptr, 0, false, false},
630
691
  {"event_engine_client", description_event_engine_client,
@@ -636,7 +697,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
636
697
  additional_constraints_event_engine_dns_non_client_channel, nullptr, 0,
637
698
  true, false},
638
699
  {"event_engine_fork", description_event_engine_fork,
639
- additional_constraints_event_engine_fork, nullptr, 0, false, false},
700
+ additional_constraints_event_engine_fork, nullptr, 0, true, false},
640
701
  {"event_engine_listener", description_event_engine_listener,
641
702
  additional_constraints_event_engine_listener, nullptr, 0, true, false},
642
703
  {"event_engine_callback_cq", description_event_engine_callback_cq,
@@ -648,11 +709,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
648
709
  required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
649
710
  {"event_engine_poller_for_python",
650
711
  description_event_engine_poller_for_python,
651
- additional_constraints_event_engine_poller_for_python, nullptr, 0, false,
712
+ additional_constraints_event_engine_poller_for_python, nullptr, 0, true,
652
713
  true},
653
- {"event_engine_secure_endpoint", description_event_engine_secure_endpoint,
654
- additional_constraints_event_engine_secure_endpoint, nullptr, 0, true,
655
- false},
656
714
  {"fail_recv_metadata_on_deadline_exceeded",
657
715
  description_fail_recv_metadata_on_deadline_exceeded,
658
716
  additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0,
@@ -661,10 +719,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
661
719
  additional_constraints_free_large_allocator, nullptr, 0, false, true},
662
720
  {"fuse_filters", description_fuse_filters,
663
721
  additional_constraints_fuse_filters, nullptr, 0, false, false},
664
- {"graceful_external_connection_failure",
665
- description_graceful_external_connection_failure,
666
- additional_constraints_graceful_external_connection_failure, nullptr, 0,
667
- true, false},
668
722
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
669
723
  additional_constraints_keep_alive_ping_timer_batch, nullptr, 0, false,
670
724
  true},
@@ -674,6 +728,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
674
728
  description_max_inflight_pings_strict_limit,
675
729
  additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
676
730
  true},
731
+ {"metadata_publish_to_app_tag", description_metadata_publish_to_app_tag,
732
+ additional_constraints_metadata_publish_to_app_tag, nullptr, 0, true,
733
+ true},
677
734
  {"monitoring_experiment", description_monitoring_experiment,
678
735
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
679
736
  {"multiping", description_multiping, additional_constraints_multiping,
@@ -687,12 +744,12 @@ const ExperimentMetadata g_experiment_metadata[] = {
687
744
  true},
688
745
  {"pick_first_ready_to_connecting",
689
746
  description_pick_first_ready_to_connecting,
690
- additional_constraints_pick_first_ready_to_connecting, nullptr, 0, false,
747
+ additional_constraints_pick_first_ready_to_connecting, nullptr, 0, true,
691
748
  true},
692
749
  {"pipelined_read_secure_endpoint",
693
750
  description_pipelined_read_secure_endpoint,
694
751
  additional_constraints_pipelined_read_secure_endpoint,
695
- required_experiments_pipelined_read_secure_endpoint, 3, false, false},
752
+ required_experiments_pipelined_read_secure_endpoint, 2, false, false},
696
753
  {"pollset_alternative", description_pollset_alternative,
697
754
  additional_constraints_pollset_alternative,
698
755
  required_experiments_pollset_alternative, 2, false, false},
@@ -711,11 +768,17 @@ const ExperimentMetadata g_experiment_metadata[] = {
711
768
  description_promise_based_inproc_transport,
712
769
  additional_constraints_promise_based_inproc_transport, nullptr, 0, false,
713
770
  false},
771
+ {"promise_filter_send_cancel_metadata",
772
+ description_promise_filter_send_cancel_metadata,
773
+ additional_constraints_promise_filter_send_cancel_metadata, nullptr, 0,
774
+ false, true},
714
775
  {"retry_in_callv3", description_retry_in_callv3,
715
776
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
777
+ {"return_preexisting_errors", description_return_preexisting_errors,
778
+ additional_constraints_return_preexisting_errors, nullptr, 0, false, true},
716
779
  {"rr_wrr_connect_from_random_index",
717
780
  description_rr_wrr_connect_from_random_index,
718
- additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, false,
781
+ additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, true,
719
782
  true},
720
783
  {"schedule_cancellation_over_write",
721
784
  description_schedule_cancellation_over_write,
@@ -724,11 +787,15 @@ const ExperimentMetadata g_experiment_metadata[] = {
724
787
  {"secure_endpoint_offload_large_reads",
725
788
  description_secure_endpoint_offload_large_reads,
726
789
  additional_constraints_secure_endpoint_offload_large_reads,
727
- required_experiments_secure_endpoint_offload_large_reads, 3, false, true},
790
+ required_experiments_secure_endpoint_offload_large_reads, 2, false, true},
728
791
  {"secure_endpoint_offload_large_writes",
729
792
  description_secure_endpoint_offload_large_writes,
730
793
  additional_constraints_secure_endpoint_offload_large_writes,
731
- required_experiments_secure_endpoint_offload_large_writes, 3, false, true},
794
+ required_experiments_secure_endpoint_offload_large_writes, 2, false, true},
795
+ {"secure_endpoint_read_coalescing",
796
+ description_secure_endpoint_read_coalescing,
797
+ additional_constraints_secure_endpoint_read_coalescing,
798
+ required_experiments_secure_endpoint_read_coalescing, 2, false, true},
732
799
  {"skip_clear_peer_on_cancellation",
733
800
  description_skip_clear_peer_on_cancellation,
734
801
  additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false,
@@ -739,6 +806,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
739
806
  true},
740
807
  {"sleep_use_non_owning_waker", description_sleep_use_non_owning_waker,
741
808
  additional_constraints_sleep_use_non_owning_waker, nullptr, 0, true, true},
809
+ {"subchannel_connection_scaling", description_subchannel_connection_scaling,
810
+ additional_constraints_subchannel_connection_scaling, nullptr, 0, false,
811
+ true},
742
812
  {"subchannel_wrapper_cleanup_on_orphan",
743
813
  description_subchannel_wrapper_cleanup_on_orphan,
744
814
  additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0,
@@ -747,16 +817,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
747
817
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
748
818
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
749
819
  additional_constraints_tcp_rcv_lowat, nullptr, 0, false, true},
750
- {"track_writes_in_resource_quota",
751
- description_track_writes_in_resource_quota,
752
- additional_constraints_track_writes_in_resource_quota, nullptr, 0, false,
753
- true},
754
- {"track_zero_copy_allocations_in_resource_quota",
755
- description_track_zero_copy_allocations_in_resource_quota,
756
- additional_constraints_track_zero_copy_allocations_in_resource_quota,
757
- nullptr, 0, false, true},
758
- {"transport_state_watcher", description_transport_state_watcher,
759
- additional_constraints_transport_state_watcher, nullptr, 0, false, true},
760
820
  {"tsi_frame_protector_without_locks",
761
821
  description_tsi_frame_protector_without_locks,
762
822
  additional_constraints_tsi_frame_protector_without_locks, nullptr, 0,
@@ -765,30 +825,52 @@ const ExperimentMetadata g_experiment_metadata[] = {
765
825
  description_unconstrained_max_quota_buffer_size,
766
826
  additional_constraints_unconstrained_max_quota_buffer_size, nullptr, 0,
767
827
  false, true},
828
+ {"use_call_event_engine_in_completion_queue",
829
+ description_use_call_event_engine_in_completion_queue,
830
+ additional_constraints_use_call_event_engine_in_completion_queue, nullptr,
831
+ 0, false, true},
832
+ {"wildcard_ip_expansion_restriction",
833
+ description_wildcard_ip_expansion_restriction,
834
+ additional_constraints_wildcard_ip_expansion_restriction, nullptr, 0,
835
+ false, true},
836
+ {"xds_channel_filter_chain_per_route",
837
+ description_xds_channel_filter_chain_per_route,
838
+ additional_constraints_xds_channel_filter_chain_per_route, nullptr, 0,
839
+ true, true},
768
840
  };
769
841
 
770
842
  } // namespace grpc_core
771
843
 
772
844
  #else
773
845
  namespace {
846
+ const char* const description_buffer_list_deletion_prep =
847
+ "Gate the removal of old TCP timestamp collection mechanism.";
848
+ const char* const additional_constraints_buffer_list_deletion_prep = "{}";
774
849
  const char* const description_call_tracer_in_transport =
775
850
  "Transport directly passes byte counts to CallTracer.";
776
851
  const char* const additional_constraints_call_tracer_in_transport = "{}";
777
- const char* const description_channelz_use_v2_for_v1_api =
778
- "Use the v2 channelz API for the v1 channelz API.";
779
- const char* const additional_constraints_channelz_use_v2_for_v1_api = "{}";
780
- const char* const description_channelz_use_v2_for_v1_service =
781
- "Use the v2 channelz service for the v1 channelz service.";
782
- const char* const additional_constraints_channelz_use_v2_for_v1_service = "{}";
852
+ const char* const
853
+ description_call_tracer_send_initial_metadata_is_an_annotation =
854
+ "Use the new annotation-based CallTracer API.";
855
+ const char* const
856
+ additional_constraints_call_tracer_send_initial_metadata_is_an_annotation =
857
+ "{}";
858
+ const char* const
859
+ description_call_tracer_send_trailing_metadata_is_an_annotation =
860
+ "Use the new annotation-based CallTracer API.";
861
+ const char* const
862
+ additional_constraints_call_tracer_send_trailing_metadata_is_an_annotation =
863
+ "{}";
783
864
  const char* const description_chaotic_good_connect_deadline =
784
865
  "Use the deadline from the connect args in chaotic good connector";
785
866
  const char* const additional_constraints_chaotic_good_connect_deadline = "{}";
786
867
  const char* const description_chaotic_good_framing_layer =
787
868
  "Enable the chaotic good framing layer.";
788
869
  const char* const additional_constraints_chaotic_good_framing_layer = "{}";
789
- const char* const description_chttp2_bound_write_size =
790
- "Fix a bug where chttp2 can generate very large writes";
791
- const char* const additional_constraints_chttp2_bound_write_size = "{}";
870
+ const char* const description_chaotic_good_send_supported_features =
871
+ "Send supported features in chaotic good settings frames.";
872
+ const char* const additional_constraints_chaotic_good_send_supported_features =
873
+ "{}";
792
874
  const char* const description_error_flatten =
793
875
  "Flatten errors to ordinary absl::Status form.";
794
876
  const char* const additional_constraints_error_flatten = "{}";
@@ -830,9 +912,6 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
830
912
  const char* const description_event_engine_poller_for_python =
831
913
  "Enable event engine poller in gRPC Python";
832
914
  const char* const additional_constraints_event_engine_poller_for_python = "{}";
833
- const char* const description_event_engine_secure_endpoint =
834
- "Use EventEngine secure endpoint wrapper instead of iomgr when available";
835
- const char* const additional_constraints_event_engine_secure_endpoint = "{}";
836
915
  const char* const description_fail_recv_metadata_on_deadline_exceeded =
837
916
  "Fail recv initial metadata when the deadline is exceeded.";
838
917
  const char* const
@@ -843,10 +922,6 @@ const char* const additional_constraints_free_large_allocator = "{}";
843
922
  const char* const description_fuse_filters =
844
923
  "If set, individual filters are merged into fused filters";
845
924
  const char* const additional_constraints_fuse_filters = "{}";
846
- const char* const description_graceful_external_connection_failure =
847
- "If set, handles external connection failures gracefully";
848
- const char* const additional_constraints_graceful_external_connection_failure =
849
- "{}";
850
925
  const char* const description_keep_alive_ping_timer_batch =
851
926
  "Avoid explicitly cancelling the keepalive timer. Instead adjust the "
852
927
  "callback to re-schedule itself to the next ping interval.";
@@ -858,6 +933,9 @@ const char* const additional_constraints_local_connector_secure = "{}";
858
933
  const char* const description_max_inflight_pings_strict_limit =
859
934
  "If set, the max inflight pings limit is strictly enforced.";
860
935
  const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
936
+ const char* const description_metadata_publish_to_app_tag =
937
+ "Publish metadata to the app using the kPublishToApp metadata field.";
938
+ const char* const additional_constraints_metadata_publish_to_app_tag = "{}";
861
939
  const char* const description_monitoring_experiment =
862
940
  "Placeholder experiment to prove/disprove our monitoring is working";
863
941
  const char* const additional_constraints_monitoring_experiment = "{}";
@@ -879,8 +957,7 @@ const char* const description_pipelined_read_secure_endpoint =
879
957
  const char* const additional_constraints_pipelined_read_secure_endpoint = "{}";
880
958
  const uint8_t required_experiments_pipelined_read_secure_endpoint[] = {
881
959
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
882
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener),
883
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineSecureEndpoint)};
960
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
884
961
  const char* const description_pollset_alternative =
885
962
  "Code outside iomgr that relies directly on pollsets will use non-pollset "
886
963
  "alternatives when enabled.";
@@ -907,8 +984,16 @@ const char* const additional_constraints_promise_based_http2_server_transport =
907
984
  const char* const description_promise_based_inproc_transport =
908
985
  "Use promises for the in-process transport.";
909
986
  const char* const additional_constraints_promise_based_inproc_transport = "{}";
987
+ const char* const description_promise_filter_send_cancel_metadata =
988
+ "Enables sending all trailing metadata fields from server side "
989
+ "promise-based filters upon stream cancellation.";
990
+ const char* const additional_constraints_promise_filter_send_cancel_metadata =
991
+ "{}";
910
992
  const char* const description_retry_in_callv3 = "Support retries with call-v3";
911
993
  const char* const additional_constraints_retry_in_callv3 = "{}";
994
+ const char* const description_return_preexisting_errors =
995
+ "Return errors that exist before the start of the call in RunHandler.";
996
+ const char* const additional_constraints_return_preexisting_errors = "{}";
912
997
  const char* const description_rr_wrr_connect_from_random_index =
913
998
  "RR and WRR LB policies start connecting from a random index in the "
914
999
  "address list.";
@@ -924,16 +1009,20 @@ const char* const additional_constraints_secure_endpoint_offload_large_reads =
924
1009
  "{}";
925
1010
  const uint8_t required_experiments_secure_endpoint_offload_large_reads[] = {
926
1011
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
927
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener),
928
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineSecureEndpoint)};
1012
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
929
1013
  const char* const description_secure_endpoint_offload_large_writes =
930
1014
  "If a large read write to be encrypted, use a separate thread.";
931
1015
  const char* const additional_constraints_secure_endpoint_offload_large_writes =
932
1016
  "{}";
933
1017
  const uint8_t required_experiments_secure_endpoint_offload_large_writes[] = {
934
1018
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
935
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener),
936
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineSecureEndpoint)};
1019
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
1020
+ const char* const description_secure_endpoint_read_coalescing =
1021
+ "Coalesce decrypted bytes in SecureEndpoint if a read_hint is provided.";
1022
+ const char* const additional_constraints_secure_endpoint_read_coalescing = "{}";
1023
+ const uint8_t required_experiments_secure_endpoint_read_coalescing[] = {
1024
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
1025
+ static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
937
1026
  const char* const description_skip_clear_peer_on_cancellation =
938
1027
  "If set, skips clearing of peer string on call cancellation.";
939
1028
  const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}";
@@ -943,6 +1032,9 @@ const char* const additional_constraints_sleep_promise_exec_ctx_removal = "{}";
943
1032
  const char* const description_sleep_use_non_owning_waker =
944
1033
  "If set, the sleep promise uses a non-owning waker.";
945
1034
  const char* const additional_constraints_sleep_use_non_owning_waker = "{}";
1035
+ const char* const description_subchannel_connection_scaling =
1036
+ "Subchannel connection scaling support.";
1037
+ const char* const additional_constraints_subchannel_connection_scaling = "{}";
946
1038
  const char* const description_subchannel_wrapper_cleanup_on_orphan =
947
1039
  "Fixes the subchannel wrapper to drop any non-cancelled watchers when it "
948
1040
  "gets orphaned.";
@@ -957,18 +1049,6 @@ const char* const additional_constraints_tcp_frame_size_tuning = "{}";
957
1049
  const char* const description_tcp_rcv_lowat =
958
1050
  "Use SO_RCVLOWAT to avoid wakeups on the read path.";
959
1051
  const char* const additional_constraints_tcp_rcv_lowat = "{}";
960
- const char* const description_track_writes_in_resource_quota =
961
- "Track the Write memory in Resource Quota.";
962
- const char* const additional_constraints_track_writes_in_resource_quota = "{}";
963
- const char* const description_track_zero_copy_allocations_in_resource_quota =
964
- "Track the memory allocattions under the zero copy path in Resource Quota. "
965
- "This includes the encryption / decryption for privacy-and-integrity "
966
- "payloads.";
967
- const char* const
968
- additional_constraints_track_zero_copy_allocations_in_resource_quota = "{}";
969
- const char* const description_transport_state_watcher =
970
- "New state watcher API between transport and subchannel.";
971
- const char* const additional_constraints_transport_state_watcher = "{}";
972
1052
  const char* const description_tsi_frame_protector_without_locks =
973
1053
  "Do not hold locks while using the tsi_frame_protector.";
974
1054
  const char* const additional_constraints_tsi_frame_protector_without_locks =
@@ -977,28 +1057,45 @@ const char* const description_unconstrained_max_quota_buffer_size =
977
1057
  "Discard the cap on the max free pool size for one memory allocator";
978
1058
  const char* const additional_constraints_unconstrained_max_quota_buffer_size =
979
1059
  "{}";
1060
+ const char* const description_use_call_event_engine_in_completion_queue =
1061
+ "Use the call event engine to run callbacks in completion queue.";
1062
+ const char* const
1063
+ additional_constraints_use_call_event_engine_in_completion_queue = "{}";
1064
+ const char* const description_wildcard_ip_expansion_restriction =
1065
+ "If set, adds optional restriction on when to expand wildcard IPs.";
1066
+ const char* const additional_constraints_wildcard_ip_expansion_restriction =
1067
+ "{}";
1068
+ const char* const description_xds_channel_filter_chain_per_route =
1069
+ "xDS channels use a separate filter chain for each route.";
1070
+ const char* const additional_constraints_xds_channel_filter_chain_per_route =
1071
+ "{}";
980
1072
  } // namespace
981
1073
 
982
1074
  namespace grpc_core {
983
1075
 
984
1076
  const ExperimentMetadata g_experiment_metadata[] = {
1077
+ {"buffer_list_deletion_prep", description_buffer_list_deletion_prep,
1078
+ additional_constraints_buffer_list_deletion_prep, nullptr, 0, false, true},
985
1079
  {"call_tracer_in_transport", description_call_tracer_in_transport,
986
1080
  additional_constraints_call_tracer_in_transport, nullptr, 0, true, false},
987
- {"channelz_use_v2_for_v1_api", description_channelz_use_v2_for_v1_api,
988
- additional_constraints_channelz_use_v2_for_v1_api, nullptr, 0, false,
989
- true},
990
- {"channelz_use_v2_for_v1_service",
991
- description_channelz_use_v2_for_v1_service,
992
- additional_constraints_channelz_use_v2_for_v1_service, nullptr, 0, false,
993
- true},
1081
+ {"call_tracer_send_initial_metadata_is_an_annotation",
1082
+ description_call_tracer_send_initial_metadata_is_an_annotation,
1083
+ additional_constraints_call_tracer_send_initial_metadata_is_an_annotation,
1084
+ nullptr, 0, true, true},
1085
+ {"call_tracer_send_trailing_metadata_is_an_annotation",
1086
+ description_call_tracer_send_trailing_metadata_is_an_annotation,
1087
+ additional_constraints_call_tracer_send_trailing_metadata_is_an_annotation,
1088
+ nullptr, 0, false, true},
994
1089
  {"chaotic_good_connect_deadline", description_chaotic_good_connect_deadline,
995
1090
  additional_constraints_chaotic_good_connect_deadline, nullptr, 0, true,
996
1091
  true},
997
1092
  {"chaotic_good_framing_layer", description_chaotic_good_framing_layer,
998
1093
  additional_constraints_chaotic_good_framing_layer, nullptr, 0, true,
999
1094
  false},
1000
- {"chttp2_bound_write_size", description_chttp2_bound_write_size,
1001
- additional_constraints_chttp2_bound_write_size, nullptr, 0, false, true},
1095
+ {"chaotic_good_send_supported_features",
1096
+ description_chaotic_good_send_supported_features,
1097
+ additional_constraints_chaotic_good_send_supported_features, nullptr, 0,
1098
+ false, true},
1002
1099
  {"error_flatten", description_error_flatten,
1003
1100
  additional_constraints_error_flatten, nullptr, 0, false, false},
1004
1101
  {"event_engine_client", description_event_engine_client,
@@ -1010,7 +1107,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
1010
1107
  additional_constraints_event_engine_dns_non_client_channel, nullptr, 0,
1011
1108
  true, false},
1012
1109
  {"event_engine_fork", description_event_engine_fork,
1013
- additional_constraints_event_engine_fork, nullptr, 0, false, false},
1110
+ additional_constraints_event_engine_fork, nullptr, 0, true, false},
1014
1111
  {"event_engine_listener", description_event_engine_listener,
1015
1112
  additional_constraints_event_engine_listener, nullptr, 0, true, false},
1016
1113
  {"event_engine_callback_cq", description_event_engine_callback_cq,
@@ -1022,11 +1119,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
1022
1119
  required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
1023
1120
  {"event_engine_poller_for_python",
1024
1121
  description_event_engine_poller_for_python,
1025
- additional_constraints_event_engine_poller_for_python, nullptr, 0, false,
1122
+ additional_constraints_event_engine_poller_for_python, nullptr, 0, true,
1026
1123
  true},
1027
- {"event_engine_secure_endpoint", description_event_engine_secure_endpoint,
1028
- additional_constraints_event_engine_secure_endpoint, nullptr, 0, true,
1029
- false},
1030
1124
  {"fail_recv_metadata_on_deadline_exceeded",
1031
1125
  description_fail_recv_metadata_on_deadline_exceeded,
1032
1126
  additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0,
@@ -1035,10 +1129,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
1035
1129
  additional_constraints_free_large_allocator, nullptr, 0, false, true},
1036
1130
  {"fuse_filters", description_fuse_filters,
1037
1131
  additional_constraints_fuse_filters, nullptr, 0, false, false},
1038
- {"graceful_external_connection_failure",
1039
- description_graceful_external_connection_failure,
1040
- additional_constraints_graceful_external_connection_failure, nullptr, 0,
1041
- true, false},
1042
1132
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
1043
1133
  additional_constraints_keep_alive_ping_timer_batch, nullptr, 0, false,
1044
1134
  true},
@@ -1048,6 +1138,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
1048
1138
  description_max_inflight_pings_strict_limit,
1049
1139
  additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
1050
1140
  true},
1141
+ {"metadata_publish_to_app_tag", description_metadata_publish_to_app_tag,
1142
+ additional_constraints_metadata_publish_to_app_tag, nullptr, 0, true,
1143
+ true},
1051
1144
  {"monitoring_experiment", description_monitoring_experiment,
1052
1145
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
1053
1146
  {"multiping", description_multiping, additional_constraints_multiping,
@@ -1061,12 +1154,12 @@ const ExperimentMetadata g_experiment_metadata[] = {
1061
1154
  true},
1062
1155
  {"pick_first_ready_to_connecting",
1063
1156
  description_pick_first_ready_to_connecting,
1064
- additional_constraints_pick_first_ready_to_connecting, nullptr, 0, false,
1157
+ additional_constraints_pick_first_ready_to_connecting, nullptr, 0, true,
1065
1158
  true},
1066
1159
  {"pipelined_read_secure_endpoint",
1067
1160
  description_pipelined_read_secure_endpoint,
1068
1161
  additional_constraints_pipelined_read_secure_endpoint,
1069
- required_experiments_pipelined_read_secure_endpoint, 3, false, false},
1162
+ required_experiments_pipelined_read_secure_endpoint, 2, false, false},
1070
1163
  {"pollset_alternative", description_pollset_alternative,
1071
1164
  additional_constraints_pollset_alternative,
1072
1165
  required_experiments_pollset_alternative, 2, false, false},
@@ -1085,11 +1178,17 @@ const ExperimentMetadata g_experiment_metadata[] = {
1085
1178
  description_promise_based_inproc_transport,
1086
1179
  additional_constraints_promise_based_inproc_transport, nullptr, 0, false,
1087
1180
  false},
1181
+ {"promise_filter_send_cancel_metadata",
1182
+ description_promise_filter_send_cancel_metadata,
1183
+ additional_constraints_promise_filter_send_cancel_metadata, nullptr, 0,
1184
+ false, true},
1088
1185
  {"retry_in_callv3", description_retry_in_callv3,
1089
1186
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
1187
+ {"return_preexisting_errors", description_return_preexisting_errors,
1188
+ additional_constraints_return_preexisting_errors, nullptr, 0, false, true},
1090
1189
  {"rr_wrr_connect_from_random_index",
1091
1190
  description_rr_wrr_connect_from_random_index,
1092
- additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, false,
1191
+ additional_constraints_rr_wrr_connect_from_random_index, nullptr, 0, true,
1093
1192
  true},
1094
1193
  {"schedule_cancellation_over_write",
1095
1194
  description_schedule_cancellation_over_write,
@@ -1098,11 +1197,15 @@ const ExperimentMetadata g_experiment_metadata[] = {
1098
1197
  {"secure_endpoint_offload_large_reads",
1099
1198
  description_secure_endpoint_offload_large_reads,
1100
1199
  additional_constraints_secure_endpoint_offload_large_reads,
1101
- required_experiments_secure_endpoint_offload_large_reads, 3, false, true},
1200
+ required_experiments_secure_endpoint_offload_large_reads, 2, false, true},
1102
1201
  {"secure_endpoint_offload_large_writes",
1103
1202
  description_secure_endpoint_offload_large_writes,
1104
1203
  additional_constraints_secure_endpoint_offload_large_writes,
1105
- required_experiments_secure_endpoint_offload_large_writes, 3, false, true},
1204
+ required_experiments_secure_endpoint_offload_large_writes, 2, false, true},
1205
+ {"secure_endpoint_read_coalescing",
1206
+ description_secure_endpoint_read_coalescing,
1207
+ additional_constraints_secure_endpoint_read_coalescing,
1208
+ required_experiments_secure_endpoint_read_coalescing, 2, false, true},
1106
1209
  {"skip_clear_peer_on_cancellation",
1107
1210
  description_skip_clear_peer_on_cancellation,
1108
1211
  additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false,
@@ -1113,6 +1216,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
1113
1216
  true},
1114
1217
  {"sleep_use_non_owning_waker", description_sleep_use_non_owning_waker,
1115
1218
  additional_constraints_sleep_use_non_owning_waker, nullptr, 0, true, true},
1219
+ {"subchannel_connection_scaling", description_subchannel_connection_scaling,
1220
+ additional_constraints_subchannel_connection_scaling, nullptr, 0, false,
1221
+ true},
1116
1222
  {"subchannel_wrapper_cleanup_on_orphan",
1117
1223
  description_subchannel_wrapper_cleanup_on_orphan,
1118
1224
  additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0,
@@ -1121,16 +1227,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
1121
1227
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
1122
1228
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
1123
1229
  additional_constraints_tcp_rcv_lowat, nullptr, 0, false, true},
1124
- {"track_writes_in_resource_quota",
1125
- description_track_writes_in_resource_quota,
1126
- additional_constraints_track_writes_in_resource_quota, nullptr, 0, false,
1127
- true},
1128
- {"track_zero_copy_allocations_in_resource_quota",
1129
- description_track_zero_copy_allocations_in_resource_quota,
1130
- additional_constraints_track_zero_copy_allocations_in_resource_quota,
1131
- nullptr, 0, false, true},
1132
- {"transport_state_watcher", description_transport_state_watcher,
1133
- additional_constraints_transport_state_watcher, nullptr, 0, false, true},
1134
1230
  {"tsi_frame_protector_without_locks",
1135
1231
  description_tsi_frame_protector_without_locks,
1136
1232
  additional_constraints_tsi_frame_protector_without_locks, nullptr, 0,
@@ -1139,6 +1235,18 @@ const ExperimentMetadata g_experiment_metadata[] = {
1139
1235
  description_unconstrained_max_quota_buffer_size,
1140
1236
  additional_constraints_unconstrained_max_quota_buffer_size, nullptr, 0,
1141
1237
  false, true},
1238
+ {"use_call_event_engine_in_completion_queue",
1239
+ description_use_call_event_engine_in_completion_queue,
1240
+ additional_constraints_use_call_event_engine_in_completion_queue, nullptr,
1241
+ 0, false, true},
1242
+ {"wildcard_ip_expansion_restriction",
1243
+ description_wildcard_ip_expansion_restriction,
1244
+ additional_constraints_wildcard_ip_expansion_restriction, nullptr, 0,
1245
+ false, true},
1246
+ {"xds_channel_filter_chain_per_route",
1247
+ description_xds_channel_filter_chain_per_route,
1248
+ additional_constraints_xds_channel_filter_chain_per_route, nullptr, 0,
1249
+ true, true},
1142
1250
  };
1143
1251
 
1144
1252
  } // namespace grpc_core