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
@@ -17,11 +17,12 @@
17
17
 
18
18
  #include <grpc/support/port_platform.h>
19
19
 
20
- #include "absl/log/check.h"
21
20
  #include "src/core/call/call_arena_allocator.h"
22
21
  #include "src/core/call/call_filters.h"
22
+ #include "src/core/call/channelz_context.h"
23
23
  #include "src/core/call/message.h"
24
24
  #include "src/core/call/metadata.h"
25
+ #include "src/core/channelz/channelz.h"
25
26
  #include "src/core/lib/promise/detail/status.h"
26
27
  #include "src/core/lib/promise/if.h"
27
28
  #include "src/core/lib/promise/latch.h"
@@ -32,6 +33,7 @@
32
33
  #include "src/core/lib/promise/status_flag.h"
33
34
  #include "src/core/lib/promise/try_seq.h"
34
35
  #include "src/core/util/dual_ref_counted.h"
36
+ #include "src/core/util/grpc_check.h"
35
37
 
36
38
  namespace grpc_core {
37
39
 
@@ -39,7 +41,7 @@ namespace grpc_core {
39
41
  // CallInitiator and CallHandler - which provide interfaces that are appropriate
40
42
  // for each side of a call.
41
43
  // Hosts context, call filters, and the arena.
42
- class CallSpine final : public Party {
44
+ class CallSpine final : public Party, public channelz::DataSource {
43
45
  public:
44
46
  static RefCountedPtr<CallSpine> Create(
45
47
  ClientMetadataHandle client_initial_metadata,
@@ -49,7 +51,10 @@ class CallSpine final : public Party {
49
51
  std::move(client_initial_metadata), std::move(arena)));
50
52
  }
51
53
 
52
- ~CallSpine() override { CallOnDone(true); }
54
+ ~CallSpine() override {
55
+ CallOnDone(true);
56
+ SourceDestructing();
57
+ }
53
58
 
54
59
  CallFilters& call_filters() { return call_filters_; }
55
60
 
@@ -132,7 +137,7 @@ class CallSpine final : public Party {
132
137
  // The resulting (returned) promise will resolve to Empty.
133
138
  template <typename Promise>
134
139
  auto CancelIfFails(Promise promise) {
135
- DCHECK(GetContext<Activity>() == this);
140
+ GRPC_DCHECK(GetContext<Activity>() == this);
136
141
  using P = promise_detail::PromiseLike<Promise>;
137
142
  using ResultType = typename P::Result;
138
143
  return Map(std::move(promise),
@@ -285,12 +290,29 @@ class CallSpine final : public Party {
285
290
  }
286
291
  }
287
292
 
293
+ void AddData(channelz::DataSink sink) override {
294
+ this->ExportToChannelz(
295
+ "call_spine", sink, [self = RefAsSubclass<CallSpine>()]() {
296
+ return channelz::PropertyList()
297
+ .Set("filters", self->call_filters_.ChannelzProperties())
298
+ .Set("child_calls", self->child_calls_.size())
299
+ .Set("has_on_done", self->on_done_ != nullptr);
300
+ });
301
+ }
302
+
288
303
  private:
289
304
  friend class Arena;
290
305
  CallSpine(ClientMetadataHandle client_initial_metadata,
291
- RefCountedPtr<Arena> arena)
292
- : Party(std::move(arena)),
293
- call_filters_(std::move(client_initial_metadata)) {}
306
+ RefCountedPtr<Arena> a)
307
+ : Party(std::move(a)),
308
+ channelz::DataSource([this]() -> RefCountedPtr<channelz::BaseNode> {
309
+ auto* p = arena()->GetContext<channelz::CallNode>();
310
+ if (p == nullptr) return nullptr;
311
+ return p->Ref();
312
+ }()),
313
+ call_filters_(std::move(client_initial_metadata)) {
314
+ SourceConstructed();
315
+ }
294
316
 
295
317
  SpawnSerializer* client_to_server_serializer() {
296
318
  if (client_to_server_serializer_ == nullptr) {
@@ -324,7 +346,7 @@ class CallInitiator {
324
346
  CallInitiator() = default;
325
347
  explicit CallInitiator(RefCountedPtr<CallSpine> spine)
326
348
  : spine_(std::move(spine)) {
327
- DCHECK_NE(spine_.get(), nullptr);
349
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
328
350
  }
329
351
 
330
352
  // Wrap a promise so that if it returns failure it automatically cancels
@@ -332,118 +354,118 @@ class CallInitiator {
332
354
  // The resulting (returned) promise will resolve to Empty.
333
355
  template <typename Promise>
334
356
  auto CancelIfFails(Promise promise) {
335
- DCHECK_NE(spine_.get(), nullptr);
357
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
336
358
  return spine_->CancelIfFails(std::move(promise));
337
359
  }
338
360
 
339
361
  auto PullServerInitialMetadata() {
340
- DCHECK_NE(spine_.get(), nullptr);
362
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
341
363
  return spine_->PullServerInitialMetadata();
342
364
  }
343
365
 
344
366
  auto PushMessage(MessageHandle message) {
345
- DCHECK_NE(spine_.get(), nullptr);
367
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
346
368
  return spine_->PushClientToServerMessage(std::move(message));
347
369
  }
348
370
 
349
371
  void SpawnPushMessage(MessageHandle message) {
350
- DCHECK_NE(spine_.get(), nullptr);
372
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
351
373
  spine_->SpawnPushClientToServerMessage(std::move(message));
352
374
  }
353
375
 
354
376
  void FinishSends() {
355
- DCHECK_NE(spine_.get(), nullptr);
377
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
356
378
  spine_->FinishSends();
357
379
  }
358
380
 
359
381
  void SpawnFinishSends() {
360
- DCHECK_NE(spine_.get(), nullptr);
382
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
361
383
  spine_->SpawnFinishSends();
362
384
  }
363
385
 
364
386
  auto PullMessage() {
365
- DCHECK_NE(spine_.get(), nullptr);
387
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
366
388
  return spine_->PullServerToClientMessage();
367
389
  }
368
390
 
369
391
  auto PullServerTrailingMetadata() {
370
- DCHECK_NE(spine_.get(), nullptr);
392
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
371
393
  return spine_->PullServerTrailingMetadata();
372
394
  }
373
395
 
374
396
  void Cancel(absl::Status error) {
375
- DCHECK_NE(spine_.get(), nullptr);
376
- CHECK(!error.ok());
397
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
398
+ GRPC_CHECK(!error.ok());
377
399
  auto status = ServerMetadataFromStatus(error);
378
400
  status->Set(GrpcCallWasCancelled(), true);
379
401
  spine_->PushServerTrailingMetadata(std::move(status));
380
402
  }
381
403
 
382
404
  void SpawnCancel(absl::Status error) {
383
- DCHECK_NE(spine_.get(), nullptr);
384
- CHECK(!error.ok());
405
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
406
+ GRPC_CHECK(!error.ok());
385
407
  auto status = ServerMetadataFromStatus(error);
386
408
  status->Set(GrpcCallWasCancelled(), true);
387
409
  spine_->SpawnPushServerTrailingMetadata(std::move(status));
388
410
  }
389
411
 
390
412
  void Cancel() {
391
- DCHECK_NE(spine_.get(), nullptr);
413
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
392
414
  spine_->Cancel();
393
415
  }
394
416
 
395
417
  void SpawnCancel() {
396
- DCHECK_NE(spine_.get(), nullptr);
418
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
397
419
  spine_->SpawnCancel();
398
420
  }
399
421
 
400
422
  GRPC_MUST_USE_RESULT bool OnDone(absl::AnyInvocable<void(bool)> fn) {
401
- DCHECK_NE(spine_.get(), nullptr);
423
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
402
424
  return spine_->OnDone(std::move(fn));
403
425
  }
404
426
 
405
427
  template <typename Promise>
406
428
  auto UntilCallCompletes(Promise promise) {
407
- DCHECK_NE(spine_.get(), nullptr);
429
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
408
430
  return spine_->UntilCallCompletes(std::move(promise));
409
431
  }
410
432
 
411
433
  template <typename PromiseFactory>
412
434
  void SpawnGuarded(absl::string_view name, PromiseFactory promise_factory) {
413
- DCHECK_NE(spine_.get(), nullptr);
435
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
414
436
  spine_->SpawnGuarded(name, std::move(promise_factory));
415
437
  }
416
438
 
417
439
  template <typename PromiseFactory>
418
440
  void SpawnGuardedUntilCallCompletes(absl::string_view name,
419
441
  PromiseFactory promise_factory) {
420
- DCHECK_NE(spine_.get(), nullptr);
442
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
421
443
  spine_->SpawnGuardedUntilCallCompletes(name, std::move(promise_factory));
422
444
  }
423
445
 
424
446
  template <typename PromiseFactory>
425
447
  void SpawnInfallible(absl::string_view name, PromiseFactory promise_factory) {
426
- DCHECK_NE(spine_.get(), nullptr);
448
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
427
449
  spine_->SpawnInfallible(name, std::move(promise_factory));
428
450
  }
429
451
 
430
452
  template <typename PromiseFactory>
431
453
  auto SpawnWaitable(absl::string_view name, PromiseFactory promise_factory) {
432
- DCHECK_NE(spine_.get(), nullptr);
454
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
433
455
  return spine_->SpawnWaitable(name, std::move(promise_factory));
434
456
  }
435
457
 
436
458
  bool WasCancelledPushed() const {
437
- DCHECK_NE(spine_.get(), nullptr);
459
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
438
460
  return spine_->call_filters().WasCancelledPushed();
439
461
  }
440
462
 
441
463
  Arena* arena() {
442
- DCHECK_NE(spine_.get(), nullptr);
464
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
443
465
  return spine_->arena();
444
466
  }
445
467
  Party* party() {
446
- DCHECK_NE(spine_.get(), nullptr);
468
+ GRPC_DCHECK_NE(spine_.get(), nullptr);
447
469
  return spine_.get();
448
470
  }
449
471
 
@@ -535,7 +557,7 @@ class CallHandler {
535
557
  }
536
558
 
537
559
  void AddChildCall(const CallInitiator& initiator) {
538
- CHECK(initiator.spine_ != nullptr);
560
+ GRPC_CHECK(initiator.spine_ != nullptr);
539
561
  spine_->AddChildCall(initiator.spine_);
540
562
  }
541
563
 
@@ -0,0 +1,30 @@
1
+ // Copyright 2025 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_SRC_CORE_CALL_CHANNELZ_CONTEXT_H
16
+ #define GRPC_SRC_CORE_CALL_CHANNELZ_CONTEXT_H
17
+
18
+ #include "src/core/channelz/channelz.h"
19
+ #include "src/core/lib/resource_quota/arena.h"
20
+
21
+ namespace grpc_core {
22
+
23
+ template <>
24
+ struct ArenaContextType<channelz::CallNode> {
25
+ static void Destroy(channelz::CallNode*) {}
26
+ };
27
+
28
+ } // namespace grpc_core
29
+
30
+ #endif // GRPC_SRC_CORE_CALL_CHANNELZ_CONTEXT_H
@@ -39,9 +39,6 @@
39
39
  #include <string>
40
40
  #include <utility>
41
41
 
42
- #include "absl/log/check.h"
43
- #include "absl/status/status.h"
44
- #include "absl/strings/string_view.h"
45
42
  #include "src/core/call/metadata.h"
46
43
  #include "src/core/lib/event_engine/event_engine_context.h"
47
44
  #include "src/core/lib/promise/all_ok.h"
@@ -54,9 +51,12 @@
54
51
  #include "src/core/telemetry/stats_data.h"
55
52
  #include "src/core/util/bitset.h"
56
53
  #include "src/core/util/crash.h"
54
+ #include "src/core/util/grpc_check.h"
57
55
  #include "src/core/util/latent_see.h"
58
56
  #include "src/core/util/ref_counted.h"
59
57
  #include "src/core/util/ref_counted_ptr.h"
58
+ #include "absl/status/status.h"
59
+ #include "absl/strings/string_view.h"
60
60
 
61
61
  namespace grpc_core {
62
62
 
@@ -105,7 +105,7 @@ ClientCall::ClientCall(grpc_call*, uint32_t, grpc_completion_queue* cq,
105
105
  grpc_compression_options compression_options,
106
106
  RefCountedPtr<Arena> arena,
107
107
  RefCountedPtr<UnstartedCallDestination> destination)
108
- : Call(false, deadline, std::move(arena)),
108
+ : Call(/*is_client=*/true, deadline, std::move(arena)),
109
109
  DualRefCounted("ClientCall"),
110
110
  cq_(cq),
111
111
  call_destination_(std::move(destination)),
@@ -120,8 +120,37 @@ ClientCall::ClientCall(grpc_call*, uint32_t, grpc_completion_queue* cq,
120
120
  reinterpret_cast<void*>(static_cast<uintptr_t>(registered_method)));
121
121
  if (deadline != Timestamp::InfFuture()) {
122
122
  send_initial_metadata_->Set(GrpcTimeoutMetadata(), deadline);
123
- UpdateDeadline(deadline);
123
+ UpdateDeadline(deadline).IgnoreError();
124
124
  }
125
+ SourceConstructed();
126
+ }
127
+
128
+ void ClientCall::AddData(channelz::DataSink sink) {
129
+ Call::AddData(sink);
130
+ sink.AddData(
131
+ "client_call",
132
+ channelz::PropertyList()
133
+ .Set("call_state",
134
+ [this]() {
135
+ switch (call_state_.load(std::memory_order_relaxed)) {
136
+ case kUnstarted:
137
+ return "Unstarted";
138
+ case kStarted:
139
+ return "Started";
140
+ case kCancelled:
141
+ return "Cancelled";
142
+ default:
143
+ return "StartedWithoutInitialMetadata";
144
+ }
145
+ }())
146
+ .Set("cancel_status",
147
+ [this]() -> std::string {
148
+ auto* p = cancel_status_.Get();
149
+ if (p == nullptr) return "not cancelled";
150
+ return p->ToString();
151
+ }())
152
+ .Set("saw_trailing_metadata",
153
+ saw_trailing_metadata_.load(std::memory_order_relaxed)));
125
154
  }
126
155
 
127
156
  grpc_call_error ClientCall::StartBatch(const grpc_op* ops, size_t nops,
@@ -228,11 +257,20 @@ Party::WakeupHold ClientCall::StartCall(
228
257
  const grpc_op& send_initial_metadata_op) {
229
258
  GRPC_LATENT_SEE_SCOPE("ClientCall::StartCall");
230
259
  auto cur_state = call_state_.load(std::memory_order_acquire);
260
+ // TODO(akshitpatel): [PH2][P3]: Might need to invoke
261
+ // PrepareApplicationMetadata here.
231
262
  CToMetadata(send_initial_metadata_op.data.send_initial_metadata.metadata,
232
263
  send_initial_metadata_op.data.send_initial_metadata.count,
233
264
  send_initial_metadata_.get());
234
265
  PrepareOutgoingInitialMetadata(send_initial_metadata_op,
235
266
  *send_initial_metadata_);
267
+ send_initial_metadata_->Set(
268
+ WaitForReady(),
269
+ WaitForReady::ValueType{
270
+ (send_initial_metadata_op.flags &
271
+ GRPC_INITIAL_METADATA_WAIT_FOR_READY) != 0,
272
+ (send_initial_metadata_op.flags &
273
+ GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET) != 0});
236
274
  auto call = MakeCallPair(std::move(send_initial_metadata_), arena()->Ref());
237
275
  started_call_initiator_ = std::move(call.initiator);
238
276
  Party::WakeupHold wakeup_hold{started_call_initiator_.party()};
@@ -264,7 +302,7 @@ bool ClientCall::StartCallMaybeUpdateState(uintptr_t& cur_state,
264
302
  std::memory_order_acquire)) {
265
303
  call_destination_->StartCall(std::move(handler));
266
304
  auto unordered_start = reinterpret_cast<UnorderedStart*>(cur_state);
267
- while (unordered_start->next != nullptr) {
305
+ while (unordered_start != nullptr) {
268
306
  unordered_start->start_pending_batch();
269
307
  auto next = unordered_start->next;
270
308
  delete unordered_start;
@@ -376,7 +414,7 @@ void ClientCall::CommitBatch(const grpc_op* ops, size_t nops, void* notify_tag,
376
414
  [this, out_status, out_status_details, out_error_string,
377
415
  out_trailing_metadata]() {
378
416
  auto* status = cancel_status_.Get();
379
- CHECK_NE(status, nullptr);
417
+ GRPC_CHECK_NE(status, nullptr);
380
418
  *out_status = static_cast<grpc_status_code>(status->code());
381
419
  *out_status_details =
382
420
  Slice::FromCopiedString(status->message()).TakeCSlice();
@@ -445,9 +483,10 @@ grpc_call* MakeClientCall(grpc_call* parent_call, uint32_t propagation_mask,
445
483
  grpc_compression_options compression_options,
446
484
  RefCountedPtr<Arena> arena,
447
485
  RefCountedPtr<UnstartedCallDestination> destination) {
448
- DCHECK_NE(arena.get(), nullptr);
449
- DCHECK_NE(arena->GetContext<grpc_event_engine::experimental::EventEngine>(),
450
- nullptr);
486
+ GRPC_DCHECK_NE(arena.get(), nullptr);
487
+ GRPC_DCHECK_NE(
488
+ arena->GetContext<grpc_event_engine::experimental::EventEngine>(),
489
+ nullptr);
451
490
  return arena
452
491
  ->New<ClientCall>(parent_call, propagation_mask, cq, std::move(path),
453
492
  std::move(authority), registered_method, deadline,
@@ -37,9 +37,6 @@
37
37
  #include <cstdint>
38
38
  #include <string>
39
39
 
40
- #include "absl/status/status.h"
41
- #include "absl/strings/str_format.h"
42
- #include "absl/strings/string_view.h"
43
40
  #include "src/core/call/metadata.h"
44
41
  #include "src/core/lib/promise/status_flag.h"
45
42
  #include "src/core/lib/resource_quota/arena.h"
@@ -49,6 +46,9 @@
49
46
  #include "src/core/util/ref_counted.h"
50
47
  #include "src/core/util/ref_counted_ptr.h"
51
48
  #include "src/core/util/single_set_ptr.h"
49
+ #include "absl/status/status.h"
50
+ #include "absl/strings/str_format.h"
51
+ #include "absl/strings/string_view.h"
52
52
 
53
53
  namespace grpc_core {
54
54
 
@@ -78,6 +78,7 @@ class ClientCall final
78
78
  void InternalUnref(const char*) override { WeakUnref(); }
79
79
 
80
80
  void Orphaned() override {
81
+ SourceDestructing();
81
82
  if (!saw_trailing_metadata_.load(std::memory_order_relaxed)) {
82
83
  CancelWithError(absl::CancelledError());
83
84
  }
@@ -118,6 +119,8 @@ class ClientCall final
118
119
  this->~ClientCall();
119
120
  }
120
121
 
122
+ void AddData(channelz::DataSink sink) override;
123
+
121
124
  private:
122
125
  struct UnorderedStart {
123
126
  absl::AnyInvocable<void()> start_pending_batch;
@@ -23,11 +23,6 @@
23
23
  #include <type_traits>
24
24
  #include <utility>
25
25
 
26
- #include "absl/log/check.h"
27
- #include "absl/log/log.h"
28
- #include "absl/memory/memory.h"
29
- #include "absl/status/status.h"
30
- #include "absl/strings/str_join.h"
31
26
  #include "src/core/call/call_filters.h"
32
27
  #include "src/core/call/metadata.h"
33
28
  #include "src/core/lib/channel/channel_args.h"
@@ -35,9 +30,14 @@
35
30
  #include "src/core/lib/promise/promise.h"
36
31
  #include "src/core/lib/transport/call_final_info.h"
37
32
  #include "src/core/lib/transport/transport.h"
33
+ #include "src/core/util/grpc_check.h"
38
34
  #include "src/core/util/manual_constructor.h"
39
35
  #include "src/core/util/status_helper.h"
40
36
  #include "src/core/util/type_list.h"
37
+ #include "absl/log/log.h"
38
+ #include "absl/memory/memory.h"
39
+ #include "absl/status/status.h"
40
+ #include "absl/strings/str_join.h"
41
41
 
42
42
  struct grpc_transport_op;
43
43
 
@@ -1021,14 +1021,14 @@ struct FilterWrapper<Typelist<Filter>> {
1021
1021
 
1022
1022
  absl::Status status() const { return filter_.status(); }
1023
1023
  bool StartTransportOp(grpc_transport_op* op) {
1024
- CHECK(filter_.ok());
1024
+ GRPC_CHECK(filter_.ok());
1025
1025
  return (*filter_)->StartTransportOp(op);
1026
1026
  }
1027
1027
 
1028
1028
  Filter* get_filter() { return (*filter_).get(); }
1029
1029
 
1030
1030
  bool GetChannelInfo(const grpc_channel_info* info) {
1031
- CHECK(filter_.ok());
1031
+ GRPC_CHECK(filter_.ok());
1032
1032
  return (*filter_)->GetChannelInfo(info);
1033
1033
  }
1034
1034
 
@@ -1053,13 +1053,13 @@ struct FilterWrapper<Typelist<Filter0, Filters...>>
1053
1053
  Filter0* get_filter() { return (*filter0_).get(); }
1054
1054
 
1055
1055
  bool StartTransportOp(grpc_transport_op* op) {
1056
- CHECK(filter0_.ok());
1056
+ GRPC_CHECK(filter0_.ok());
1057
1057
  return (*filter0_)->StartTransportOp(op) ||
1058
1058
  FilterWrapper<Typelist<Filters...>>::StartTransportOp(op);
1059
1059
  }
1060
1060
 
1061
1061
  bool GetChannelInfo(const grpc_channel_info* info) {
1062
- CHECK(filter0_.ok());
1062
+ GRPC_CHECK(filter0_.ok());
1063
1063
  return (*filter0_)->GetChannelInfo(info) ||
1064
1064
  FilterWrapper<Typelist<Filters...>>::GetChannelInfo(info);
1065
1065
  }
@@ -24,6 +24,7 @@
24
24
  #include "src/core/call/call_filters.h"
25
25
  #include "src/core/call/call_spine.h"
26
26
  #include "src/core/call/metadata.h"
27
+ #include "src/core/filter/filter_args.h"
27
28
  #include "src/core/util/ref_counted.h"
28
29
 
29
30
  namespace grpc_core {
@@ -171,10 +172,10 @@ class InterceptionChainBuilder final {
171
172
  // call_filters.h.
172
173
  template <typename T>
173
174
  absl::enable_if_t<sizeof(typename T::Call) != 0, InterceptionChainBuilder&>
174
- Add() {
175
+ Add(RefCountedPtr<const FilterConfig> config) {
175
176
  if (!status_.ok()) return *this;
176
- auto filter =
177
- T::Create(args_, {FilterInstanceId(FilterTypeId<T>()), blackboard_});
177
+ auto filter = T::Create(args_, {FilterInstanceId(FilterTypeId<T>()),
178
+ std::move(config), blackboard_});
178
179
  if (!filter.ok()) {
179
180
  status_ = filter.status();
180
181
  return *this;
@@ -189,9 +190,9 @@ class InterceptionChainBuilder final {
189
190
  template <typename T>
190
191
  absl::enable_if_t<std::is_base_of<Interceptor, T>::value,
191
192
  InterceptionChainBuilder&>
192
- Add() {
193
- AddInterceptor(
194
- T::Create(args_, {FilterInstanceId(FilterTypeId<T>()), blackboard_}));
193
+ Add(RefCountedPtr<const FilterConfig> config) {
194
+ AddInterceptor(T::Create(args_, {FilterInstanceId(FilterTypeId<T>()),
195
+ std::move(config), blackboard_}));
195
196
  return *this;
196
197
  };
197
198
 
@@ -20,15 +20,60 @@
20
20
  #include <algorithm>
21
21
  #include <string>
22
22
 
23
- #include "absl/base/no_destructor.h"
24
- #include "absl/container/flat_hash_set.h"
23
+ #include "src/core/lib/transport/timeout_encoding.h"
25
24
  #include "absl/strings/escaping.h"
26
25
  #include "absl/strings/match.h"
27
26
  #include "absl/strings/str_cat.h"
28
27
  #include "absl/strings/str_format.h"
29
- #include "src/core/lib/transport/timeout_encoding.h"
30
28
 
31
29
  namespace grpc_core {
30
+
31
+ bool IsMetadataKeyAllowedInDebugOutput(absl::string_view key) {
32
+ // We have intentionally not allowed for any way to add to the allow list at
33
+ // run time, (using a flag or some other setting) because such workarounds
34
+ // may lead to security issues.
35
+ // go/keep-sorted start
36
+ if (key == ContentTypeMetadata::key()) return true;
37
+ if (key == EndpointLoadMetricsBinMetadata::key()) return true;
38
+ if (key == GrpcAcceptEncodingMetadata::key()) return true;
39
+ if (key == GrpcEncodingMetadata::key()) return true;
40
+ if (key == GrpcInternalEncodingRequest::key()) return true;
41
+ if (key == GrpcLbClientStatsMetadata::key()) return true;
42
+ if (key == GrpcMessageMetadata::key()) return true;
43
+ if (key == GrpcPreviousRpcAttemptsMetadata::key()) return true;
44
+ if (key == GrpcRetryPushbackMsMetadata::key()) return true;
45
+ if (key == GrpcServerStatsBinMetadata::key()) return true;
46
+ if (key == GrpcStatusMetadata::key()) return true;
47
+ if (key == GrpcTagsBinMetadata::key()) return true;
48
+ if (key == GrpcTimeoutMetadata::key()) return true;
49
+ if (key == GrpcTraceBinMetadata::key()) return true;
50
+ if (key == HostMetadata::key()) return true;
51
+ if (key == HttpAuthorityMetadata::key()) return true;
52
+ if (key == HttpMethodMetadata::key()) return true;
53
+ if (key == HttpPathMetadata::key()) return true;
54
+ if (key == HttpSchemeMetadata::key()) return true;
55
+ if (key == HttpStatusMetadata::key()) return true;
56
+ if (key == LbCostBinMetadata::key()) return true;
57
+ if (key == LbTokenMetadata::key()) return true;
58
+ if (key == TeMetadata::key()) return true;
59
+ if (key == UserAgentMetadata::key()) return true;
60
+ if (key == W3CTraceParentMetadata::key()) return true;
61
+ if (key == XEnvoyPeerMetadata::key()) return true;
62
+ // go/keep-sorted end
63
+ // go/keep-sorted start
64
+ if (key == GrpcCallWasCancelled::DebugKey()) return true;
65
+ if (key == GrpcRegisteredMethod::DebugKey()) return true;
66
+ if (key == GrpcStatusContext::DebugKey()) return true;
67
+ if (key == GrpcStatusFromWire::DebugKey()) return true;
68
+ if (key == GrpcStreamNetworkState::DebugKey()) return true;
69
+ if (key == GrpcTarPit::DebugKey()) return true;
70
+ if (key == GrpcTrailersOnly::DebugKey()) return true;
71
+ if (key == PeerString::DebugKey()) return true;
72
+ if (key == WaitForReady::DebugKey()) return true;
73
+ // go/keep-sorted end
74
+ return false;
75
+ }
76
+
32
77
  namespace metadata_detail {
33
78
 
34
79
  void DebugStringBuilder::Add(absl::string_view key, absl::string_view value) {
@@ -38,7 +83,7 @@ void DebugStringBuilder::Add(absl::string_view key, absl::string_view value) {
38
83
 
39
84
  void DebugStringBuilder::AddAfterRedaction(absl::string_view key,
40
85
  absl::string_view value) {
41
- if (IsAllowListed(key)) {
86
+ if (IsMetadataKeyAllowedInDebugOutput(key)) {
42
87
  Add(key, value);
43
88
  } else {
44
89
  // If the type of metadata is not in the allow list, we want to prevent it
@@ -51,57 +96,6 @@ void DebugStringBuilder::AddAfterRedaction(absl::string_view key,
51
96
  }
52
97
  }
53
98
 
54
- bool DebugStringBuilder::IsAllowListed(const absl::string_view key) const {
55
- // We have intentionally not allowed for any way to add to the allow list at
56
- // run time, (using a flag or some other setting) because such workarounds
57
- // may lead to security issues.
58
- static const absl::NoDestructor<absl::flat_hash_set<std::string>> allow_list(
59
- [] {
60
- absl::flat_hash_set<std::string> allow_list;
61
- // go/keep-sorted start
62
- allow_list.insert(std::string(ContentTypeMetadata::key()));
63
- allow_list.insert(std::string(EndpointLoadMetricsBinMetadata::key()));
64
- allow_list.insert(std::string(GrpcAcceptEncodingMetadata::key()));
65
- allow_list.insert(std::string(GrpcEncodingMetadata::key()));
66
- allow_list.insert(std::string(GrpcInternalEncodingRequest::key()));
67
- allow_list.insert(std::string(GrpcLbClientStatsMetadata::key()));
68
- allow_list.insert(std::string(GrpcMessageMetadata::key()));
69
- allow_list.insert(std::string(GrpcPreviousRpcAttemptsMetadata::key()));
70
- allow_list.insert(std::string(GrpcRetryPushbackMsMetadata::key()));
71
- allow_list.insert(std::string(GrpcServerStatsBinMetadata::key()));
72
- allow_list.insert(std::string(GrpcStatusMetadata::key()));
73
- allow_list.insert(std::string(GrpcTagsBinMetadata::key()));
74
- allow_list.insert(std::string(GrpcTimeoutMetadata::key()));
75
- allow_list.insert(std::string(GrpcTraceBinMetadata::key()));
76
- allow_list.insert(std::string(HostMetadata::key()));
77
- allow_list.insert(std::string(HttpAuthorityMetadata::key()));
78
- allow_list.insert(std::string(HttpMethodMetadata::key()));
79
- allow_list.insert(std::string(HttpPathMetadata::key()));
80
- allow_list.insert(std::string(HttpSchemeMetadata::key()));
81
- allow_list.insert(std::string(HttpStatusMetadata::key()));
82
- allow_list.insert(std::string(LbCostBinMetadata::key()));
83
- allow_list.insert(std::string(LbTokenMetadata::key()));
84
- allow_list.insert(std::string(TeMetadata::key()));
85
- allow_list.insert(std::string(UserAgentMetadata::key()));
86
- allow_list.insert(std::string(W3CTraceParentMetadata::key()));
87
- allow_list.insert(std::string(XEnvoyPeerMetadata::key()));
88
- // go/keep-sorted end
89
- // go/keep-sorted start
90
- allow_list.insert(std::string(GrpcCallWasCancelled::DebugKey()));
91
- allow_list.insert(std::string(GrpcRegisteredMethod::DebugKey()));
92
- allow_list.insert(std::string(GrpcStatusContext::DebugKey()));
93
- allow_list.insert(std::string(GrpcStatusFromWire::DebugKey()));
94
- allow_list.insert(std::string(GrpcStreamNetworkState::DebugKey()));
95
- allow_list.insert(std::string(GrpcTarPit::DebugKey()));
96
- allow_list.insert(std::string(GrpcTrailersOnly::DebugKey()));
97
- allow_list.insert(std::string(PeerString::DebugKey()));
98
- allow_list.insert(std::string(WaitForReady::DebugKey()));
99
- // go/keep-sorted end
100
- return allow_list;
101
- }());
102
- return allow_list->contains(key);
103
- }
104
-
105
99
  void UnknownMap::Append(absl::string_view key, Slice value) {
106
100
  unknown_.emplace_back(Slice::FromCopiedString(key), value.Ref());
107
101
  }