grpc 1.75.0 → 1.78.0

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 (834) 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/version.rb +1 -1
  832. data/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
  833. data/third_party/abseil-cpp/absl/container/node_hash_map.h +687 -0
  834. metadata +51 -6
@@ -20,21 +20,22 @@
20
20
  #include <cstdint>
21
21
  #include <limits>
22
22
 
23
- #include "absl/base/thread_annotations.h"
24
- #include "absl/log/check.h"
25
- #include "absl/log/log.h"
26
- #include "absl/strings/str_format.h"
23
+ #include "src/core/channelz/property_list.h"
27
24
  #include "src/core/lib/event_engine/event_engine_context.h"
28
25
  #include "src/core/lib/iomgr/exec_ctx.h"
29
26
  #include "src/core/lib/promise/activity.h"
27
+ #include "src/core/util/grpc_check.h"
30
28
  #include "src/core/util/json/json_writer.h"
31
29
  #include "src/core/util/latent_see.h"
32
30
  #include "src/core/util/sync.h"
31
+ #include "absl/base/thread_annotations.h"
32
+ #include "absl/log/log.h"
33
+ #include "absl/strings/str_format.h"
33
34
 
34
35
  #ifdef GRPC_MAXIMIZE_THREADYNESS
35
- #include "absl/random/random.h" // IWYU pragma: keep
36
36
  #include "src/core/lib/iomgr/exec_ctx.h" // IWYU pragma: keep
37
37
  #include "src/core/util/thd.h" // IWYU pragma: keep
38
+ #include "absl/random/random.h" // IWYU pragma: keep
38
39
  #endif
39
40
 
