grpc 1.75.0 → 1.78.1

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 (839) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +24 -5
  3. data/include/grpc/credentials.h +27 -6
  4. data/include/grpc/event_engine/memory_allocator.h +2 -0
  5. data/include/grpc/event_engine/memory_request.h +2 -0
  6. data/include/grpc/impl/channel_arg_names.h +5 -0
  7. data/include/grpc/support/metrics.h +7 -1
  8. data/src/core/call/call_filters.cc +5 -5
  9. data/src/core/call/call_filters.h +211 -37
  10. data/src/core/call/call_spine.cc +1 -1
  11. data/src/core/call/call_spine.h +54 -32
  12. data/src/core/call/channelz_context.h +30 -0
  13. data/src/core/call/client_call.cc +49 -10
  14. data/src/core/call/client_call.h +6 -3
  15. data/src/core/call/filter_fusion.h +9 -9
  16. data/src/core/call/interception_chain.h +7 -6
  17. data/src/core/call/metadata_batch.cc +49 -55
  18. data/src/core/call/metadata_batch.h +10 -9
  19. data/src/core/call/metadata_info.cc +1 -1
  20. data/src/core/call/parsed_metadata.h +2 -2
  21. data/src/core/call/request_buffer.cc +1 -1
  22. data/src/core/call/security_context.cc +2 -2
  23. data/src/core/call/security_context.h +1 -1
  24. data/src/core/call/server_call.cc +5 -5
  25. data/src/core/call/server_call.h +6 -4
  26. data/src/core/call/simple_slice_based_metadata.h +1 -1
  27. data/src/core/call/status_util.cc +1 -1
  28. data/src/core/channelz/channel_trace.cc +1 -1
  29. data/src/core/channelz/channel_trace.h +3 -3
  30. data/src/core/channelz/channelz.cc +25 -29
  31. data/src/core/channelz/channelz.h +73 -22
  32. data/src/core/channelz/channelz_registry.cc +2 -2
  33. data/src/core/channelz/channelz_registry.h +53 -2
  34. data/src/core/channelz/property_list.cc +18 -0
  35. data/src/core/channelz/property_list.h +15 -4
  36. data/src/core/channelz/text_encode.cc +66 -0
  37. data/src/core/channelz/text_encode.h +29 -0
  38. data/src/core/channelz/v2tov1/convert.cc +17 -6
  39. data/src/core/channelz/v2tov1/legacy_api.cc +18 -12
  40. data/src/core/channelz/v2tov1/property_list.cc +2 -1
  41. data/src/core/channelz/ztrace_collector.h +260 -87
  42. data/src/core/client_channel/backup_poller.cc +7 -8
  43. data/src/core/client_channel/buffered_call.cc +140 -0
  44. data/src/core/client_channel/buffered_call.h +104 -0
  45. data/src/core/client_channel/client_channel.cc +144 -84
  46. data/src/core/client_channel/client_channel.h +8 -11
  47. data/src/core/client_channel/client_channel_factory.h +1 -1
  48. data/src/core/client_channel/client_channel_filter.cc +424 -686
  49. data/src/core/client_channel/client_channel_filter.h +57 -150
  50. data/src/core/client_channel/client_channel_internal.h +8 -5
  51. data/src/core/client_channel/client_channel_service_config.cc +43 -3
  52. data/src/core/client_channel/client_channel_service_config.h +12 -1
  53. data/src/core/client_channel/config_selector.h +5 -5
  54. data/src/core/client_channel/connector.h +2 -0
  55. data/src/core/client_channel/dynamic_filters.cc +5 -5
  56. data/src/core/client_channel/global_subchannel_pool.cc +0 -37
  57. data/src/core/client_channel/global_subchannel_pool.h +1 -28
  58. data/src/core/client_channel/lb_metadata.h +1 -1
  59. data/src/core/client_channel/load_balanced_call_destination.cc +10 -12
  60. data/src/core/client_channel/load_balanced_call_destination.h +1 -1
  61. data/src/core/client_channel/local_subchannel_pool.cc +4 -4
  62. data/src/core/client_channel/retry_filter.cc +2 -2
  63. data/src/core/client_channel/retry_filter.h +3 -3
  64. data/src/core/client_channel/retry_filter_legacy_call_data.cc +11 -12
  65. data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -8
  66. data/src/core/client_channel/retry_service_config.cc +3 -3
  67. data/src/core/client_channel/retry_service_config.h +1 -1
  68. data/src/core/client_channel/subchannel.cc +114 -25
  69. data/src/core/client_channel/subchannel.h +24 -8
  70. data/src/core/client_channel/subchannel_pool_interface.cc +2 -2
  71. data/src/core/client_channel/subchannel_pool_interface.h +1 -1
  72. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  73. data/src/core/client_channel/subchannel_stream_client.h +3 -3
  74. data/src/core/config/config_vars.cc +38 -3
  75. data/src/core/config/config_vars.h +26 -0
  76. data/src/core/config/core_configuration.cc +5 -5
  77. data/src/core/config/core_configuration.h +8 -8
  78. data/src/core/config/load_config.cc +13 -1
  79. data/src/core/config/load_config.h +2 -0
  80. data/src/core/credentials/call/call_credentials.h +4 -4
  81. data/src/core/credentials/call/call_creds_registry.h +1 -1
  82. data/src/core/credentials/call/call_creds_registry_init.cc +2 -2
  83. data/src/core/credentials/call/call_creds_util.cc +7 -6
  84. data/src/core/credentials/call/composite/composite_call_credentials.cc +6 -6
  85. data/src/core/credentials/call/composite/composite_call_credentials.h +1 -1
  86. data/src/core/credentials/call/external/aws_external_account_credentials.cc +9 -9
  87. data/src/core/credentials/call/external/aws_external_account_credentials.h +1 -1
  88. data/src/core/credentials/call/external/external_account_credentials.cc +12 -12
  89. data/src/core/credentials/call/external/external_account_credentials.h +1 -1
  90. data/src/core/credentials/call/external/file_external_account_credentials.cc +3 -3
  91. data/src/core/credentials/call/external/file_external_account_credentials.h +1 -1
  92. data/src/core/credentials/call/external/url_external_account_credentials.cc +7 -7
  93. data/src/core/credentials/call/external/url_external_account_credentials.h +1 -1
  94. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +24 -71
  95. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +1 -8
  96. data/src/core/credentials/call/iam/iam_credentials.cc +6 -6
  97. data/src/core/credentials/call/iam/iam_credentials.h +1 -1
  98. data/src/core/credentials/call/json_util.cc +1 -1
  99. data/src/core/credentials/call/jwt/json_token.cc +7 -7
  100. data/src/core/credentials/call/jwt/jwt_credentials.cc +5 -5
  101. data/src/core/credentials/call/jwt/jwt_credentials.h +4 -4
  102. data/src/core/credentials/call/jwt/jwt_verifier.cc +19 -18
  103. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +2 -2
  104. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +3 -3
  105. data/src/core/credentials/call/jwt_util.cc +3 -3
  106. data/src/core/credentials/call/jwt_util.h +1 -1
  107. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +49 -72
  108. data/src/core/credentials/call/oauth2/oauth2_credentials.h +3 -9
  109. data/src/core/credentials/call/plugin/plugin_credentials.cc +6 -6
  110. data/src/core/credentials/call/plugin/plugin_credentials.h +2 -2
  111. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +46 -0
  112. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +32 -3
  113. data/src/core/credentials/transport/alts/alts_credentials.cc +5 -5
  114. data/src/core/credentials/transport/alts/alts_security_connector.cc +17 -15
  115. data/src/core/credentials/transport/alts/check_gcp_environment_no_op.cc +1 -1
  116. data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +23 -3
  117. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.cc +10 -1
  118. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +31 -0
  119. data/src/core/credentials/transport/alts/grpc_alts_credentials_server_options.cc +8 -3
  120. data/src/core/credentials/transport/channel_creds_registry.h +1 -1
  121. data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
  122. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +7 -7
  123. data/src/core/credentials/transport/composite/composite_channel_credentials.h +1 -1
  124. data/src/core/credentials/transport/fake/fake_credentials.cc +1 -1
  125. data/src/core/credentials/transport/fake/fake_credentials.h +1 -1
  126. data/src/core/credentials/transport/fake/fake_security_connector.cc +7 -7
  127. data/src/core/credentials/transport/google_default/credentials_generic.cc +2 -2
  128. data/src/core/credentials/transport/google_default/google_default_credentials.cc +83 -39
  129. data/src/core/credentials/transport/google_default/google_default_credentials.h +0 -2
  130. data/src/core/credentials/transport/insecure/insecure_security_connector.cc +3 -3
  131. data/src/core/credentials/transport/insecure/insecure_security_connector.h +2 -2
  132. data/src/core/credentials/transport/local/local_security_connector.cc +13 -13
  133. data/src/core/credentials/transport/security_connector.cc +6 -6
  134. data/src/core/credentials/transport/security_connector.h +2 -2
  135. data/src/core/credentials/transport/ssl/ssl_credentials.cc +13 -13
  136. data/src/core/credentials/transport/ssl/ssl_credentials.h +2 -2
  137. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -8
  138. data/src/core/credentials/transport/tls/certificate_provider_factory.h +1 -1
  139. data/src/core/credentials/transport/tls/certificate_provider_registry.cc +2 -2
  140. data/src/core/credentials/transport/tls/certificate_provider_registry.h +1 -1
  141. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +25 -25
  142. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +2 -2
  143. data/src/core/credentials/transport/tls/grpc_tls_certificate_match.cc +1 -1
  144. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +8 -8
  145. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +5 -5
  146. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  147. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +4 -4
  148. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +18 -18
  149. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +5 -5
  150. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.h +3 -3
  151. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -1
  152. data/src/core/credentials/transport/tls/spiffe_utils.cc +10 -8
  153. data/src/core/credentials/transport/tls/spiffe_utils.h +2 -2
  154. data/src/core/credentials/transport/tls/ssl_utils.cc +18 -13
  155. data/src/core/credentials/transport/tls/ssl_utils.h +2 -2
  156. data/src/core/credentials/transport/tls/tls_credentials.cc +3 -3
  157. data/src/core/credentials/transport/tls/tls_security_connector.cc +15 -15
  158. data/src/core/credentials/transport/tls/tls_security_connector.h +3 -3
  159. data/src/core/credentials/transport/transport_credentials.cc +3 -3
  160. data/src/core/credentials/transport/transport_credentials.h +4 -4
  161. data/src/core/credentials/transport/xds/xds_credentials.cc +5 -5
  162. data/src/core/credentials/transport/xds/xds_credentials.h +1 -1
  163. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +2 -2
  164. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +4 -1
  165. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +6 -4
  166. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -2
  167. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +7 -7
  168. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +6 -3
  169. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +1 -1
  170. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  171. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +6 -3
  172. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +1 -1
  173. data/src/core/ext/filters/http/client/http_client_filter.cc +6 -6
  174. data/src/core/ext/filters/http/client/http_client_filter.h +4 -1
  175. data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
  176. data/src/core/ext/filters/http/client_authority_filter.h +4 -1
  177. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -1
  178. data/src/core/ext/filters/http/message_compress/compression_filter.cc +11 -11
  179. data/src/core/ext/filters/http/message_compress/compression_filter.h +24 -5
  180. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  181. data/src/core/ext/filters/http/server/http_server_filter.h +4 -1
  182. data/src/core/ext/filters/message_size/message_size_filter.cc +2 -2
  183. data/src/core/ext/filters/message_size/message_size_filter.h +8 -2
  184. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
  185. data/src/core/ext/filters/rbac/rbac_filter.h +4 -1
  186. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +3 -3
  187. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  188. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +14 -14
  189. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +13 -2
  190. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +1 -1
  191. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -2
  192. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +58 -44
  193. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -3
  194. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +25 -24
  195. data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -2
  196. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +6 -6
  197. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +6 -6
  198. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +306 -148
  199. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -2
  200. data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -7
  201. data/src/core/ext/transport/chttp2/transport/flow_control.h +223 -83
  202. data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +105 -0
  203. data/src/core/ext/transport/chttp2/transport/frame.cc +175 -27
  204. data/src/core/ext/transport/chttp2/transport/frame.h +58 -10
  205. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
  206. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  207. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +5 -5
  208. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +6 -6
  209. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  210. data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -1
  211. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -15
  212. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
  213. data/src/core/ext/transport/chttp2/transport/goaway.cc +129 -0
  214. data/src/core/ext/transport/chttp2/transport/goaway.h +350 -0
  215. data/src/core/ext/transport/chttp2/transport/header_assembler.h +194 -54
  216. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +3 -3
  217. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -6
  218. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +8 -8
  219. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +3 -3
  220. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +5 -5
  221. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +34 -34
  222. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -7
  223. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +8 -8
  224. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -1
  225. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1475 -632
  226. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +384 -373
  227. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  228. data/src/core/ext/transport/chttp2/transport/http2_settings.h +6 -4
  229. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +4 -3
  230. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +6 -5
  231. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +417 -0
  232. data/src/core/ext/transport/chttp2/transport/http2_status.h +7 -1
  233. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +337 -30
  234. data/src/core/ext/transport/chttp2/transport/http2_transport.h +196 -21
  235. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +172 -72
  236. data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +128 -0
  237. data/src/core/ext/transport/chttp2/transport/internal.h +31 -19
  238. data/src/core/ext/transport/chttp2/transport/keepalive.cc +12 -5
  239. data/src/core/ext/transport/chttp2/transport/keepalive.h +14 -10
  240. data/src/core/ext/transport/chttp2/transport/message_assembler.h +30 -21
  241. data/src/core/ext/transport/chttp2/transport/parsing.cc +25 -23
  242. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
  243. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +3 -3
  244. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +70 -28
  245. data/src/core/ext/transport/chttp2/transport/ping_promise.h +63 -23
  246. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +1 -1
  247. data/src/core/ext/transport/chttp2/transport/security_frame.cc +31 -0
  248. data/src/core/ext/transport/chttp2/transport/security_frame.h +32 -0
  249. data/src/core/ext/transport/chttp2/transport/stream.h +287 -0
  250. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +476 -208
  251. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +8 -8
  252. data/src/core/ext/transport/chttp2/transport/transport_common.cc +17 -1
  253. data/src/core/ext/transport/chttp2/transport/transport_common.h +57 -0
  254. data/src/core/ext/transport/chttp2/transport/varint.h +2 -2
  255. data/src/core/ext/transport/chttp2/transport/writable_streams.h +202 -84
  256. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
  257. data/src/core/ext/transport/chttp2/transport/writing.cc +6 -6
  258. data/src/core/ext/transport/inproc/inproc_transport.cc +9 -3
  259. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +11 -8
  260. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +740 -0
  261. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +218 -0
  262. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +46 -0
  263. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +87 -55
  264. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +23 -21
  265. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.c +80 -0
  266. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.h +47 -0
  267. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.c +129 -0
  268. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.h +72 -0
  269. data/src/core/filter/auth/auth_filters.h +7 -1
  270. data/src/core/filter/auth/client_auth_filter.cc +2 -2
  271. data/src/core/filter/auth/server_auth_filter.cc +5 -5
  272. data/src/core/filter/blackboard.h +2 -2
  273. data/src/core/filter/filter_args.h +40 -2
  274. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +2 -2
  275. data/src/core/handshaker/handshaker.cc +8 -8
  276. data/src/core/handshaker/handshaker.h +2 -2
  277. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +5 -5
  278. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +12 -12
  279. data/src/core/handshaker/http_connect/http_proxy_mapper.h +1 -1
  280. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +1 -1
  281. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +1 -1
  282. data/src/core/handshaker/proxy_mapper.h +1 -1
  283. data/src/core/handshaker/proxy_mapper_registry.h +1 -1
  284. data/src/core/handshaker/security/legacy_secure_endpoint.cc +6 -6
  285. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +38 -15
  286. data/src/core/handshaker/security/secure_endpoint.cc +31 -11
  287. data/src/core/handshaker/security/security_handshaker.cc +11 -8
  288. data/src/core/handshaker/security/security_handshaker.h +1 -1
  289. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +6 -6
  290. data/src/core/lib/address_utils/parse_address.cc +5 -5
  291. data/src/core/lib/address_utils/parse_address.h +2 -2
  292. data/src/core/lib/address_utils/sockaddr_utils.cc +4 -4
  293. data/src/core/lib/address_utils/sockaddr_utils.h +1 -1
  294. data/src/core/lib/channel/channel_args.cc +1 -1
  295. data/src/core/lib/channel/channel_args.h +2 -2
  296. data/src/core/lib/channel/channel_stack.cc +29 -25
  297. data/src/core/lib/channel/channel_stack.h +8 -3
  298. data/src/core/lib/channel/channel_stack_builder.cc +8 -4
  299. data/src/core/lib/channel/channel_stack_builder.h +10 -9
  300. data/src/core/lib/channel/channel_stack_builder_impl.cc +8 -13
  301. data/src/core/lib/channel/channel_stack_builder_impl.h +1 -1
  302. data/src/core/lib/channel/connected_channel.cc +4 -4
  303. data/src/core/lib/channel/promise_based_filter.cc +132 -72
  304. data/src/core/lib/channel/promise_based_filter.h +39 -23
  305. data/src/core/lib/compression/compression_internal.cc +6 -6
  306. data/src/core/lib/compression/compression_internal.h +1 -1
  307. data/src/core/lib/compression/message_compress.cc +8 -8
  308. data/src/core/lib/debug/trace.cc +2 -5
  309. data/src/core/lib/debug/trace.h +10 -0
  310. data/src/core/lib/debug/trace_flags.cc +2 -2
  311. data/src/core/lib/debug/trace_flags.h +1 -1
  312. data/src/core/lib/event_engine/ares_resolver.cc +30 -28
  313. data/src/core/lib/event_engine/ares_resolver.h +4 -4
  314. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -3
  315. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +2 -2
  316. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +1 -1
  317. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +4 -4
  318. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +3 -3
  319. data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -1
  320. data/src/core/lib/event_engine/default_event_engine.cc +1 -1
  321. data/src/core/lib/event_engine/event_engine.cc +1 -1
  322. data/src/core/lib/event_engine/extensions/channelz.h +3 -3
  323. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +1 -1
  324. data/src/core/lib/event_engine/extensions/supports_fd.h +5 -5
  325. data/src/core/lib/event_engine/extensions/tcp_trace.h +8 -1
  326. data/src/core/lib/event_engine/grpc_polled_fd.h +1 -1
  327. data/src/core/lib/event_engine/memory_allocator_factory.h +1 -1
  328. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +12 -12
  329. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +5 -5
  330. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +15 -15
  331. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
  332. data/src/core/lib/event_engine/posix_engine/event_poller.h +2 -2
  333. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
  334. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +1 -1
  335. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +1 -1
  336. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +4 -4
  337. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +1 -1
  338. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +3 -3
  339. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +1 -1
  340. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +3 -3
  341. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +1 -1
  342. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +28 -27
  343. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +17 -17
  344. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +175 -177
  345. data/src/core/lib/event_engine/posix_engine/posix_engine.h +40 -61
  346. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +11 -7
  347. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +4 -4
  348. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +9 -9
  349. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -1
  350. data/src/core/lib/event_engine/posix_engine/posix_interface.h +2 -2
  351. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +5 -5
  352. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +1 -1
  353. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1 -1
  354. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
  355. data/src/core/lib/event_engine/posix_engine/timer.h +1 -1
  356. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -4
  357. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  358. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -2
  359. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +2 -2
  360. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +1 -1
  361. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
  362. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +1 -1
  363. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
  364. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +1 -1
  365. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -2
  366. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +1 -1
  367. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +1 -1
  368. data/src/core/lib/event_engine/resolved_address.cc +3 -3
  369. data/src/core/lib/event_engine/shim.cc +8 -11
  370. data/src/core/lib/event_engine/shim.h +2 -1
  371. data/src/core/lib/event_engine/slice.cc +2 -2
  372. data/src/core/lib/event_engine/tcp_socket_utils.cc +15 -15
  373. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  374. data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
  375. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +11 -11
  376. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -3
  377. data/src/core/lib/event_engine/utils.cc +3 -3
  378. data/src/core/lib/event_engine/utils.h +1 -1
  379. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +32 -32
  380. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +2 -2
  381. data/src/core/lib/event_engine/windows/iocp.cc +11 -11
  382. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  383. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +5 -2
  384. data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
  385. data/src/core/lib/event_engine/windows/win_socket.h +2 -2
  386. data/src/core/lib/event_engine/windows/windows_endpoint.cc +16 -16
  387. data/src/core/lib/event_engine/windows/windows_engine.cc +20 -18
  388. data/src/core/lib/event_engine/windows/windows_engine.h +3 -3
  389. data/src/core/lib/event_engine/windows/windows_listener.cc +10 -10
  390. data/src/core/lib/event_engine/windows/windows_listener.h +2 -2
  391. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -2
  392. data/src/core/lib/experiments/config.cc +4 -4
  393. data/src/core/lib/experiments/experiments.cc +255 -42
  394. data/src/core/lib/experiments/experiments.h +105 -21
  395. data/src/core/lib/iomgr/buffer_list.cc +1 -1
  396. data/src/core/lib/iomgr/call_combiner.cc +4 -4
  397. data/src/core/lib/iomgr/call_combiner.h +2 -2
  398. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  399. data/src/core/lib/iomgr/closure.h +2 -2
  400. data/src/core/lib/iomgr/combiner.cc +2 -2
  401. data/src/core/lib/iomgr/endpoint.h +1 -1
  402. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -7
  403. data/src/core/lib/iomgr/endpoint_pair_posix.cc +6 -6
  404. data/src/core/lib/iomgr/endpoint_pair_windows.cc +16 -15
  405. data/src/core/lib/iomgr/error.cc +1 -1
  406. data/src/core/lib/iomgr/error.h +2 -2
  407. data/src/core/lib/iomgr/error_cfstream.cc +1 -1
  408. data/src/core/lib/iomgr/ev_apple.cc +1 -1
  409. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  410. data/src/core/lib/iomgr/ev_poll_posix.cc +14 -14
  411. data/src/core/lib/iomgr/ev_posix.cc +3 -3
  412. data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -3
  413. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -1
  414. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +10 -9
  415. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -1
  416. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +2 -2
  417. data/src/core/lib/iomgr/exec_ctx.cc +3 -3
  418. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  419. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  420. data/src/core/lib/iomgr/internal_errqueue.cc +1 -1
  421. data/src/core/lib/iomgr/iocp_windows.cc +9 -9
  422. data/src/core/lib/iomgr/iomgr.cc +1 -1
  423. data/src/core/lib/iomgr/iomgr_windows.cc +3 -3
  424. data/src/core/lib/iomgr/lockfree_event.cc +3 -3
  425. data/src/core/lib/iomgr/polling_entity.cc +4 -4
  426. data/src/core/lib/iomgr/resolve_address.cc +1 -1
  427. data/src/core/lib/iomgr/resolve_address.h +2 -2
  428. data/src/core/lib/iomgr/resolve_address_posix.cc +4 -4
  429. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  430. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +1 -1
  431. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -4
  432. data/src/core/lib/iomgr/socket_windows.cc +6 -6
  433. data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -1
  434. data/src/core/lib/iomgr/tcp_client_posix.cc +7 -7
  435. data/src/core/lib/iomgr/tcp_client_windows.cc +4 -4
  436. data/src/core/lib/iomgr/tcp_posix.cc +47 -47
  437. data/src/core/lib/iomgr/tcp_server.cc +5 -0
  438. data/src/core/lib/iomgr/tcp_server.h +7 -0
  439. data/src/core/lib/iomgr/tcp_server_posix.cc +62 -31
  440. data/src/core/lib/iomgr/tcp_server_utils_posix.h +4 -1
  441. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -7
  442. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -4
  443. data/src/core/lib/iomgr/tcp_server_windows.cc +70 -31
  444. data/src/core/lib/iomgr/tcp_windows.cc +8 -8
  445. data/src/core/lib/iomgr/timer_generic.cc +5 -5
  446. data/src/core/lib/iomgr/timer_manager.cc +3 -3
  447. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  448. data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
  449. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -2
  450. data/src/core/lib/iomgr/vsock.cc +1 -1
  451. data/src/core/lib/iomgr/vsock.h +1 -1
  452. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +1 -1
  453. data/src/core/lib/promise/activity.cc +3 -3
  454. data/src/core/lib/promise/activity.h +11 -10
  455. data/src/core/lib/promise/all_ok.h +3 -3
  456. data/src/core/lib/promise/arena_promise.h +47 -6
  457. data/src/core/lib/promise/context.h +3 -3
  458. data/src/core/lib/promise/detail/join_state.h +10 -10
  459. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  460. data/src/core/lib/promise/detail/promise_like.h +1 -1
  461. data/src/core/lib/promise/detail/seq_state.h +16 -16
  462. data/src/core/lib/promise/detail/status.h +2 -2
  463. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +1 -1
  464. data/src/core/lib/promise/for_each.h +8 -8
  465. data/src/core/lib/promise/if.h +1 -1
  466. data/src/core/lib/promise/inter_activity_latch.h +3 -3
  467. data/src/core/lib/promise/inter_activity_mutex.h +1 -1
  468. data/src/core/lib/promise/interceptor_list.h +5 -5
  469. data/src/core/lib/promise/latch.h +9 -9
  470. data/src/core/lib/promise/loop.h +2 -2
  471. data/src/core/lib/promise/map.h +2 -2
  472. data/src/core/lib/promise/mpsc.cc +31 -30
  473. data/src/core/lib/promise/mpsc.h +2 -2
  474. data/src/core/lib/promise/observable.h +6 -6
  475. data/src/core/lib/promise/party.cc +43 -30
  476. data/src/core/lib/promise/party.h +27 -23
  477. data/src/core/lib/promise/pipe.h +31 -17
  478. data/src/core/lib/promise/poll.h +6 -5
  479. data/src/core/lib/promise/promise.h +2 -4
  480. data/src/core/lib/promise/sleep.cc +3 -1
  481. data/src/core/lib/promise/sleep.h +1 -1
  482. data/src/core/lib/promise/status_flag.h +8 -8
  483. data/src/core/lib/promise/try_join.h +5 -5
  484. data/src/core/lib/promise/try_seq.h +5 -5
  485. data/src/core/lib/promise/wait_set.h +2 -2
  486. data/src/core/lib/resource_quota/api.cc +1 -1
  487. data/src/core/lib/resource_quota/arena.cc +1 -1
  488. data/src/core/lib/resource_quota/arena.h +15 -2
  489. data/src/core/lib/resource_quota/connection_quota.cc +9 -7
  490. data/src/core/lib/resource_quota/connection_quota.h +1 -1
  491. data/src/core/lib/resource_quota/memory_quota.cc +48 -27
  492. data/src/core/lib/resource_quota/memory_quota.h +56 -20
  493. data/src/core/lib/resource_quota/periodic_update.h +1 -1
  494. data/src/core/lib/resource_quota/resource_quota.cc +8 -0
  495. data/src/core/lib/resource_quota/resource_quota.h +2 -1
  496. data/src/core/lib/resource_quota/stream_quota.cc +22 -0
  497. data/src/core/lib/resource_quota/stream_quota.h +31 -0
  498. data/src/core/lib/resource_quota/telemetry.h +55 -0
  499. data/src/core/lib/resource_quota/thread_quota.cc +2 -2
  500. data/src/core/lib/resource_quota/thread_quota.h +1 -1
  501. data/src/core/lib/resource_tracker/resource_tracker.cc +33 -0
  502. data/src/core/lib/resource_tracker/resource_tracker.h +46 -0
  503. data/src/core/lib/security/authorization/audit_logging.cc +7 -7
  504. data/src/core/lib/security/authorization/audit_logging.h +1 -1
  505. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  506. data/src/core/lib/security/authorization/evaluate_args.cc +5 -5
  507. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  508. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -2
  509. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -3
  510. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +4 -1
  511. data/src/core/lib/security/authorization/matchers.cc +2 -2
  512. data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
  513. data/src/core/lib/slice/percent_encoding.cc +1 -1
  514. data/src/core/lib/slice/slice.cc +1 -1
  515. data/src/core/lib/slice/slice.h +2 -2
  516. data/src/core/lib/slice/slice_buffer.cc +1 -1
  517. data/src/core/lib/slice/slice_internal.h +1 -1
  518. data/src/core/lib/surface/byte_buffer_reader.cc +2 -2
  519. data/src/core/lib/surface/call.cc +58 -28
  520. data/src/core/lib/surface/call.h +13 -6
  521. data/src/core/lib/surface/call_log_batch.cc +2 -2
  522. data/src/core/lib/surface/call_utils.cc +7 -7
  523. data/src/core/lib/surface/call_utils.h +85 -20
  524. data/src/core/lib/surface/channel.cc +6 -5
  525. data/src/core/lib/surface/channel.h +13 -3
  526. data/src/core/lib/surface/channel_create.cc +12 -8
  527. data/src/core/lib/surface/channel_create.h +1 -1
  528. data/src/core/lib/surface/channel_init.cc +84 -27
  529. data/src/core/lib/surface/channel_init.h +30 -13
  530. data/src/core/lib/surface/completion_queue.cc +21 -20
  531. data/src/core/lib/surface/completion_queue_factory.cc +7 -7
  532. data/src/core/lib/surface/connection_context.h +45 -2
  533. data/src/core/lib/surface/filter_stack_call.cc +25 -31
  534. data/src/core/lib/surface/filter_stack_call.h +6 -7
  535. data/src/core/lib/surface/init.cc +4 -4
  536. data/src/core/lib/surface/lame_client.cc +2 -2
  537. data/src/core/lib/surface/lame_client.h +3 -3
  538. data/src/core/lib/surface/legacy_channel.cc +10 -10
  539. data/src/core/lib/surface/legacy_channel.h +1 -1
  540. data/src/core/lib/surface/validate_metadata.cc +2 -2
  541. data/src/core/lib/surface/validate_metadata.h +3 -3
  542. data/src/core/lib/surface/version.cc +2 -2
  543. data/src/core/lib/transport/bdp_estimator.cc +2 -2
  544. data/src/core/lib/transport/bdp_estimator.h +5 -5
  545. data/src/core/lib/transport/connectivity_state.cc +1 -1
  546. data/src/core/lib/transport/connectivity_state.h +2 -2
  547. data/src/core/lib/transport/error_utils.h +1 -1
  548. data/src/core/lib/transport/promise_endpoint.cc +4 -4
  549. data/src/core/lib/transport/promise_endpoint.h +11 -11
  550. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  551. data/src/core/lib/transport/transport.cc +3 -3
  552. data/src/core/lib/transport/transport.h +62 -4
  553. data/src/core/lib/transport/transport_framing_endpoint_extension.h +1 -1
  554. data/src/core/lib/transport/transport_op_string.cc +2 -2
  555. data/src/core/load_balancing/address_filtering.cc +1 -1
  556. data/src/core/load_balancing/address_filtering.h +2 -2
  557. data/src/core/load_balancing/backend_metric_parser.cc +1 -1
  558. data/src/core/load_balancing/backend_metric_parser.h +1 -1
  559. data/src/core/load_balancing/child_policy_handler.cc +8 -8
  560. data/src/core/load_balancing/child_policy_handler.h +2 -2
  561. data/src/core/load_balancing/delegating_helper.h +2 -2
  562. data/src/core/load_balancing/endpoint_list.cc +6 -6
  563. data/src/core/load_balancing/endpoint_list.h +2 -2
  564. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +7 -5
  565. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +5 -1
  566. data/src/core/load_balancing/grpclb/grpclb.cc +37 -48
  567. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +2 -2
  568. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  569. data/src/core/load_balancing/grpclb/load_balancer_api.h +1 -1
  570. data/src/core/load_balancing/health_check_client.cc +13 -9
  571. data/src/core/load_balancing/health_check_client_internal.h +5 -5
  572. data/src/core/load_balancing/lb_policy.h +11 -8
  573. data/src/core/load_balancing/lb_policy_factory.h +2 -2
  574. data/src/core/load_balancing/lb_policy_registry.cc +3 -3
  575. data/src/core/load_balancing/lb_policy_registry.h +2 -2
  576. data/src/core/load_balancing/oob_backend_metric.cc +11 -7
  577. data/src/core/load_balancing/oob_backend_metric_internal.h +4 -4
  578. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +9 -17
  579. data/src/core/load_balancing/pick_first/pick_first.cc +62 -32
  580. data/src/core/load_balancing/priority/priority.cc +29 -30
  581. data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -11
  582. data/src/core/load_balancing/rls/rls.cc +23 -23
  583. data/src/core/load_balancing/round_robin/round_robin.cc +16 -16
  584. data/src/core/load_balancing/subchannel_interface.h +2 -2
  585. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +3 -3
  586. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +42 -41
  587. data/src/core/load_balancing/weighted_target/weighted_target.cc +14 -14
  588. data/src/core/load_balancing/xds/cds.cc +81 -37
  589. data/src/core/load_balancing/xds/xds_cluster_impl.cc +24 -41
  590. data/src/core/load_balancing/xds/xds_cluster_manager.cc +6 -6
  591. data/src/core/load_balancing/xds/xds_override_host.cc +14 -14
  592. data/src/core/load_balancing/xds/xds_override_host.h +1 -1
  593. data/src/core/load_balancing/xds/xds_wrr_locality.cc +5 -5
  594. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +8 -8
  595. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +1 -1
  596. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  597. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  598. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +35 -35
  599. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +16 -16
  600. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -2
  601. data/src/core/resolver/dns/dns_resolver_plugin.cc +8 -5
  602. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +10 -10
  603. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +1 -1
  604. data/src/core/resolver/dns/event_engine/service_config_helper.cc +2 -2
  605. data/src/core/resolver/dns/native/dns_resolver.cc +7 -7
  606. data/src/core/resolver/endpoint_addresses.cc +6 -6
  607. data/src/core/resolver/endpoint_addresses.h +4 -1
  608. data/src/core/resolver/fake/fake_resolver.cc +3 -3
  609. data/src/core/resolver/fake/fake_resolver.h +3 -3
  610. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +46 -59
  611. data/src/core/resolver/polling_resolver.cc +8 -8
  612. data/src/core/resolver/polling_resolver.h +1 -1
  613. data/src/core/resolver/resolver.h +2 -2
  614. data/src/core/resolver/resolver_factory.h +2 -2
  615. data/src/core/resolver/resolver_registry.cc +5 -4
  616. data/src/core/resolver/resolver_registry.h +1 -1
  617. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +4 -4
  618. data/src/core/resolver/xds/xds_config.cc +1 -1
  619. data/src/core/resolver/xds/xds_config.h +3 -3
  620. data/src/core/resolver/xds/xds_dependency_manager.cc +7 -7
  621. data/src/core/resolver/xds/xds_dependency_manager.h +3 -3
  622. data/src/core/resolver/xds/xds_resolver.cc +25 -22
  623. data/src/core/resolver/xds/xds_resolver_attributes.h +1 -1
  624. data/src/core/server/add_port.cc +2 -2
  625. data/src/core/server/server.cc +47 -43
  626. data/src/core/server/server.h +8 -7
  627. data/src/core/server/server_call_tracer_filter.cc +1 -1
  628. data/src/core/server/server_call_tracer_filter.h +9 -5
  629. data/src/core/server/server_config_selector.h +2 -2
  630. data/src/core/server/server_config_selector_filter.cc +5 -5
  631. data/src/core/server/xds_channel_stack_modifier.cc +3 -2
  632. data/src/core/server/xds_channel_stack_modifier.h +1 -1
  633. data/src/core/server/xds_server_config_fetcher.cc +19 -18
  634. data/src/core/service_config/service_config.h +1 -1
  635. data/src/core/service_config/service_config_channel_arg_filter.h +4 -1
  636. data/src/core/service_config/service_config_impl.cc +3 -3
  637. data/src/core/service_config/service_config_impl.h +4 -4
  638. data/src/core/service_config/service_config_parser.h +1 -1
  639. data/src/core/telemetry/call_tracer.cc +39 -49
  640. data/src/core/telemetry/call_tracer.h +201 -24
  641. data/src/core/telemetry/default_tcp_tracer.h +3 -3
  642. data/src/core/telemetry/histogram.h +205 -0
  643. data/src/core/telemetry/instrument.cc +999 -0
  644. data/src/core/telemetry/instrument.h +1105 -0
  645. data/src/core/telemetry/metrics.cc +15 -5
  646. data/src/core/telemetry/metrics.h +36 -5
  647. data/src/core/telemetry/stats.h +2 -2
  648. data/src/core/telemetry/stats_data.cc +1 -20
  649. data/src/core/telemetry/stats_data.h +2 -21
  650. data/src/core/transport/auth_context.cc +3 -3
  651. data/src/core/transport/auth_context.h +2 -1
  652. data/src/core/transport/auth_context_comparator_registry.h +1 -1
  653. data/src/core/tsi/alts/crypt/aes_gcm.cc +1 -1
  654. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +2 -2
  655. data/src/core/tsi/alts/frame_protector/frame_handler.cc +1 -1
  656. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +81 -48
  657. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -0
  658. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +3 -3
  659. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +46 -36
  660. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +4 -4
  661. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
  662. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +4 -4
  663. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +11 -3
  664. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +10 -0
  665. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +16 -8
  666. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +3 -0
  667. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +18 -5
  668. data/src/core/tsi/fake_transport_security.cc +6 -5
  669. data/src/core/tsi/local_transport_security.cc +1 -1
  670. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  671. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -1
  672. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +10 -10
  673. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +4 -4
  674. data/src/core/tsi/ssl_transport_security.cc +30 -30
  675. data/src/core/tsi/ssl_transport_security.h +1 -1
  676. data/src/core/tsi/ssl_transport_security_utils.cc +10 -10
  677. data/src/core/tsi/ssl_transport_security_utils.h +2 -2
  678. data/src/core/tsi/transport_security_grpc.cc +8 -0
  679. data/src/core/tsi/transport_security_grpc.h +15 -0
  680. data/src/core/util/alloc.cc +1 -1
  681. data/src/core/util/backoff.h +1 -1
  682. data/src/core/util/chunked_vector.h +4 -4
  683. data/src/core/util/crash.h +1 -1
  684. data/src/core/util/dual_ref_counted.h +2 -2
  685. data/src/core/util/event_log.cc +2 -2
  686. data/src/core/util/event_log.h +3 -3
  687. data/src/core/util/gcp_metadata_query.cc +7 -7
  688. data/src/core/util/gcp_metadata_query.h +2 -2
  689. data/src/core/util/glob.cc +2 -0
  690. data/src/core/util/grpc_check.cc +24 -0
  691. data/src/core/util/grpc_check.h +103 -0
  692. data/src/core/util/grpc_if_nametoindex_posix.cc +1 -1
  693. data/src/core/util/grpc_if_nametoindex_unsupported.cc +1 -1
  694. data/src/core/util/http_client/format_request.cc +1 -1
  695. data/src/core/util/http_client/httpcli.cc +6 -6
  696. data/src/core/util/http_client/httpcli.h +4 -4
  697. data/src/core/util/http_client/httpcli_security_connector.cc +4 -4
  698. data/src/core/util/http_client/parser.cc +4 -4
  699. data/src/core/util/json/json_channel_args.h +1 -1
  700. data/src/core/util/json/json_object_loader.h +6 -6
  701. data/src/core/util/json/json_reader.cc +2 -2
  702. data/src/core/util/json/json_reader.h +1 -1
  703. data/src/core/util/json/json_util.h +3 -3
  704. data/src/core/util/json/json_writer.cc +1 -1
  705. data/src/core/util/latent_see.cc +45 -24
  706. data/src/core/util/latent_see.h +199 -28
  707. data/src/core/util/linux/cpu.cc +1 -1
  708. data/src/core/util/load_file.cc +1 -1
  709. data/src/core/util/load_file.h +1 -1
  710. data/src/core/util/log.cc +3 -3
  711. data/src/core/util/lru_cache.h +4 -4
  712. data/src/core/util/matchers.h +1 -1
  713. data/src/core/util/memory_usage.h +17 -1
  714. data/src/core/util/mpscq.h +1 -1
  715. data/src/core/util/notification.h +1 -1
  716. data/src/core/util/posix/cpu.cc +1 -1
  717. data/src/core/util/posix/directory_reader.cc +3 -2
  718. data/src/core/util/posix/stat.cc +2 -2
  719. data/src/core/util/posix/sync.cc +24 -24
  720. data/src/core/util/posix/thd.cc +2 -2
  721. data/src/core/util/posix/tmpfile.cc +2 -2
  722. data/src/core/util/postmortem_emit.cc +52 -0
  723. data/src/core/util/postmortem_emit.h +30 -0
  724. data/src/core/util/ref_counted.h +2 -2
  725. data/src/core/util/ref_counted_ptr.h +6 -1
  726. data/src/core/util/ref_counted_string.h +1 -1
  727. data/src/core/util/single_set_ptr.h +3 -1
  728. data/src/core/util/status_helper.cc +8 -8
  729. data/src/core/util/status_helper.h +1 -1
  730. data/src/core/util/string.cc +2 -2
  731. data/src/core/util/sync_abseil.cc +1 -1
  732. data/src/core/util/table.h +1 -1
  733. data/src/core/util/time.cc +1 -1
  734. data/src/core/util/time_precise.cc +1 -1
  735. data/src/core/util/trie_lookup.h +170 -0
  736. data/src/core/util/unique_ptr_with_bitset.h +5 -5
  737. data/src/core/util/unique_type_name.h +1 -1
  738. data/src/core/util/upb_utils.h +6 -1
  739. data/src/core/util/validation_errors.cc +2 -2
  740. data/src/core/util/validation_errors.h +2 -3
  741. data/src/core/util/wait_for_single_owner.h +2 -2
  742. data/src/core/util/windows/directory_reader.cc +1 -1
  743. data/src/core/util/windows/stat.cc +2 -2
  744. data/src/core/util/windows/thd.cc +2 -2
  745. data/src/core/util/windows/time.cc +1 -1
  746. data/src/core/util/work_serializer.cc +3 -3
  747. data/src/core/util/work_serializer.h +2 -2
  748. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  749. data/src/core/xds/grpc/certificate_provider_store.h +2 -2
  750. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  751. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
  752. data/src/core/xds/grpc/xds_audit_logger_registry.cc +3 -3
  753. data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
  754. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +7 -7
  755. data/src/core/xds/grpc/xds_bootstrap_grpc.h +8 -3
  756. data/src/core/xds/grpc/xds_certificate_provider.cc +4 -4
  757. data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
  758. data/src/core/xds/grpc/xds_client_grpc.cc +39 -20
  759. data/src/core/xds/grpc/xds_client_grpc.h +6 -3
  760. data/src/core/xds/grpc/xds_cluster.cc +2 -2
  761. data/src/core/xds/grpc/xds_cluster.h +1 -1
  762. data/src/core/xds/grpc/xds_cluster_parser.cc +7 -7
  763. data/src/core/xds/grpc/xds_cluster_parser.h +1 -1
  764. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +4 -4
  765. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
  766. data/src/core/xds/grpc/xds_common_types.cc +1 -1
  767. data/src/core/xds/grpc/xds_common_types.h +1 -1
  768. data/src/core/xds/grpc/xds_common_types_parser.cc +5 -5
  769. data/src/core/xds/grpc/xds_endpoint.h +2 -2
  770. data/src/core/xds/grpc/xds_endpoint_parser.cc +7 -7
  771. data/src/core/xds/grpc/xds_endpoint_parser.h +1 -1
  772. data/src/core/xds/grpc/xds_health_status.cc +1 -1
  773. data/src/core/xds/grpc/xds_health_status.h +1 -1
  774. data/src/core/xds/grpc/xds_http_fault_filter.cc +4 -4
  775. data/src/core/xds/grpc/xds_http_fault_filter.h +2 -2
  776. data/src/core/xds/grpc/xds_http_filter.h +3 -3
  777. data/src/core/xds/grpc/xds_http_filter_registry.cc +4 -3
  778. data/src/core/xds/grpc/xds_http_filter_registry.h +2 -2
  779. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +3 -3
  780. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +2 -2
  781. data/src/core/xds/grpc/xds_http_rbac_filter.cc +4 -4
  782. data/src/core/xds/grpc/xds_http_rbac_filter.h +2 -2
  783. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +3 -3
  784. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +2 -2
  785. data/src/core/xds/grpc/xds_lb_policy_registry.cc +1 -1
  786. data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
  787. data/src/core/xds/grpc/xds_listener.cc +2 -2
  788. data/src/core/xds/grpc/xds_listener_parser.cc +9 -9
  789. data/src/core/xds/grpc/xds_listener_parser.h +1 -1
  790. data/src/core/xds/grpc/xds_matcher.cc +277 -0
  791. data/src/core/xds/grpc/xds_matcher.h +432 -0
  792. data/src/core/xds/grpc/xds_matcher_action.cc +47 -0
  793. data/src/core/xds/grpc/xds_matcher_action.h +48 -0
  794. data/src/core/xds/grpc/xds_matcher_context.cc +29 -0
  795. data/src/core/xds/grpc/xds_matcher_context.h +46 -0
  796. data/src/core/xds/grpc/xds_matcher_input.cc +79 -0
  797. data/src/core/xds/grpc/xds_matcher_input.h +105 -0
  798. data/src/core/xds/grpc/xds_matcher_parse.cc +356 -0
  799. data/src/core/xds/grpc/xds_matcher_parse.h +39 -0
  800. data/src/core/xds/grpc/xds_metadata.cc +4 -3
  801. data/src/core/xds/grpc/xds_metadata.h +3 -3
  802. data/src/core/xds/grpc/xds_metadata_parser.cc +2 -2
  803. data/src/core/xds/grpc/xds_route_config.cc +3 -3
  804. data/src/core/xds/grpc/xds_route_config_parser.cc +14 -14
  805. data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
  806. data/src/core/xds/grpc/xds_routing.cc +6 -6
  807. data/src/core/xds/grpc/xds_routing.h +2 -2
  808. data/src/core/xds/grpc/xds_server_grpc.cc +2 -2
  809. data/src/core/xds/grpc/xds_transport_grpc.cc +11 -11
  810. data/src/core/xds/grpc/xds_transport_grpc.h +2 -2
  811. data/src/core/xds/xds_client/lrs_client.cc +9 -9
  812. data/src/core/xds/xds_client/lrs_client.h +4 -4
  813. data/src/core/xds/xds_client/xds_api.h +1 -1
  814. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +1 -1
  815. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +1 -1
  816. data/src/core/xds/xds_client/xds_client.cc +17 -17
  817. data/src/core/xds/xds_client/xds_client.h +5 -5
  818. data/src/core/xds/xds_client/xds_locality.h +2 -2
  819. data/src/core/xds/xds_client/xds_resource_type.h +2 -2
  820. data/src/core/xds/xds_client/xds_resource_type_impl.h +1 -1
  821. data/src/core/xds/xds_client/xds_transport.h +2 -2
  822. data/src/ruby/ext/grpc/extconf.rb +14 -12
  823. data/src/ruby/ext/grpc/rb_call.c +0 -1
  824. data/src/ruby/ext/grpc/rb_channel_args.c +0 -1
  825. data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
  826. data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
  827. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  828. data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
  829. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
  830. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
  831. data/src/ruby/lib/grpc/grpc.rb +7 -9
  832. data/src/ruby/lib/grpc/version.rb +1 -1
  833. data/src/ruby/spec/client_server_spec.rb +1 -1
  834. data/src/ruby/spec/generic/rpc_server_pool_spec.rb +1 -1
  835. data/src/ruby/spec/generic/rpc_server_spec.rb +3 -4
  836. data/src/ruby/spec/spec_helper.rb +1 -1
  837. data/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
  838. data/third_party/abseil-cpp/absl/container/node_hash_map.h +687 -0
  839. metadata +67 -8
