grpc 1.76.0 → 1.78.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 (763) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +11 -5
  3. data/include/grpc/credentials.h +6 -1
  4. data/include/grpc/event_engine/memory_allocator.h +2 -0
  5. data/include/grpc/impl/channel_arg_names.h +5 -0
  6. data/include/grpc/support/metrics.h +7 -1
  7. data/src/core/call/call_filters.cc +1 -1
  8. data/src/core/call/call_filters.h +175 -1
  9. data/src/core/call/call_spine.cc +1 -1
  10. data/src/core/call/call_spine.h +27 -5
  11. data/src/core/call/channelz_context.h +30 -0
  12. data/src/core/call/client_call.cc +43 -5
  13. data/src/core/call/client_call.h +6 -3
  14. data/src/core/call/filter_fusion.h +4 -4
  15. data/src/core/call/interception_chain.h +7 -6
  16. data/src/core/call/metadata_batch.cc +49 -55
  17. data/src/core/call/metadata_batch.h +7 -6
  18. data/src/core/call/metadata_info.cc +1 -1
  19. data/src/core/call/parsed_metadata.h +2 -2
  20. data/src/core/call/request_buffer.cc +1 -1
  21. data/src/core/call/security_context.cc +1 -1
  22. data/src/core/call/security_context.h +1 -1
  23. data/src/core/call/server_call.cc +1 -1
  24. data/src/core/call/server_call.h +5 -3
  25. data/src/core/call/simple_slice_based_metadata.h +1 -1
  26. data/src/core/call/status_util.cc +1 -1
  27. data/src/core/channelz/channel_trace.cc +1 -1
  28. data/src/core/channelz/channel_trace.h +3 -3
  29. data/src/core/channelz/channelz.cc +13 -11
  30. data/src/core/channelz/channelz.h +41 -6
  31. data/src/core/channelz/channelz_registry.cc +2 -2
  32. data/src/core/channelz/channelz_registry.h +42 -2
  33. data/src/core/channelz/property_list.h +6 -4
  34. data/src/core/channelz/v2tov1/convert.cc +6 -6
  35. data/src/core/channelz/v2tov1/legacy_api.cc +4 -5
  36. data/src/core/channelz/v2tov1/property_list.cc +1 -1
  37. data/src/core/channelz/ztrace_collector.h +14 -2
  38. data/src/core/client_channel/backup_poller.cc +2 -2
  39. data/src/core/client_channel/buffered_call.cc +140 -0
  40. data/src/core/client_channel/buffered_call.h +104 -0
  41. data/src/core/client_channel/client_channel.cc +124 -71
  42. data/src/core/client_channel/client_channel.h +8 -11
  43. data/src/core/client_channel/client_channel_factory.h +1 -1
  44. data/src/core/client_channel/client_channel_filter.cc +393 -663
  45. data/src/core/client_channel/client_channel_filter.h +57 -150
  46. data/src/core/client_channel/client_channel_internal.h +5 -1
  47. data/src/core/client_channel/client_channel_service_config.cc +43 -3
  48. data/src/core/client_channel/client_channel_service_config.h +12 -1
  49. data/src/core/client_channel/config_selector.h +2 -2
  50. data/src/core/client_channel/connector.h +2 -0
  51. data/src/core/client_channel/dynamic_filters.cc +2 -2
  52. data/src/core/client_channel/global_subchannel_pool.h +1 -1
  53. data/src/core/client_channel/lb_metadata.h +1 -1
  54. data/src/core/client_channel/load_balanced_call_destination.cc +3 -5
  55. data/src/core/client_channel/load_balanced_call_destination.h +1 -1
  56. data/src/core/client_channel/retry_filter.cc +2 -2
  57. data/src/core/client_channel/retry_filter_legacy_call_data.cc +6 -7
  58. data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -8
  59. data/src/core/client_channel/retry_service_config.cc +3 -3
  60. data/src/core/client_channel/retry_service_config.h +1 -1
  61. data/src/core/client_channel/subchannel.cc +106 -17
  62. data/src/core/client_channel/subchannel.h +24 -8
  63. data/src/core/client_channel/subchannel_pool_interface.cc +2 -2
  64. data/src/core/client_channel/subchannel_pool_interface.h +1 -1
  65. data/src/core/client_channel/subchannel_stream_client.cc +1 -1
  66. data/src/core/client_channel/subchannel_stream_client.h +3 -3
  67. data/src/core/config/config_vars.cc +8 -2
  68. data/src/core/config/config_vars.h +5 -0
  69. data/src/core/config/core_configuration.h +1 -1
  70. data/src/core/config/load_config.cc +1 -1
  71. data/src/core/credentials/call/call_credentials.h +2 -2
  72. data/src/core/credentials/call/call_creds_registry.h +1 -1
  73. data/src/core/credentials/call/call_creds_registry_init.cc +2 -2
  74. data/src/core/credentials/call/call_creds_util.cc +3 -3
  75. data/src/core/credentials/call/composite/composite_call_credentials.cc +2 -2
  76. data/src/core/credentials/call/composite/composite_call_credentials.h +1 -1
  77. data/src/core/credentials/call/external/aws_external_account_credentials.cc +6 -6
  78. data/src/core/credentials/call/external/aws_external_account_credentials.h +1 -1
  79. data/src/core/credentials/call/external/external_account_credentials.cc +12 -12
  80. data/src/core/credentials/call/external/external_account_credentials.h +1 -1
  81. data/src/core/credentials/call/external/file_external_account_credentials.cc +3 -3
  82. data/src/core/credentials/call/external/file_external_account_credentials.h +1 -1
  83. data/src/core/credentials/call/external/url_external_account_credentials.cc +6 -6
  84. data/src/core/credentials/call/external/url_external_account_credentials.h +1 -1
  85. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +24 -71
  86. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +1 -8
  87. data/src/core/credentials/call/iam/iam_credentials.cc +2 -2
  88. data/src/core/credentials/call/iam/iam_credentials.h +1 -1
  89. data/src/core/credentials/call/json_util.cc +1 -1
  90. data/src/core/credentials/call/jwt/json_token.cc +4 -4
  91. data/src/core/credentials/call/jwt/jwt_credentials.cc +3 -3
  92. data/src/core/credentials/call/jwt/jwt_credentials.h +4 -4
  93. data/src/core/credentials/call/jwt/jwt_verifier.cc +5 -5
  94. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +2 -2
  95. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +3 -3
  96. data/src/core/credentials/call/jwt_util.cc +3 -3
  97. data/src/core/credentials/call/jwt_util.h +1 -1
  98. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +29 -60
  99. data/src/core/credentials/call/oauth2/oauth2_credentials.h +3 -9
  100. data/src/core/credentials/call/plugin/plugin_credentials.cc +4 -4
  101. data/src/core/credentials/call/plugin/plugin_credentials.h +2 -2
  102. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +46 -0
  103. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +32 -3
  104. data/src/core/credentials/transport/alts/alts_credentials.cc +3 -3
  105. data/src/core/credentials/transport/alts/alts_security_connector.cc +3 -3
  106. data/src/core/credentials/transport/alts/check_gcp_environment_no_op.cc +1 -1
  107. data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +1 -1
  108. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +1 -1
  109. data/src/core/credentials/transport/channel_creds_registry.h +1 -1
  110. data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
  111. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +2 -2
  112. data/src/core/credentials/transport/composite/composite_channel_credentials.h +1 -1
  113. data/src/core/credentials/transport/fake/fake_credentials.cc +1 -1
  114. data/src/core/credentials/transport/fake/fake_credentials.h +1 -1
  115. data/src/core/credentials/transport/fake/fake_security_connector.cc +5 -5
  116. data/src/core/credentials/transport/google_default/credentials_generic.cc +2 -2
  117. data/src/core/credentials/transport/google_default/google_default_credentials.cc +5 -11
  118. data/src/core/credentials/transport/google_default/google_default_credentials.h +0 -2
  119. data/src/core/credentials/transport/insecure/insecure_security_connector.h +2 -2
  120. data/src/core/credentials/transport/local/local_security_connector.cc +5 -5
  121. data/src/core/credentials/transport/security_connector.cc +1 -1
  122. data/src/core/credentials/transport/security_connector.h +2 -2
  123. data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -1
  124. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +5 -5
  125. data/src/core/credentials/transport/tls/certificate_provider_factory.h +1 -1
  126. data/src/core/credentials/transport/tls/certificate_provider_registry.cc +1 -1
  127. data/src/core/credentials/transport/tls/certificate_provider_registry.h +1 -1
  128. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +1 -1
  129. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +2 -2
  130. data/src/core/credentials/transport/tls/grpc_tls_certificate_match.cc +1 -1
  131. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +3 -3
  132. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +3 -3
  133. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +1 -1
  134. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +2 -2
  135. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +1 -1
  136. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +5 -5
  137. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.h +3 -3
  138. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -1
  139. data/src/core/credentials/transport/tls/spiffe_utils.cc +10 -8
  140. data/src/core/credentials/transport/tls/spiffe_utils.h +2 -2
  141. data/src/core/credentials/transport/tls/ssl_utils.cc +4 -4
  142. data/src/core/credentials/transport/tls/ssl_utils.h +2 -2
  143. data/src/core/credentials/transport/tls/tls_credentials.cc +1 -1
  144. data/src/core/credentials/transport/tls/tls_security_connector.cc +4 -4
  145. data/src/core/credentials/transport/tls/tls_security_connector.h +3 -3
  146. data/src/core/credentials/transport/transport_credentials.cc +1 -1
  147. data/src/core/credentials/transport/transport_credentials.h +2 -2
  148. data/src/core/credentials/transport/xds/xds_credentials.h +1 -1
  149. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +2 -2
  150. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +4 -1
  151. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +5 -5
  152. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -2
  153. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +7 -7
  154. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +6 -3
  155. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +1 -1
  156. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +1 -1
  157. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +6 -3
  158. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +1 -1
  159. data/src/core/ext/filters/http/client/http_client_filter.cc +6 -6
  160. data/src/core/ext/filters/http/client/http_client_filter.h +4 -1
  161. data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
  162. data/src/core/ext/filters/http/client_authority_filter.h +4 -1
  163. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -1
  164. data/src/core/ext/filters/http/message_compress/compression_filter.cc +3 -3
  165. data/src/core/ext/filters/http/message_compress/compression_filter.h +21 -2
  166. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  167. data/src/core/ext/filters/http/server/http_server_filter.h +4 -1
  168. data/src/core/ext/filters/message_size/message_size_filter.cc +2 -2
  169. data/src/core/ext/filters/message_size/message_size_filter.h +8 -2
  170. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
  171. data/src/core/ext/filters/rbac/rbac_filter.h +4 -1
  172. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +3 -3
  173. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  174. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -7
  175. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +13 -2
  176. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +1 -1
  177. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +50 -37
  178. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -3
  179. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -17
  180. data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -2
  181. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +2 -2
  182. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +210 -60
  183. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -2
  184. data/src/core/ext/transport/chttp2/transport/flow_control.cc +39 -4
  185. data/src/core/ext/transport/chttp2/transport/flow_control.h +213 -78
  186. data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +46 -1
  187. data/src/core/ext/transport/chttp2/transport/frame.cc +147 -21
  188. data/src/core/ext/transport/chttp2/transport/frame.h +44 -10
  189. data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -2
  190. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  191. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -2
  192. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -4
  193. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -5
  194. data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -1
  195. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -15
  196. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +3 -3
  197. data/src/core/ext/transport/chttp2/transport/goaway.cc +129 -0
  198. data/src/core/ext/transport/chttp2/transport/goaway.h +350 -0
  199. data/src/core/ext/transport/chttp2/transport/header_assembler.h +175 -51
  200. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
  201. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -4
  202. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +1 -1
  203. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +3 -3
  204. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -7
  205. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -4
  206. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
  207. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -1
  208. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1177 -511
  209. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +264 -174
  210. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  211. data/src/core/ext/transport/chttp2/transport/http2_settings.h +6 -4
  212. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +4 -6
  213. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +6 -16
  214. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +320 -82
  215. data/src/core/ext/transport/chttp2/transport/http2_status.h +7 -1
  216. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +286 -7
  217. data/src/core/ext/transport/chttp2/transport/http2_transport.h +187 -19
  218. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +57 -1
  219. data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +128 -0
  220. data/src/core/ext/transport/chttp2/transport/internal.h +25 -5
  221. data/src/core/ext/transport/chttp2/transport/keepalive.cc +12 -5
  222. data/src/core/ext/transport/chttp2/transport/keepalive.h +14 -10
  223. data/src/core/ext/transport/chttp2/transport/message_assembler.h +24 -15
  224. data/src/core/ext/transport/chttp2/transport/parsing.cc +8 -8
  225. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +1 -1
  226. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +3 -3
  227. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +11 -5
  228. data/src/core/ext/transport/chttp2/transport/ping_promise.h +7 -3
  229. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +1 -1
  230. data/src/core/ext/transport/chttp2/transport/security_frame.cc +31 -0
  231. data/src/core/ext/transport/chttp2/transport/security_frame.h +32 -0
  232. data/src/core/ext/transport/chttp2/transport/stream.h +139 -59
  233. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +225 -98
  234. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +1 -1
  235. data/src/core/ext/transport/chttp2/transport/transport_common.cc +1 -1
  236. data/src/core/ext/transport/chttp2/transport/transport_common.h +5 -0
  237. data/src/core/ext/transport/chttp2/transport/writable_streams.h +27 -11
  238. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -3
  239. data/src/core/ext/transport/inproc/inproc_transport.cc +8 -2
  240. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +8 -5
  241. data/src/core/filter/auth/auth_filters.h +7 -1
  242. data/src/core/filter/auth/client_auth_filter.cc +2 -2
  243. data/src/core/filter/auth/server_auth_filter.cc +3 -3
  244. data/src/core/filter/blackboard.h +2 -2
  245. data/src/core/filter/filter_args.h +40 -2
  246. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +2 -2
  247. data/src/core/handshaker/handshaker.cc +5 -5
  248. data/src/core/handshaker/handshaker.h +2 -2
  249. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +5 -5
  250. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +11 -11
  251. data/src/core/handshaker/http_connect/http_proxy_mapper.h +1 -1
  252. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +1 -1
  253. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +1 -1
  254. data/src/core/handshaker/proxy_mapper.h +1 -1
  255. data/src/core/handshaker/proxy_mapper_registry.h +1 -1
  256. data/src/core/handshaker/security/legacy_secure_endpoint.cc +4 -4
  257. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +7 -7
  258. data/src/core/handshaker/security/secure_endpoint.cc +15 -5
  259. data/src/core/handshaker/security/security_handshaker.cc +8 -5
  260. data/src/core/handshaker/security/security_handshaker.h +1 -1
  261. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
  262. data/src/core/lib/address_utils/parse_address.cc +5 -5
  263. data/src/core/lib/address_utils/parse_address.h +2 -2
  264. data/src/core/lib/address_utils/sockaddr_utils.cc +4 -4
  265. data/src/core/lib/address_utils/sockaddr_utils.h +1 -1
  266. data/src/core/lib/channel/channel_args.cc +1 -1
  267. data/src/core/lib/channel/channel_args.h +2 -2
  268. data/src/core/lib/channel/channel_stack.cc +22 -21
  269. data/src/core/lib/channel/channel_stack.h +5 -3
  270. data/src/core/lib/channel/channel_stack_builder.cc +8 -4
  271. data/src/core/lib/channel/channel_stack_builder.h +10 -9
  272. data/src/core/lib/channel/channel_stack_builder_impl.cc +7 -13
  273. data/src/core/lib/channel/channel_stack_builder_impl.h +1 -1
  274. data/src/core/lib/channel/connected_channel.cc +2 -2
  275. data/src/core/lib/channel/promise_based_filter.cc +63 -8
  276. data/src/core/lib/channel/promise_based_filter.h +23 -8
  277. data/src/core/lib/compression/compression_internal.cc +4 -4
  278. data/src/core/lib/compression/compression_internal.h +1 -1
  279. data/src/core/lib/compression/message_compress.cc +1 -1
  280. data/src/core/lib/debug/trace.cc +2 -5
  281. data/src/core/lib/debug/trace.h +10 -0
  282. data/src/core/lib/debug/trace_flags.cc +2 -2
  283. data/src/core/lib/debug/trace_flags.h +1 -1
  284. data/src/core/lib/event_engine/ares_resolver.cc +8 -8
  285. data/src/core/lib/event_engine/ares_resolver.h +4 -4
  286. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
  287. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +2 -2
  288. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +1 -1
  289. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +2 -2
  290. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +1 -1
  291. data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -1
  292. data/src/core/lib/event_engine/default_event_engine.cc +1 -1
  293. data/src/core/lib/event_engine/event_engine.cc +1 -1
  294. data/src/core/lib/event_engine/extensions/channelz.h +1 -1
  295. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +1 -1
  296. data/src/core/lib/event_engine/extensions/tcp_trace.h +8 -1
  297. data/src/core/lib/event_engine/grpc_polled_fd.h +1 -1
  298. data/src/core/lib/event_engine/memory_allocator_factory.h +1 -1
  299. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +4 -4
  300. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +5 -5
  301. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +5 -5
  302. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
  303. data/src/core/lib/event_engine/posix_engine/event_poller.h +2 -2
  304. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
  305. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +1 -1
  306. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +1 -1
  307. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +4 -4
  308. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +1 -1
  309. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +1 -1
  310. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +1 -1
  311. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +3 -3
  312. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +1 -1
  313. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +5 -5
  314. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +6 -6
  315. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +7 -7
  316. data/src/core/lib/event_engine/posix_engine/posix_engine.h +7 -7
  317. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +7 -4
  318. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +4 -4
  319. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +4 -4
  320. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -1
  321. data/src/core/lib/event_engine/posix_engine/posix_interface.h +1 -1
  322. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +5 -5
  323. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +1 -1
  324. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
  325. data/src/core/lib/event_engine/posix_engine/timer.h +1 -1
  326. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +2 -2
  327. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  328. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -2
  329. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +2 -2
  330. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +1 -1
  331. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
  332. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +1 -1
  333. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
  334. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +1 -1
  335. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -2
  336. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +1 -1
  337. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +1 -1
  338. data/src/core/lib/event_engine/tcp_socket_utils.cc +4 -4
  339. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  340. data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
  341. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -4
  342. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -3
  343. data/src/core/lib/event_engine/utils.cc +3 -3
  344. data/src/core/lib/event_engine/utils.h +1 -1
  345. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +1 -1
  346. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +2 -2
  347. data/src/core/lib/event_engine/windows/iocp.cc +1 -1
  348. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  349. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +5 -2
  350. data/src/core/lib/event_engine/windows/win_socket.cc +1 -1
  351. data/src/core/lib/event_engine/windows/win_socket.h +2 -2
  352. data/src/core/lib/event_engine/windows/windows_endpoint.cc +5 -5
  353. data/src/core/lib/event_engine/windows/windows_engine.cc +4 -4
  354. data/src/core/lib/event_engine/windows/windows_engine.h +3 -3
  355. data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
  356. data/src/core/lib/event_engine/windows/windows_listener.h +2 -2
  357. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -2
  358. data/src/core/lib/experiments/config.cc +4 -4
  359. data/src/core/lib/experiments/experiments.cc +174 -48
  360. data/src/core/lib/experiments/experiments.h +76 -24
  361. data/src/core/lib/iomgr/buffer_list.cc +1 -1
  362. data/src/core/lib/iomgr/call_combiner.cc +1 -1
  363. data/src/core/lib/iomgr/call_combiner.h +2 -2
  364. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  365. data/src/core/lib/iomgr/closure.h +2 -2
  366. data/src/core/lib/iomgr/combiner.cc +2 -2
  367. data/src/core/lib/iomgr/endpoint.h +1 -1
  368. data/src/core/lib/iomgr/endpoint_cfstream.cc +1 -1
  369. data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
  370. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  371. data/src/core/lib/iomgr/error.cc +1 -1
  372. data/src/core/lib/iomgr/error.h +2 -2
  373. data/src/core/lib/iomgr/error_cfstream.cc +1 -1
  374. data/src/core/lib/iomgr/ev_apple.cc +1 -1
  375. data/src/core/lib/iomgr/ev_epoll1_linux.cc +4 -4
  376. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
  377. data/src/core/lib/iomgr/ev_posix.cc +3 -3
  378. data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -3
  379. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -1
  380. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +5 -5
  381. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +2 -2
  382. data/src/core/lib/iomgr/exec_ctx.cc +3 -3
  383. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  384. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  385. data/src/core/lib/iomgr/internal_errqueue.cc +1 -1
  386. data/src/core/lib/iomgr/iocp_windows.cc +1 -1
  387. data/src/core/lib/iomgr/iomgr.cc +1 -1
  388. data/src/core/lib/iomgr/lockfree_event.cc +1 -1
  389. data/src/core/lib/iomgr/polling_entity.cc +1 -1
  390. data/src/core/lib/iomgr/resolve_address.cc +1 -1
  391. data/src/core/lib/iomgr/resolve_address.h +2 -2
  392. data/src/core/lib/iomgr/resolve_address_posix.cc +4 -4
  393. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  394. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +1 -1
  395. data/src/core/lib/iomgr/socket_utils_common_posix.cc +2 -2
  396. data/src/core/lib/iomgr/socket_windows.cc +2 -2
  397. data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -1
  398. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  399. data/src/core/lib/iomgr/tcp_posix.cc +5 -5
  400. data/src/core/lib/iomgr/tcp_server_posix.cc +20 -9
  401. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  402. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -2
  403. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
  404. data/src/core/lib/iomgr/tcp_server_windows.cc +2 -2
  405. data/src/core/lib/iomgr/tcp_windows.cc +1 -1
  406. data/src/core/lib/iomgr/timer_generic.cc +3 -3
  407. data/src/core/lib/iomgr/timer_manager.cc +1 -1
  408. data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
  409. data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
  410. data/src/core/lib/iomgr/vsock.cc +1 -1
  411. data/src/core/lib/iomgr/vsock.h +1 -1
  412. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +1 -1
  413. data/src/core/lib/promise/activity.cc +2 -2
  414. data/src/core/lib/promise/activity.h +5 -4
  415. data/src/core/lib/promise/all_ok.h +3 -3
  416. data/src/core/lib/promise/arena_promise.h +47 -6
  417. data/src/core/lib/promise/context.h +1 -1
  418. data/src/core/lib/promise/detail/join_state.h +1 -1
  419. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  420. data/src/core/lib/promise/detail/promise_like.h +1 -1
  421. data/src/core/lib/promise/detail/seq_state.h +3 -3
  422. data/src/core/lib/promise/detail/status.h +1 -1
  423. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +1 -1
  424. data/src/core/lib/promise/for_each.h +3 -3
  425. data/src/core/lib/promise/if.h +1 -1
  426. data/src/core/lib/promise/inter_activity_latch.h +3 -3
  427. data/src/core/lib/promise/inter_activity_mutex.h +1 -1
  428. data/src/core/lib/promise/interceptor_list.h +3 -3
  429. data/src/core/lib/promise/latch.h +2 -2
  430. data/src/core/lib/promise/loop.h +2 -2
  431. data/src/core/lib/promise/map.h +2 -2
  432. data/src/core/lib/promise/mpsc.cc +5 -4
  433. data/src/core/lib/promise/observable.h +2 -2
  434. data/src/core/lib/promise/party.cc +14 -8
  435. data/src/core/lib/promise/party.h +11 -4
  436. data/src/core/lib/promise/pipe.h +16 -2
  437. data/src/core/lib/promise/poll.h +2 -2
  438. data/src/core/lib/promise/promise.h +2 -2
  439. data/src/core/lib/promise/sleep.h +1 -1
  440. data/src/core/lib/promise/status_flag.h +2 -2
  441. data/src/core/lib/promise/try_join.h +3 -3
  442. data/src/core/lib/promise/try_seq.h +3 -3
  443. data/src/core/lib/promise/wait_set.h +2 -2
  444. data/src/core/lib/resource_quota/api.cc +1 -1
  445. data/src/core/lib/resource_quota/arena.cc +1 -1
  446. data/src/core/lib/resource_quota/connection_quota.h +1 -1
  447. data/src/core/lib/resource_quota/memory_quota.cc +3 -3
  448. data/src/core/lib/resource_quota/memory_quota.h +9 -5
  449. data/src/core/lib/resource_quota/periodic_update.h +1 -1
  450. data/src/core/lib/resource_quota/resource_quota.cc +8 -0
  451. data/src/core/lib/resource_quota/resource_quota.h +2 -1
  452. data/src/core/lib/resource_quota/stream_quota.cc +22 -0
  453. data/src/core/lib/resource_quota/stream_quota.h +31 -0
  454. data/src/core/lib/resource_quota/telemetry.h +1 -0
  455. data/src/core/lib/resource_quota/thread_quota.h +1 -1
  456. data/src/core/lib/security/authorization/audit_logging.cc +3 -3
  457. data/src/core/lib/security/authorization/audit_logging.h +1 -1
  458. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  459. data/src/core/lib/security/authorization/evaluate_args.cc +5 -5
  460. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  461. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -3
  462. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +4 -1
  463. data/src/core/lib/security/authorization/matchers.cc +2 -2
  464. data/src/core/lib/security/authorization/stdout_logger.cc +1 -1
  465. data/src/core/lib/slice/percent_encoding.cc +1 -1
  466. data/src/core/lib/slice/slice.cc +1 -1
  467. data/src/core/lib/slice/slice.h +2 -2
  468. data/src/core/lib/slice/slice_buffer.cc +1 -1
  469. data/src/core/lib/slice/slice_internal.h +1 -1
  470. data/src/core/lib/surface/call.cc +42 -14
  471. data/src/core/lib/surface/call.h +12 -5
  472. data/src/core/lib/surface/call_log_batch.cc +2 -2
  473. data/src/core/lib/surface/call_utils.cc +5 -5
  474. data/src/core/lib/surface/call_utils.h +83 -18
  475. data/src/core/lib/surface/channel.cc +2 -1
  476. data/src/core/lib/surface/channel.h +13 -3
  477. data/src/core/lib/surface/channel_create.cc +2 -2
  478. data/src/core/lib/surface/channel_create.h +1 -1
  479. data/src/core/lib/surface/channel_init.cc +5 -5
  480. data/src/core/lib/surface/channel_init.h +4 -2
  481. data/src/core/lib/surface/completion_queue.cc +4 -4
  482. data/src/core/lib/surface/filter_stack_call.cc +13 -8
  483. data/src/core/lib/surface/filter_stack_call.h +3 -3
  484. data/src/core/lib/surface/init.cc +4 -4
  485. data/src/core/lib/surface/lame_client.cc +2 -2
  486. data/src/core/lib/surface/lame_client.h +3 -3
  487. data/src/core/lib/surface/legacy_channel.cc +3 -3
  488. data/src/core/lib/surface/legacy_channel.h +1 -1
  489. data/src/core/lib/surface/validate_metadata.cc +2 -2
  490. data/src/core/lib/surface/validate_metadata.h +1 -1
  491. data/src/core/lib/surface/version.cc +2 -2
  492. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  493. data/src/core/lib/transport/bdp_estimator.h +2 -2
  494. data/src/core/lib/transport/connectivity_state.cc +1 -1
  495. data/src/core/lib/transport/connectivity_state.h +2 -2
  496. data/src/core/lib/transport/error_utils.h +1 -1
  497. data/src/core/lib/transport/promise_endpoint.cc +1 -1
  498. data/src/core/lib/transport/promise_endpoint.h +3 -3
  499. data/src/core/lib/transport/timeout_encoding.cc +1 -1
  500. data/src/core/lib/transport/transport.cc +3 -3
  501. data/src/core/lib/transport/transport.h +62 -4
  502. data/src/core/lib/transport/transport_framing_endpoint_extension.h +1 -1
  503. data/src/core/lib/transport/transport_op_string.cc +2 -2
  504. data/src/core/load_balancing/address_filtering.cc +1 -1
  505. data/src/core/load_balancing/address_filtering.h +2 -2
  506. data/src/core/load_balancing/backend_metric_parser.cc +1 -1
  507. data/src/core/load_balancing/backend_metric_parser.h +1 -1
  508. data/src/core/load_balancing/child_policy_handler.cc +4 -4
  509. data/src/core/load_balancing/child_policy_handler.h +2 -2
  510. data/src/core/load_balancing/delegating_helper.h +2 -2
  511. data/src/core/load_balancing/endpoint_list.cc +4 -4
  512. data/src/core/load_balancing/endpoint_list.h +2 -2
  513. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +7 -5
  514. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +5 -1
  515. data/src/core/load_balancing/grpclb/grpclb.cc +13 -24
  516. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +2 -2
  517. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  518. data/src/core/load_balancing/grpclb/load_balancer_api.h +1 -1
  519. data/src/core/load_balancing/health_check_client.cc +9 -5
  520. data/src/core/load_balancing/health_check_client_internal.h +3 -3
  521. data/src/core/load_balancing/lb_policy.h +11 -8
  522. data/src/core/load_balancing/lb_policy_factory.h +2 -2
  523. data/src/core/load_balancing/lb_policy_registry.cc +2 -2
  524. data/src/core/load_balancing/lb_policy_registry.h +2 -2
  525. data/src/core/load_balancing/oob_backend_metric.cc +7 -3
  526. data/src/core/load_balancing/oob_backend_metric_internal.h +2 -2
  527. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +7 -15
  528. data/src/core/load_balancing/pick_first/pick_first.cc +48 -18
  529. data/src/core/load_balancing/priority/priority.cc +6 -6
  530. data/src/core/load_balancing/ring_hash/ring_hash.cc +8 -8
  531. data/src/core/load_balancing/rls/rls.cc +10 -10
  532. data/src/core/load_balancing/round_robin/round_robin.cc +7 -7
  533. data/src/core/load_balancing/subchannel_interface.h +2 -2
  534. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +1 -1
  535. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +9 -15
  536. data/src/core/load_balancing/weighted_target/weighted_target.cc +9 -9
  537. data/src/core/load_balancing/xds/cds.cc +5 -5
  538. data/src/core/load_balancing/xds/xds_cluster_impl.cc +22 -39
  539. data/src/core/load_balancing/xds/xds_cluster_manager.cc +6 -6
  540. data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
  541. data/src/core/load_balancing/xds/xds_override_host.h +1 -1
  542. data/src/core/load_balancing/xds/xds_wrr_locality.cc +5 -5
  543. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +8 -8
  544. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +1 -1
  545. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  546. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  547. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -2
  548. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +6 -6
  549. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -2
  550. data/src/core/resolver/dns/dns_resolver_plugin.cc +2 -2
  551. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +8 -8
  552. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +1 -1
  553. data/src/core/resolver/dns/event_engine/service_config_helper.cc +2 -2
  554. data/src/core/resolver/dns/native/dns_resolver.cc +7 -7
  555. data/src/core/resolver/endpoint_addresses.cc +4 -4
  556. data/src/core/resolver/endpoint_addresses.h +1 -1
  557. data/src/core/resolver/fake/fake_resolver.cc +1 -1
  558. data/src/core/resolver/fake/fake_resolver.h +3 -3
  559. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +5 -5
  560. data/src/core/resolver/polling_resolver.cc +5 -5
  561. data/src/core/resolver/polling_resolver.h +1 -1
  562. data/src/core/resolver/resolver.h +2 -2
  563. data/src/core/resolver/resolver_factory.h +2 -2
  564. data/src/core/resolver/resolver_registry.cc +1 -1
  565. data/src/core/resolver/resolver_registry.h +1 -1
  566. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +4 -4
  567. data/src/core/resolver/xds/xds_config.cc +1 -1
  568. data/src/core/resolver/xds/xds_config.h +3 -3
  569. data/src/core/resolver/xds/xds_dependency_manager.cc +2 -2
  570. data/src/core/resolver/xds/xds_dependency_manager.h +3 -3
  571. data/src/core/resolver/xds/xds_resolver.cc +16 -13
  572. data/src/core/resolver/xds/xds_resolver_attributes.h +1 -1
  573. data/src/core/server/add_port.cc +2 -2
  574. data/src/core/server/server.cc +9 -5
  575. data/src/core/server/server.h +8 -7
  576. data/src/core/server/server_call_tracer_filter.cc +1 -1
  577. data/src/core/server/server_call_tracer_filter.h +5 -1
  578. data/src/core/server/server_config_selector.h +2 -2
  579. data/src/core/server/server_config_selector_filter.cc +3 -3
  580. data/src/core/server/xds_channel_stack_modifier.cc +3 -2
  581. data/src/core/server/xds_channel_stack_modifier.h +1 -1
  582. data/src/core/server/xds_server_config_fetcher.cc +10 -10
  583. data/src/core/service_config/service_config.h +1 -1
  584. data/src/core/service_config/service_config_channel_arg_filter.h +4 -1
  585. data/src/core/service_config/service_config_impl.cc +3 -3
  586. data/src/core/service_config/service_config_impl.h +2 -2
  587. data/src/core/service_config/service_config_parser.h +1 -1
  588. data/src/core/telemetry/call_tracer.h +2 -2
  589. data/src/core/telemetry/default_tcp_tracer.h +3 -3
  590. data/src/core/telemetry/histogram.h +1 -1
  591. data/src/core/telemetry/instrument.cc +550 -270
  592. data/src/core/telemetry/instrument.h +301 -128
  593. data/src/core/telemetry/metrics.cc +2 -0
  594. data/src/core/telemetry/metrics.h +33 -4
  595. data/src/core/telemetry/stats.h +2 -2
  596. data/src/core/telemetry/stats_data.cc +1 -1
  597. data/src/core/telemetry/stats_data.h +2 -2
  598. data/src/core/transport/auth_context.cc +1 -1
  599. data/src/core/transport/auth_context.h +2 -1
  600. data/src/core/transport/auth_context_comparator_registry.h +1 -1
  601. data/src/core/tsi/alts/crypt/aes_gcm.cc +1 -1
  602. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +2 -2
  603. data/src/core/tsi/alts/frame_protector/frame_handler.cc +1 -1
  604. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
  605. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
  606. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +9 -7
  607. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +1 -1
  608. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
  609. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +1 -1
  610. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +11 -3
  611. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +10 -0
  612. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +9 -1
  613. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +3 -0
  614. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +15 -2
  615. data/src/core/tsi/fake_transport_security.cc +2 -1
  616. data/src/core/tsi/local_transport_security.cc +1 -1
  617. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +1 -1
  618. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -1
  619. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +1 -1
  620. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
  621. data/src/core/tsi/ssl_transport_security.cc +6 -6
  622. data/src/core/tsi/ssl_transport_security.h +1 -1
  623. data/src/core/tsi/ssl_transport_security_utils.cc +2 -2
  624. data/src/core/tsi/ssl_transport_security_utils.h +2 -2
  625. data/src/core/tsi/transport_security_grpc.cc +8 -0
  626. data/src/core/tsi/transport_security_grpc.h +15 -0
  627. data/src/core/util/alloc.cc +1 -1
  628. data/src/core/util/backoff.h +1 -1
  629. data/src/core/util/crash.h +1 -1
  630. data/src/core/util/dual_ref_counted.h +2 -2
  631. data/src/core/util/event_log.cc +1 -1
  632. data/src/core/util/event_log.h +3 -3
  633. data/src/core/util/gcp_metadata_query.cc +5 -5
  634. data/src/core/util/gcp_metadata_query.h +2 -2
  635. data/src/core/util/grpc_check.cc +2 -0
  636. data/src/core/util/grpc_check.h +1 -1
  637. data/src/core/util/grpc_if_nametoindex_posix.cc +1 -1
  638. data/src/core/util/grpc_if_nametoindex_unsupported.cc +1 -1
  639. data/src/core/util/http_client/format_request.cc +1 -1
  640. data/src/core/util/http_client/httpcli.cc +3 -3
  641. data/src/core/util/http_client/httpcli.h +4 -4
  642. data/src/core/util/http_client/httpcli_security_connector.cc +4 -4
  643. data/src/core/util/http_client/parser.cc +1 -1
  644. data/src/core/util/json/json_channel_args.h +1 -1
  645. data/src/core/util/json/json_object_loader.h +6 -6
  646. data/src/core/util/json/json_reader.cc +2 -2
  647. data/src/core/util/json/json_reader.h +1 -1
  648. data/src/core/util/json/json_util.h +3 -3
  649. data/src/core/util/json/json_writer.cc +1 -1
  650. data/src/core/util/latent_see.cc +45 -24
  651. data/src/core/util/latent_see.h +192 -24
  652. data/src/core/util/linux/cpu.cc +1 -1
  653. data/src/core/util/load_file.cc +1 -1
  654. data/src/core/util/load_file.h +1 -1
  655. data/src/core/util/log.cc +3 -3
  656. data/src/core/util/lru_cache.h +1 -1
  657. data/src/core/util/matchers.h +1 -1
  658. data/src/core/util/memory_usage.h +3 -3
  659. data/src/core/util/mpscq.h +1 -1
  660. data/src/core/util/notification.h +1 -1
  661. data/src/core/util/posix/cpu.cc +1 -1
  662. data/src/core/util/posix/stat.cc +2 -2
  663. data/src/core/util/posix/thd.cc +2 -2
  664. data/src/core/util/posix/tmpfile.cc +2 -2
  665. data/src/core/util/ref_counted.h +2 -2
  666. data/src/core/util/ref_counted_ptr.h +1 -1
  667. data/src/core/util/ref_counted_string.h +1 -1
  668. data/src/core/util/single_set_ptr.h +3 -1
  669. data/src/core/util/status_helper.cc +8 -8
  670. data/src/core/util/status_helper.h +1 -1
  671. data/src/core/util/string.cc +2 -2
  672. data/src/core/util/sync_abseil.cc +1 -1
  673. data/src/core/util/table.h +1 -1
  674. data/src/core/util/time.cc +1 -1
  675. data/src/core/util/time_precise.cc +1 -1
  676. data/src/core/util/unique_ptr_with_bitset.h +1 -1
  677. data/src/core/util/unique_type_name.h +1 -1
  678. data/src/core/util/upb_utils.h +6 -1
  679. data/src/core/util/validation_errors.cc +2 -2
  680. data/src/core/util/validation_errors.h +2 -3
  681. data/src/core/util/wait_for_single_owner.h +2 -2
  682. data/src/core/util/windows/directory_reader.cc +1 -1
  683. data/src/core/util/windows/stat.cc +2 -2
  684. data/src/core/util/windows/thd.cc +2 -2
  685. data/src/core/util/windows/time.cc +1 -1
  686. data/src/core/util/work_serializer.cc +3 -3
  687. data/src/core/util/work_serializer.h +2 -2
  688. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  689. data/src/core/xds/grpc/certificate_provider_store.h +2 -2
  690. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  691. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
  692. data/src/core/xds/grpc/xds_audit_logger_registry.cc +3 -3
  693. data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
  694. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +7 -7
  695. data/src/core/xds/grpc/xds_bootstrap_grpc.h +2 -2
  696. data/src/core/xds/grpc/xds_certificate_provider.cc +1 -1
  697. data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
  698. data/src/core/xds/grpc/xds_client_grpc.cc +5 -5
  699. data/src/core/xds/grpc/xds_client_grpc.h +2 -2
  700. data/src/core/xds/grpc/xds_cluster.cc +2 -2
  701. data/src/core/xds/grpc/xds_cluster.h +1 -1
  702. data/src/core/xds/grpc/xds_cluster_parser.cc +5 -5
  703. data/src/core/xds/grpc/xds_cluster_parser.h +1 -1
  704. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  705. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
  706. data/src/core/xds/grpc/xds_common_types.cc +1 -1
  707. data/src/core/xds/grpc/xds_common_types.h +1 -1
  708. data/src/core/xds/grpc/xds_common_types_parser.cc +5 -5
  709. data/src/core/xds/grpc/xds_endpoint.h +2 -2
  710. data/src/core/xds/grpc/xds_endpoint_parser.cc +5 -5
  711. data/src/core/xds/grpc/xds_endpoint_parser.h +1 -1
  712. data/src/core/xds/grpc/xds_health_status.cc +1 -1
  713. data/src/core/xds/grpc/xds_health_status.h +1 -1
  714. data/src/core/xds/grpc/xds_http_fault_filter.cc +4 -4
  715. data/src/core/xds/grpc/xds_http_fault_filter.h +2 -2
  716. data/src/core/xds/grpc/xds_http_filter.h +3 -3
  717. data/src/core/xds/grpc/xds_http_filter_registry.h +2 -2
  718. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +3 -3
  719. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +2 -2
  720. data/src/core/xds/grpc/xds_http_rbac_filter.cc +4 -4
  721. data/src/core/xds/grpc/xds_http_rbac_filter.h +2 -2
  722. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +3 -3
  723. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +2 -2
  724. data/src/core/xds/grpc/xds_lb_policy_registry.cc +1 -1
  725. data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
  726. data/src/core/xds/grpc/xds_listener.cc +2 -2
  727. data/src/core/xds/grpc/xds_listener_parser.cc +6 -6
  728. data/src/core/xds/grpc/xds_listener_parser.h +1 -1
  729. data/src/core/xds/grpc/xds_matcher.cc +1 -1
  730. data/src/core/xds/grpc/xds_matcher.h +3 -3
  731. data/src/core/xds/grpc/xds_matcher_input.h +1 -1
  732. data/src/core/xds/grpc/xds_metadata.cc +1 -1
  733. data/src/core/xds/grpc/xds_metadata.h +3 -3
  734. data/src/core/xds/grpc/xds_metadata_parser.cc +2 -2
  735. data/src/core/xds/grpc/xds_route_config.cc +3 -3
  736. data/src/core/xds/grpc/xds_route_config_parser.cc +8 -8
  737. data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
  738. data/src/core/xds/grpc/xds_routing.cc +4 -4
  739. data/src/core/xds/grpc/xds_routing.h +2 -2
  740. data/src/core/xds/grpc/xds_server_grpc.cc +2 -2
  741. data/src/core/xds/grpc/xds_transport_grpc.cc +1 -1
  742. data/src/core/xds/grpc/xds_transport_grpc.h +2 -2
  743. data/src/core/xds/xds_client/lrs_client.cc +3 -3
  744. data/src/core/xds/xds_client/lrs_client.h +4 -4
  745. data/src/core/xds/xds_client/xds_api.h +1 -1
  746. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +1 -1
  747. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +1 -1
  748. data/src/core/xds/xds_client/xds_client.cc +8 -8
  749. data/src/core/xds/xds_client/xds_client.h +5 -5
  750. data/src/core/xds/xds_client/xds_locality.h +2 -2
  751. data/src/core/xds/xds_client/xds_resource_type.h +2 -2
  752. data/src/core/xds/xds_client/xds_resource_type_impl.h +1 -1
  753. data/src/core/xds/xds_client/xds_transport.h +2 -2
  754. data/src/ruby/ext/grpc/extconf.rb +14 -12
  755. data/src/ruby/ext/grpc/rb_call.c +0 -1
  756. data/src/ruby/ext/grpc/rb_channel_args.c +0 -1
  757. data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
  758. data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
  759. data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
  760. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
  761. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
  762. data/src/ruby/lib/grpc/version.rb +1 -1
  763. metadata +16 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 756fcf0015ec334c4c7ed2efcc9507ea8efac9f564bff3940b47b0c990c8415b
