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
@@ -57,15 +57,21 @@ namespace grpc_core {
57
57
  #ifdef GRPC_EXPERIMENTS_ARE_FINAL
58
58
 
59
59
  #if defined(GRPC_CFSTREAM)
60
+ inline bool IsBufferListDeletionPrepEnabled() { return false; }
60
61
  #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT
61
62
  inline bool IsCallTracerInTransportEnabled() { return true; }
62
- inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; }
63
- inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; }
63
+ #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_SEND_INITIAL_METADATA_IS_AN_ANNOTATION
64
+ inline bool IsCallTracerSendInitialMetadataIsAnAnnotationEnabled() {
65
+ return true;
66
+ }
67
+ inline bool IsCallTracerSendTrailingMetadataIsAnAnnotationEnabled() {
68
+ return false;
69
+ }
64
70
  #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_CONNECT_DEADLINE
65
71
  inline bool IsChaoticGoodConnectDeadlineEnabled() { return true; }
66
72
  #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
67
73
  inline bool IsChaoticGoodFramingLayerEnabled() { return true; }
68
- inline bool IsChttp2BoundWriteSizeEnabled() { return false; }
74
+ inline bool IsChaoticGoodSendSupportedFeaturesEnabled() { return false; }
69
75
  inline bool IsErrorFlattenEnabled() { return false; }
70
76
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CLIENT
71
77
  inline bool IsEventEngineClientEnabled() { return true; }
@@ -73,65 +79,78 @@ inline bool IsEventEngineClientEnabled() { return true; }
73
79
  inline bool IsEventEngineDnsEnabled() { return true; }
74
80
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL
75
81
  inline bool IsEventEngineDnsNonClientChannelEnabled() { return true; }
76
- inline bool IsEventEngineForkEnabled() { return false; }
82
+ #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FORK
83
+ inline bool IsEventEngineForkEnabled() { return true; }
77
84
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
78
85
  inline bool IsEventEngineListenerEnabled() { return true; }
79
86
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CALLBACK_CQ
80
87
  inline bool IsEventEngineCallbackCqEnabled() { return true; }
81
88
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FOR_ALL_OTHER_ENDPOINTS
82
89
  inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
83
- inline bool IsEventEnginePollerForPythonEnabled() { return false; }
84
- #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
85
- inline bool IsEventEngineSecureEndpointEnabled() { return true; }
90
+ #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_POLLER_FOR_PYTHON
91
+ inline bool IsEventEnginePollerForPythonEnabled() { return true; }
86
92
  inline bool IsFailRecvMetadataOnDeadlineExceededEnabled() { return false; }
87
93
  inline bool IsFreeLargeAllocatorEnabled() { return false; }
88
94
  inline bool IsFuseFiltersEnabled() { return false; }
89
- #define GRPC_EXPERIMENT_IS_INCLUDED_GRACEFUL_EXTERNAL_CONNECTION_FAILURE
90
- inline bool IsGracefulExternalConnectionFailureEnabled() { return true; }
91
95
  inline bool IsKeepAlivePingTimerBatchEnabled() { return false; }
92
96
  inline bool IsLocalConnectorSecureEnabled() { return false; }
93
97
  #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
94
98
  inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; }
99
+ #define GRPC_EXPERIMENT_IS_INCLUDED_METADATA_PUBLISH_TO_APP_TAG
100
+ inline bool IsMetadataPublishToAppTagEnabled() { return true; }
95
101
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
96
102
  inline bool IsMonitoringExperimentEnabled() { return true; }
97
103
  inline bool IsMultipingEnabled() { return false; }
98
104
  inline bool IsOtelExportTelemetryDomainsEnabled() { return false; }
99
105
  inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() { return false; }
100
- inline bool IsPickFirstReadyToConnectingEnabled() { return false; }
106
+ #define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_READY_TO_CONNECTING
107
+ inline bool IsPickFirstReadyToConnectingEnabled() { return true; }
101
108
  inline bool IsPipelinedReadSecureEndpointEnabled() { return false; }
102
109
  inline bool IsPollsetAlternativeEnabled() { return false; }
103
110
  inline bool IsPrioritizeFinishedRequestsEnabled() { return false; }
104
111
  inline bool IsPromiseBasedHttp2ClientTransportEnabled() { return false; }
105
112
  inline bool IsPromiseBasedHttp2ServerTransportEnabled() { return false; }
106
113
  inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
114
+ inline bool IsPromiseFilterSendCancelMetadataEnabled() { return false; }
107
115
  inline bool IsRetryInCallv3Enabled() { return false; }
108
- inline bool IsRrWrrConnectFromRandomIndexEnabled() { return false; }
116
+ inline bool IsReturnPreexistingErrorsEnabled() { return false; }
117
+ #define GRPC_EXPERIMENT_IS_INCLUDED_RR_WRR_CONNECT_FROM_RANDOM_INDEX
118
+ inline bool IsRrWrrConnectFromRandomIndexEnabled() { return true; }
109
119
  inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
110
120
  inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
111
121
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
122
+ inline bool IsSecureEndpointReadCoalescingEnabled() { return false; }
112
123
  inline bool IsSkipClearPeerOnCancellationEnabled() { return false; }
113
124
  inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; }
114
125
  #define GRPC_EXPERIMENT_IS_INCLUDED_SLEEP_USE_NON_OWNING_WAKER
115
126
  inline bool IsSleepUseNonOwningWakerEnabled() { return true; }
