grpc 1.83.0 → 1.84.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 (330) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +21 -17
  3. data/include/grpc/credentials.h +10 -0
  4. data/include/grpc/grpc_security_constants.h +2 -0
  5. data/include/grpc/impl/channel_arg_names.h +9 -0
  6. data/src/core/call/call_filters.h +4 -2
  7. data/src/core/call/client_call.cc +20 -8
  8. data/src/core/call/client_call.h +4 -0
  9. data/src/core/call/interception_chain.cc +2 -0
  10. data/src/core/call/interception_chain.h +14 -1
  11. data/src/core/call/metadata.cc +1 -3
  12. data/src/core/call/metadata_batch.h +13 -5
  13. data/src/core/call/server_call.cc +31 -14
  14. data/src/core/call/server_call.h +4 -0
  15. data/src/core/channelz/text_encode.cc +9 -4
  16. data/src/core/channelz/v2tov1/convert.cc +2 -2
  17. data/src/core/client_channel/backup_poller.cc +1 -2
  18. data/src/core/client_channel/client_channel.cc +6 -33
  19. data/src/core/client_channel/client_channel_filter.cc +22 -55
  20. data/src/core/client_channel/client_channel_filter.h +2 -2
  21. data/src/core/client_channel/client_channel_service_config.cc +3 -19
  22. data/src/core/client_channel/direct_channel.cc +7 -1
  23. data/src/core/client_channel/direct_channel.h +2 -2
  24. data/src/core/client_channel/load_balanced_call_destination.cc +5 -3
  25. data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -12
  26. data/src/core/client_channel/subchannel.cc +310 -1058
  27. data/src/core/client_channel/subchannel.h +44 -329
  28. data/src/core/client_channel/subchannel_metrics.cc +48 -0
  29. data/src/core/client_channel/subchannel_metrics.h +60 -0
  30. data/src/core/credentials/call/external/file_external_account_credentials.cc +1 -1
  31. data/src/core/credentials/call/external/url_external_account_credentials.cc +2 -3
  32. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +8 -24
  33. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +3 -6
  34. data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.cc +525 -0
  35. data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.h +138 -0
  36. data/src/core/credentials/call/json_util.h +1 -0
  37. data/src/core/credentials/call/jwt/json_token.cc +10 -2
  38. data/src/core/credentials/call/jwt/jwt_verifier.cc +15 -1
  39. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +1 -1
  40. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +42 -79
  41. data/src/core/credentials/call/oauth2/oauth2_credentials.h +2 -5
  42. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +52 -31
  43. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +21 -8
  44. data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -4
  45. data/src/core/credentials/transport/ssl/ssl_credentials.cc +59 -72
  46. data/src/core/credentials/transport/ssl/ssl_credentials.h +9 -8
  47. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +12 -6
  48. data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -4
  49. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -18
  50. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +9 -6
  51. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +45 -56
  52. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +5 -4
  53. data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.h +26 -0
  54. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +1 -1
  55. data/src/core/credentials/transport/tls/load_system_roots.h +2 -6
  56. data/src/core/credentials/transport/tls/load_system_roots_fallback.cc +2 -4
  57. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +13 -15
  58. data/src/core/credentials/transport/tls/load_system_roots_supported.h +3 -2
  59. data/src/core/credentials/transport/tls/load_system_roots_windows.cc +5 -8
  60. data/src/core/credentials/transport/tls/spiffe_utils.cc +1 -1
  61. data/src/core/credentials/transport/tls/ssl_utils.cc +39 -28
  62. data/src/core/credentials/transport/tls/ssl_utils.h +12 -49
  63. data/src/core/credentials/transport/tls/tls_security_connector.cc +48 -33
  64. data/src/core/credentials/transport/tls/tls_security_connector.h +31 -10
  65. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +15 -11
  66. data/src/core/ext/filters/http/http_filters_plugin.cc +20 -9
  67. data/src/core/ext/filters/http/message_compress/compression_filter.cc +25 -32
  68. data/src/core/ext/filters/http/message_compress/compression_filter.h +0 -1
  69. data/src/core/ext/filters/rbac/rbac_filter.cc +43 -21
  70. data/src/core/ext/filters/rbac/rbac_filter.h +21 -3
  71. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
  72. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
  73. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -20
  74. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +80 -70
  75. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -0
  76. data/src/core/ext/transport/chttp2/transport/flow_control.h +78 -4
  77. data/src/core/ext/transport/chttp2/transport/frame.h +2 -0
  78. data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -2
  79. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +55 -23
  80. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -0
  81. data/src/core/ext/transport/chttp2/transport/goaway.h +7 -0
  82. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +5 -3
  83. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -1
  84. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +141 -130
  85. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +22 -22
  86. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +402 -269
  87. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +80 -49
  88. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +1 -2
  89. data/src/core/ext/transport/chttp2/transport/http2_status.h +38 -37
  90. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +178 -5
  91. data/src/core/ext/transport/chttp2/transport/http2_transport.h +345 -5
  92. data/src/core/ext/transport/chttp2/transport/internal.h +6 -0
  93. data/src/core/ext/transport/chttp2/transport/parsing.cc +13 -5
  94. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +3 -2
  95. data/src/core/ext/transport/chttp2/transport/ping_promise.h +25 -5
  96. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +3 -4
  97. data/src/core/ext/transport/chttp2/transport/read_context.h +30 -3
  98. data/src/core/ext/transport/chttp2/transport/stream.h +65 -23
  99. data/src/core/ext/transport/chttp2/transport/writing.cc +0 -3
  100. data/src/core/ext/transport/inproc/inproc_transport.cc +1 -5
  101. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +4 -17
  102. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb.h +1912 -0
  103. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.c +300 -0
  104. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.h +37 -0
  105. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb.h +187 -0
  106. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.c +64 -0
  107. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.h +31 -0
  108. data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb.h +2362 -0
  109. data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.c +556 -0
  110. data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.h +47 -0
  111. data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb.h +5 -5
  112. data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb_minitable.c +3 -3
  113. data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb_minitable.h +5 -5
  114. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.c +453 -0
  115. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.h +67 -0
  116. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.c +142 -0
  117. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.h +37 -0
  118. data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +715 -0
  119. data/src/core/ext/upbdefs-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upbdefs.h +44 -44
  120. data/src/core/filter/auth/server_auth_filter.cc +2 -3
  121. data/src/core/filter/composite/composite_filter.cc +45 -33
  122. data/src/core/filter/composite/composite_filter.h +5 -4
  123. data/src/core/filter/ext_proc/ext_proc_filter.cc +224 -0
  124. data/src/core/filter/ext_proc/ext_proc_filter.h +155 -0
  125. data/src/core/filter/ext_proc/ext_proc_messages.cc +701 -0
  126. data/src/core/filter/ext_proc/ext_proc_messages.h +297 -0
  127. data/src/core/filter/filter_args.h +13 -2
  128. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +30 -3
  129. data/src/core/handshaker/security/security_handshaker.cc +9 -6
  130. data/src/core/lib/channel/channel_stack.cc +3 -0
  131. data/src/core/lib/channel/channel_stack.h +2 -0
  132. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -2
  133. data/src/core/lib/channel/promise_based_filter.cc +132 -20
  134. data/src/core/lib/channel/promise_based_filter.h +42 -12
  135. data/src/core/lib/compression/compression_internal.cc +4 -5
  136. data/src/core/lib/compression/message_compress.cc +132 -97
  137. data/src/core/lib/compression/message_compress.h +24 -0
  138. data/src/core/lib/debug/trace_flags.cc +8 -0
  139. data/src/core/lib/debug/trace_flags.h +3 -0
  140. data/src/core/lib/event_engine/ares_resolver.cc +54 -50
  141. data/src/core/lib/event_engine/ares_resolver.h +3 -2
  142. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +3 -3
  143. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +4 -10
  144. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +74 -33
  145. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +4 -4
  146. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -2
  147. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -0
  148. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -0
  149. data/src/core/lib/event_engine/windows/windows_endpoint.cc +1 -3
  150. data/src/core/lib/experiments/experiments.cc +81 -102
  151. data/src/core/lib/experiments/experiments.h +57 -56
  152. data/src/core/lib/iomgr/cfstream_handle.cc +2 -6
  153. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -10
  154. data/src/core/lib/iomgr/error.cc +2 -6
  155. data/src/core/lib/iomgr/error_cfstream.cc +1 -1
  156. data/src/core/lib/iomgr/ev_poll_posix.cc +5 -9
  157. data/src/core/lib/iomgr/event_engine_shims/closure.cc +1 -1
  158. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +1 -2
  159. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
  160. data/src/core/lib/iomgr/iomgr_posix.cc +0 -4
  161. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -4
  162. data/src/core/lib/iomgr/iomgr_windows.cc +0 -4
  163. data/src/core/lib/iomgr/socket_factory_posix.h +1 -1
  164. data/src/core/lib/iomgr/socket_utils_posix.cc +3 -0
  165. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  166. data/src/core/lib/iomgr/systemd_utils.cc +0 -1
  167. data/src/core/lib/iomgr/tcp_client.h +1 -1
  168. data/src/core/lib/iomgr/tcp_posix.cc +23 -15
  169. data/src/core/lib/iomgr/tcp_server.h +1 -1
  170. data/src/core/lib/iomgr/tcp_server_posix.cc +2 -3
  171. data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -1
  172. data/src/core/lib/iomgr/tcp_server_windows.cc +0 -1
  173. data/src/core/lib/iomgr/tcp_windows.cc +5 -10
  174. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
  175. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
  176. data/src/core/lib/iomgr/vsock.h +3 -1
  177. data/src/core/lib/resource_quota/memory_quota.cc +1 -1
  178. data/src/core/lib/security/authorization/rbac_policy.cc +139 -56
  179. data/src/core/lib/security/authorization/rbac_policy.h +21 -3
  180. data/src/core/lib/surface/call.cc +3 -9
  181. data/src/core/lib/surface/call_utils.h +113 -0
  182. data/src/core/lib/surface/channel_create.cc +1 -1
  183. data/src/core/lib/surface/channel_create.h +0 -2
  184. data/src/core/lib/surface/channel_init.cc +77 -38
  185. data/src/core/lib/surface/channel_init.h +30 -16
  186. data/src/core/lib/surface/filter_stack_call.cc +5 -10
  187. data/src/core/lib/surface/init.cc +13 -27
  188. data/src/core/lib/surface/legacy_channel.cc +3 -1
  189. data/src/core/lib/surface/version.cc +1 -1
  190. data/src/core/lib/transport/error_utils.cc +0 -27
  191. data/src/core/lib/transport/error_utils.h +0 -16
  192. data/src/core/lib/transport/transport.h +7 -5
  193. data/src/core/load_balancing/pick_first/pick_first.cc +2 -0
  194. data/src/core/load_balancing/rls/rls.cc +28 -11
  195. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +33 -42
  196. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.h +0 -2
  197. data/src/core/load_balancing/xds/cds.cc +3 -1
  198. data/src/core/load_balancing/xds/xds_cluster_impl.cc +0 -1
  199. data/src/core/mitigation_engine/mitigation.h +14 -5
  200. data/src/core/mitigation_engine/mitigation_engine.h +7 -3
  201. data/src/core/mitigation_engine/mitigation_provider.h +2 -1
  202. data/src/core/plugin_registry/grpc_plugin_registry.cc +39 -8
  203. data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.cc → dns_resolver.cc} +42 -41
  204. data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.h → dns_resolver.h} +8 -5
  205. data/src/core/resolver/dns/{event_engine/service_config_helper.cc → service_config_helper.cc} +1 -1
  206. data/src/core/resolver/dns/{event_engine/service_config_helper.h → service_config_helper.h} +3 -3
  207. data/src/core/resolver/endpoint_addresses.h +3 -0
  208. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +2 -1
  209. data/src/core/resolver/xds/xds_resolver.cc +35 -9
  210. data/src/core/server/server.cc +2 -6
  211. data/src/core/server/server_config_selector.h +18 -3
  212. data/src/core/server/server_config_selector_filter.cc +178 -91
  213. data/src/core/server/server_config_selector_filter.h +58 -3
  214. data/src/core/server/xds_server_config_fetcher.cc +196 -129
  215. data/src/core/server/xds_server_config_fetcher.h +49 -0
  216. data/src/core/server/xds_server_config_fetcher_legacy.cc +41 -37
  217. data/src/core/telemetry/histogram.h +94 -14
  218. data/src/core/telemetry/instrument.cc +179 -74
  219. data/src/core/telemetry/instrument.h +78 -30
  220. data/src/core/telemetry/metrics.h +5 -0
  221. data/src/core/{resolver/dns/dns_resolver_plugin.h → telemetry/telemetry_label.h} +12 -8
  222. data/src/core/tsi/alts/crypt/aes_gcm.cc +10 -13
  223. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
  224. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +3 -1
  225. data/src/core/tsi/ssl_telemetry_utils.cc +216 -259
  226. data/src/core/tsi/ssl_telemetry_utils.h +12 -2
  227. data/src/core/tsi/ssl_transport_security.cc +238 -80
  228. data/src/core/tsi/ssl_transport_security.h +63 -33
  229. data/src/core/tsi/tls_telemetry.cc +31 -0
  230. data/src/core/tsi/tls_telemetry.h +47 -0
  231. data/src/core/tsi/transport_security.cc +2 -2
  232. data/src/core/tsi/transport_security.h +1 -1
  233. data/src/core/tsi/transport_security_interface.h +1 -1
  234. data/src/core/{resolver/dns/native/dns_resolver.h → util/address_sorting_init.cc} +21 -8
  235. data/src/core/{resolver/dns/c_ares/grpc_ares_wrapper_posix.cc → util/address_sorting_init.h} +7 -8
  236. data/src/core/util/http_client/httpcli.cc +16 -53
  237. data/src/core/util/http_client/httpcli.h +0 -7
  238. data/src/core/util/http_client/httpcli_security_connector.cc +13 -8
  239. data/src/core/util/linux/cpu.cc +1 -1
  240. data/src/core/util/load_file.cc +3 -9
  241. data/src/core/util/load_file.h +3 -4
  242. data/src/core/util/matchers.h +8 -0
  243. data/src/core/util/posix/cpu.cc +1 -1
  244. data/src/core/util/status_helper.cc +0 -20
  245. data/src/core/util/status_helper.h +3 -14
  246. data/src/core/xds/grpc/xds_audit_logger_registry.cc +51 -31
  247. data/src/core/xds/grpc/xds_audit_logger_registry.h +17 -3
  248. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -10
  249. data/src/core/xds/grpc/xds_bootstrap_grpc.h +8 -6
  250. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +488 -0
  251. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.h +97 -0
  252. data/src/core/xds/grpc/xds_certificate_provider.cc +7 -7
  253. data/src/core/xds/grpc/xds_client_grpc.cc +4 -8
  254. data/src/core/xds/grpc/xds_client_grpc.h +0 -4
  255. data/src/core/xds/grpc/xds_cluster.h +1 -0
  256. data/src/core/xds/grpc/xds_cluster_parser.cc +1 -5
  257. data/src/core/xds/grpc/xds_cluster_parser.h +0 -2
  258. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +0 -2
  259. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +0 -2
  260. data/src/core/xds/grpc/xds_common_types.cc +0 -91
  261. data/src/core/xds/grpc/xds_common_types.h +1 -47
  262. data/src/core/xds/grpc/xds_common_types_parser.cc +84 -378
  263. data/src/core/xds/grpc/xds_common_types_parser.h +9 -11
  264. data/src/core/xds/grpc/xds_endpoint_parser.cc +0 -2
  265. data/src/core/xds/grpc/xds_grpc_service_parser.cc +177 -0
  266. data/src/core/{resolver/dns/c_ares/dns_resolver_ares.h → xds/grpc/xds_grpc_service_parser.h} +14 -9
  267. data/src/core/xds/grpc/xds_http_composite_filter.cc +26 -21
  268. data/src/core/xds/grpc/xds_http_composite_filter.h +4 -3
  269. data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +418 -0
  270. data/src/core/xds/grpc/xds_http_ext_proc_filter.h +89 -0
  271. data/src/core/xds/grpc/xds_http_fault_filter.cc +9 -12
  272. data/src/core/xds/grpc/xds_http_fault_filter.h +1 -4
  273. data/src/core/xds/grpc/xds_http_filter.cc +2 -1
  274. data/src/core/xds/grpc/xds_http_filter.h +6 -5
  275. data/src/core/xds/grpc/xds_http_filter_registry.cc +10 -127
  276. data/src/core/xds/grpc/xds_http_filter_registry.h +7 -59
  277. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +13 -14
  278. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -2
  279. data/src/core/xds/grpc/xds_http_rbac_filter.cc +403 -25
  280. data/src/core/xds/grpc/xds_http_rbac_filter.h +1 -3
  281. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +8 -13
  282. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +1 -4
  283. data/src/core/xds/grpc/xds_lb_policy_registry.cc +0 -292
  284. data/src/core/xds/grpc/xds_lb_policy_registry.h +7 -3
  285. data/src/core/xds/grpc/xds_listener.cc +2 -0
  286. data/src/core/xds/grpc/xds_listener.h +5 -0
  287. data/src/core/xds/grpc/xds_listener_parser.cc +16 -11
  288. data/src/core/xds/grpc/xds_matcher_parse.h +3 -1
  289. data/src/core/xds/grpc/xds_metadata_parser.cc +6 -1
  290. data/src/core/xds/grpc/xds_metadata_parser.h +2 -0
  291. data/src/core/xds/grpc/xds_route_config.cc +2 -0
  292. data/src/core/xds/grpc/xds_route_config.h +3 -1
  293. data/src/core/xds/grpc/xds_route_config_parser.cc +13 -79
  294. data/src/core/xds/grpc/xds_route_config_parser.h +0 -3
  295. data/src/core/xds/grpc/xds_routing.cc +116 -69
  296. data/src/core/xds/grpc/xds_routing.h +19 -8
  297. data/src/core/xds/grpc/xds_tls_context.cc +117 -0
  298. data/src/core/xds/grpc/xds_tls_context.h +76 -0
  299. data/src/core/xds/grpc/xds_tls_context_parser.cc +275 -0
  300. data/src/core/xds/grpc/xds_tls_context_parser.h +35 -0
  301. data/src/core/xds/grpc/xds_transport_grpc.cc +41 -38
  302. data/src/core/xds/grpc/xds_transport_grpc.h +4 -2
  303. data/src/ruby/ext/grpc/rb_call.c +26 -15
  304. data/src/ruby/ext/grpc/rb_completion_queue.c +6 -5
  305. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  306. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  307. data/src/ruby/lib/grpc/version.rb +1 -1
  308. data/src/ruby/pb/test/client.rb +5 -4
  309. data/src/ruby/spec/call_spec.rb +14 -0
  310. data/src/ruby/spec/generic/server_interceptors_spec.rb +3 -6
  311. metadata +50 -35
  312. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +0 -716
  313. data/src/core/lib/iomgr/resolve_address.cc +0 -59
  314. data/src/core/lib/iomgr/resolve_address.h +0 -125
  315. data/src/core/lib/iomgr/resolve_address_impl.h +0 -58
  316. data/src/core/lib/iomgr/resolve_address_posix.cc +0 -184
  317. data/src/core/lib/iomgr/resolve_address_posix.h +0 -78
  318. data/src/core/lib/iomgr/resolve_address_windows.cc +0 -169
  319. data/src/core/lib/iomgr/resolve_address_windows.h +0 -76
  320. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +0 -781
  321. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +0 -93
  322. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +0 -203
  323. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +0 -838
  324. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +0 -1237
  325. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +0 -130
  326. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +0 -35
  327. data/src/core/resolver/dns/dns_resolver_plugin.cc +0 -64
  328. data/src/core/resolver/dns/native/dns_resolver.cc +0 -173
  329. data/src/core/util/json/json_util.cc +0 -101
  330. data/src/core/util/json/json_util.h +0 -163