4
- data.tar.gz: 9dc842d0c9f08876ae645f9ed2c15dc54f118a99931de0bdda6f42414a516683
3
+ metadata.gz: 15b6af66bcb097912b531f2dfca1495387ea761175cc23186ae8db7a98e69a61
4
+ data.tar.gz: aac8c0d5fc00fa52956b6fbf48cbef1448be26b68a4e2a7067fb58acc395f621
5
5
  SHA512:
6
- metadata.gz: 79f60eacb2ba9a0e03541ca765dbd34a61592a2298b982ee9b01608b3da48eee7867870573b8739f1c968ebf757af7fb2fcbe56a5eee3939a3cfcb639e7cb9f9
7
- data.tar.gz: d1b4bf5eb377212da94b969ada4fdab5b5180c0ab19cb6814acb83b9b17518b3aec48280df6c40434251612d692f93972f5c4a30fc6ac5133fe2cedbe9feea37
6
+ metadata.gz: b6cab367569ec55bd13a330d45721567c979813eeb13a4fd807a8e6bb8e4a65c110d5b6b940af3f6da3991ddd9703689c9f350f544155531211d391ed7b00386
7
+ data.tar.gz: e1d6526a229394bf63cb2192adf515093d24720e296cd85237e57ce96e3c6252d6d13993ca4f22185578e00c44e280182d7f327612890a4217fa11ad59fe6b89
data/Makefile CHANGED
@@ -367,8 +367,8 @@ E = @echo
367
367
  Q = @