127
+ inline bool IsSubchannelConnectionScalingEnabled() { return false; }
116
128
  inline bool IsSubchannelWrapperCleanupOnOrphanEnabled() { return false; }
117
129
  inline bool IsTcpFrameSizeTuningEnabled() { return false; }
118
130
  inline bool IsTcpRcvLowatEnabled() { return false; }
119
- inline bool IsTrackWritesInResourceQuotaEnabled() { return false; }
120
- inline bool IsTrackZeroCopyAllocationsInResourceQuotaEnabled() { return false; }
121
- inline bool IsTransportStateWatcherEnabled() { return false; }
122
131
  inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return false; }
123
132
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
133
+ inline bool IsUseCallEventEngineInCompletionQueueEnabled() { return false; }
134
+ inline bool IsWildcardIpExpansionRestrictionEnabled() { return false; }
135
+ #define GRPC_EXPERIMENT_IS_INCLUDED_XDS_CHANNEL_FILTER_CHAIN_PER_ROUTE
136
+ inline bool IsXdsChannelFilterChainPerRouteEnabled() { return true; }
124
137
 
125
138
  #elif defined(GPR_WINDOWS)
139
+ inline bool IsBufferListDeletionPrepEnabled() { return false; }
126
140
  #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT
127
141
  inline bool IsCallTracerInTransportEnabled() { return true; }
128
- inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; }
129
- inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; }
142
+ #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_SEND_INITIAL_METADATA_IS_AN_ANNOTATION
143
+ inline bool IsCallTracerSendInitialMetadataIsAnAnnotationEnabled() {
144
+ return true;
145
+ }
146
+ inline bool IsCallTracerSendTrailingMetadataIsAnAnnotationEnabled() {
147
+ return false;
148
+ }
130
149
  #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_CONNECT_DEADLINE
131
150
  inline bool IsChaoticGoodConnectDeadlineEnabled() { return true; }
132
151
  #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
133
152
  inline bool IsChaoticGoodFramingLayerEnabled() { return true; }
134
- inline bool IsChttp2BoundWriteSizeEnabled() { return false; }
153
+ inline bool IsChaoticGoodSendSupportedFeaturesEnabled() { return false; }
135
154
  inline bool IsErrorFlattenEnabled() { return false; }
136
155
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CLIENT
137
156
  inline bool IsEventEngineClientEnabled() { return true; }
@@ -139,65 +158,78 @@ inline bool IsEventEngineClientEnabled() { return true; }
139
158
  inline bool IsEventEngineDnsEnabled() { return true; }
140
159
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL
141
160
  inline bool IsEventEngineDnsNonClientChannelEnabled() { return true; }
142
- inline bool IsEventEngineForkEnabled() { return false; }
161
+ #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FORK
162
+ inline bool IsEventEngineForkEnabled() { return true; }
143
163
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
144
164
  inline bool IsEventEngineListenerEnabled() { return true; }
145
165
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CALLBACK_CQ
146
166
  inline bool IsEventEngineCallbackCqEnabled() { return true; }
147
167
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FOR_ALL_OTHER_ENDPOINTS
148
168
  inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
149
- inline bool IsEventEnginePollerForPythonEnabled() { return false; }
150
- #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
151
- inline bool IsEventEngineSecureEndpointEnabled() { return true; }
169
+ #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_POLLER_FOR_PYTHON
170
+ inline bool IsEventEnginePollerForPythonEnabled() { return true; }
152
171
  inline bool IsFailRecvMetadataOnDeadlineExceededEnabled() { return false; }
153
172
  inline bool IsFreeLargeAllocatorEnabled() { return false; }
154
173
  inline bool IsFuseFiltersEnabled() { return false; }
155
- #define GRPC_EXPERIMENT_IS_INCLUDED_GRACEFUL_EXTERNAL_CONNECTION_FAILURE
156
- inline bool IsGracefulExternalConnectionFailureEnabled() { return true; }
157
174
  inline bool IsKeepAlivePingTimerBatchEnabled() { return false; }
158
175
  inline bool IsLocalConnectorSecureEnabled() { return false; }
159
176
  #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
160
177
  inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; }
178
+ #define GRPC_EXPERIMENT_IS_INCLUDED_METADATA_PUBLISH_TO_APP_TAG
179
+ inline bool IsMetadataPublishToAppTagEnabled() { return true; }
161
180
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
162
181
  inline bool IsMonitoringExperimentEnabled() { return true; }
163
182
  inline bool IsMultipingEnabled() { return false; }
164
183
  inline bool IsOtelExportTelemetryDomainsEnabled() { return false; }
165
184
  inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() { return false; }
166
- inline bool IsPickFirstReadyToConnectingEnabled() { return false; }
185
+ #define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_READY_TO_CONNECTING
186
+ inline bool IsPickFirstReadyToConnectingEnabled() { return true; }
167
187
  inline bool IsPipelinedReadSecureEndpointEnabled() { return false; }
168
188
  inline bool IsPollsetAlternativeEnabled() { return false; }
169
189
  inline bool IsPrioritizeFinishedRequestsEnabled() { return false; }
170
190
  inline bool IsPromiseBasedHttp2ClientTransportEnabled() { return false; }
171
191
  inline bool IsPromiseBasedHttp2ServerTransportEnabled() { return false; }
172
192
  inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
193
+ inline bool IsPromiseFilterSendCancelMetadataEnabled() { return false; }
173
194
  inline bool IsRetryInCallv3Enabled() { return false; }