@@ -57,14 +57,6 @@ const char* const additional_constraints_custom_frame_check = "{}";
57
57
  const char* const description_event_engine_client =
58
58
  "Use EventEngine clients instead of iomgr's grpc_tcp_client";
59
59
  const char* const additional_constraints_event_engine_client = "{}";
60
- const char* const description_event_engine_dns =
61
- "If set, use EventEngine DNSResolver for client channel resolution";
62
- const char* const additional_constraints_event_engine_dns = "{}";
63
- const char* const description_event_engine_dns_non_client_channel =
64
- "If set, use EventEngine DNSResolver in other places besides client "
65
- "channel.";
66
- const char* const additional_constraints_event_engine_dns_non_client_channel =
67
- "{}";
68
60
  const char* const description_event_engine_fork =
69
61
  "Enables event engine fork handling, including onfork events and file "
70
62
  "descriptor generations";
@@ -85,14 +77,15 @@ const char* const additional_constraints_event_engine_for_all_other_endpoints =
85
77
  "{}";
86
78
  const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
87
79
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
88
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineDns),
89
- static_cast<uint8_t>(
90
- grpc_core::kExperimentIdEventEngineDnsNonClientChannel),
91
80
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
92
81
  const char* const description_fail_recv_metadata_on_deadline_exceeded =