368
368
  endif
369
369
 
370
- CORE_VERSION = 51.0.0
371
- CPP_VERSION = 1.76.0
370
+ CORE_VERSION = 52.0.0
371
+ CPP_VERSION = 1.78.0-pre1
372
372
 
373
373
  CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
374
374
  CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
@@ -404,7 +404,7 @@ SHARED_EXT_CORE = dll
404
404
  SHARED_EXT_CPP = dll
405
405
 
406
406
  SHARED_PREFIX =
407
- SHARED_VERSION_CORE = -51
407
+ SHARED_VERSION_CORE = -52
408
408
  SHARED_VERSION_CPP = -1
409
409
  else ifeq ($(SYSTEM),Darwin)
410
410
  EXECUTABLE_SUFFIX =
@@ -690,6 +690,7 @@ LIBGRPC_SRC = \
690
690
  src/core/channelz/v2tov1/legacy_api.cc \
691
691
  src/core/channelz/v2tov1/property_list.cc \
692
692
  src/core/client_channel/backup_poller.cc \
693
+ src/core/client_channel/buffered_call.cc \
693
694
  src/core/client_channel/client_channel.cc \
694
695
  src/core/client_channel/client_channel_factory.cc \
695
696
  src/core/client_channel/client_channel_filter.cc \