40
41
  namespace grpc_core {
@@ -73,7 +74,7 @@ class Party::Handle final : public Wakeable {
73
74
  // Activity is going away... drop its reference and sever the connection back.
74
75
  void DropActivity() ABSL_LOCKS_EXCLUDED(mu_) {
75
76
  mu_.Lock();
76
- CHECK_NE(party_, nullptr);
77
+ GRPC_CHECK_NE(party_, nullptr);
77
78
  party_ = nullptr;
78
79
  mu_.Unlock();
79
80
  Unref();
@@ -201,14 +202,24 @@ void Party::ToJson(absl::AnyInvocable<void(Json::Object)> f) {
201
202
  [](absl::Status) {});
202
203
  }
203
204
 
204
- void Party::ExportToChannelz(std::string name, channelz::DataSink sink) {
205
- Spawn(
206
- "export-to-channelz",
207
- [name = std::move(name), sink = std::move(sink), self = Ref()]() mutable {
208
- sink.AddData(std::move(name), self->ChannelzPropertiesLocked());
209
- return absl::OkStatus();
210
- },
211
- [](absl::Status) {});
205
+ void Party::ExportToChannelz(
206
+ std::string name, channelz::DataSink sink,
207
+ absl::AnyInvocable<channelz::PropertyList()> export_context) {
208
+ arena()->GetContext<grpc_event_engine::experimental::EventEngine>()->Run(
209
+ [self = Ref(), name = std::move(name), sink = std::move(sink),
210
+ export_context = std::move(export_context)]() mutable {
211
+ ExecCtx exec_ctx;
212
+ self->Spawn(
213
+ "export-to-channelz",
214
+ [name = std::move(name), sink = std::move(sink), self,
215
+ export_context = std::move(export_context)]() mutable {
216
+ sink.AddData(
217
+ std::move(name),
218
+ self->ChannelzPropertiesLocked().Merge(export_context()));
219
+ return absl::OkStatus();
220
+ },
221
+ [](absl::Status) {});
222
+ });
212
223
  }
213
224
 
214
225
  channelz::PropertyList Party::ChannelzPropertiesLocked() {
@@ -226,7 +237,8 @@ channelz::PropertyList Party::ChannelzPropertiesLocked() {
226
237
  for (size_t i = 0; i < party_detail::kMaxParticipants; i++) {
227
238
  if (auto* p = participants_[i].load(std::memory_order_acquire);
228
239
  p != nullptr) {
229
- table.AppendRow(p->ChannelzProperties());
240
+ table.AppendRow(channelz::PropertyList().Set(
241
+ "participant", p->ChannelzProperties()));
230
242
  }
231
243
  }
232
244
  return table;
@@ -259,13 +271,13 @@ std::string Party::ActivityDebugTag(WakeupMask wakeup_mask) const {
259
271
  }
260
272
 
261
273
  Waker Party::MakeOwningWaker() {
262
- DCHECK(currently_polling_ != kNotPolling);
274
+ GRPC_DCHECK(currently_polling_ != kNotPolling);
263
275
  IncrementRefCount();
264
276
  return Waker(this, 1u << currently_polling_);
265
277
  }
266
278
 
267
279
  Waker Party::MakeNonOwningWaker() {
268
- DCHECK(currently_polling_ != kNotPolling);
280
+ GRPC_DCHECK(currently_polling_ != kNotPolling);
269
281
  return Waker(participants_[currently_polling_]
270
282
  .load(std::memory_order_relaxed)
271
283
  ->MakeNonOwningWakeable(this),
@@ -273,7 +285,7 @@ Waker Party::MakeNonOwningWaker() {
273
285
  }
274
286
 
275
287
  void Party::ForceImmediateRepoll(WakeupMask mask) {
276
- DCHECK(is_current());
288
+ GRPC_DCHECK(is_current());
277
289
  wakeup_mask_ |= mask;
278
290
  }
279
291
 
@@ -306,11 +318,11 @@ void Party::RunLockedAndUnref(Party* party, uint64_t prev_state) {
306
318
  g_run_state = this;
307
319
  do {
308
320
  GRPC_LATENT_SEE_SCOPE("run_one_party");
309
- CHECK(first.party != nullptr);
321
+ GRPC_CHECK(first.party != nullptr);
310
322
  first.party->RunPartyAndUnref(first.prev_state);
311
323
  first = std::exchange(next, PartyWakeup{});
312
324
  } while (first.party != nullptr);
313
- DCHECK(g_run_state == this);
325
+ GRPC_DCHECK(g_run_state == this);
314
326
  g_run_state = nullptr;
315
327
  }
316
328
  };
@@ -338,10 +350,11 @@ void Party::RunLockedAndUnref(Party* party, uint64_t prev_state) {
338
350
  auto wakeup =
339
351
  std::exchange(g_run_state->next, PartyWakeup{party, prev_state});
340
352
  auto arena = wakeup.party->arena_.get();
341
- CHECK(arena != nullptr);
353
+ GRPC_CHECK(arena != nullptr);
342
354
  auto* event_engine =
343
355
  arena->GetContext<grpc_event_engine::experimental::EventEngine>();
344
- CHECK(event_engine != nullptr) << "; " << GRPC_DUMP_ARGS(party, arena);
356
+ GRPC_CHECK(event_engine != nullptr)
357
+ << "; " << GRPC_DUMP_ARGS(party, arena);
345
358
  GRPC_LATENT_SEE_SCOPE("offload_one_party");
346
359
  event_engine->Run([wakeup]() {
347
360
  GRPC_LATENT_SEE_SCOPE("Party::RunLocked offload");
@@ -360,11 +373,11 @@ void Party::RunLockedAndUnref(Party* party, uint64_t prev_state) {
360
373
  void Party::RunPartyAndUnref(uint64_t prev_state) {
361
374
  ScopedActivity activity(this);
362
375
  promise_detail::Context<Arena> arena_ctx(arena_.get());
363
- DCHECK_EQ(prev_state & kLocked, 0u)
376
+ GRPC_DCHECK_EQ(prev_state & kLocked, 0u)
364
377
  << "Party should be unlocked prior to first wakeup";
365
- DCHECK_GE(prev_state & kRefMask, kOneRef);
378
+ GRPC_DCHECK_GE(prev_state & kRefMask, kOneRef);
366
379
  // Now update prev_state to be what we want the CAS to see below.
367
- DCHECK_EQ(prev_state & ~(kRefMask | kAllocatedMask), 0u)
380
+ GRPC_DCHECK_EQ(prev_state & ~(kRefMask | kAllocatedMask), 0u)
368
381
  << "Party should have contained no wakeups on lock";
369
382
  prev_state |= kLocked;
370
383
  #if !TARGET_OS_IPHONE
@@ -432,9 +445,9 @@ void Party::RunPartyAndUnref(uint64_t prev_state) {
432
445
  }
433
446
  LogStateChange("Run:Continue", prev_state,
434
447
  prev_state & (kRefMask | kLocked | keep_allocated_mask));
435
- DCHECK(prev_state & kLocked)
448
+ GRPC_DCHECK(prev_state & kLocked)
436
449
  << "Party should be locked; prev_state=" << prev_state;
437
- DCHECK_GE(prev_state & kRefMask, kOneRef);
450
+ GRPC_DCHECK_GE(prev_state & kRefMask, kOneRef);
438
451
  // From the previous state, extract which participants we're to wakeup.
439
452
  wakeup_mask_ |= prev_state & kWakeupMask;
440
453
  // Now update prev_state to be what we want the CAS to see once wakeups
@@ -457,7 +470,7 @@ uint64_t Party::NextAllocationMask(uint64_t current_allocation_mask) {
457
470
  }
458
471
  #else
459
472
  uint64_t Party::NextAllocationMask(uint64_t current_allocation_mask) {
460
- CHECK_EQ(current_allocation_mask & ~kWakeupMask, 0);
473
+ GRPC_CHECK_EQ(current_allocation_mask & ~kWakeupMask, 0);
461
474
  if (current_allocation_mask == kWakeupMask) return kWakeupMask + 1;
462
475
  // Count number of unset bits in the wakeup mask
463
476
  size_t unset_bits = 0;
@@ -465,7 +478,7 @@ uint64_t Party::NextAllocationMask(uint64_t current_allocation_mask) {
465
478
  if (current_allocation_mask & (1ull << i)) continue;
466
479
  ++unset_bits;
467
480
  }
468
- CHECK_GT(unset_bits, 0);
481
+ GRPC_CHECK_GT(unset_bits, 0);
469
482
  absl::BitGen bitgen;
470
483
  size_t selected = absl::Uniform<size_t>(bitgen, 0, unset_bits);
471
484
  for (size_t i = 0; i < party_detail::kMaxParticipants; i++) {
@@ -494,7 +507,7 @@ size_t Party::AddParticipant(Participant* participant) {
494
507
  if (GPR_UNLIKELY((wakeup_mask & kWakeupMask) == 0)) {
495
508
  return std::numeric_limits<size_t>::max();
496
509
  }
497
- DCHECK_NE(wakeup_mask & kWakeupMask, 0u)
510
+ GRPC_DCHECK_NE(wakeup_mask & kWakeupMask, 0u)
498
511
  << "No available slots for new participant; allocated=" << allocated
499
512
  << " state=" << state << " wakeup_mask=" << wakeup_mask;
500
513
  allocated |= wakeup_mask;
@@ -25,10 +25,6 @@
25
25
  #include <string>
26
26
  #include <utility>
27
27
 
28
- #include "absl/base/attributes.h"
29
- #include "absl/functional/any_invocable.h"
30
- #include "absl/log/check.h"
31
- #include "absl/strings/string_view.h"
32
28
  #include "src/core/channelz/channelz.h"
33
29
  #include "src/core/channelz/property_list.h"
34
30
  #include "src/core/lib/debug/trace.h"
@@ -41,9 +37,13 @@
41
37
  #include "src/core/util/check_class_size.h"
42
38
  #include "src/core/util/construct_destruct.h"
43
39
  #include "src/core/util/crash.h"
40
+ #include "src/core/util/grpc_check.h"
44
41
  #include "src/core/util/json/json_writer.h"
45
42
  #include "src/core/util/ref_counted.h"
46
43
  #include "src/core/util/ref_counted_ptr.h"
44
+ #include "absl/base/attributes.h"
45
+ #include "absl/functional/any_invocable.h"
46
+ #include "absl/strings/string_view.h"
47
47
 
48
48
  namespace grpc_core {
49
49
 
@@ -211,7 +211,7 @@ class Party : public Activity, private Wakeable {
211
211
  party->state_.compare_exchange_weak(prev_state_,
212
212
  (prev_state_ | kLocked) + kOneRef,
213
213
  std::memory_order_relaxed)) {
214
- DCHECK_EQ(prev_state_ & ~(kRefMask | kAllocatedMask), 0u)
214
+ GRPC_DCHECK_EQ(prev_state_ & ~(kRefMask | kAllocatedMask), 0u)
215
215
  << "Party should have contained no wakeups on lock";
216
216
  // If we win, record that fact for the destructor
217
217
  party->LogStateChange("WakeupHold", prev_state_,
@@ -349,7 +349,7 @@ class Party : public Activity, private Wakeable {
349
349
  // Activity implementation: not allowed to be overridden by derived types.
350
350
  void ForceImmediateRepoll(WakeupMask mask) final;
351
351
  WakeupMask CurrentParticipant() const final {
352
- DCHECK(currently_polling_ != kNotPolling);
352
+ GRPC_DCHECK(currently_polling_ != kNotPolling);
353
353
  return 1u << currently_polling_;
354
354
  }
355
355
  Waker MakeOwningWaker() final;
@@ -383,7 +383,7 @@ class Party : public Activity, private Wakeable {
383
383
  SpawnSerializer* MakeSpawnSerializer() {
384
384
  auto* const serializer = arena_->New<SpawnSerializer>(this);
385
385
  const size_t slot = AddParticipant(serializer);
386
- DCHECK_NE(slot, std::numeric_limits<size_t>::max());
386
+ GRPC_DCHECK_NE(slot, std::numeric_limits<size_t>::max());
387
387
  serializer->wakeup_mask_ = 1ull << slot;
388
388
  return serializer;
389
389
  }
@@ -394,15 +394,23 @@ class Party : public Activity, private Wakeable {
394
394
  void ToJson(absl::AnyInvocable<void(Json::Object)>);
395
395
 
396
396
  // Export the party to channelz.
397
- void ExportToChannelz(std::string name, channelz::DataSink sink);
397
+ // The final argument is called whilst the party is locked, and so can be used
398
+ // to export contextual data alongside the party.
399
+ void ExportToChannelz(
400
+ std::string name, channelz::DataSink sink,
401
+ absl::AnyInvocable<channelz::PropertyList()> export_context = []() {
402
+ // The default implementation does nothing.
403
+ return channelz::PropertyList();
404
+ });
398
405
 
399
406
  protected:
400
407
  friend class Arena;
401
408
 
402
409
  // Derived types should be constructed upon `arena`.
403
410
  explicit Party(RefCountedPtr<Arena> arena) : arena_(std::move(arena)) {
404
- CHECK(arena_->GetContext<grpc_event_engine::experimental::EventEngine>() !=
405
- nullptr);
411
+ GRPC_CHECK(
412
+ arena_->GetContext<grpc_event_engine::experimental::EventEngine>() !=
413
+ nullptr);
406
414
  }
407
415
  ~Party() override;
408
416
 
@@ -455,15 +463,11 @@ class Party : public Activity, private Wakeable {
455
463
  channelz::PropertyList ChannelzProperties() override {
456
464
  return channelz::PropertyList()
457
465
  .Set("on_complete", TypeName<OnComplete>())
458
- .Set("factory", [this]() {
459
- channelz::PropertyList factory;
460
- if (started_) {
461
- factory.Set("promise", PromiseProperty(&promise_));
462
- } else {
463
- factory.Set("factory",
464
- TypeName<typename Factory::UnderlyingFactory>());
465
- }
466
- return factory;
466
+ .Set("factory", TypeName<typename Factory::UnderlyingFactory>())
467
+ .Merge([this]() {
468
+ channelz::PropertyList p;
469
+ if (started_) p.Set("promise", PromiseProperty(&promise_));
470
+ return p;
467
471
  }());
468
472
  }
469
473
 
@@ -636,7 +640,7 @@ class Party : public Activity, private Wakeable {
636
640
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION void WakeupFromState(
637
641
  uint64_t cur_state, WakeupMask wakeup_mask) {
638
642
  GRPC_LATENT_SEE_SCOPE("Party::WakeupFromState");
639
- DCHECK_NE(wakeup_mask & kWakeupMask, 0u)
643
+ GRPC_DCHECK_NE(wakeup_mask & kWakeupMask, 0u)
640
644
  << "Wakeup mask must be non-zero: " << wakeup_mask;
641
645
  while (true) {
642
646
  if (cur_state & kLocked) {
@@ -644,9 +648,9 @@ class Party : public Activity, private Wakeable {
644
648
  // we'll immediately unref. Since something is running this should never
645
649
  // bring the refcount to zero.
646
650
  if constexpr (kReffed) {
647
- DCHECK_GT(cur_state & kRefMask, kOneRef);
651
+ GRPC_DCHECK_GT(cur_state & kRefMask, kOneRef);
648
652
  } else {
649
- DCHECK_GE(cur_state & kRefMask, kOneRef);
653
+ GRPC_DCHECK_GE(cur_state & kRefMask, kOneRef);
650
654
  }
651
655
  const uint64_t new_state =
652
656
  (cur_state | wakeup_mask) - (kReffed ? kOneRef : 0);
@@ -657,7 +661,7 @@ class Party : public Activity, private Wakeable {
657
661
  }
658
662
  } else {
659
663
  // If the party is not locked, we need to lock it and run.
660
- DCHECK_EQ(cur_state & kWakeupMask, 0u);
664
+ GRPC_DCHECK_EQ(cur_state & kWakeupMask, 0u);
661
665
  const uint64_t new_state =
662
666
  (cur_state | kLocked) + (kReffed ? 0 : kOneRef);
663
667
  if (state_.compare_exchange_weak(cur_state, new_state,
@@ -25,9 +25,7 @@
25
25
  #include <utility>
26
26
  #include <variant>
27
27
 
28
- #include "absl/log/check.h"
29
- #include "absl/log/log.h"
30
- #include "absl/strings/str_cat.h"
28
+ #include "src/core/channelz/property_list.h"
31
29
  #include "src/core/lib/promise/activity.h"
32
30
  #include "src/core/lib/promise/context.h"
33
31
  #include "src/core/lib/promise/if.h"
@@ -37,7 +35,10 @@
37
35
  #include "src/core/lib/promise/seq.h"
38
36
  #include "src/core/lib/resource_quota/arena.h"
39
37
  #include "src/core/util/debug_location.h"
38
+ #include "src/core/util/grpc_check.h"
40
39
  #include "src/core/util/ref_counted_ptr.h"
40
+ #include "absl/log/log.h"
41
+ #include "absl/strings/str_cat.h"
41
42
 
42
43
  namespace grpc_core {
43
44
 
@@ -58,10 +59,10 @@ struct Pipe;
58
59
  template <typename T>
59
60
  class NextResult final {
60
61
  public:
61
- NextResult() : center_(nullptr) {}
62
+ NextResult() : center_(nullptr), cancelled_(true) {}
62
63
  explicit NextResult(RefCountedPtr<pipe_detail::Center<T>> center)
63
- : center_(std::move(center)) {
64
- CHECK(center_ != nullptr);
64
+ : center_(std::move(center)), cancelled_(false) {
65
+ GRPC_CHECK(center_ != nullptr);
65
66
  }
66
67
  explicit NextResult(bool cancelled)
67
68
  : center_(nullptr), cancelled_(cancelled) {}
@@ -77,11 +78,11 @@ class NextResult final {
77
78
  bool has_value() const;
78
79
  // Only valid if has_value()
79
80
  const T& value() const {
80
- CHECK(has_value());
81
+ GRPC_CHECK(has_value());
81
82
  return **this;
82
83
  }
83
84
  T& value() {
84
- CHECK(has_value());
85
+ GRPC_CHECK(has_value());
85
86
  return **this;
86
87
  }
87
88
  const T& operator*() const;
@@ -118,7 +119,7 @@ class Center : public InterceptorList<T> {
118
119
  GRPC_TRACE_VLOG(promise_primitives, 2)
119
120
  << DebugOpString("IncrementRefCount");
120
121
  refs_++;
121
- DCHECK_NE(refs_, 0);
122
+ GRPC_DCHECK_NE(refs_, 0);
122
123
  }
123
124
 
124
125
  RefCountedPtr<Center> Ref() {
@@ -130,7 +131,7 @@ class Center : public InterceptorList<T> {
130
131
  // If no refs remain, destroy this object
131
132
  void Unref() {
132
133
  GRPC_TRACE_VLOG(promise_primitives, 2) << DebugOpString("Unref");
133
- DCHECK_GT(refs_, 0);
134
+ GRPC_DCHECK_GT(refs_, 0);
134
135
  refs_--;
135
136
  if (0 == refs_) {
136
137
  this->~Center();
@@ -143,7 +144,7 @@ class Center : public InterceptorList<T> {
143
144
  // Return false if the recv end is closed.
144
145
  Poll<bool> Push(T* value) {
145
146
  GRPC_TRACE_LOG(promise_primitives, INFO) << DebugOpString("Push");
146
- DCHECK_NE(refs_, 0);
147
+ GRPC_DCHECK_NE(refs_, 0);
147
148
  switch (value_state_) {
148
149
  case ValueState::kClosed:
149
150
  case ValueState::kReadyClosed:
@@ -165,7 +166,7 @@ class Center : public InterceptorList<T> {
165
166
 
166
167
  Poll<bool> PollAck() {
167
168
  GRPC_TRACE_LOG(promise_primitives, INFO) << DebugOpString("PollAck");
168
- DCHECK_NE(refs_, 0);
169
+ GRPC_DCHECK_NE(refs_, 0);
169
170
  switch (value_state_) {
170
171
  case ValueState::kClosed:
171
172
  return true;
@@ -191,7 +192,7 @@ class Center : public InterceptorList<T> {
191
192
  // Return nullopt if the send end is closed and no value had been pushed.
192
193
  Poll<std::optional<T>> Next() {
193
194
  GRPC_TRACE_LOG(promise_primitives, INFO) << DebugOpString("Next");
194
- DCHECK_NE(refs_, 0);
195
+ GRPC_DCHECK_NE(refs_, 0);
195
196
  switch (value_state_) {
196
197
  case ValueState::kEmpty:
197
198
  case ValueState::kAcked:
@@ -216,7 +217,7 @@ class Center : public InterceptorList<T> {
216
217
  Poll<bool> PollClosedForSender() {
217
218
  GRPC_TRACE_LOG(promise_primitives, INFO)
218
219
  << DebugOpString("PollClosedForSender");
219
- DCHECK_NE(refs_, 0);
220
+ GRPC_DCHECK_NE(refs_, 0);
220
221
  switch (value_state_) {
221
222
  case ValueState::kEmpty:
222
223
  case ValueState::kAcked:
@@ -238,7 +239,7 @@ class Center : public InterceptorList<T> {
238
239
  Poll<bool> PollClosedForReceiver() {
239
240
  GRPC_TRACE_LOG(promise_primitives, INFO)
240
241
  << DebugOpString("PollClosedForReceiver");
241
- DCHECK_NE(refs_, 0);
242
+ GRPC_DCHECK_NE(refs_, 0);
242
243
  switch (value_state_) {
243
244
  case ValueState::kEmpty:
244
245
  case ValueState::kAcked:
@@ -257,7 +258,7 @@ class Center : public InterceptorList<T> {
257
258
 
258
259
  Poll<Empty> PollEmpty() {
259
260
  GRPC_TRACE_LOG(promise_primitives, INFO) << DebugOpString("PollEmpty");
260
- DCHECK_NE(refs_, 0);
261
+ GRPC_DCHECK_NE(refs_, 0);
261
262
  switch (value_state_) {
262
263
  case ValueState::kReady:
263
264
  case ValueState::kReadyClosed:
@@ -360,6 +361,15 @@ class Center : public InterceptorList<T> {
360
361
  }
361
362
  }
362
363
 
364
+ channelz::PropertyList ChannelzProperties() const {
365
+ return channelz::PropertyList()
366
+ .Set("refs", refs_)
367
+ .Set("state", ValueStateName(value_state_))
368
+ .Set("on_empty", on_empty_.DebugString())
369
+ .Set("on_full", on_full_.DebugString())
370
+ .Set("on_closed", on_closed_.DebugString());
371
+ }
372
+
363
373
  private:
364
374
  // State of value_.
365
375
  enum class ValueState : uint8_t {
@@ -460,6 +470,10 @@ class PipeSender {
460
470
  }
461
471
  }
462
472
 
473
+ channelz::PropertyList ChannelzProperties() {
474
+ return center_->ChannelzProperties();
475
+ }
476
+
463
477
  void Swap(PipeSender<T>* other) { std::swap(center_, other->center_); }
464
478
 
465
479
  // Send a single message along the pipe.
@@ -646,7 +660,7 @@ class Push {
646
660
  return Pending{};
647
661
  }
648
662
  }
649
- DCHECK(std::holds_alternative<AwaitingAck>(state_));
663
+ GRPC_DCHECK(std::holds_alternative<AwaitingAck>(state_));
650
664
  return center_->PollAck();
651
665
  }
652
666
 
@@ -21,10 +21,11 @@
21
21
  #include <string>
22
22
  #include <utility>
23
23
 
24
- #include "absl/log/check.h"
24
+ #include "src/core/util/construct_destruct.h"
25
+ #include "src/core/util/grpc_check.h"
26
+ #include "absl/status/statusor.h"
25
27
  #include "absl/strings/str_format.h"
26
28
  #include "absl/strings/str_join.h"
27
- #include "src/core/util/construct_destruct.h"
28
29
 
29
30
  namespace grpc_core {
30
31
 
@@ -112,12 +113,12 @@ class Poll {
112
113
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION bool ready() const { return ready_; }
113
114
 
114
115
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION T& value() {
115
- DCHECK(ready());
116
+ GRPC_DCHECK(ready());
116
117
  return value_;
117
118
  }
118
119
 
119
120
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION const T& value() const {
120
- DCHECK(ready());
121
+ GRPC_DCHECK(ready());
121
122
  return value_;
122
123
  }
123
124
 
@@ -174,7 +175,7 @@ class Poll<Empty> {
174
175
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION bool ready() const { return ready_; }
175
176
 
176
177
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Empty value() const {
177
- DCHECK(ready());
178
+ GRPC_DCHECK(ready());
178
179
  return Empty{};
179
180
  }
180
181
 
@@ -20,12 +20,10 @@
20
20
  #include <optional>
21
21
  #include <type_traits>
22
22
 
23
- #include "absl/functional/any_invocable.h"
24
- #include "absl/status/status.h"
25
23
  #include "src/core/lib/promise/detail/promise_like.h"
26
24
  #include "src/core/lib/promise/poll.h"
27
- #include "src/core/util/function_signature.h"
28
- #include "src/core/util/json/json.h"
25
+ #include "absl/functional/any_invocable.h"
26
+ #include "absl/status/status.h"
29
27
 
30
28
  namespace grpc_core {
31
29
 
@@ -56,7 +56,9 @@ Poll<absl::Status> Sleep::operator()() {
56
56
  }
57
57
 
58
58
  Sleep::ActiveClosure::ActiveClosure(Timestamp deadline)
59
- : waker_(GetContext<Activity>()->MakeOwningWaker()),
59
+ : waker_((IsSleepUseNonOwningWakerEnabled())
60
+ ? GetContext<Activity>()->MakeNonOwningWaker()
61
+ : GetContext<Activity>()->MakeOwningWaker()),
60
62
  event_engine_(GetContext<EventEngine>()->shared_from_this()),
61
63
  timer_handle_(
62
64
  event_engine_->RunAfter(deadline - Timestamp::Now(), this)) {}
@@ -21,10 +21,10 @@
21
21
  #include <atomic>
22
22
  #include <utility>
23
23
 
24
- #include "absl/status/status.h"
25
24
  #include "src/core/lib/promise/activity.h"
26
25
  #include "src/core/lib/promise/poll.h"
27
26
  #include "src/core/util/time.h"
27
+ #include "absl/status/status.h"
28
28
 
29
29
  namespace grpc_core {
30
30
 
@@ -20,12 +20,12 @@
20
20
  #include <optional>
21
21
  #include <ostream>
22
22
 
23
- #include "absl/log/check.h"
23
+ #include "src/core/lib/promise/detail/status.h"
24
+ #include "src/core/util/grpc_check.h"
24
25
  #include "absl/status/status.h"
25
26
  #include "absl/status/statusor.h"
26
27
  #include "absl/strings/str_cat.h"
27
28
  #include "absl/strings/str_join.h"
28
- #include "src/core/lib/promise/detail/status.h"
29
29
 
30
30
  namespace grpc_core {
31
31
 
@@ -198,7 +198,7 @@ template <typename T>
198
198
  struct FailureStatusCastImpl<absl::StatusOr<T>, StatusFlag> {
199
199
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static absl::StatusOr<T> Cast(
200
200
  StatusFlag flag) {
201
- DCHECK(!flag.ok());
201
+ GRPC_DCHECK(!flag.ok());
202
202
  return absl::CancelledError();
203
203
  }
204
204
  };
@@ -207,7 +207,7 @@ template <typename T>
207
207
  struct FailureStatusCastImpl<absl::StatusOr<T>, StatusFlag&> {
208
208
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static absl::StatusOr<T> Cast(
209
209
  StatusFlag flag) {
210
- DCHECK(!flag.ok());
210
+ GRPC_DCHECK(!flag.ok());
211
211
  return absl::CancelledError();
212
212
  }
213
213
  };
@@ -216,7 +216,7 @@ template <typename T>
216
216
  struct FailureStatusCastImpl<absl::StatusOr<T>, const StatusFlag&> {
217
217
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static absl::StatusOr<T> Cast(
218
218
  StatusFlag flag) {
219
- DCHECK(!flag.ok());
219
+ GRPC_DCHECK(!flag.ok());
220
220
  return absl::CancelledError();
221
221
  }
222
222
  };
@@ -230,7 +230,7 @@ class ValueOrFailure {
230
230
  // NOLINTNEXTLINE(google-explicit-constructor)
231
231
  ValueOrFailure(Failure) {}
232
232
  // NOLINTNEXTLINE(google-explicit-constructor)
233
- ValueOrFailure(StatusFlag status) { CHECK(!status.ok()); }
233
+ ValueOrFailure(StatusFlag status) { GRPC_CHECK(!status.ok()); }
234
234
 
235
235
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static ValueOrFailure FromOptional(
236
236
  std::optional<T> value) {
@@ -356,7 +356,7 @@ template <typename T>
356
356
  struct StatusCastImpl<ValueOrFailure<T>, StatusFlag&> {
357
357
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static ValueOrFailure<T> Cast(
358
358
  StatusFlag f) {
359
- CHECK(!f.ok());
359
+ GRPC_CHECK(!f.ok());
360
360
  return ValueOrFailure<T>(Failure{});
361
361
  }
362
362
  };
@@ -365,7 +365,7 @@ template <typename T>
365
365
  struct StatusCastImpl<ValueOrFailure<T>, StatusFlag> {
366
366
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static ValueOrFailure<T> Cast(
367
367
  StatusFlag f) {
368
- CHECK(!f.ok());
368
+ GRPC_CHECK(!f.ok());
369
369
  return ValueOrFailure<T>(Failure{});
370
370
  }
371
371
  };
@@ -20,14 +20,14 @@
20
20
  #include <tuple>
21
21
  #include <variant>
22
22
 
23
- #include "absl/log/check.h"
24
- #include "absl/meta/type_traits.h"
25
- #include "absl/status/status.h"
26
- #include "absl/status/statusor.h"
27
23
  #include "src/core/lib/promise/detail/join_state.h"
28
24
  #include "src/core/lib/promise/map.h"
29
25
  #include "src/core/lib/promise/poll.h"
30
26
  #include "src/core/lib/promise/status_flag.h"
27
+ #include "src/core/util/grpc_check.h"
28
+ #include "absl/meta/type_traits.h"
29
+ #include "absl/status/status.h"
30
+ #include "absl/status/statusor.h"
31
31
 
32
32
  namespace grpc_core {
33
33
 
@@ -212,7 +212,7 @@ struct TryJoinTraits {
212
212
  template <typename R, typename T>
213
213
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static R EarlyReturn(
214
214
  const ValueOrFailure<T>& x) {
215
- CHECK(!x.ok());
215
+ GRPC_CHECK(!x.ok());
216
216
  return FailureStatusCast<R>(Failure{});
217
217
  }
218
218
  template <typename... A>
@@ -21,16 +21,16 @@
21
21
  #include <type_traits>
22
22
  #include <utility>
23
23
 
24
- #include "absl/log/check.h"
25
- #include "absl/meta/type_traits.h"
26
- #include "absl/status/status.h"
27
- #include "absl/status/statusor.h"
28
24
  #include "src/core/lib/promise/detail/basic_seq.h"
29
25
  #include "src/core/lib/promise/detail/promise_like.h"
30
26
  #include "src/core/lib/promise/detail/seq_state.h"
31
27
  #include "src/core/lib/promise/detail/status.h"
32
28
  #include "src/core/lib/promise/poll.h"
33
29
  #include "src/core/lib/promise/status_flag.h"
30
+ #include "src/core/util/grpc_check.h"
31
+ #include "absl/meta/type_traits.h"
32
+ #include "absl/status/status.h"
33
+ #include "absl/status/statusor.h"
34
34
 
35
35
  namespace grpc_core {
36
36
 
@@ -208,7 +208,7 @@ struct TrySeqTraitsWithSfinae<
208
208
  }
209
209
  template <typename R>
210
210
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static R ReturnValue(T&& status) {
211
- DCHECK(!IsStatusOk(status));
211
+ GRPC_DCHECK(!IsStatusOk(status));
212
212
  return FailureStatusCast<R>(status.status());
213
213
  }
214
214
  template <typename Result, typename RunNext>