93
82
  "Fail recv initial metadata when the deadline is exceeded.";
94
83
  const char* const
95
84
  additional_constraints_fail_recv_metadata_on_deadline_exceeded = "{}";
85
+ const char* const description_fix_v3_filter_stack_server_side_ordering =
86
+ "If set, reverse the server side ordering for v3 filter stack.";
87
+ const char* const
88
+ additional_constraints_fix_v3_filter_stack_server_side_ordering = "{}";
96
89
  const char* const description_free_large_allocator =
97
90
  "If set, return all free bytes from a \042big\042 allocator";
98
91
  const char* const additional_constraints_free_large_allocator = "{}";
@@ -103,6 +96,9 @@ const char* const description_h2_max_deallocating_streams_headroom =
103
96
  "Separate allocated max concurrent streams.";
104
97
  const char* const additional_constraints_h2_max_deallocating_streams_headroom =
105
98
  "{}";
99
+ const char* const description_header_data_frame =
100
+ "Managing header and data memory better";
101
+ const char* const additional_constraints_header_data_frame = "{}";
106
102
  const char* const description_inproc_cancel_stream =
107
103
  "If set, cancel inproc stream inside the transport mutex.";
108
104
  const char* const additional_constraints_inproc_cancel_stream = "{}";
@@ -131,9 +127,6 @@ const char* const additional_constraints_metadata_publish_to_app_tag = "{}";
131
127
  const char* const description_monitoring_experiment =