@@ -807,6 +808,7 @@ LIBGRPC_SRC = \
807
808
  src/core/ext/transport/chttp2/transport/frame_security.cc \
808
809
  src/core/ext/transport/chttp2/transport/frame_settings.cc \
809
810
  src/core/ext/transport/chttp2/transport/frame_window_update.cc \
811
+ src/core/ext/transport/chttp2/transport/goaway.cc \
810
812
  src/core/ext/transport/chttp2/transport/hpack_encoder.cc \
811
813
  src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc \
812
814
  src/core/ext/transport/chttp2/transport/hpack_parse_result.cc \
@@ -824,6 +826,7 @@ LIBGRPC_SRC = \
824
826
  src/core/ext/transport/chttp2/transport/ping_callbacks.cc \
825
827
  src/core/ext/transport/chttp2/transport/ping_promise.cc \
826
828
  src/core/ext/transport/chttp2/transport/ping_rate_policy.cc \
829
+ src/core/ext/transport/chttp2/transport/security_frame.cc \
827
830
  src/core/ext/transport/chttp2/transport/stream_lists.cc \
828
831
  src/core/ext/transport/chttp2/transport/transport_common.cc \
829
832
  src/core/ext/transport/chttp2/transport/varint.cc \
@@ -1328,6 +1331,7 @@ LIBGRPC_SRC = \
1328
1331
  src/core/lib/resource_quota/memory_quota.cc \