@@ -23,23 +23,23 @@
23
23
  #include <utility>
24
24
  #include <vector>
25
25
 
26
- #include "absl/base/attributes.h"
27
- #include "absl/functional/function_ref.h"
28
- #include "absl/log/check.h"
29
- #include "absl/log/log.h"
30
- #include "absl/status/status.h"
31
- #include "absl/strings/str_cat.h"
32
- #include "absl/strings/str_format.h"
33
- #include "absl/strings/str_join.h"
34
26
  #include "src/core/lib/channel/channel_stack.h"
35
27
  #include "src/core/lib/debug/trace.h"
36
28
  #include "src/core/lib/iomgr/error.h"
37
29
  #include "src/core/lib/promise/seq.h"
38
30
  #include "src/core/lib/slice/slice.h"
39
31
  #include "src/core/util/crash.h"
32
+ #include "src/core/util/grpc_check.h"
40
33
  #include "src/core/util/latent_see.h"
41
34
  #include "src/core/util/manual_constructor.h"
42
35
  #include "src/core/util/status_helper.h"
36
+ #include "absl/base/attributes.h"
37
+ #include "absl/functional/function_ref.h"
38
+ #include "absl/log/log.h"
39
+ #include "absl/status/status.h"
40
+ #include "absl/strings/str_cat.h"
41
+ #include "absl/strings/str_format.h"
42
+ #include "absl/strings/str_join.h"
43
43
 