132
128
  "Placeholder experiment to prove/disprove our monitoring is working";
133
129
  const char* const additional_constraints_monitoring_experiment = "{}";
134
- const char* const description_multiping =
135
- "Allow more than one ping to be in flight at a time by default.";
136
- const char* const additional_constraints_multiping = "{}";
137
130
  const char* const description_optimization_01 = "Optimization";
138
131
  const char* const additional_constraints_optimization_01 = "{}";
139
132
  const char* const description_optimization_02 = "Optimization";
@@ -202,6 +195,10 @@ const char* const description_promise_filter_send_cancel_metadata =
202
195
  "promise-based filters upon stream cancellation.";
203
196
  const char* const additional_constraints_promise_filter_send_cancel_metadata =
204
197
  "{}";
198
+ const char* const description_recv_message_filter_bypass_fix =
199
+ "Receive message bypass happen if trailing metadata is received while "
200
+ "Server Initial Metadata is getting processed.";
201
+ const char* const additional_constraints_recv_message_filter_bypass_fix = "{}";
205
202
  const char* const description_retry_in_callv3 = "Support retries with call-v3";
206
203
  const char* const additional_constraints_retry_in_callv3 = "{}";
207
204
  const char* const description_return_preexisting_errors =
@@ -234,9 +231,6 @@ const uint8_t required_experiments_secure_endpoint_read_coalescing[] = {
234
231
  const char* const description_skip_clear_peer_on_cancellation =
235
232
  "If set, skips clearing of peer string on call cancellation.";
236
233
  const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}";
237
- const char* const description_subchannel_connection_scaling =
238
- "Subchannel connection scaling support.";
239
- const char* const additional_constraints_subchannel_connection_scaling = "{}";
240
234
  const char* const description_tcp_frame_size_tuning =
241
235
  "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
242
236
  "would not indicate completion of a read operation until a specified "
@@ -307,12 +301,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
307
301
  additional_constraints_custom_frame_check, nullptr, 0, true, false},
308
302
  {"event_engine_client", description_event_engine_client,
309
303
  additional_constraints_event_engine_client, nullptr, 0, true, false},
310
- {"event_engine_dns", description_event_engine_dns,
311
- additional_constraints_event_engine_dns, nullptr, 0, true, false},
312
- {"event_engine_dns_non_client_channel",
313
- description_event_engine_dns_non_client_channel,
314
- additional_constraints_event_engine_dns_non_client_channel, nullptr, 0,
315
- true, false},
316
304
  {"event_engine_fork", description_event_engine_fork,
317
305
  additional_constraints_event_engine_fork, nullptr, 0, true, false},