1329
1332
  src/core/lib/resource_quota/periodic_update.cc \
1330
1333
  src/core/lib/resource_quota/resource_quota.cc \
1334
+ src/core/lib/resource_quota/stream_quota.cc \
1331
1335
  src/core/lib/resource_quota/thread_quota.cc \
1332
1336
  src/core/lib/resource_tracker/resource_tracker.cc \
1333
1337
  src/core/lib/security/authorization/audit_logging.cc \
@@ -1828,11 +1832,13 @@ PUBLIC_HEADERS_C += \
1828
1832
  include/grpc/grpc_posix.h \
1829
1833
  include/grpc/grpc_security.h \
1830
1834
  include/grpc/grpc_security_constants.h \
1835
+ include/grpc/impl/call.h \
1831
1836
  include/grpc/impl/channel_arg_names.h \
1832
1837
  include/grpc/impl/codegen/byte_buffer.h \
1833
1838
  include/grpc/impl/codegen/byte_buffer_reader.h \
1834
1839
  include/grpc/impl/codegen/compression_types.h \
1835
1840
  include/grpc/impl/codegen/connectivity_state.h \
1841
+ include/grpc/impl/codegen/fork.h \
1836
1842
  include/grpc/impl/codegen/grpc_types.h \
1837
1843
  include/grpc/impl/codegen/propagation_bits.h \