174
- inline bool IsRrWrrConnectFromRandomIndexEnabled() { return false; }
195
+ inline bool IsReturnPreexistingErrorsEnabled() { return false; }
196
+ #define GRPC_EXPERIMENT_IS_INCLUDED_RR_WRR_CONNECT_FROM_RANDOM_INDEX
197
+ inline bool IsRrWrrConnectFromRandomIndexEnabled() { return true; }
175
198
  inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
176
199
  inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
177
200
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
201
+ inline bool IsSecureEndpointReadCoalescingEnabled() { return false; }
178
202
  inline bool IsSkipClearPeerOnCancellationEnabled() { return false; }
179
203
  inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; }
180
204
  #define GRPC_EXPERIMENT_IS_INCLUDED_SLEEP_USE_NON_OWNING_WAKER
181
205
  inline bool IsSleepUseNonOwningWakerEnabled() { return true; }
206
+ inline bool IsSubchannelConnectionScalingEnabled() { return false; }
182
207
  inline bool IsSubchannelWrapperCleanupOnOrphanEnabled() { return false; }
183
208
  inline bool IsTcpFrameSizeTuningEnabled() { return false; }
184
209
  inline bool IsTcpRcvLowatEnabled() { return false; }
185
- inline bool IsTrackWritesInResourceQuotaEnabled() { return false; }
186
- inline bool IsTrackZeroCopyAllocationsInResourceQuotaEnabled() { return false; }
187
- inline bool IsTransportStateWatcherEnabled() { return false; }
188
210
  inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return false; }
189
211
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
212
+ inline bool IsUseCallEventEngineInCompletionQueueEnabled() { return false; }
213
+ inline bool IsWildcardIpExpansionRestrictionEnabled() { return false; }
214
+ #define GRPC_EXPERIMENT_IS_INCLUDED_XDS_CHANNEL_FILTER_CHAIN_PER_ROUTE
215
+ inline bool IsXdsChannelFilterChainPerRouteEnabled() { return true; }
190
216
 
191
217
  #else
218
+ inline bool IsBufferListDeletionPrepEnabled() { return false; }
192
219
  #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT
193
220
  inline bool IsCallTracerInTransportEnabled() { return true; }
194
- inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; }
195
- inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; }
221
+ #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_SEND_INITIAL_METADATA_IS_AN_ANNOTATION
222
+ inline bool IsCallTracerSendInitialMetadataIsAnAnnotationEnabled() {
223
+ return true;
224
+ }
225
+ inline bool IsCallTracerSendTrailingMetadataIsAnAnnotationEnabled() {
226
+ return false;
227
+ }
196
228
  #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_CONNECT_DEADLINE
197
229
  inline bool IsChaoticGoodConnectDeadlineEnabled() { return true; }
198
230
  #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
199
231
  inline bool IsChaoticGoodFramingLayerEnabled() { return true; }
200
- inline bool IsChttp2BoundWriteSizeEnabled() { return false; }
232
+ inline bool IsChaoticGoodSendSupportedFeaturesEnabled() { return false; }
201
233
  inline bool IsErrorFlattenEnabled() { return false; }
202
234
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CLIENT
203
235
  inline bool IsEventEngineClientEnabled() { return true; }
@@ -205,64 +237,72 @@ inline bool IsEventEngineClientEnabled() { return true; }
205
237
  inline bool IsEventEngineDnsEnabled() { return true; }
206
238
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL
207
239
  inline bool IsEventEngineDnsNonClientChannelEnabled() { return true; }
208
- inline bool IsEventEngineForkEnabled() { return false; }
240
+ #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FORK
241
+ inline bool IsEventEngineForkEnabled() { return true; }
209
242
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
210
243
  inline bool IsEventEngineListenerEnabled() { return true; }
211
244
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CALLBACK_CQ
212
245
  inline bool IsEventEngineCallbackCqEnabled() { return true; }
213
246
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FOR_ALL_OTHER_ENDPOINTS
214
247
  inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
215
- inline bool IsEventEnginePollerForPythonEnabled() { return false; }
216
- #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
217
- inline bool IsEventEngineSecureEndpointEnabled() { return true; }
248
+ #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_POLLER_FOR_PYTHON
249
+ inline bool IsEventEnginePollerForPythonEnabled() { return true; }
218
250
  inline bool IsFailRecvMetadataOnDeadlineExceededEnabled() { return false; }
219
251
  inline bool IsFreeLargeAllocatorEnabled() { return false; }
220
252
  inline bool IsFuseFiltersEnabled() { return false; }
221
- #define GRPC_EXPERIMENT_IS_INCLUDED_GRACEFUL_EXTERNAL_CONNECTION_FAILURE
222
- inline bool IsGracefulExternalConnectionFailureEnabled() { return true; }
223
253
  inline bool IsKeepAlivePingTimerBatchEnabled() { return false; }
224
254
  inline bool IsLocalConnectorSecureEnabled() { return false; }
225
255
  #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
226
256
  inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; }
257
+ #define GRPC_EXPERIMENT_IS_INCLUDED_METADATA_PUBLISH_TO_APP_TAG
258
+ inline bool IsMetadataPublishToAppTagEnabled() { return true; }
227
259
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
228
260
  inline bool IsMonitoringExperimentEnabled() { return true; }
229
261
  inline bool IsMultipingEnabled() { return false; }
230
262
  inline bool IsOtelExportTelemetryDomainsEnabled() { return false; }
231
263
  inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() { return false; }
232
- inline bool IsPickFirstReadyToConnectingEnabled() { return false; }
264
+ #define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_READY_TO_CONNECTING
265
+ inline bool IsPickFirstReadyToConnectingEnabled() { return true; }
233
266
  inline bool IsPipelinedReadSecureEndpointEnabled() { return false; }