318
306
  {"event_engine_listener", description_event_engine_listener,
@@ -323,11 +311,15 @@ const ExperimentMetadata g_experiment_metadata[] = {
323
311
  {"event_engine_for_all_other_endpoints",
324
312
  description_event_engine_for_all_other_endpoints,
325
313
  additional_constraints_event_engine_for_all_other_endpoints,
326
- required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
314
+ required_experiments_event_engine_for_all_other_endpoints, 2, true, false},
327
315
  {"fail_recv_metadata_on_deadline_exceeded",
328
316
  description_fail_recv_metadata_on_deadline_exceeded,
329
317
  additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0,
330
318
  false, false},
319
+ {"fix_v3_filter_stack_server_side_ordering",
320
+ description_fix_v3_filter_stack_server_side_ordering,
321
+ additional_constraints_fix_v3_filter_stack_server_side_ordering, nullptr,
322
+ 0, false, true},
331
323
  {"free_large_allocator", description_free_large_allocator,
332
324
  additional_constraints_free_large_allocator, nullptr, 0, false, true},
333
325
  {"fuse_filters", description_fuse_filters,
@@ -336,6 +328,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
336
328
  description_h2_max_deallocating_streams_headroom,
337
329
  additional_constraints_h2_max_deallocating_streams_headroom, nullptr, 0,
338
330
  false, true},
331
+ {"header_data_frame", description_header_data_frame,
332
+ additional_constraints_header_data_frame, nullptr, 0, true, true},
339
333
  {"inproc_cancel_stream", description_inproc_cancel_stream,
340
334
  additional_constraints_inproc_cancel_stream, nullptr, 0, true, true},
341
335
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
@@ -348,7 +342,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
348
342
  {"memory_optimization_02", description_memory_optimization_02,
349
343
  additional_constraints_memory_optimization_02, nullptr, 0, false, false},
350
344
  {"message_size_refactoring", description_message_size_refactoring,
351
- additional_constraints_message_size_refactoring, nullptr, 0, false, true},
345
+ additional_constraints_message_size_refactoring, nullptr, 0, true, true},
352
346
  {"metadata_outstanding_token_refactor",
353
347
  description_metadata_outstanding_token_refactor,
354
348
  additional_constraints_metadata_outstanding_token_refactor, nullptr, 0,
@@ -358,8 +352,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
358
352
  true},
359
353
  {"monitoring_experiment", description_monitoring_experiment,
360
354
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
361
- {"multiping", description_multiping, additional_constraints_multiping,
362
- nullptr, 0, false, true},
363
355
  {"optimization_01", description_optimization_01,
364
356
  additional_constraints_optimization_01, nullptr, 0, true, true},
365
357
  {"optimization_02", description_optimization_02,
@@ -380,7 +372,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
380
372
  {"ph2_client_server", description_ph2_client_server,
381
373
  additional_constraints_ph2_client_server, nullptr, 0, false, true},
382
374
  {"ph2_perf_01", description_ph2_perf_01, additional_constraints_ph2_perf_01,
383
- nullptr, 0, false, true},
375
+ nullptr, 0, true, true},
384
376
  {"ph2_server", description_ph2_server, additional_constraints_ph2_server,
385
377
  nullptr, 0, false, true},
386
378
  {"pick_first_ignore_empty_updates",
@@ -408,7 +400,11 @@ const ExperimentMetadata g_experiment_metadata[] = {
408
400
  {"promise_filter_send_cancel_metadata",
409
401
  description_promise_filter_send_cancel_metadata,
410
402
  additional_constraints_promise_filter_send_cancel_metadata, nullptr, 0,
411
- false, true},
403
+ true, true},
404
+ {"recv_message_filter_bypass_fix",
405
+ description_recv_message_filter_bypass_fix,
406
+ additional_constraints_recv_message_filter_bypass_fix, nullptr, 0, false,
407
+ true},
412
408
  {"retry_in_callv3", description_retry_in_callv3,
413
409
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
414
410
  {"return_preexisting_errors", description_return_preexisting_errors,
@@ -433,9 +429,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
433
429
  description_skip_clear_peer_on_cancellation,
434
430
  additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false,
435
431
  true},
436
- {"subchannel_connection_scaling", description_subchannel_connection_scaling,
437
- additional_constraints_subchannel_connection_scaling, nullptr, 0, true,
438
- true},
439
432
  {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
440
433
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
441
434
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
@@ -455,7 +448,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
455
448
  {"v2_non_owning_waker_implementation",
456
449
  description_v2_non_owning_waker_implementation,
457
450
  additional_constraints_v2_non_owning_waker_implementation, nullptr, 0,
458
- false, true},
451
+ true, true},
459
452
  {"verbose_channelz_connection_logging",
460
453
  description_verbose_channelz_connection_logging,
461
454
  additional_constraints_verbose_channelz_connection_logging, nullptr, 0,
@@ -467,7 +460,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
467
460
  {"xds_server_filter_chain_per_route",
468
461
  description_xds_server_filter_chain_per_route,
469
462
  additional_constraints_xds_server_filter_chain_per_route,
470
- required_experiments_xds_server_filter_chain_per_route, 1, false, true},
463
+ required_experiments_xds_server_filter_chain_per_route, 1, true, true},
471
464
  };
472
465
 
473
466
  } // namespace grpc_core
@@ -508,14 +501,6 @@ const char* const additional_constraints_custom_frame_check = "{}";
508
501
  const char* const description_event_engine_client =
509
502
  "Use EventEngine clients instead of iomgr's grpc_tcp_client";
510
503
  const char* const additional_constraints_event_engine_client = "{}";
511
- const char* const description_event_engine_dns =
512
- "If set, use EventEngine DNSResolver for client channel resolution";
513
- const char* const additional_constraints_event_engine_dns = "{}";
514
- const char* const description_event_engine_dns_non_client_channel =
515
- "If set, use EventEngine DNSResolver in other places besides client "
516
- "channel.";
517
- const char* const additional_constraints_event_engine_dns_non_client_channel =
518
- "{}";
519
504
  const char* const description_event_engine_fork =
520
505
  "Enables event engine fork handling, including onfork events and file "
521
506
  "descriptor generations";
@@ -536,14 +521,15 @@ const char* const additional_constraints_event_engine_for_all_other_endpoints =
536
521
  "{}";
537
522
  const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
538
523
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
539
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineDns),
540
- static_cast<uint8_t>(
541
- grpc_core::kExperimentIdEventEngineDnsNonClientChannel),
542
524
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
543
525
  const char* const description_fail_recv_metadata_on_deadline_exceeded =
544
526
  "Fail recv initial metadata when the deadline is exceeded.";
545
527
  const char* const
546
528
  additional_constraints_fail_recv_metadata_on_deadline_exceeded = "{}";
529
+ const char* const description_fix_v3_filter_stack_server_side_ordering =
530
+ "If set, reverse the server side ordering for v3 filter stack.";
531
+ const char* const
532
+ additional_constraints_fix_v3_filter_stack_server_side_ordering = "{}";
547
533
  const char* const description_free_large_allocator =
548
534
  "If set, return all free bytes from a \042big\042 allocator";
549
535
  const char* const additional_constraints_free_large_allocator = "{}";
@@ -554,6 +540,9 @@ const char* const description_h2_max_deallocating_streams_headroom =
554
540
  "Separate allocated max concurrent streams.";
555
541
  const char* const additional_constraints_h2_max_deallocating_streams_headroom =
556
542
  "{}";
543
+ const char* const description_header_data_frame =
544
+ "Managing header and data memory better";
545
+ const char* const additional_constraints_header_data_frame = "{}";
557
546
  const char* const description_inproc_cancel_stream =
558
547
  "If set, cancel inproc stream inside the transport mutex.";
559
548
  const char* const additional_constraints_inproc_cancel_stream = "{}";
@@ -582,9 +571,6 @@ const char* const additional_constraints_metadata_publish_to_app_tag = "{}";
582
571
  const char* const description_monitoring_experiment =
583
572
  "Placeholder experiment to prove/disprove our monitoring is working";
584
573
  const char* const additional_constraints_monitoring_experiment = "{}";
585
- const char* const description_multiping =
586
- "Allow more than one ping to be in flight at a time by default.";
587
- const char* const additional_constraints_multiping = "{}";
588
574
  const char* const description_optimization_01 = "Optimization";
589
575
  const char* const additional_constraints_optimization_01 = "{}";
590
576
  const char* const description_optimization_02 = "Optimization";
@@ -653,6 +639,10 @@ const char* const description_promise_filter_send_cancel_metadata =
653
639
  "promise-based filters upon stream cancellation.";
654
640
  const char* const additional_constraints_promise_filter_send_cancel_metadata =
655
641
  "{}";
642
+ const char* const description_recv_message_filter_bypass_fix =
643
+ "Receive message bypass happen if trailing metadata is received while "
644
+ "Server Initial Metadata is getting processed.";
645
+ const char* const additional_constraints_recv_message_filter_bypass_fix = "{}";
656
646
  const char* const description_retry_in_callv3 = "Support retries with call-v3";
657
647
  const char* const additional_constraints_retry_in_callv3 = "{}";
658
648
  const char* const description_return_preexisting_errors =
@@ -685,9 +675,6 @@ const uint8_t required_experiments_secure_endpoint_read_coalescing[] = {
685
675
  const char* const description_skip_clear_peer_on_cancellation =
686
676
  "If set, skips clearing of peer string on call cancellation.";
687
677
  const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}";
688
- const char* const description_subchannel_connection_scaling =
689
- "Subchannel connection scaling support.";
690
- const char* const additional_constraints_subchannel_connection_scaling = "{}";
691
678
  const char* const description_tcp_frame_size_tuning =
692
679
  "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
693
680
  "would not indicate completion of a read operation until a specified "
@@ -758,12 +745,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
758
745
  additional_constraints_custom_frame_check, nullptr, 0, true, false},