1838
1844
  include/grpc/impl/codegen/slice.h \
@@ -1885,8 +1891,8 @@ $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_
1885
1891
  ifeq ($(SYSTEM),Darwin)
1886
1892
  $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libcares.a $(OPENSSL_MERGE_LIBS) $(ZLIB_MERGE_LIBS) $(LDLIBS_SECURE) $(LDLIBS)
1887
1893
  else
1888
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.51 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libcares.a $(OPENSSL_MERGE_LIBS) $(ZLIB_MERGE_LIBS) $(LDLIBS_SECURE) $(LDLIBS)
1889
- $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so.51
1894
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.52 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libcares.a $(OPENSSL_MERGE_LIBS) $(ZLIB_MERGE_LIBS) $(LDLIBS_SECURE) $(LDLIBS)
1895
+ $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so.52
1890
1896
  $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so
1891
1897
  endif
1892
1898
  endif
@@ -19,9 +19,12 @@
19
19
  #ifndef GRPC_CREDENTIALS_H
20
20
  #define GRPC_CREDENTIALS_H
21
21
 
22
- #include <grpc/grpc.h>
23
22
  #include <grpc/grpc_security_constants.h>
23
+ #include <grpc/impl/grpc_types.h>
24
+ #include <grpc/slice.h>
25
+ #include <grpc/status.h>
24
26
  #include <grpc/support/port_platform.h>
27
+ #include <grpc/support/time.h>
25
28
  #include <stdbool.h>
26
29
 
27
30
  #ifdef __cplusplus
@@ -34,6 +37,8 @@ extern "C" {
34
37
  call. These credentials can be composed with a channel credentials object
35
38
  so that they are sent with every call on this channel. */
36
39
 
40
+ typedef struct grpc_server_credentials grpc_server_credentials;
41
+ typedef struct grpc_channel_credentials grpc_channel_credentials;
37
42
  typedef struct grpc_call_credentials grpc_call_credentials;
38
43
  typedef struct grpc_auth_context grpc_auth_context;
39
44
 
@@ -50,6 +50,8 @@ class MemoryAllocator {
50
50
  MemoryAllocator(MemoryAllocator&&) = default;
51
51
  MemoryAllocator& operator=(MemoryAllocator&&) = default;
52
52
 
53
+ bool IsValid() const { return allocator_ != nullptr; }
54
+
53
55
  /// Drop the underlying allocator and make this an empty object.
54
56
  /// The object will not be usable after this call unless it's a valid
55
57
  /// allocator is moved into it.
@@ -384,6 +384,11 @@
384
384
  * Note that this works only with the "ares" DNS resolver; it isn't supported
385
385
  * by the "native" DNS resolver. Boolean valued. Defaults to false. */
386
386
  #define GRPC_ARG_DNS_ENABLE_SRV_QUERIES "grpc.dns_enable_srv_queries"
387
+ /** The cap for max_connections_per_subchannel when set via service
388
+ * config. If the configured value is higher than this, it will be
389
+ * capped at this value. Defaults to 10. */
390
+ #define GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL_CAP \
391
+ "grpc.max_connections_per_subchannel_cap"
387
392
  /** If set, determines an upper bound on the number of milliseconds that the
388
393
  * c-ares based DNS resolver will wait on queries before cancelling them.
389
394
  * The default value is 120,000ms. Setting this to "0" will disable the
@@ -15,11 +15,17 @@
15
15
  #ifndef GRPC_SUPPORT_METRICS_H
16
16
  #define GRPC_SUPPORT_METRICS_H
17
17
 
18
- #include <grpc/event_engine/endpoint_config.h>
19
18
  #include <grpc/support/port_platform.h>
20
19
 
21
20
  #include "absl/strings/string_view.h"
22
21
 
22
+ // Forward declaration for EndpointConfig
23
+ namespace grpc_event_engine {
24
+ namespace experimental {
25
+ class EndpointConfig; // Forward declaration
26
+ } // namespace experimental
27
+ } // namespace grpc_event_engine
28
+
23
29
  namespace grpc_core {
24
30
  namespace experimental {
25
31
 
@@ -16,10 +16,10 @@
16
16
 
17
17
  #include <grpc/support/port_platform.h>
18
18
 
19
- #include "absl/log/log.h"
20
19
  #include "src/core/call/metadata.h"
21
20
  #include "src/core/util/crash.h"
22
21
  #include "src/core/util/grpc_check.h"
22
+ #include "absl/log/log.h"
23
23
 
24
24
  namespace grpc_core {
25
25
  // Call data for those calls that don't have any call data
@@ -26,6 +26,7 @@
26
26
  #include "src/core/call/call_state.h"
27
27
  #include "src/core/call/message.h"
28
28
  #include "src/core/call/metadata.h"
29
+ #include "src/core/channelz/property_list.h"
29
30
  #include "src/core/lib/promise/for_each.h"
30
31
  #include "src/core/lib/promise/if.h"
31
32
  #include "src/core/lib/promise/latch.h"
@@ -53,6 +54,7 @@
53
54
  // - OnClientToServerHalfClose - no value
54
55
  // - OnServerTrailingMetadata - $VALUE_TYPE = ServerMetadata
55
56
  // - OnFinalize - special, see below
57
+ // - ChannelzProperties - special, see below
56
58
  // These members define an interception point for a particular event in
57
59
  // the call lifecycle.
58
60
  //
@@ -89,7 +91,7 @@
89
91
  // It's also acceptable to return a promise that resolves to the
90
92
  // relevant return type listed above.
91
93
  //
92
- // Finally, OnFinalize is added to intecept call finalization.
94
+ // OnFinalize is added to intecept call finalization.
93
95
  // It must have one of the signatures:
94
96
  // - static inline const NoInterceptor OnFinalize:
95
97
  // the filter does not intercept call finalization.
@@ -98,6 +100,11 @@
98
100
  // - void OnFinalize(const grpc_call_final_info*, FilterType*):
99
101
  // the filter intercepts call finalization.
100
102
  //
103
+ // ChannelzProperties is added to provide channelz data.
104
+ // It must have one of the signatures:
105
+ // - channelz::PropertyList ChannelzProperties();
106
+ // - channelz::PropertyList ChannelzProperties(FilterType*);
107
+ //
101
108
  // The constructor of the Call object can either take a pointer to the channel
102
109
  // object, or not take any arguments.
103
110
  //
@@ -1042,6 +1049,14 @@ struct ChannelDataDestructor {
1042
1049
  void* channel_data;
1043
1050
  };
1044
1051
 
1052
+ struct FilterMetadata {
1053
+ absl::string_view name;
1054
+ void* channel_data;
1055
+ size_t call_data_offset;
1056
+ channelz::PropertyList (*channelz_properties)(void* channel_data,
1057
+ void* call_data);
1058
+ };
1059
+
1045
1060
  // StackData contains the main datastructures built up by this module.
1046
1061
  // It's a complete representation of all the code that needs to be invoked
1047
1062
  // to execute a call for a given set of filters.
@@ -1071,6 +1086,79 @@ struct StackData {
1071
1086
  // A list of functions to call when this stack data is destroyed
1072
1087
  // (to capture ownership of channel data)
1073
1088
  std::vector<ChannelDataDestructor> channel_data_destructors;
1089
+ // A list of metadata about filters for this stack.
1090
+ std::vector<FilterMetadata> filter_metadata;
1091
+
1092
+ channelz::PropertyList ChannelzProperties(void* call_data) const {
1093
+ absl::flat_hash_map<void*, const FilterMetadata*>
1094
+ channel_data_to_filter_metadata;
1095
+ for (const auto& filter_metadata : filter_metadata) {
1096
+ channel_data_to_filter_metadata[filter_metadata.channel_data] =
1097
+ &filter_metadata;
1098
+ }
1099
+ auto filter_chain =
1100
+ [&channel_data_to_filter_metadata](const auto& container) {
1101
+ std::vector<absl::string_view> filter_names;
1102
+ for (const auto& filter : container) {
1103
+ void* channel_data = filter.channel_data;
1104
+ auto it = channel_data_to_filter_metadata.find(channel_data);
1105
+ if (it != channel_data_to_filter_metadata.end()) {
1106
+ filter_names.push_back(it->second->name);
1107
+ } else {
1108
+ filter_names.push_back("unknown_filter");
1109
+ }
1110
+ }
1111
+ return absl::StrJoin(filter_names, ", ");
1112
+ };
1113
+ auto layout_properties = [&](const auto& layout) {
1114
+ return channelz::PropertyList()
1115
+ .Set("promise_size", layout.promise_size)
1116
+ .Set("promise_alignment", layout.promise_alignment)
1117
+ .Set("filters", filter_chain(layout.ops));
1118
+ };
1119
+ return channelz::PropertyList()
1120
+ .Set("call_data_alignment", call_data_alignment)
1121
+ .Set("call_data_size", call_data_size)
1122
+ .Set("filters",
1123
+ [&, this]() {
1124
+ channelz::PropertyTable table;
1125
+ for (const auto& filter : filter_metadata) {
1126
+ table.AppendRow(
1127
+ channelz::PropertyList()
1128
+ .Set("name", filter.name)
1129
+ .Set("call_data_offset", filter.call_data_offset)
1130
+ .Merge([&]() {
1131
+ if (call_data == nullptr) {
1132
+ return channelz::PropertyList();
1133
+ }
1134
+ if (filter.channelz_properties == nullptr) {
1135
+ return channelz::PropertyList();
1136
+ }
1137
+ return filter.channelz_properties(
1138
+ filter.channel_data,
1139
+ Offset(call_data, filter.call_data_offset));
1140
+ }()));
1141
+ }
1142
+ return table;
1143
+ }())
1144
+ .Set("constructors", filter_chain(filter_constructor))
1145
+ // TODO(ctiller): Add the list of destructors (need to figure out how to
1146
+ // map them).
1147
+ .Set("client_initial_metadata",
1148
+ layout_properties(client_initial_metadata))
1149
+ .Set("server_initial_metadata",
1150
+ layout_properties(server_initial_metadata))
1151
+ .Set("client_to_server_messages",
1152
+ layout_properties(client_to_server_messages))
1153
+ .Set("client_to_server_half_close",
1154
+ filter_chain(client_to_server_half_close))
1155
+ .Set("server_to_client_messages",
1156
+ layout_properties(server_to_client_messages))
1157
+ .Set("server_trailing_metadata", filter_chain(server_trailing_metadata))
1158
+ .Set("finalizers", filter_chain(finalizers))
1159
+ .Set("channel_data_destructors",
1160
+ filter_chain(channel_data_destructors));
1161
+ }
1074
1162
 
1075
1163
  bool empty() const {
1076
1164
  return filter_constructor.empty() && filter_destructor.empty() &&
@@ -1253,6 +1341,69 @@ struct StackData {
1253
1341
  },
1254
1342
  });
1255
1343
  }
1344
+
1345
+ template <typename FilterType>
1346
+ void AddFilterMetadata(FilterType* channel_data, size_t call_offset,
1347
+ channelz::PropertyList (FilterType::Call::*p)()
1348
+ const) {
1349
+ GRPC_DCHECK(p == &FilterType::Call::ChannelzProperties);
1350
+ filter_metadata.push_back(FilterMetadata{
1351
+ TypeName<FilterType>(),
1352
+ channel_data,
1353
+ call_offset,
1354
+ [](void* /*channel_data*/, void* call_data) {
1355
+ return static_cast<typename FilterType::Call*>(call_data)
1356
+ ->ChannelzProperties();
1357
+ },
1358
+ });
1359
+ }
1360
+
1361
+ template <typename FilterType>
1362
+ void AddFilterMetadata(FilterType* channel_data, size_t call_offset,
1363
+ channelz::PropertyList (FilterType::Call::*p)()) {
1364
+ GRPC_DCHECK(p == &FilterType::Call::ChannelzProperties);
1365
+ filter_metadata.push_back(FilterMetadata{
1366
+ TypeName<FilterType>(),
1367
+ channel_data,
1368
+ call_offset,
1369
+ [](void* /*channel_data*/, void* call_data) {
1370
+ return static_cast<typename FilterType::Call*>(call_data)
1371
+ ->ChannelzProperties();
1372
+ },
1373
+ });
1374
+ }
1375
+
1376
+ template <typename FilterType>
1377
+ void AddFilterMetadata(
1378
+ FilterType* channel_data, size_t call_offset,
1379
+ channelz::PropertyList (FilterType::Call::*p)(FilterType*) const) {
1380
+ GRPC_DCHECK(p == &FilterType::Call::ChannelzProperties);
1381
+ filter_metadata.push_back(FilterMetadata{
1382
+ TypeName<FilterType>(),
1383
+ channel_data,
1384
+ call_offset,
1385
+ [](void* channel_data, void* call_data) {
1386
+ return static_cast<typename FilterType::Call*>(call_data)
1387
+ ->ChannelzProperties(static_cast<FilterType*>(channel_data));
1388
+ },
1389
+ });
1390
+ }
1391
+
1392
+ template <typename FilterType>
1393
+ void AddFilterMetadata(
1394
+ FilterType* channel_data, size_t call_offset,
1395
+ channelz::PropertyList (FilterType::Call::*p)(FilterType*)) {
1396
+ GRPC_DCHECK(p == &FilterType::Call::ChannelzProperties);
1397
+ filter_metadata.push_back(FilterMetadata{
1398
+ TypeName<FilterType>(),
1399
+ channel_data,
1400
+ call_offset,
1401
+ [](void* channel_data, void* call_data) {
1402
+ return static_cast<typename FilterType::Call*>(call_data)
1403
+ ->ChannelzProperties(static_cast<FilterType*>(channel_data));
1404
+ },
1405
+ });
1406
+ }
1256
1407
  };