234
267
  inline bool IsPollsetAlternativeEnabled() { return false; }
235
268
  inline bool IsPrioritizeFinishedRequestsEnabled() { return false; }
236
269
  inline bool IsPromiseBasedHttp2ClientTransportEnabled() { return false; }
237
270
  inline bool IsPromiseBasedHttp2ServerTransportEnabled() { return false; }
238
271
  inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
272
+ inline bool IsPromiseFilterSendCancelMetadataEnabled() { return false; }
239
273
  inline bool IsRetryInCallv3Enabled() { return false; }
240
- inline bool IsRrWrrConnectFromRandomIndexEnabled() { return false; }
274
+ inline bool IsReturnPreexistingErrorsEnabled() { return false; }
275
+ #define GRPC_EXPERIMENT_IS_INCLUDED_RR_WRR_CONNECT_FROM_RANDOM_INDEX
276
+ inline bool IsRrWrrConnectFromRandomIndexEnabled() { return true; }
241
277
  inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
242
278
  inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
243
279
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
280
+ inline bool IsSecureEndpointReadCoalescingEnabled() { return false; }
244
281
  inline bool IsSkipClearPeerOnCancellationEnabled() { return false; }
245
282
  inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; }
246
283
  #define GRPC_EXPERIMENT_IS_INCLUDED_SLEEP_USE_NON_OWNING_WAKER
247
284
  inline bool IsSleepUseNonOwningWakerEnabled() { return true; }
285
+ inline bool IsSubchannelConnectionScalingEnabled() { return false; }
248
286
  inline bool IsSubchannelWrapperCleanupOnOrphanEnabled() { return false; }
249
287
  inline bool IsTcpFrameSizeTuningEnabled() { return false; }
250
288
  inline bool IsTcpRcvLowatEnabled() { return false; }
251
- inline bool IsTrackWritesInResourceQuotaEnabled() { return false; }
252
- inline bool IsTrackZeroCopyAllocationsInResourceQuotaEnabled() { return false; }
253
- inline bool IsTransportStateWatcherEnabled() { return false; }
254
289
  inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return false; }
255
290
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
291
+ inline bool IsUseCallEventEngineInCompletionQueueEnabled() { return false; }
292
+ inline bool IsWildcardIpExpansionRestrictionEnabled() { return false; }
293
+ #define GRPC_EXPERIMENT_IS_INCLUDED_XDS_CHANNEL_FILTER_CHAIN_PER_ROUTE
294
+ inline bool IsXdsChannelFilterChainPerRouteEnabled() { return true; }
256
295
  #endif
257
296
 
258
297
  #else