759
746
  {"event_engine_client", description_event_engine_client,
760
747
  additional_constraints_event_engine_client, nullptr, 0, true, false},
761
- {"event_engine_dns", description_event_engine_dns,
762
- additional_constraints_event_engine_dns, nullptr, 0, true, false},
763
- {"event_engine_dns_non_client_channel",
764
- description_event_engine_dns_non_client_channel,
765
- additional_constraints_event_engine_dns_non_client_channel, nullptr, 0,
766
- true, false},
767
748
  {"event_engine_fork", description_event_engine_fork,
768
749
  additional_constraints_event_engine_fork, nullptr, 0, true, false},
769
750
  {"event_engine_listener", description_event_engine_listener,
@@ -774,11 +755,15 @@ const ExperimentMetadata g_experiment_metadata[] = {
774
755
  {"event_engine_for_all_other_endpoints",
775
756
  description_event_engine_for_all_other_endpoints,
776
757
  additional_constraints_event_engine_for_all_other_endpoints,
777
- required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
758
+ required_experiments_event_engine_for_all_other_endpoints, 2, true, false},
778
759
  {"fail_recv_metadata_on_deadline_exceeded",
779
760
  description_fail_recv_metadata_on_deadline_exceeded,
780
761
  additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0,
781
762
  false, false},
763
+ {"fix_v3_filter_stack_server_side_ordering",
764
+ description_fix_v3_filter_stack_server_side_ordering,
765
+ additional_constraints_fix_v3_filter_stack_server_side_ordering, nullptr,
766
+ 0, false, true},
782
767
  {"free_large_allocator", description_free_large_allocator,
783
768
  additional_constraints_free_large_allocator, nullptr, 0, false, true},
784
769
  {"fuse_filters", description_fuse_filters,
@@ -787,6 +772,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
787
772
  description_h2_max_deallocating_streams_headroom,
788
773
  additional_constraints_h2_max_deallocating_streams_headroom, nullptr, 0,
789
774
  false, true},
775
+ {"header_data_frame", description_header_data_frame,
776
+ additional_constraints_header_data_frame, nullptr, 0, true, true},
790
777
  {"inproc_cancel_stream", description_inproc_cancel_stream,
791
778
  additional_constraints_inproc_cancel_stream, nullptr, 0, true, true},
792
779
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
@@ -799,7 +786,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
799
786
  {"memory_optimization_02", description_memory_optimization_02,
800
787
  additional_constraints_memory_optimization_02, nullptr, 0, false, false},
801
788
  {"message_size_refactoring", description_message_size_refactoring,
802
- additional_constraints_message_size_refactoring, nullptr, 0, false, true},
789
+ additional_constraints_message_size_refactoring, nullptr, 0, true, true},
803
790
  {"metadata_outstanding_token_refactor",
804
791
  description_metadata_outstanding_token_refactor,
805
792
  additional_constraints_metadata_outstanding_token_refactor, nullptr, 0,
@@ -809,8 +796,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
809
796
  true},
810
797
  {"monitoring_experiment", description_monitoring_experiment,
811
798
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
812
- {"multiping", description_multiping, additional_constraints_multiping,
813
- nullptr, 0, false, true},
814
799
  {"optimization_01", description_optimization_01,
815
800
  additional_constraints_optimization_01, nullptr, 0, true, true},
816
801
  {"optimization_02", description_optimization_02,
@@ -831,7 +816,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
831
816
  {"ph2_client_server", description_ph2_client_server,
832
817
  additional_constraints_ph2_client_server, nullptr, 0, false, true},
833
818
  {"ph2_perf_01", description_ph2_perf_01, additional_constraints_ph2_perf_01,
834
- nullptr, 0, false, true},
819
+ nullptr, 0, true, true},
835
820
  {"ph2_server", description_ph2_server, additional_constraints_ph2_server,
836
821
  nullptr, 0, false, true},
837
822
  {"pick_first_ignore_empty_updates",
@@ -859,7 +844,11 @@ const ExperimentMetadata g_experiment_metadata[] = {
859
844
  {"promise_filter_send_cancel_metadata",
860
845
  description_promise_filter_send_cancel_metadata,
861
846
  additional_constraints_promise_filter_send_cancel_metadata, nullptr, 0,
862
- false, true},
847
+ true, true},
848
+ {"recv_message_filter_bypass_fix",
849
+ description_recv_message_filter_bypass_fix,
850
+ additional_constraints_recv_message_filter_bypass_fix, nullptr, 0, false,
851
+ true},
863
852
  {"retry_in_callv3", description_retry_in_callv3,
864
853
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
865
854
  {"return_preexisting_errors", description_return_preexisting_errors,
@@ -884,9 +873,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
884
873
  description_skip_clear_peer_on_cancellation,
885
874
  additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false,
886
875
  true},
887
- {"subchannel_connection_scaling", description_subchannel_connection_scaling,
888
- additional_constraints_subchannel_connection_scaling, nullptr, 0, true,
889
- true},
890
876
  {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
891
877
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
892
878
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
@@ -906,7 +892,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
906
892
  {"v2_non_owning_waker_implementation",
907
893
  description_v2_non_owning_waker_implementation,
908
894
  additional_constraints_v2_non_owning_waker_implementation, nullptr, 0,
909
- false, true},
895
+ true, true},
910
896
  {"verbose_channelz_connection_logging",
911
897
  description_verbose_channelz_connection_logging,
912
898
  additional_constraints_verbose_channelz_connection_logging, nullptr, 0,
@@ -918,7 +904,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
918
904
  {"xds_server_filter_chain_per_route",
919
905
  description_xds_server_filter_chain_per_route,
920
906
  additional_constraints_xds_server_filter_chain_per_route,
921
- required_experiments_xds_server_filter_chain_per_route, 1, false, true},
907
+ required_experiments_xds_server_filter_chain_per_route, 1, true, true},
922
908
  };
923
909
 
924
910
  } // namespace grpc_core
@@ -959,14 +945,6 @@ const char* const additional_constraints_custom_frame_check = "{}";
959
945
  const char* const description_event_engine_client =
960
946
  "Use EventEngine clients instead of iomgr's grpc_tcp_client";
961
947
  const char* const additional_constraints_event_engine_client = "{}";
962
- const char* const description_event_engine_dns =
963
- "If set, use EventEngine DNSResolver for client channel resolution";
964
- const char* const additional_constraints_event_engine_dns = "{}";
965
- const char* const description_event_engine_dns_non_client_channel =
966
- "If set, use EventEngine DNSResolver in other places besides client "
967
- "channel.";
968
- const char* const additional_constraints_event_engine_dns_non_client_channel =
969
- "{}";
970
948
  const char* const description_event_engine_fork =
971
949
  "Enables event engine fork handling, including onfork events and file "
972
950
  "descriptor generations";
@@ -987,14 +965,15 @@ const char* const additional_constraints_event_engine_for_all_other_endpoints =
987
965
  "{}";
988
966
  const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
989
967
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineClient),
990
- static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineDns),
991
- static_cast<uint8_t>(
992
- grpc_core::kExperimentIdEventEngineDnsNonClientChannel),
993
968
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
994
969
  const char* const description_fail_recv_metadata_on_deadline_exceeded =