1257
1408
 
1258
1409
  // OperationExecutor is a helper class to execute a sequence of operations
@@ -1400,6 +1551,9 @@ class ServerTrailingMetadataInterceptor {
1400
1551
  ServerTrailingMetadataInterceptor* filter) {
1401
1552
  filter->fn_(md);
1402
1553
  }
1554
+ channelz::PropertyList ChannelzProperties() {
1555
+ return channelz::PropertyList();
1556
+ }
1403
1557
  };
1404
1558
 
1405
1559
  explicit ServerTrailingMetadataInterceptor(Fn fn) : fn_(std::move(fn)) {}
@@ -1423,6 +1577,10 @@ class ClientInitialMetadataInterceptor {
1423
1577
  static const inline NoInterceptor OnServerToClientMessage;
1424
1578
  static const inline NoInterceptor OnServerTrailingMetadata;
1425
1579
  static const inline NoInterceptor OnFinalize;
1580
+
1581
+ channelz::PropertyList ChannelzProperties() {
1582
+ return channelz::PropertyList();
1583
+ }
1426
1584
  };
1427
1585
 
1428
1586
  explicit ClientInitialMetadataInterceptor(Fn fn) : fn_(std::move(fn)) {}
@@ -1577,6 +1735,8 @@ class CallFilters {
1577
1735
  data_.AddServerToClientMessageOp(filter, call_offset);
1578
1736
  data_.AddServerTrailingMetadataOp(filter, call_offset);
1579
1737
  data_.AddFinalizer(filter, call_offset, &FilterType::Call::OnFinalize);
1738
+ data_.AddFilterMetadata(filter, call_offset,
1739
+ &FilterType::Call::ChannelzProperties);
1580
1740
  }
1581
1741
 