44
44
  namespace grpc_core {
45
45
  namespace promise_filter_detail {
@@ -84,7 +84,13 @@ BaseCallData::BaseCallData(
84
84
  grpc_call_element* elem, const grpc_call_element_args* args, uint8_t flags,
85
85
  absl::FunctionRef<Interceptor*()> make_send_interceptor,
86
86
  absl::FunctionRef<Interceptor*()> make_recv_interceptor)
87
- : call_stack_(args->call_stack),
87
+ : channelz::DataSource([args]() -> RefCountedPtr<channelz::BaseNode> {
88
+ channelz::CallNode* call_node =
89
+ args->arena->GetContext<channelz::CallNode>();
90
+ if (call_node == nullptr) return nullptr;
91
+ return call_node->Ref();
92
+ }()),
93
+ call_stack_(args->call_stack),
88
94
  elem_(elem),
89
95
  arena_(args->arena),
90
96
  call_combiner_(args->call_combiner),
@@ -149,6 +155,37 @@ std::string BaseCallData::LogTag() const {
149
155
  absl::Hex(reinterpret_cast<uintptr_t>(elem_), absl::kZeroPad8), "]");
150
156
  }
151
157
 
158
+ void BaseCallData::AddData(channelz::DataSink sink) {
159
+ EnsureRunInExecCtx([this, sink = std::move(sink)]() mutable {
160
+ auto add = [sink, this](grpc_error_handle) mutable {
161
+ sink.AddData(elem_->filter->name.name(), ChannelzProperties());
162
+ GRPC_CALL_COMBINER_STOP(call_combiner(), "channelz_add_data");
163
+ GRPC_CALL_STACK_UNREF(call_stack_, "channelz_add_data");
164
+ };
165
+ GRPC_CALL_STACK_REF(call_stack_, "channelz_add_data");
166
+ GRPC_CALL_COMBINER_START(call_combiner_, NewClosure(std::move(add)),
167
+ absl::OkStatus(), "channelz_add_data");
168
+ });
169
+ }
170
+
171
+ channelz::PropertyList BaseCallData::ChannelzProperties() const {
172
+ channelz::PropertyList properties;
173
+ properties.Set("deadline", deadline_);
174
+ if (send_message_ != nullptr) {
175
+ properties.Set("promise_based_send_message",
176
+ send_message_->ChannelzProperties());
177
+ }
178
+ if (receive_message_ != nullptr) {
179
+ properties.Set("promise_based_receive_message",
180
+ receive_message_->ChannelzProperties());
181
+ }
182
+ if (server_initial_metadata_pipe_ != nullptr) {
183
+ properties.Set("server_initial_metadata_pipe",
184
+ server_initial_metadata_pipe_->sender.ChannelzProperties());
185
+ }
186
+ return properties;
187
+ }
188
+
152
189
  ///////////////////////////////////////////////////////////////////////////////
153
190
  // BaseCallData::CapturedBatch
154
191
 
@@ -172,7 +209,7 @@ BaseCallData::CapturedBatch::~CapturedBatch() {
172
209
  uintptr_t& refcnt = *RefCountField(batch_);
173
210
  if (refcnt == 0) return; // refcnt==0 ==> cancelled
174
211
  --refcnt;
175
- CHECK_NE(refcnt, 0u);
212
+ GRPC_CHECK_NE(refcnt, 0u);
176
213
  }
177
214
 
178
215
  BaseCallData::CapturedBatch::CapturedBatch(const CapturedBatch& rhs)
@@ -203,7 +240,7 @@ BaseCallData::CapturedBatch& BaseCallData::CapturedBatch::operator=(
203
240
 
204
241
  void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) {
205
242
  auto* batch = std::exchange(batch_, nullptr);
206
- CHECK_NE(batch, nullptr);
243
+ GRPC_CHECK_NE(batch, nullptr);
207
244
  uintptr_t& refcnt = *RefCountField(batch);
208
245
  if (refcnt == 0) {
209
246
  // refcnt==0 ==> cancelled
@@ -218,7 +255,7 @@ void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) {
218
255
 
219
256
  void BaseCallData::CapturedBatch::CompleteWith(Flusher* releaser) {
220
257
  auto* batch = std::exchange(batch_, nullptr);
221
- CHECK_NE(batch, nullptr);
258
+ GRPC_CHECK_NE(batch, nullptr);
222
259
  uintptr_t& refcnt = *RefCountField(batch);
223
260
  if (refcnt == 0) return; // refcnt==0 ==> cancelled
224
261
  if (--refcnt == 0) {
@@ -229,7 +266,7 @@ void BaseCallData::CapturedBatch::CompleteWith(Flusher* releaser) {
229
266
  void BaseCallData::CapturedBatch::CancelWith(grpc_error_handle error,
230
267
  Flusher* releaser) {
231
268
  auto* batch = std::exchange(batch_, nullptr);
232
- CHECK_NE(batch, nullptr);
269
+ GRPC_CHECK_NE(batch, nullptr);
233
270
  uintptr_t& refcnt = *RefCountField(batch);
234
271
  if (refcnt == 0) {
235
272
  // refcnt==0 ==> cancelled
@@ -351,7 +388,7 @@ template <typename T>
351
388
  void BaseCallData::SendMessage::GotPipe(T* pipe_end) {
352
389
  GRPC_TRACE_LOG(channel, INFO)
353
390
  << base_->LogTag() << " SendMessage.GotPipe st=" << StateString(state_);
354
- CHECK_NE(pipe_end, nullptr);
391
+ GRPC_CHECK_NE(pipe_end, nullptr);
355
392
  switch (state_) {
356
393
  case State::kInitial:
357
394
  state_ = State::kIdle;
@@ -495,7 +532,7 @@ void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher,
495
532
  }
496
533
  [[fallthrough]];
497
534
  case State::kPushedToPipe: {
498
- CHECK(push_.has_value());
535
+ GRPC_CHECK(push_.has_value());
499
536
  auto r_push = (*push_)();
500
537
  if (auto* p = r_push.value_if_ready()) {
501
538
  GRPC_TRACE_LOG(channel, INFO)
@@ -504,12 +541,12 @@ void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher,
504
541
  "result="
505
542
  << (*p ? "true" : "false");
506
543
  // We haven't pulled through yet, so this certainly shouldn't succeed.
507
- CHECK(!*p);
544
+ GRPC_CHECK(!*p);
508
545
  state_ = State::kCancelled;
509
546
  batch_.CancelWith(absl::CancelledError(), flusher);
510
547
  break;
511
548
  }
512
- CHECK(next_.has_value());
549
+ GRPC_CHECK(next_.has_value());
513
550
  auto r_next = (*next_)();
514
551
  if (auto* p = r_next.value_if_ready()) {
515
552
  GRPC_TRACE_LOG(channel, INFO)
@@ -820,12 +857,12 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
820
857
  completed_status_, "recv_message");
821
858
  break;
822
859
  }
823
- CHECK(state_ == State::kPushedToPipe ||
824
- state_ == State::kCompletedWhilePushedToPipe);
860
+ GRPC_CHECK(state_ == State::kPushedToPipe ||
861
+ state_ == State::kCompletedWhilePushedToPipe);
825
862
  [[fallthrough]];
826
863
  case State::kCompletedWhilePushedToPipe:
827
864
  case State::kPushedToPipe: {
828
- CHECK(push_.has_value());
865
+ GRPC_CHECK(push_.has_value());
829
866
  auto r_push = (*push_)();
830
867
  if (auto* p = r_push.value_if_ready()) {
831
868
  GRPC_TRACE_LOG(channel, INFO)
@@ -833,11 +870,11 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
833
870
  << " ReceiveMessage.WakeInsideCombiner push complete: "
834
871
  << (*p ? "true" : "false");
835
872
  // We haven't pulled through yet, so this certainly shouldn't succeed.
836
- CHECK(!*p);
873
+ GRPC_CHECK(!*p);
837
874
  state_ = State::kCancelled;
838
875
  break;
839
876
  }
840
- CHECK(next_.has_value());
877
+ GRPC_CHECK(next_.has_value());
841
878
  auto r_next = (*next_)();
842
879
  if (auto* p = r_next.value_if_ready()) {
843
880
  next_.reset();
@@ -872,7 +909,7 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
872
909
  [[fallthrough]];
873
910
  case State::kCompletedWhilePulledFromPipe:
874
911
  case State::kPulledFromPipe: {
875
- CHECK(push_.has_value());
912
+ GRPC_CHECK(push_.has_value());
876
913
  if ((*push_)().ready()) {
877
914
  GRPC_TRACE_LOG(channel, INFO)
878
915
  << base_->LogTag()
@@ -976,7 +1013,7 @@ class ClientCallData::PollContext {
976
1013
  public:
977
1014
  explicit PollContext(ClientCallData* self, Flusher* flusher)
978
1015
  : self_(self), flusher_(flusher) {
979
- CHECK_EQ(self_->poll_ctx_, nullptr);
1016
+ GRPC_CHECK_EQ(self_->poll_ctx_, nullptr);
980
1017
 
981
1018
  self_->poll_ctx_ = this;
982
1019
  scoped_activity_.Init(self_);
@@ -987,11 +1024,11 @@ class ClientCallData::PollContext {
987
1024
  PollContext& operator=(const PollContext&) = delete;
988
1025
 
989
1026
  void Run() {
990
- DCHECK(HasContext<Arena>());
1027
+ GRPC_DCHECK(HasContext<Arena>());
991
1028
  GRPC_TRACE_LOG(channel, INFO)
992
1029
  << self_->LogTag() << " ClientCallData.PollContext.Run "
993
1030
  << self_->DebugString();
994
- CHECK(have_scoped_activity_);
1031
+ GRPC_CHECK(have_scoped_activity_);
995
1032
  repoll_ = false;
996
1033
  if (self_->send_message() != nullptr) {
997
1034
  self_->send_message()->WakeInsideCombiner(flusher_, true);
@@ -1026,8 +1063,10 @@ class ClientCallData::PollContext {
1026
1063
  case RecvInitialMetadata::kCompleteAndGotPipe:
1027
1064
  self_->recv_initial_metadata_->state =
1028
1065
  RecvInitialMetadata::kCompleteAndPushedToPipe;
1029
- CHECK(!self_->recv_initial_metadata_->metadata_push_.has_value());
1030
- CHECK(!self_->recv_initial_metadata_->metadata_next_.has_value());
1066
+ GRPC_CHECK(
1067
+ !self_->recv_initial_metadata_->metadata_push_.has_value());
1068
+ GRPC_CHECK(
1069
+ !self_->recv_initial_metadata_->metadata_next_.has_value());
1031
1070
  self_->recv_initial_metadata_->metadata_push_.emplace(
1032
1071
  self_->recv_initial_metadata_->server_initial_metadata_publisher
1033
1072
  ->Push(ServerMetadataHandle(
@@ -1038,7 +1077,7 @@ class ClientCallData::PollContext {
1038
1077
  self_->server_initial_metadata_pipe()->receiver.Next());
1039
1078
  [[fallthrough]];
1040
1079
  case RecvInitialMetadata::kCompleteAndPushedToPipe: {
1041
- CHECK(self_->recv_initial_metadata_->metadata_next_.has_value());
1080
+ GRPC_CHECK(self_->recv_initial_metadata_->metadata_next_.has_value());
1042
1081
  Poll<NextResult<ServerMetadataHandle>> p =
1043
1082
  (*self_->recv_initial_metadata_->metadata_next_)();
1044
1083
  if (NextResult<ServerMetadataHandle>* nr = p.value_if_ready()) {
@@ -1130,7 +1169,7 @@ class ClientCallData::PollContext {
1130
1169
  }
1131
1170
  } else {
1132
1171
  self_->cancelled_error_ = StatusFromMetadata(*md);
1133
- CHECK(!self_->cancelled_error_.ok());
1172
+ GRPC_CHECK(!self_->cancelled_error_.ok());
1134
1173
  if (self_->recv_initial_metadata_ != nullptr) {
1135
1174
  switch (self_->recv_initial_metadata_->state) {
1136
1175
  case RecvInitialMetadata::kInitial:
@@ -1168,7 +1207,7 @@ class ClientCallData::PollContext {
1168
1207
  self_->send_initial_metadata_batch_.CancelWith(
1169
1208
  self_->cancelled_error_, flusher_);
1170
1209
  } else {
1171
- CHECK(
1210
+ GRPC_CHECK(
1172
1211
  self_->recv_trailing_state_ == RecvTrailingState::kInitial ||
1173
1212
  self_->recv_trailing_state_ == RecvTrailingState::kForwarded);
1174
1213
  self_->call_combiner()->Cancel(self_->cancelled_error_);
@@ -1268,11 +1307,13 @@ ClientCallData::ClientCallData(grpc_call_element* elem,
1268
1307
  if (server_initial_metadata_pipe() != nullptr) {
1269
1308
  recv_initial_metadata_ = arena()->New<RecvInitialMetadata>();
1270
1309
  }
1310
+ SourceConstructed();
1271
1311
  }
1272
1312
 
1273
1313
  ClientCallData::~ClientCallData() {
1314
+ SourceDestructing();
1274
1315
  ScopedActivity scoped_activity(this);
1275
- CHECK_EQ(poll_ctx_, nullptr);
1316
+ GRPC_CHECK_EQ(poll_ctx_, nullptr);
1276
1317
  if (recv_initial_metadata_ != nullptr) {
1277
1318
  recv_initial_metadata_->~RecvInitialMetadata();
1278
1319
  }
@@ -1286,7 +1327,7 @@ std::string ClientCallData::DebugTag() const {
1286
1327
 
1287
1328
  // Activity implementation.
1288
1329
  void ClientCallData::ForceImmediateRepoll(WakeupMask) {
1289
- CHECK_NE(poll_ctx_, nullptr);
1330
+ GRPC_CHECK_NE(poll_ctx_, nullptr);
1290
1331
  poll_ctx_->Repoll();
1291
1332
  }
1292
1333
 
@@ -1354,9 +1395,10 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
1354
1395
  // If this is a cancel stream, cancel anything we have pending and propagate
1355
1396
  // the cancellation.
1356
1397
  if (batch->cancel_stream) {
1357
- CHECK(!batch->send_initial_metadata && !batch->send_trailing_metadata &&
1358
- !batch->send_message && !batch->recv_initial_metadata &&
1359
- !batch->recv_message && !batch->recv_trailing_metadata);
1398
+ GRPC_CHECK(!batch->send_initial_metadata &&
1399
+ !batch->send_trailing_metadata && !batch->send_message &&
1400
+ !batch->recv_initial_metadata && !batch->recv_message &&
1401
+ !batch->recv_trailing_metadata);
1360
1402
  PollContext poll_ctx(this, &flusher);
1361
1403
  Cancel(batch->payload->cancel_stream.cancel_error, &flusher);
1362
1404
  poll_ctx.Run();
@@ -1427,12 +1469,12 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
1427
1469
  batch.CancelWith(cancelled_error_, &flusher);
1428
1470
  } else {
1429
1471
  // Otherwise, we should not have seen a send_initial_metadata op yet.
1430
- CHECK(send_initial_state_ == SendInitialState::kInitial);
1472
+ GRPC_CHECK(send_initial_state_ == SendInitialState::kInitial);
1431
1473
  // Mark ourselves as queued.
1432
1474
  send_initial_state_ = SendInitialState::kQueued;
1433
1475
  if (batch->recv_trailing_metadata) {
1434
1476
  // If there's a recv_trailing_metadata op, we queue that too.
1435
- CHECK(recv_trailing_state_ == RecvTrailingState::kInitial);
1477
+ GRPC_CHECK(recv_trailing_state_ == RecvTrailingState::kInitial);
1436
1478
  recv_trailing_state_ = RecvTrailingState::kQueued;
1437
1479
  }
1438
1480
  // This is the queuing!
@@ -1447,7 +1489,7 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
1447
1489
  if (recv_trailing_state_ == RecvTrailingState::kCancelled) {
1448
1490
  batch.CancelWith(cancelled_error_, &flusher);
1449
1491
  } else {
1450
- CHECK(recv_trailing_state_ == RecvTrailingState::kInitial);
1492
+ GRPC_CHECK(recv_trailing_state_ == RecvTrailingState::kInitial);
1451
1493
  recv_trailing_state_ = RecvTrailingState::kForwarded;
1452
1494
  HookRecvTrailingMetadata(batch);
1453
1495
  }
@@ -1523,7 +1565,7 @@ void ClientCallData::Cancel(grpc_error_handle error, Flusher* flusher) {
1523
1565
  // Begin running the promise - which will ultimately take some initial
1524
1566
  // metadata and return some trailing metadata.
1525
1567
  void ClientCallData::StartPromise(Flusher* flusher) {
1526
- CHECK(send_initial_state_ == SendInitialState::kQueued);
1568
+ GRPC_CHECK(send_initial_state_ == SendInitialState::kQueued);
1527
1569
  ChannelFilter* filter = promise_filter_detail::ChannelFilterFromElem(elem());
1528
1570
 
1529
1571
  // Construct the promise.
@@ -1632,8 +1674,8 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
1632
1674
  CallArgs call_args) {
1633
1675
  GRPC_TRACE_LOG(channel, INFO)
1634
1676
  << LogTag() << " ClientCallData.MakeNextPromise " << DebugString();
1635
- CHECK_NE(poll_ctx_, nullptr);
1636
- CHECK(send_initial_state_ == SendInitialState::kQueued);
1677
+ GRPC_CHECK_NE(poll_ctx_, nullptr);
1678
+ GRPC_CHECK(send_initial_state_ == SendInitialState::kQueued);
1637
1679
  send_initial_metadata_batch_->payload->send_initial_metadata
1638
1680
  .send_initial_metadata = call_args.client_initial_metadata.get();
1639
1681
  if (recv_initial_metadata_ != nullptr) {
@@ -1641,7 +1683,7 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
1641
1683
  // It might be the one we passed in - in which case we know this filter
1642
1684
  // only wants to examine the metadata, or it might be a new instance, in
1643
1685
  // which case we know the filter wants to mutate.
1644
- CHECK_NE(call_args.server_initial_metadata, nullptr);
1686
+ GRPC_CHECK_NE(call_args.server_initial_metadata, nullptr);
1645
1687
  recv_initial_metadata_->server_initial_metadata_publisher =
1646
1688
  call_args.server_initial_metadata;
1647
1689
  switch (recv_initial_metadata_->state) {
@@ -1670,17 +1712,17 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
1670
1712
  recv_initial_metadata_->state))); // unreachable
1671
1713
  }
1672
1714
  } else {
1673
- CHECK_EQ(call_args.server_initial_metadata, nullptr);
1715
+ GRPC_CHECK_EQ(call_args.server_initial_metadata, nullptr);
1674
1716
  }
1675
1717
  if (send_message() != nullptr) {
1676
1718
  send_message()->GotPipe(call_args.client_to_server_messages);
1677
1719
  } else {
1678
- CHECK_EQ(call_args.client_to_server_messages, nullptr);
1720
+ GRPC_CHECK_EQ(call_args.client_to_server_messages, nullptr);
1679
1721
  }
1680
1722
  if (receive_message() != nullptr) {
1681
1723
  receive_message()->GotPipe(call_args.server_to_client_messages);
1682
1724
  } else {
1683
- CHECK_EQ(call_args.server_to_client_messages, nullptr);
1725
+ GRPC_CHECK_EQ(call_args.server_to_client_messages, nullptr);
1684
1726
  }
1685
1727
  return ArenaPromise<ServerMetadataHandle>(
1686
1728
  [this]() { return PollTrailingMetadata(); });
@@ -1693,10 +1735,10 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
1693
1735
  Poll<ServerMetadataHandle> ClientCallData::PollTrailingMetadata() {
1694
1736
  GRPC_TRACE_LOG(channel, INFO)
1695
1737
  << LogTag() << " ClientCallData.PollTrailingMetadata " << DebugString();
1696
- CHECK_NE(poll_ctx_, nullptr);
1738
+ GRPC_CHECK_NE(poll_ctx_, nullptr);
1697
1739
  if (send_initial_state_ == SendInitialState::kQueued) {
1698
1740
  // First poll: pass the send_initial_metadata op down the stack.
1699
- CHECK(send_initial_metadata_batch_.is_captured());
1741
+ GRPC_CHECK(send_initial_metadata_batch_.is_captured());
1700
1742
  send_initial_state_ = SendInitialState::kForwarded;
1701
1743
  if (recv_trailing_state_ == RecvTrailingState::kQueued) {
1702
1744
  // (and the recv_trailing_metadata op if it's part of the queuing)
@@ -1762,7 +1804,7 @@ void ClientCallData::RecvTrailingMetadataReady(grpc_error_handle error) {
1762
1804
  SetStatusFromError(recv_trailing_metadata_, error);
1763
1805
  }
1764
1806
  // Record that we've got the callback.
1765
- CHECK(recv_trailing_state_ == RecvTrailingState::kForwarded);
1807
+ GRPC_CHECK(recv_trailing_state_ == RecvTrailingState::kForwarded);
1766
1808
  recv_trailing_state_ = RecvTrailingState::kComplete;
1767
1809
  if (receive_message() != nullptr) {
1768
1810
  receive_message()->Done(*recv_trailing_metadata_, &flusher);
@@ -1800,6 +1842,13 @@ void ClientCallData::OnWakeup() {
1800
1842
  WakeInsideCombiner(&flusher);
1801
1843
  }
1802
1844
 
1845
+ channelz::PropertyList ClientCallData::ChannelzProperties() const {
1846
+ return BaseCallData::ChannelzProperties()
1847
+ .Set("promise", PromiseProperty(&promise_))
1848
+ .Set("send_initial_state", StateString(send_initial_state_))
1849
+ .Set("recv_trailing_state", StateString(recv_trailing_state_));
1850
+ }
1851
+
1803
1852
  ///////////////////////////////////////////////////////////////////////////////
1804
1853
  // ServerCallData
1805
1854
 
@@ -1851,7 +1900,7 @@ class ServerCallData::PollContext {
1851
1900
  created_.line(), "; Old: ", self_->poll_ctx_->created_.file(), ":",
1852
1901
  self_->poll_ctx_->created_.line()));
1853
1902
  }
1854
- CHECK_EQ(self_->poll_ctx_, nullptr);
1903
+ GRPC_CHECK_EQ(self_->poll_ctx_, nullptr);
1855
1904
  self_->poll_ctx_ = this;
1856
1905
  scoped_activity_.Init(self_);
1857
1906
  have_scoped_activity_ = true;
@@ -1949,15 +1998,17 @@ ServerCallData::ServerCallData(grpc_call_element* elem,
1949
1998
  GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
1950
1999
  RecvTrailingMetadataReadyCallback, this,
1951
2000
  grpc_schedule_on_exec_ctx);
2001
+ SourceConstructed();
1952
2002
  }
1953
2003
 
1954
2004
  ServerCallData::~ServerCallData() {
2005
+ SourceDestructing();
1955
2006
  GRPC_TRACE_LOG(channel, INFO)
1956
2007
  << LogTag() << " ~ServerCallData " << DebugString();
1957
2008
  if (send_initial_metadata_ != nullptr) {
1958
2009
  send_initial_metadata_->~SendInitialMetadata();
1959
2010
  }
1960
- CHECK_EQ(poll_ctx_, nullptr);
2011
+ GRPC_CHECK_EQ(poll_ctx_, nullptr);
1961
2012
  }
1962
2013
 
1963
2014
  std::string ServerCallData::DebugTag() const {
@@ -1966,7 +2017,7 @@ std::string ServerCallData::DebugTag() const {
1966
2017
 
1967
2018
  // Activity implementation.
1968
2019
  void ServerCallData::ForceImmediateRepoll(WakeupMask) {
1969
- CHECK_NE(poll_ctx_, nullptr);
2020
+ GRPC_CHECK_NE(poll_ctx_, nullptr);
1970
2021
  poll_ctx_->Repoll();
1971
2022
  }
1972
2023
 
@@ -1983,9 +2034,10 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) {
1983
2034
  // If this is a cancel stream, cancel anything we have pending and
1984
2035
  // propagate the cancellation.
1985
2036
  if (batch->cancel_stream) {
1986
- CHECK(!batch->send_initial_metadata && !batch->send_trailing_metadata &&
1987
- !batch->send_message && !batch->recv_initial_metadata &&
1988
- !batch->recv_message && !batch->recv_trailing_metadata);
2037
+ GRPC_CHECK(!batch->send_initial_metadata &&
2038
+ !batch->send_trailing_metadata && !batch->send_message &&
2039
+ !batch->recv_initial_metadata && !batch->recv_message &&
2040
+ !batch->recv_trailing_metadata);
1989
2041
  PollContext poll_ctx(this, &flusher);
1990
2042
  Completed(batch->payload->cancel_stream.cancel_error,
1991
2043
  batch->payload->cancel_stream.tarpit, &flusher);
@@ -2000,11 +2052,11 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) {
2000
2052
  // recv_initial_metadata: we hook the response of this so we can start the
2001
2053
  // promise at an appropriate time.
2002
2054
  if (batch->recv_initial_metadata) {
2003
- CHECK(!batch->send_initial_metadata && !batch->send_trailing_metadata &&
2004
- !batch->send_message && !batch->recv_message &&
2005
- !batch->recv_trailing_metadata);
2055
+ GRPC_CHECK(!batch->send_initial_metadata &&
2056
+ !batch->send_trailing_metadata && !batch->send_message &&
2057
+ !batch->recv_message && !batch->recv_trailing_metadata);
2006
2058
  // Otherwise, we should not have seen a send_initial_metadata op yet.
2007
- CHECK(recv_initial_state_ == RecvInitialState::kInitial);
2059
+ GRPC_CHECK(recv_initial_state_ == RecvInitialState::kInitial);
2008
2060
  // Hook the callback so we know when to start the promise.
2009
2061
  recv_initial_metadata_ =
2010
2062
  batch->payload->recv_initial_metadata.recv_initial_metadata;
@@ -2182,13 +2234,14 @@ void ServerCallData::Completed(grpc_error_handle error,
2182
2234
  // - return a wrapper around PollTrailingMetadata as the promise.
2183
2235
  ArenaPromise<ServerMetadataHandle> ServerCallData::MakeNextPromise(
2184
2236
  CallArgs call_args) {
2185
- CHECK(recv_initial_state_ == RecvInitialState::kComplete);
2186
- CHECK(std::move(call_args.client_initial_metadata).get() ==
2187
- recv_initial_metadata_);
2237
+ GRPC_CHECK(recv_initial_state_ == RecvInitialState::kComplete);
2238
+ GRPC_CHECK(std::move(call_args.client_initial_metadata).get() ==
2239
+ recv_initial_metadata_);
2188
2240
  forward_recv_initial_metadata_callback_ = true;
2189
2241
  if (send_initial_metadata_ != nullptr) {
2190
- CHECK(send_initial_metadata_->server_initial_metadata_publisher == nullptr);
2191
- CHECK_NE(call_args.server_initial_metadata, nullptr);
2242
+ GRPC_CHECK(send_initial_metadata_->server_initial_metadata_publisher ==
2243
+ nullptr);
2244
+ GRPC_CHECK_NE(call_args.server_initial_metadata, nullptr);
2192
2245
  send_initial_metadata_->server_initial_metadata_publisher =
2193
2246
  call_args.server_initial_metadata;
2194
2247
  switch (send_initial_metadata_->state) {
@@ -2211,17 +2264,17 @@ ArenaPromise<ServerMetadataHandle> ServerCallData::MakeNextPromise(
2211
2264
  break;
2212
2265
  }
2213
2266
  } else {
2214
- CHECK_EQ(call_args.server_initial_metadata, nullptr);
2267
+ GRPC_CHECK_EQ(call_args.server_initial_metadata, nullptr);
2215
2268
  }
2216
2269
  if (send_message() != nullptr) {
2217
2270
  send_message()->GotPipe(call_args.server_to_client_messages);
2218
2271
  } else {
2219
- CHECK_EQ(call_args.server_to_client_messages, nullptr);
2272
+ GRPC_CHECK_EQ(call_args.server_to_client_messages, nullptr);
2220
2273
  }
2221
2274
  if (receive_message() != nullptr) {
2222
2275
  receive_message()->GotPipe(call_args.client_to_server_messages);
2223
2276
  } else {
2224
- CHECK_EQ(call_args.client_to_server_messages, nullptr);
2277
+ GRPC_CHECK_EQ(call_args.client_to_server_messages, nullptr);
2225
2278
  }
2226
2279
  return ArenaPromise<ServerMetadataHandle>(
2227
2280
  [this]() { return PollTrailingMetadata(); });
@@ -2281,7 +2334,7 @@ void ServerCallData::RecvInitialMetadataReady(grpc_error_handle error) {
2281
2334
  Flusher flusher(this);
2282
2335
  GRPC_TRACE_LOG(channel, INFO)
2283
2336
  << LogTag() << ": RecvInitialMetadataReady " << error;
2284
- CHECK(recv_initial_state_ == RecvInitialState::kForwarded);
2337
+ GRPC_CHECK(recv_initial_state_ == RecvInitialState::kForwarded);
2285
2338
  // If there was an error we just propagate that through
2286
2339
  if (!error.ok()) {
2287
2340
  recv_initial_state_ = RecvInitialState::kResponded;
@@ -2351,8 +2404,8 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
2351
2404
  SendInitialMetadata::kQueuedAndGotPipe) {
2352
2405
  send_initial_metadata_->state =
2353
2406
  SendInitialMetadata::kQueuedAndPushedToPipe;
2354
- CHECK(!send_initial_metadata_->metadata_push_.has_value());
2355
- CHECK(!send_initial_metadata_->metadata_next_.has_value());
2407
+ GRPC_CHECK(!send_initial_metadata_->metadata_push_.has_value());
2408
+ GRPC_CHECK(!send_initial_metadata_->metadata_next_.has_value());
2356
2409
  send_initial_metadata_->metadata_push_.emplace(
2357
2410
  send_initial_metadata_->server_initial_metadata_publisher->Push(
2358
2411
  ServerMetadataHandle(
@@ -2426,7 +2479,7 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
2426
2479
  if (send_initial_metadata_ != nullptr &&
2427
2480
  send_initial_metadata_->state ==
2428
2481
  SendInitialMetadata::kQueuedAndPushedToPipe) {
2429
- CHECK(send_initial_metadata_->metadata_next_.has_value());
2482
+ GRPC_CHECK(send_initial_metadata_->metadata_next_.has_value());
2430
2483
  auto p = (*send_initial_metadata_->metadata_next_)();
2431
2484
  GRPC_TRACE_LOG(channel, INFO)
2432
2485
  << LogTag() << ": WakeInsideCombiner send_initial_metadata poll="
@@ -2473,7 +2526,7 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
2473
2526
  StateString(send_trailing_state_))); // unreachable
2474
2527
  break;
2475
2528
  case SendTrailingState::kInitial: {
2476
- CHECK(*md->get_pointer(GrpcStatusMetadata()) != GRPC_STATUS_OK);
2529
+ GRPC_CHECK(*md->get_pointer(GrpcStatusMetadata()) != GRPC_STATUS_OK);
2477
2530
  Completed(StatusFromMetadata(*md), md->get(GrpcTarPit()).has_value(),
2478
2531
  flusher);
2479
2532
  } break;
@@ -2498,5 +2551,12 @@ void ServerCallData::OnWakeup() {
2498
2551
  WakeInsideCombiner(&flusher);
2499
2552
  }
2500
2553
 
2554
+ channelz::PropertyList ServerCallData::ChannelzProperties() const {
2555
+ return BaseCallData::ChannelzProperties()
2556
+ .Set("promise", PromiseProperty(&promise_))
2557
+ .Set("recv_initial_state", StateString(recv_initial_state_))
2558
+ .Set("send_trailing_state", StateString(send_trailing_state_));
2559
+ }
2560
+
2501
2561
  } // namespace promise_filter_detail
2502
2562
  } // namespace grpc_core