995
970
  "Fail recv initial metadata when the deadline is exceeded.";
996
971
  const char* const
997
972
  additional_constraints_fail_recv_metadata_on_deadline_exceeded = "{}";
973
+ const char* const description_fix_v3_filter_stack_server_side_ordering =
974
+ "If set, reverse the server side ordering for v3 filter stack.";
975
+ const char* const
976
+ additional_constraints_fix_v3_filter_stack_server_side_ordering = "{}";
998
977
  const char* const description_free_large_allocator =
999
978
  "If set, return all free bytes from a \042big\042 allocator";
1000
979
  const char* const additional_constraints_free_large_allocator = "{}";
@@ -1005,6 +984,9 @@ const char* const description_h2_max_deallocating_streams_headroom =
1005
984
  "Separate allocated max concurrent streams.";
1006
985
  const char* const additional_constraints_h2_max_deallocating_streams_headroom =
1007
986
  "{}";
987
+ const char* const description_header_data_frame =
988
+ "Managing header and data memory better";
989
+ const char* const additional_constraints_header_data_frame = "{}";
1008
990
  const char* const description_inproc_cancel_stream =
1009
991
  "If set, cancel inproc stream inside the transport mutex.";
1010
992
  const char* const additional_constraints_inproc_cancel_stream = "{}";
@@ -1033,9 +1015,6 @@ const char* const additional_constraints_metadata_publish_to_app_tag = "{}";
1033
1015
  const char* const description_monitoring_experiment =
1034
1016
  "Placeholder experiment to prove/disprove our monitoring is working";
1035
1017
  const char* const additional_constraints_monitoring_experiment = "{}";
1036
- const char* const description_multiping =
1037
- "Allow more than one ping to be in flight at a time by default.";
1038
- const char* const additional_constraints_multiping = "{}";
1039
1018
  const char* const description_optimization_01 = "Optimization";
1040
1019
  const char* const additional_constraints_optimization_01 = "{}";
1041
1020
  const char* const description_optimization_02 = "Optimization";
@@ -1104,6 +1083,10 @@ const char* const description_promise_filter_send_cancel_metadata =
1104
1083
  "promise-based filters upon stream cancellation.";
1105
1084
  const char* const additional_constraints_promise_filter_send_cancel_metadata =
1106
1085
  "{}";
1086
+ const char* const description_recv_message_filter_bypass_fix =
1087
+ "Receive message bypass happen if trailing metadata is received while "
1088
+ "Server Initial Metadata is getting processed.";
1089
+ const char* const additional_constraints_recv_message_filter_bypass_fix = "{}";
1107
1090
  const char* const description_retry_in_callv3 = "Support retries with call-v3";
1108
1091
  const char* const additional_constraints_retry_in_callv3 = "{}";
1109
1092
  const char* const description_return_preexisting_errors =
@@ -1136,9 +1119,6 @@ const uint8_t required_experiments_secure_endpoint_read_coalescing[] = {
1136
1119
  const char* const description_skip_clear_peer_on_cancellation =
1137
1120
  "If set, skips clearing of peer string on call cancellation.";
1138
1121
  const char* const additional_constraints_skip_clear_peer_on_cancellation = "{}";
1139
- const char* const description_subchannel_connection_scaling =
1140
- "Subchannel connection scaling support.";
1141
- const char* const additional_constraints_subchannel_connection_scaling = "{}";
1142
1122
  const char* const description_tcp_frame_size_tuning =
1143
1123
  "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
1144
1124
  "would not indicate completion of a read operation until a specified "
@@ -1209,12 +1189,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
1209
1189
  additional_constraints_custom_frame_check, nullptr, 0, true, false},
1210
1190
  {"event_engine_client", description_event_engine_client,
1211
1191
  additional_constraints_event_engine_client, nullptr, 0, true, false},