1582
1742
  void AddOwnedObject(void (*destroy)(void* p), void* p) {
@@ -1646,6 +1806,20 @@ class CallFilters {
1646
1806
  return push_client_initial_metadata_.get();
1647
1807
  }
1648
1808
 
1809
+ channelz::PropertyTable ChannelzProperties() {
1810
+ channelz::PropertyTable properties;
1811
+ for (size_t i = 0; i < stacks_.size(); ++i) {
1812
+ void* stack_call_offset =
1813
+ filters_detail::Offset(call_data_, stacks_[i].call_data_offset);
1814
+ properties.AppendRow(
1815
+ channelz::PropertyList()
1816
+ .Set("call_data_offset", stacks_[i].call_data_offset)
1817
+ .Merge(stacks_[i].stack->data_.ChannelzProperties(
1818
+ stack_call_offset)));
1819
+ }
1820
+ return properties;
1821
+ }
1822
+
1649
1823
  private:
1650
1824
  template <typename Output, typename Input,
1651
1825
  Input(CallFilters::* input_location),
@@ -16,10 +16,10 @@
16
16
 
17
17
  #include <grpc/support/port_platform.h>
18
18
 
19
- #include "absl/functional/any_invocable.h"
20
19
  #include "src/core/lib/event_engine/event_engine_context.h"
21
20
  #include "src/core/lib/promise/for_each.h"
22
21
  #include "src/core/lib/promise/try_seq.h"
22
+ #include "absl/functional/any_invocable.h"
23
23
 
24
24
  namespace grpc_core {
25
25
 
@@ -19,8 +19,10 @@
19
19
 
20
20
  #include "src/core/call/call_arena_allocator.h"
21
21
  #include "src/core/call/call_filters.h"
22
+ #include "src/core/call/channelz_context.h"
22
23
  #include "src/core/call/message.h"
23
24
  #include "src/core/call/metadata.h"
25
+ #include "src/core/channelz/channelz.h"
24
26
  #include "src/core/lib/promise/detail/status.h"
25
27
  #include "src/core/lib/promise/if.h"
26
28
  #include "src/core/lib/promise/latch.h"
@@ -39,7 +41,7 @@ namespace grpc_core {
39
41
  // CallInitiator and CallHandler - which provide interfaces that are appropriate
40
42
  // for each side of a call.
41
43
  // Hosts context, call filters, and the arena.
42
- class CallSpine final : public Party {
44
+ class CallSpine final : public Party, public channelz::DataSource {
43
45
  public:
44
46
  static RefCountedPtr<CallSpine> Create(
45
47
  ClientMetadataHandle client_initial_metadata,
@@ -49,7 +51,10 @@ class CallSpine final : public Party {
49
51
  std::move(client_initial_metadata), std::move(arena)));
50
52
  }
51
53
 
52
- ~CallSpine() override { CallOnDone(true); }
54
+ ~CallSpine() override {
55
+ CallOnDone(true);
56
+ SourceDestructing();
57
+ }
53
58
 
54
59
  CallFilters& call_filters() { return call_filters_; }
55
60
 
@@ -285,12 +290,29 @@ class CallSpine final : public Party {
285
290
  }
286
291
  }
287
292
 
293
+ void AddData(channelz::DataSink sink) override {
294
+ this->ExportToChannelz(
295
+ "call_spine", sink, [self = RefAsSubclass<CallSpine>()]() {
296
+ return channelz::PropertyList()
297
+ .Set("filters", self->call_filters_.ChannelzProperties())
298
+ .Set("child_calls", self->child_calls_.size())
299
+ .Set("has_on_done", self->on_done_ != nullptr);
300
+ });
301
+ }
302
+
288
303
  private:
289
304
  friend class Arena;
290
305
  CallSpine(ClientMetadataHandle client_initial_metadata,
291
- RefCountedPtr<Arena> arena)
292
- : Party(std::move(arena)),
293
- call_filters_(std::move(client_initial_metadata)) {}
306
+ RefCountedPtr<Arena> a)
307
+ : Party(std::move(a)),
308
+ channelz::DataSource([this]() -> RefCountedPtr<channelz::BaseNode> {
309
+ auto* p = arena()->GetContext<channelz::CallNode>();
310
+ if (p == nullptr) return nullptr;
311
+ return p->Ref();
312
+ }()),
313
+ call_filters_(std::move(client_initial_metadata)) {
314
+ SourceConstructed();
315
+ }
294
316
 
295
317
  SpawnSerializer* client_to_server_serializer() {
296
318
  if (client_to_server_serializer_ == nullptr) {
@@ -0,0 +1,30 @@
1
+ // Copyright 2025 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_SRC_CORE_CALL_CHANNELZ_CONTEXT_H
16
+ #define GRPC_SRC_CORE_CALL_CHANNELZ_CONTEXT_H
17
+
18
+ #include "src/core/channelz/channelz.h"
19
+ #include "src/core/lib/resource_quota/arena.h"
20
+
21
+ namespace grpc_core {
22
+
23
+ template <>
24
+ struct ArenaContextType<channelz::CallNode> {
25
+ static void Destroy(channelz::CallNode*) {}
26
+ };
27
+
28
+ } // namespace grpc_core
29
+
30
+ #endif // GRPC_SRC_CORE_CALL_CHANNELZ_CONTEXT_H
@@ -39,8 +39,6 @@
39
39
  #include <string>
40
40
  #include <utility>
41
41
 
42
- #include "absl/status/status.h"
43
- #include "absl/strings/string_view.h"
44
42
  #include "src/core/call/metadata.h"
45
43
  #include "src/core/lib/event_engine/event_engine_context.h"
46
44
  #include "src/core/lib/promise/all_ok.h"
@@ -57,6 +55,8 @@
57
55
  #include "src/core/util/latent_see.h"
58
56
  #include "src/core/util/ref_counted.h"
59
57
  #include "src/core/util/ref_counted_ptr.h"
58
+ #include "absl/status/status.h"
59
+ #include "absl/strings/string_view.h"
60
60
 
61
61
  namespace grpc_core {
62
62
 
@@ -105,7 +105,7 @@ ClientCall::ClientCall(grpc_call*, uint32_t, grpc_completion_queue* cq,
105
105
  grpc_compression_options compression_options,
106
106
  RefCountedPtr<Arena> arena,
107
107
  RefCountedPtr<UnstartedCallDestination> destination)
108
- : Call(false, deadline, std::move(arena)),
108
+ : Call(/*is_client=*/true, deadline, std::move(arena)),
109
109
  DualRefCounted("ClientCall"),
110
110
  cq_(cq),
111
111
  call_destination_(std::move(destination)),
@@ -120,8 +120,37 @@ ClientCall::ClientCall(grpc_call*, uint32_t, grpc_completion_queue* cq,
120
120
  reinterpret_cast<void*>(static_cast<uintptr_t>(registered_method)));
121
121
  if (deadline != Timestamp::InfFuture()) {
122
122
  send_initial_metadata_->Set(GrpcTimeoutMetadata(), deadline);
123
- UpdateDeadline(deadline);
123
+ UpdateDeadline(deadline).IgnoreError();
124
124
  }
125
+ SourceConstructed();
126
+ }
127
+
128
+ void ClientCall::AddData(channelz::DataSink sink) {
129
+ Call::AddData(sink);
130
+ sink.AddData(
131
+ "client_call",
132
+ channelz::PropertyList()
133
+ .Set("call_state",
134
+ [this]() {
135
+ switch (call_state_.load(std::memory_order_relaxed)) {
136
+ case kUnstarted:
137
+ return "Unstarted";
138
+ case kStarted:
139
+ return "Started";
140
+ case kCancelled:
141
+ return "Cancelled";
142
+ default:
143
+ return "StartedWithoutInitialMetadata";
144
+ }
145
+ }())
146
+ .Set("cancel_status",
147
+ [this]() -> std::string {
148
+ auto* p = cancel_status_.Get();
149
+ if (p == nullptr) return "not cancelled";
150
+ return p->ToString();
151
+ }())
152
+ .Set("saw_trailing_metadata",
153
+ saw_trailing_metadata_.load(std::memory_order_relaxed)));
125
154
  }
126
155
 
127
156
  grpc_call_error ClientCall::StartBatch(const grpc_op* ops, size_t nops,
@@ -228,11 +257,20 @@ Party::WakeupHold ClientCall::StartCall(
228
257
  const grpc_op& send_initial_metadata_op) {
229
258
  GRPC_LATENT_SEE_SCOPE("ClientCall::StartCall");
230
259
  auto cur_state = call_state_.load(std::memory_order_acquire);
260
+ // TODO(akshitpatel): [PH2][P3]: Might need to invoke
261
+ // PrepareApplicationMetadata here.
231
262
  CToMetadata(send_initial_metadata_op.data.send_initial_metadata.metadata,
232
263
  send_initial_metadata_op.data.send_initial_metadata.count,
233
264
  send_initial_metadata_.get());
234
265
  PrepareOutgoingInitialMetadata(send_initial_metadata_op,
235
266
  *send_initial_metadata_);
267
+ send_initial_metadata_->Set(
268
+ WaitForReady(),
269
+ WaitForReady::ValueType{
270
+ (send_initial_metadata_op.flags &
271
+ GRPC_INITIAL_METADATA_WAIT_FOR_READY) != 0,
272
+ (send_initial_metadata_op.flags &
273
+ GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET) != 0});
236
274
  auto call = MakeCallPair(std::move(send_initial_metadata_), arena()->Ref());
237
275
  started_call_initiator_ = std::move(call.initiator);
238
276
  Party::WakeupHold wakeup_hold{started_call_initiator_.party()};
@@ -264,7 +302,7 @@ bool ClientCall::StartCallMaybeUpdateState(uintptr_t& cur_state,
264
302
  std::memory_order_acquire)) {
265
303
  call_destination_->StartCall(std::move(handler));
266
304
  auto unordered_start = reinterpret_cast<UnorderedStart*>(cur_state);
267
- while (unordered_start->next != nullptr) {
305
+ while (unordered_start != nullptr) {
268
306
  unordered_start->start_pending_batch();
269
307
  auto next = unordered_start->next;
270
308
  delete unordered_start;
@@ -37,9 +37,6 @@
37
37
  #include <cstdint>
38
38
  #include <string>
39
39
 
40
- #include "absl/status/status.h"
41
- #include "absl/strings/str_format.h"
42
- #include "absl/strings/string_view.h"
43
40
  #include "src/core/call/metadata.h"
44
41
  #include "src/core/lib/promise/status_flag.h"
45
42
  #include "src/core/lib/resource_quota/arena.h"
@@ -49,6 +46,9 @@
49
46
  #include "src/core/util/ref_counted.h"
50
47
  #include "src/core/util/ref_counted_ptr.h"
51
48
  #include "src/core/util/single_set_ptr.h"
49
+ #include "absl/status/status.h"
50
+ #include "absl/strings/str_format.h"
51
+ #include "absl/strings/string_view.h"
52
52
 
53
53
  namespace grpc_core {
54
54
 
@@ -78,6 +78,7 @@ class ClientCall final
78
78
  void InternalUnref(const char*) override { WeakUnref(); }
79
79
 
80
80
  void Orphaned() override {
81
+ SourceDestructing();
81
82
  if (!saw_trailing_metadata_.load(std::memory_order_relaxed)) {
82
83
  CancelWithError(absl::CancelledError());
83
84
  }
@@ -118,6 +119,8 @@ class ClientCall final
118
119
  this->~ClientCall();
119
120
  }
120
121
 
122
+ void AddData(channelz::DataSink sink) override;
123
+
121
124
  private:
122
125
  struct UnorderedStart {
123
126
  absl::AnyInvocable<void()> start_pending_batch;