259
298
  enum ExperimentIds {
299
+ kExperimentIdBufferListDeletionPrep,
260
300
  kExperimentIdCallTracerInTransport,
261
- kExperimentIdChannelzUseV2ForV1Api,
262
- kExperimentIdChannelzUseV2ForV1Service,
301
+ kExperimentIdCallTracerSendInitialMetadataIsAnAnnotation,
302
+ kExperimentIdCallTracerSendTrailingMetadataIsAnAnnotation,
263
303
  kExperimentIdChaoticGoodConnectDeadline,
264
304
  kExperimentIdChaoticGoodFramingLayer,
265
- kExperimentIdChttp2BoundWriteSize,
305
+ kExperimentIdChaoticGoodSendSupportedFeatures,
266
306
  kExperimentIdErrorFlatten,
267
307
  kExperimentIdEventEngineClient,
268
308
  kExperimentIdEventEngineDns,
@@ -272,14 +312,13 @@ enum ExperimentIds {
272
312
  kExperimentIdEventEngineCallbackCq,
273
313
  kExperimentIdEventEngineForAllOtherEndpoints,
274
314
  kExperimentIdEventEnginePollerForPython,
275
- kExperimentIdEventEngineSecureEndpoint,
276
315
  kExperimentIdFailRecvMetadataOnDeadlineExceeded,
277
316
  kExperimentIdFreeLargeAllocator,
278
317
  kExperimentIdFuseFilters,
279
- kExperimentIdGracefulExternalConnectionFailure,
280
318
  kExperimentIdKeepAlivePingTimerBatch,
281
319
  kExperimentIdLocalConnectorSecure,
282
320
  kExperimentIdMaxInflightPingsStrictLimit,
321
+ kExperimentIdMetadataPublishToAppTag,
283
322
  kExperimentIdMonitoringExperiment,
284
323
  kExperimentIdMultiping,
285
324
  kExperimentIdOtelExportTelemetryDomains,
@@ -291,35 +330,45 @@ enum ExperimentIds {
291
330
  kExperimentIdPromiseBasedHttp2ClientTransport,
292
331
  kExperimentIdPromiseBasedHttp2ServerTransport,
293
332
  kExperimentIdPromiseBasedInprocTransport,
333
+ kExperimentIdPromiseFilterSendCancelMetadata,
294
334
  kExperimentIdRetryInCallv3,
335
+ kExperimentIdReturnPreexistingErrors,
295
336
  kExperimentIdRrWrrConnectFromRandomIndex,
296
337
  kExperimentIdScheduleCancellationOverWrite,
297
338
  kExperimentIdSecureEndpointOffloadLargeReads,
298
339
  kExperimentIdSecureEndpointOffloadLargeWrites,
340
+ kExperimentIdSecureEndpointReadCoalescing,
299
341
  kExperimentIdSkipClearPeerOnCancellation,
300
342
  kExperimentIdSleepPromiseExecCtxRemoval,
301
343
  kExperimentIdSleepUseNonOwningWaker,
344
+ kExperimentIdSubchannelConnectionScaling,
302
345
  kExperimentIdSubchannelWrapperCleanupOnOrphan,
303
346
  kExperimentIdTcpFrameSizeTuning,
304
347
  kExperimentIdTcpRcvLowat,
305
- kExperimentIdTrackWritesInResourceQuota,
306
- kExperimentIdTrackZeroCopyAllocationsInResourceQuota,
307
- kExperimentIdTransportStateWatcher,
308
348
  kExperimentIdTsiFrameProtectorWithoutLocks,
309
349
  kExperimentIdUnconstrainedMaxQuotaBufferSize,
350
+ kExperimentIdUseCallEventEngineInCompletionQueue,
351
+ kExperimentIdWildcardIpExpansionRestriction,
352
+ kExperimentIdXdsChannelFilterChainPerRoute,
310
353
  kNumExperiments
311
354
  };
355
+ #define GRPC_EXPERIMENT_IS_INCLUDED_BUFFER_LIST_DELETION_PREP
356
+ inline bool IsBufferListDeletionPrepEnabled() {
357
+ return IsExperimentEnabled<kExperimentIdBufferListDeletionPrep>();
358
+ }
312
359
  #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT
313
360
  inline bool IsCallTracerInTransportEnabled() {
314
361
  return IsExperimentEnabled<kExperimentIdCallTracerInTransport>();
315
362
  }
316
- #define GRPC_EXPERIMENT_IS_INCLUDED_CHANNELZ_USE_V2_FOR_V1_API
317
- inline bool IsChannelzUseV2ForV1ApiEnabled() {
318
- return IsExperimentEnabled<kExperimentIdChannelzUseV2ForV1Api>();
363
+ #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_SEND_INITIAL_METADATA_IS_AN_ANNOTATION
364
+ inline bool IsCallTracerSendInitialMetadataIsAnAnnotationEnabled() {
365
+ return IsExperimentEnabled<
366
+ kExperimentIdCallTracerSendInitialMetadataIsAnAnnotation>();
319
367
  }
320
- #define GRPC_EXPERIMENT_IS_INCLUDED_CHANNELZ_USE_V2_FOR_V1_SERVICE
321
- inline bool IsChannelzUseV2ForV1ServiceEnabled() {
322
- return IsExperimentEnabled<kExperimentIdChannelzUseV2ForV1Service>();
368
+ #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_SEND_TRAILING_METADATA_IS_AN_ANNOTATION
369
+ inline bool IsCallTracerSendTrailingMetadataIsAnAnnotationEnabled() {
370
+ return IsExperimentEnabled<
371
+ kExperimentIdCallTracerSendTrailingMetadataIsAnAnnotation>();
323
372
  }
324
373
  #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_CONNECT_DEADLINE
325
374
  inline bool IsChaoticGoodConnectDeadlineEnabled() {
@@ -329,9 +378,9 @@ inline bool IsChaoticGoodConnectDeadlineEnabled() {
329
378
  inline bool IsChaoticGoodFramingLayerEnabled() {
330
379
  return IsExperimentEnabled<kExperimentIdChaoticGoodFramingLayer>();
331
380
  }
332
- #define GRPC_EXPERIMENT_IS_INCLUDED_CHTTP2_BOUND_WRITE_SIZE
333
- inline bool IsChttp2BoundWriteSizeEnabled() {
334
- return IsExperimentEnabled<kExperimentIdChttp2BoundWriteSize>();
381
+ #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_SEND_SUPPORTED_FEATURES
382
+ inline bool IsChaoticGoodSendSupportedFeaturesEnabled() {
383
+ return IsExperimentEnabled<kExperimentIdChaoticGoodSendSupportedFeatures>();
335
384
  }
336
385
  #define GRPC_EXPERIMENT_IS_INCLUDED_ERROR_FLATTEN
337
386
  inline bool IsErrorFlattenEnabled() {
@@ -369,10 +418,6 @@ inline bool IsEventEngineForAllOtherEndpointsEnabled() {
369
418
  inline bool IsEventEnginePollerForPythonEnabled() {
370
419
  return IsExperimentEnabled<kExperimentIdEventEnginePollerForPython>();
371
420
  }
372
- #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
373
- inline bool IsEventEngineSecureEndpointEnabled() {
374
- return IsExperimentEnabled<kExperimentIdEventEngineSecureEndpoint>();
375
- }
376
421
  #define GRPC_EXPERIMENT_IS_INCLUDED_FAIL_RECV_METADATA_ON_DEADLINE_EXCEEDED
377
422
  inline bool IsFailRecvMetadataOnDeadlineExceededEnabled() {
378
423
  return IsExperimentEnabled<kExperimentIdFailRecvMetadataOnDeadlineExceeded>();
@@ -385,10 +430,6 @@ inline bool IsFreeLargeAllocatorEnabled() {
385
430
  inline bool IsFuseFiltersEnabled() {
386
431
  return IsExperimentEnabled<kExperimentIdFuseFilters>();
387
432
  }
388
- #define GRPC_EXPERIMENT_IS_INCLUDED_GRACEFUL_EXTERNAL_CONNECTION_FAILURE
389
- inline bool IsGracefulExternalConnectionFailureEnabled() {
390
- return IsExperimentEnabled<kExperimentIdGracefulExternalConnectionFailure>();
391
- }
392
433
  #define GRPC_EXPERIMENT_IS_INCLUDED_KEEP_ALIVE_PING_TIMER_BATCH
393
434
  inline bool IsKeepAlivePingTimerBatchEnabled() {
394
435
  return IsExperimentEnabled<kExperimentIdKeepAlivePingTimerBatch>();
@@ -401,6 +442,10 @@ inline bool IsLocalConnectorSecureEnabled() {
401
442
  inline bool IsMaxInflightPingsStrictLimitEnabled() {
402
443
  return IsExperimentEnabled<kExperimentIdMaxInflightPingsStrictLimit>();
403
444
  }
445
+ #define GRPC_EXPERIMENT_IS_INCLUDED_METADATA_PUBLISH_TO_APP_TAG
446
+ inline bool IsMetadataPublishToAppTagEnabled() {
447
+ return IsExperimentEnabled<kExperimentIdMetadataPublishToAppTag>();
448
+ }
404
449
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
405
450
  inline bool IsMonitoringExperimentEnabled() {
406
451
  return IsExperimentEnabled<kExperimentIdMonitoringExperiment>();
@@ -445,10 +490,18 @@ inline bool IsPromiseBasedHttp2ServerTransportEnabled() {
445
490
  inline bool IsPromiseBasedInprocTransportEnabled() {
446
491
  return IsExperimentEnabled<kExperimentIdPromiseBasedInprocTransport>();
447
492
  }
493
+ #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_FILTER_SEND_CANCEL_METADATA
494
+ inline bool IsPromiseFilterSendCancelMetadataEnabled() {
495
+ return IsExperimentEnabled<kExperimentIdPromiseFilterSendCancelMetadata>();
496
+ }
448
497
  #define GRPC_EXPERIMENT_IS_INCLUDED_RETRY_IN_CALLV3
449
498
  inline bool IsRetryInCallv3Enabled() {
450
499
  return IsExperimentEnabled<kExperimentIdRetryInCallv3>();
451
500
  }
501
+ #define GRPC_EXPERIMENT_IS_INCLUDED_RETURN_PREEXISTING_ERRORS
502
+ inline bool IsReturnPreexistingErrorsEnabled() {
503
+ return IsExperimentEnabled<kExperimentIdReturnPreexistingErrors>();
504
+ }
452
505
  #define GRPC_EXPERIMENT_IS_INCLUDED_RR_WRR_CONNECT_FROM_RANDOM_INDEX
453
506
  inline bool IsRrWrrConnectFromRandomIndexEnabled() {
454
507
  return IsExperimentEnabled<kExperimentIdRrWrrConnectFromRandomIndex>();
@@ -465,6 +518,10 @@ inline bool IsSecureEndpointOffloadLargeReadsEnabled() {
465
518
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() {
466
519
  return IsExperimentEnabled<kExperimentIdSecureEndpointOffloadLargeWrites>();
467
520
  }
521
+ #define GRPC_EXPERIMENT_IS_INCLUDED_SECURE_ENDPOINT_READ_COALESCING
522
+ inline bool IsSecureEndpointReadCoalescingEnabled() {
523
+ return IsExperimentEnabled<kExperimentIdSecureEndpointReadCoalescing>();
524
+ }
468
525
  #define GRPC_EXPERIMENT_IS_INCLUDED_SKIP_CLEAR_PEER_ON_CANCELLATION
469
526
  inline bool IsSkipClearPeerOnCancellationEnabled() {
470
527
  return IsExperimentEnabled<kExperimentIdSkipClearPeerOnCancellation>();
@@ -477,6 +534,10 @@ inline bool IsSleepPromiseExecCtxRemovalEnabled() {
477
534
  inline bool IsSleepUseNonOwningWakerEnabled() {
478
535
  return IsExperimentEnabled<kExperimentIdSleepUseNonOwningWaker>();
479
536
  }
537
+ #define GRPC_EXPERIMENT_IS_INCLUDED_SUBCHANNEL_CONNECTION_SCALING
538
+ inline bool IsSubchannelConnectionScalingEnabled() {
539
+ return IsExperimentEnabled<kExperimentIdSubchannelConnectionScaling>();
540
+ }
480
541
  #define GRPC_EXPERIMENT_IS_INCLUDED_SUBCHANNEL_WRAPPER_CLEANUP_ON_ORPHAN
481
542
  inline bool IsSubchannelWrapperCleanupOnOrphanEnabled() {
482
543
  return IsExperimentEnabled<kExperimentIdSubchannelWrapperCleanupOnOrphan>();
@@ -489,19 +550,6 @@ inline bool IsTcpFrameSizeTuningEnabled() {
489
550
  inline bool IsTcpRcvLowatEnabled() {
490
551
  return IsExperimentEnabled<kExperimentIdTcpRcvLowat>();
491
552
  }
492
- #define GRPC_EXPERIMENT_IS_INCLUDED_TRACK_WRITES_IN_RESOURCE_QUOTA
493
- inline bool IsTrackWritesInResourceQuotaEnabled() {
494
- return IsExperimentEnabled<kExperimentIdTrackWritesInResourceQuota>();
495
- }
496
- #define GRPC_EXPERIMENT_IS_INCLUDED_TRACK_ZERO_COPY_ALLOCATIONS_IN_RESOURCE_QUOTA
497
- inline bool IsTrackZeroCopyAllocationsInResourceQuotaEnabled() {
498
- return IsExperimentEnabled<
499
- kExperimentIdTrackZeroCopyAllocationsInResourceQuota>();
500
- }
501
- #define GRPC_EXPERIMENT_IS_INCLUDED_TRANSPORT_STATE_WATCHER
502
- inline bool IsTransportStateWatcherEnabled() {
503
- return IsExperimentEnabled<kExperimentIdTransportStateWatcher>();
504
- }
505
553
  #define GRPC_EXPERIMENT_IS_INCLUDED_TSI_FRAME_PROTECTOR_WITHOUT_LOCKS
506
554
  inline bool IsTsiFrameProtectorWithoutLocksEnabled() {
507
555
  return IsExperimentEnabled<kExperimentIdTsiFrameProtectorWithoutLocks>();
@@ -510,6 +558,19 @@ inline bool IsTsiFrameProtectorWithoutLocksEnabled() {
510
558
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() {
511
559
  return IsExperimentEnabled<kExperimentIdUnconstrainedMaxQuotaBufferSize>();
512
560
  }
561
+ #define GRPC_EXPERIMENT_IS_INCLUDED_USE_CALL_EVENT_ENGINE_IN_COMPLETION_QUEUE
562
+ inline bool IsUseCallEventEngineInCompletionQueueEnabled() {
563
+ return IsExperimentEnabled<
564
+ kExperimentIdUseCallEventEngineInCompletionQueue>();
565
+ }
566
+ #define GRPC_EXPERIMENT_IS_INCLUDED_WILDCARD_IP_EXPANSION_RESTRICTION
567
+ inline bool IsWildcardIpExpansionRestrictionEnabled() {
568
+ return IsExperimentEnabled<kExperimentIdWildcardIpExpansionRestriction>();
569
+ }
570
+ #define GRPC_EXPERIMENT_IS_INCLUDED_XDS_CHANNEL_FILTER_CHAIN_PER_ROUTE
571
+ inline bool IsXdsChannelFilterChainPerRouteEnabled() {
572
+ return IsExperimentEnabled<kExperimentIdXdsChannelFilterChainPerRoute>();
573
+ }
513
574
 
514
575
  extern const ExperimentMetadata g_experiment_metadata[kNumExperiments];
515
576
 
@@ -108,7 +108,7 @@ class EventEngineEndpointWrapper {
108
108
  read_buffer->Clear();
109
109
  return endpoint_->Read(
110
110
  [this](absl::Status status) { FinishPendingRead(status); }, read_buffer,
111
- std::move(args));
111
+ args);
112
112
  }
113
113
 
114
114
  void FinishPendingRead(absl::Status status) {
@@ -302,7 +302,7 @@ void EndpointRead(grpc_endpoint* ep, grpc_slice_buffer* slices,
302
302
 
303
303
  EventEngine::Endpoint::ReadArgs read_args;
304
304
  read_args.set_read_hint_bytes(min_progress_size);
305
- if (eeep->wrapper->Read(cb, slices, std::move(read_args))) {
305
+ if (eeep->wrapper->Read(cb, slices, read_args)) {
306
306
  // Read succeeded immediately. Run the callback inline.
307
307
  eeep->wrapper->FinishPendingRead(absl::OkStatus());
308
308
  }
@@ -32,8 +32,6 @@
32
32
  #include "absl/container/flat_hash_set.h"
33
33
  #include "absl/status/statusor.h"
34
34
 
35
- #define GRPC_MAX_SOCKADDR_SIZE 128
36
-
37
35
  namespace grpc_core {
38
36
  extern const char* kDefaultSecurePort;
39
37
  constexpr int kDefaultSecurePortInt = 443;
@@ -28,8 +28,6 @@
28
28
  #include <sys/socket.h>
29
29
  #endif
30
30
 
31
- #define GRPC_MAX_SOCKADDR_SIZE 128
32
-
33
31
  struct grpc_resolved_address {
34
32
  char addr[GRPC_MAX_SOCKADDR_SIZE];
35
33
  socklen_t len;
@@ -53,6 +53,7 @@
53
53
  #include "src/core/lib/event_engine/shim.h"
54
54
  #include "src/core/lib/experiments/experiments.h"
55
55
  #include "src/core/lib/iomgr/buffer_list.h"
56
+ #include "src/core/lib/iomgr/error.h"
56
57
  #include "src/core/lib/iomgr/ev_posix.h"
57
58
  #include "src/core/lib/iomgr/event_engine_shims/endpoint.h"
58
59
  #include "src/core/lib/iomgr/socket_utils_posix.h"
@@ -753,8 +754,10 @@ static void tcp_free(grpc_tcp* tcp) {
753
754
  grpc_fd_orphan(tcp->em_fd, tcp->release_fd_cb, tcp->release_fd,
754
755
  "tcp_unref_orphan");
755
756
  grpc_slice_buffer_destroy(&tcp->last_read_buffer);
756
- tcp->tb_list.Shutdown(tcp->outgoing_buffer_arg,
757
- GRPC_ERROR_CREATE("endpoint destroyed"));
757
+ if (!grpc_core::IsBufferListDeletionPrepEnabled()) {
758
+ tcp->tb_list.Shutdown(tcp->outgoing_buffer_arg,
759
+ GRPC_ERROR_CREATE("endpoint destroyed"));
760
+ }
758
761
  tcp->outgoing_buffer_arg = nullptr;
759
762
  delete tcp;
760
763
  }
@@ -1278,8 +1281,11 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
1278
1281
  *sent_length = length;
1279
1282
  // Only save timestamps if all the bytes were taken by sendmsg.
1280
1283
  if (sending_length == static_cast<size_t>(length)) {
1281
- tcp->tb_list.AddNewEntry(static_cast<uint32_t>(tcp->bytes_counter + length),
1282
- tcp->fd, tcp->outgoing_buffer_arg);
1284
+ if (!grpc_core::IsBufferListDeletionPrepEnabled()) {
1285
+ tcp->tb_list.AddNewEntry(
1286
+ static_cast<uint32_t>(tcp->bytes_counter + length), tcp->fd,
1287
+ tcp->outgoing_buffer_arg);
1288
+ }
1283
1289
  tcp->outgoing_buffer_arg = nullptr;
1284
1290
  }
1285
1291
  return true;
@@ -1367,7 +1373,9 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
1367
1373
  LOG(ERROR) << "Unexpected control message";
1368
1374
  return cmsg;
1369
1375
  }
1370
- tcp->tb_list.ProcessTimestamp(serr, opt_stats, tss);
1376
+ if (!grpc_core::IsBufferListDeletionPrepEnabled()) {
1377
+ tcp->tb_list.ProcessTimestamp(serr, opt_stats, tss);
1378
+ }
1371
1379
  return next_cmsg;
1372
1380
  }
1373
1381
 
@@ -65,11 +65,6 @@ void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server* s,
65
65
  grpc_tcp_server_impl->shutdown_starting_add(s, shutdown_starting);
66
66
  }
67
67
 
68
- void grpc_tcp_server_shutdown_ending_add(grpc_tcp_server* s,
69
- grpc_closure* shutdown_ending) {
70
- grpc_tcp_server_impl->shutdown_ending_add(s, shutdown_ending);
71
- }
72
-
73
68
  void grpc_tcp_server_unref(grpc_tcp_server* s) {
74
69
  grpc_tcp_server_impl->unref(s);
75
70
  }
@@ -78,8 +78,6 @@ typedef struct grpc_tcp_server_vtable {
78
78
  grpc_tcp_server* (*ref)(grpc_tcp_server* s);
79
79
  void (*shutdown_starting_add)(grpc_tcp_server* s,
80
80
  grpc_closure* shutdown_starting);
81
- void (*shutdown_ending_add)(grpc_tcp_server* s,
82
- grpc_closure* shutdown_ending);
83
81
  void (*unref)(grpc_tcp_server* s);
84
82
  void (*shutdown_listeners)(grpc_tcp_server* s);
85
83
  int (*pre_allocated_fd)(grpc_tcp_server* s);
@@ -137,11 +135,6 @@ grpc_tcp_server* grpc_tcp_server_ref(grpc_tcp_server* s);
137
135
  void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server* s,
138
136
  grpc_closure* shutdown_starting);
139
137
 
140
- // shutdown_ending is called when ref count has reached zero and the server
141
- // has just been destroyed. Calling grpc_tcp_server_ref() from it has no effect.
142
- void grpc_tcp_server_shutdown_ending_add(grpc_tcp_server* s,
143
- grpc_closure* shutdown_ending);
144
-
145
138
  // If the refcount drops to zero, enqueue calls on exec_ctx to
146
139
  // shutdown_listeners and delete s.
147
140
  void grpc_tcp_server_unref(grpc_tcp_server* s);
@@ -91,12 +91,6 @@ using ::grpc_event_engine::experimental::SliceBuffer;
91
91
  static void finish_shutdown(grpc_tcp_server* s) {
92
92
  gpr_mu_lock(&s->mu);
93
93
  GRPC_CHECK(s->shutdown);
94
- if (grpc_core::ExecCtx::Get() == nullptr) {
95
- grpc_core::ExecCtx exec_ctx;
96
- grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_ending);
97
- } else {
98
- grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_ending);
99
- }
100
94
  gpr_mu_unlock(&s->mu);
101
95
  if (s->shutdown_complete != nullptr) {
102
96
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, s->shutdown_complete,
@@ -285,8 +279,6 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
285
279
  s->shutdown = false;
286
280
  s->shutdown_starting.head = nullptr;
287
281
  s->shutdown_starting.tail = nullptr;
288
- s->shutdown_ending.head = nullptr;
289
- s->shutdown_ending.tail = nullptr;
290
282
  if (!grpc_event_engine::experimental::UseEventEngineListener()) {
291
283
  s->shutdown_complete = shutdown_complete;
292
284
  } else {
@@ -844,14 +836,6 @@ static void tcp_server_shutdown_starting_add(grpc_tcp_server* s,
844
836
  gpr_mu_unlock(&s->mu);
845
837
  }
846
838
 
847
- static void tcp_server_shutdown_ending_add(grpc_tcp_server* s,
848
- grpc_closure* shutdown_ending) {
849
- gpr_mu_lock(&s->mu);
850
- grpc_closure_list_append(&s->shutdown_ending, shutdown_ending,
851
- absl::OkStatus());
852
- gpr_mu_unlock(&s->mu);
853
- }
854
-
855
839
  static void tcp_server_unref(grpc_tcp_server* s) {
856
840
  if (gpr_unref(&s->refs)) {
857
841
  grpc_tcp_server_shutdown_listeners(s);
@@ -990,7 +974,6 @@ grpc_tcp_server_vtable grpc_posix_tcp_server_vtable = {
990
974
  tcp_server_port_fd,
991
975
  tcp_server_ref,
992
976
  tcp_server_shutdown_starting_add,
993
- tcp_server_shutdown_ending_add,
994
977
  tcp_server_unref,
995
978
  tcp_server_shutdown_listeners,
996
979
  tcp_server_pre_allocated_fd,