1212
- {"event_engine_dns", description_event_engine_dns,
1213
- additional_constraints_event_engine_dns, nullptr, 0, true, false},
1214
- {"event_engine_dns_non_client_channel",
1215
- description_event_engine_dns_non_client_channel,
1216
- additional_constraints_event_engine_dns_non_client_channel, nullptr, 0,
1217
- true, false},
1218
1192
  {"event_engine_fork", description_event_engine_fork,
1219
1193
  additional_constraints_event_engine_fork, nullptr, 0, true, false},
1220
1194
  {"event_engine_listener", description_event_engine_listener,
@@ -1225,11 +1199,15 @@ const ExperimentMetadata g_experiment_metadata[] = {
1225
1199
  {"event_engine_for_all_other_endpoints",
1226
1200
  description_event_engine_for_all_other_endpoints,
1227
1201
  additional_constraints_event_engine_for_all_other_endpoints,
1228
- required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
1202
+ required_experiments_event_engine_for_all_other_endpoints, 2, true, false},
1229
1203
  {"fail_recv_metadata_on_deadline_exceeded",
1230
1204
  description_fail_recv_metadata_on_deadline_exceeded,
1231
1205
  additional_constraints_fail_recv_metadata_on_deadline_exceeded, nullptr, 0,
1232
1206
  false, false},
1207
+ {"fix_v3_filter_stack_server_side_ordering",
1208
+ description_fix_v3_filter_stack_server_side_ordering,
1209
+ additional_constraints_fix_v3_filter_stack_server_side_ordering, nullptr,
1210
+ 0, false, true},
1233
1211
  {"free_large_allocator", description_free_large_allocator,
1234
1212
  additional_constraints_free_large_allocator, nullptr, 0, false, true},
1235
1213
  {"fuse_filters", description_fuse_filters,
@@ -1238,6 +1216,8 @@ const ExperimentMetadata g_experiment_metadata[] = {
1238
1216
  description_h2_max_deallocating_streams_headroom,
1239
1217
  additional_constraints_h2_max_deallocating_streams_headroom, nullptr, 0,
1240
1218
  false, true},
1219
+ {"header_data_frame", description_header_data_frame,
1220
+ additional_constraints_header_data_frame, nullptr, 0, true, true},
1241
1221
  {"inproc_cancel_stream", description_inproc_cancel_stream,
1242
1222
  additional_constraints_inproc_cancel_stream, nullptr, 0, true, true},
1243
1223
  {"keep_alive_ping_timer_batch", description_keep_alive_ping_timer_batch,
@@ -1250,7 +1230,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
1250
1230
  {"memory_optimization_02", description_memory_optimization_02,
1251
1231
  additional_constraints_memory_optimization_02, nullptr, 0, false, false},
1252
1232
  {"message_size_refactoring", description_message_size_refactoring,
1253
- additional_constraints_message_size_refactoring, nullptr, 0, false, true},
1233
+ additional_constraints_message_size_refactoring, nullptr, 0, true, true},
1254
1234
  {"metadata_outstanding_token_refactor",
1255
1235
  description_metadata_outstanding_token_refactor,
1256
1236
  additional_constraints_metadata_outstanding_token_refactor, nullptr, 0,
@@ -1260,8 +1240,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
1260
1240
  true},
1261
1241
  {"monitoring_experiment", description_monitoring_experiment,
1262
1242
  additional_constraints_monitoring_experiment, nullptr, 0, true, true},
1263
- {"multiping", description_multiping, additional_constraints_multiping,
1264
- nullptr, 0, false, true},
1265
1243
  {"optimization_01", description_optimization_01,
1266
1244
  additional_constraints_optimization_01, nullptr, 0, true, true},
1267
1245
  {"optimization_02", description_optimization_02,
@@ -1282,7 +1260,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
1282
1260
  {"ph2_client_server", description_ph2_client_server,
1283
1261
  additional_constraints_ph2_client_server, nullptr, 0, false, true},
1284
1262
  {"ph2_perf_01", description_ph2_perf_01, additional_constraints_ph2_perf_01,
1285
- nullptr, 0, false, true},
1263
+ nullptr, 0, true, true},
1286
1264
  {"ph2_server", description_ph2_server, additional_constraints_ph2_server,
1287
1265
  nullptr, 0, false, true},
1288
1266
  {"pick_first_ignore_empty_updates",
@@ -1310,7 +1288,11 @@ const ExperimentMetadata g_experiment_metadata[] = {
1310
1288
  {"promise_filter_send_cancel_metadata",
1311
1289
  description_promise_filter_send_cancel_metadata,
1312
1290
  additional_constraints_promise_filter_send_cancel_metadata, nullptr, 0,
1313
- false, true},
1291
+ true, true},
1292
+ {"recv_message_filter_bypass_fix",
1293
+ description_recv_message_filter_bypass_fix,
1294
+ additional_constraints_recv_message_filter_bypass_fix, nullptr, 0, false,
1295
+ true},
1314
1296
  {"retry_in_callv3", description_retry_in_callv3,
1315
1297
  additional_constraints_retry_in_callv3, nullptr, 0, false, true},
1316
1298
  {"return_preexisting_errors", description_return_preexisting_errors,
@@ -1335,9 +1317,6 @@ const ExperimentMetadata g_experiment_metadata[] = {
1335
1317
  description_skip_clear_peer_on_cancellation,
1336
1318
  additional_constraints_skip_clear_peer_on_cancellation, nullptr, 0, false,
1337
1319
  true},
1338
- {"subchannel_connection_scaling", description_subchannel_connection_scaling,
1339
- additional_constraints_subchannel_connection_scaling, nullptr, 0, true,
1340
- true},
1341
1320
  {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
1342
1321
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
1343
1322
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
@@ -1357,7 +1336,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
1357
1336
  {"v2_non_owning_waker_implementation",
1358
1337
  description_v2_non_owning_waker_implementation,
1359
1338
  additional_constraints_v2_non_owning_waker_implementation, nullptr, 0,
1360
- false, true},
1339
+ true, true},
1361
1340
  {"verbose_channelz_connection_logging",
1362
1341
  description_verbose_channelz_connection_logging,
1363
1342
  additional_constraints_verbose_channelz_connection_logging, nullptr, 0,
@@ -1369,7 +1348,7 @@ const ExperimentMetadata g_experiment_metadata[] = {
1369
1348
  {"xds_server_filter_chain_per_route",
1370
1349
  description_xds_server_filter_chain_per_route,
1371
1350
  additional_constraints_xds_server_filter_chain_per_route,
1372
- required_experiments_xds_server_filter_chain_per_route, 1, false, true},
1351
+ required_experiments_xds_server_filter_chain_per_route, 1, true, true},
1373
1352
  };
1374
1353
 
1375
1354
  } // namespace grpc_core