grpc 1.75.0 → 1.78.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (839) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +24 -5
  3. data/include/grpc/credentials.h +27 -6
  4. data/include/grpc/event_engine/memory_allocator.h +2 -0
  5. data/include/grpc/event_engine/memory_request.h +2 -0
  6. data/include/grpc/impl/channel_arg_names.h +5 -0
  7. data/include/grpc/support/metrics.h +7 -1
  8. data/src/core/call/call_filters.cc +5 -5
  9. data/src/core/call/call_filters.h +211 -37
  10. data/src/core/call/call_spine.cc +1 -1
  11. data/src/core/call/call_spine.h +54 -32
  12. data/src/core/call/channelz_context.h +30 -0
  13. data/src/core/call/client_call.cc +49 -10
  14. data/src/core/call/client_call.h +6 -3
  15. data/src/core/call/filter_fusion.h +9 -9
  16. data/src/core/call/interception_chain.h +7 -6
  17. data/src/core/call/metadata_batch.cc +49 -55
  18. data/src/core/call/metadata_batch.h +10 -9
  19. data/src/core/call/metadata_info.cc +1 -1
  20. data/src/core/call/parsed_metadata.h +2 -2
  21. data/src/core/call/request_buffer.cc +1 -1
  22. data/src/core/call/security_context.cc +2 -2
  23. data/src/core/call/security_context.h +1 -1
  24. data/src/core/call/server_call.cc +5 -5
  25. data/src/core/call/server_call.h +6 -4
  26. data/src/core/call/simple_slice_based_metadata.h +1 -1
  27. data/src/core/call/status_util.cc +1 -1
  28. data/src/core/channelz/channel_trace.cc +1 -1
  29. data/src/core/channelz/channel_trace.h +3 -3
  30. data/src/core/channelz/channelz.cc +25 -29
  31. data/src/core/channelz/channelz.h +73 -22
  32. data/src/core/channelz/channelz_registry.cc +2 -2
  33. data/src/core/channelz/channelz_registry.h +53 -2
  34. data/src/core/channelz/property_list.cc +18 -0
  35. data/src/core/channelz/property_list.h +15 -4
  36. data/src/core/channelz/text_encode.cc +66 -0
  37. data/src/core/channelz/text_encode.h +29 -0
  38. data/src/core/channelz/v2tov1/convert.cc +17 -6
  39. data/src/core/channelz/v2tov1/legacy_api.cc +18 -12
  40. data/src/core/channelz/v2tov1/property_list.cc +2 -1
  41. data/src/core/channelz/ztrace_collector.h +260 -87
  42. data/src/core/client_channel/backup_poller.cc +7 -8
  43. data/src/core/client_channel/buffered_call.cc +140 -0
  44. data/src/core/client_channel/buffered_call.h +104 -0
  45. data/src/core/client_channel/client_channel.cc +144 -84
  46. data/src/core/client_channel/client_channel.h +8 -11
  47. data/src/core/client_channel/client_channel_factory.h +1 -1
  48. data/src/core/client_channel/client_channel_filter.cc +424 -686
  49. data/src/core/client_channel/client_channel_filter.h +57 -150
  50. data/src/core/client_channel/client_channel_internal.h +8 -5
  51. data/src/core/client_channel/client_channel_service_config.cc +43 -3
  52. data/src/core/client_channel/client_channel_service_config.h +12 -1
  53. data/src/core/client_channel/config_selector.h +5 -5
  54. data/src/core/client_channel/connector.h +2 -0
  55. data/src/core/client_channel/dynamic_filters.cc +5 -5
  56. data/src/core/client_channel/global_subchannel_pool.cc +0 -37
  57. data/src/core/client_channel/global_subchannel_pool.h +1 -28
  58. data/src/core/client_channel/lb_metadata.h +1 -1
  59. data/src/core/client_channel/load_balanced_call_destination.cc +10 -12
  60. data/src/core/client_channel/load_balanced_call_destination.h +1 -1
  61. data/src/core/client_channel/local_subchannel_pool.cc +4 -4
  62. data/src/core/client_channel/retry_filter.cc +2 -2
  63. data/src/core/client_channel/retry_filter.h +3 -3
  64. data/src/core/client_channel/retry_filter_legacy_call_data.cc +11 -12
  65. data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -8
  66. data/src/core/client_channel/retry_service_config.cc +3 -3
  67. data/src/core/client_channel/retry_service_config.h +1 -1
  68. data/src/core/client_channel/subchannel.cc +114 -25
  69. data/src/core/client_channel/subchannel.h +24 -8
  70. data/src/core/client_channel/subchannel_pool_interface.cc +2 -2
  71. data/src/core/client_channel/subchannel_pool_interface.h +1 -1
  72. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  73. data/src/core/client_channel/subchannel_stream_client.h +3 -3
  74. data/src/core/config/config_vars.cc +38 -3
  75. data/src/core/config/config_vars.h +26 -0
  76. data/src/core/config/core_configuration.cc +5 -5
  77. data/src/core/config/core_configuration.h +8 -8
  78. data/src/core/config/load_config.cc +13 -1
  79. data/src/core/config/load_config.h +2 -0
  80. data/src/core/credentials/call/call_credentials.h +4 -4
  81. data/src/core/credentials/call/call_creds_registry.h +1 -1
  82. data/src/core/credentials/call/call_creds_registry_init.cc +2 -2
  83. data/src/core/credentials/call/call_creds_util.cc +7 -6
  84. data/src/core/credentials/call/composite/composite_call_credentials.cc +6 -6
  85. data/src/core/credentials/call/composite/composite_call_credentials.h +1 -1
  86. data/src/core/credentials/call/external/aws_external_account_credentials.cc +9 -9
  87. data/src/core/credentials/call/external/aws_external_account_credentials.h +1 -1
  88. data/src/core/credentials/call/external/external_account_credentials.cc +12 -12
  89. data/src/core/credentials/call/external/external_account_credentials.h +1 -1
  90. data/src/core/credentials/call/external/file_external_account_credentials.cc +3 -3
  91. data/src/core/credentials/call/external/file_external_account_credentials.h +1 -1
  92. data/src/core/credentials/call/external/url_external_account_credentials.cc +7 -7
  93. data/src/core/credentials/call/external/url_external_account_credentials.h +1 -1
  94. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +24 -71
  95. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +1 -8
  96. data/src/core/credentials/call/iam/iam_credentials.cc +6 -6
  97. data/src/core/credentials/call/iam/iam_credentials.h +1 -1
  98. data/src/core/credentials/call/json_util.cc +1 -1
  99. data/src/core/credentials/call/jwt/json_token.cc +7 -7
  100. data/src/core/credentials/call/jwt/jwt_credentials.cc +5 -5
  101. data/src/core/credentials/call/jwt/jwt_credentials.h +4 -4
  102. data/src/core/credentials/call/jwt/jwt_verifier.cc +19 -18
  103. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +2 -2
  104. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +3 -3
  105. data/src/core/credentials/call/jwt_util.cc +3 -3
  106. data/src/core/credentials/call/jwt_util.h +1 -1
  107. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +49 -72
  108. data/src/core/credentials/call/oauth2/oauth2_credentials.h +3 -9
  109. data/src/core/credentials/call/plugin/plugin_credentials.cc +6 -6
  110. data/src/core/credentials/call/plugin/plugin_credentials.h +2 -2
  111. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +46 -0
  112. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +32 -3
  113. data/src/core/credentials/transport/alts/alts_credentials.cc +5 -5
  114. data/src/core/credentials/transport/alts/alts_security_connector.cc +17 -15
  115. data/src/core/credentials/transport/alts/check_gcp_environment_no_op.cc +1 -1
  116. data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +23 -3
  117. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.cc +10 -1
  118. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +31 -0
  119. data/src/core/credentials/transport/alts/grpc_alts_credentials_server_options.cc +8 -3
  120. data/src/core/credentials/transport/channel_creds_registry.h +1 -1
  121. data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
  122. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +7 -7
  123. data/src/core/credentials/transport/composite/composite_channel_credentials.h +1 -1
  124. data/src/core/credentials/transport/fake/fake_credentials.cc +1 -1
  125. data/src/core/credentials/transport/fake/fake_credentials.h +1 -1
  126. data/src/core/credentials/transport/fake/fake_security_connector.cc +7 -7
  127. data/src/core/credentials/transport/google_default/credentials_generic.cc +2 -2
  128. data/src/core/credentials/transport/google_default/google_default_credentials.cc +83 -39
  129. data/src/core/credentials/transport/google_default/google_default_credentials.h +0 -2
  130. data/src/core/credentials/transport/insecure/insecure_security_connector.cc +3 -3
  131. data/src/core/credentials/transport/insecure/insecure_security_connector.h +2 -2
  132. data/src/core/credentials/transport/local/local_security_connector.cc +13 -13
  133. data/src/core/credentials/transport/security_connector.cc +6 -6
  134. data/src/core/credentials/transport/security_connector.h +2 -2
  135. data/src/core/credentials/transport/ssl/ssl_credentials.cc +13 -13
  136. data/src/core/credentials/transport/ssl/ssl_credentials.h +2 -2
  137. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -8
  138. data/src/core/credentials/transport/tls/certificate_provider_factory.h +1 -1
  139. data/src/core/credentials/transport/tls/certificate_provider_registry.cc +2 -2
  140. data/src/core/credentials/transport/tls/certificate_provider_registry.h +1 -1
  141. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +25 -25
  142. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +2 -2
  143. data/src/core/credentials/transport/tls/grpc_tls_certificate_match.cc +1 -1
  144. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +8 -8
  145. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +5 -5
  146. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  147. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +4 -4
  148. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +18 -18
  149. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +5 -5
  150. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.h +3 -3
  151. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -1
  152. data/src/core/credentials/transport/tls/spiffe_utils.cc +10 -8
  153. data/src/core/credentials/transport/tls/spiffe_utils.h +2 -2
  154. data/src/core/credentials/transport/tls/ssl_utils.cc +18 -13
  155. data/src/core/credentials/transport/tls/ssl_utils.h +2 -2
  156. data/src/core/credentials/transport/tls/tls_credentials.cc +3 -3
  157. data/src/core/credentials/transport/tls/tls_security_connector.cc +15 -15
  158. data/src/core/credentials/transport/tls/tls_security_connector.h +3 -3
  159. data/src/core/credentials/transport/transport_credentials.cc +3 -3
  160. data/src/core/credentials/transport/transport_credentials.h +4 -4
  161. data/src/core/credentials/transport/xds/xds_credentials.cc +5 -5
  162. data/src/core/credentials/transport/xds/xds_credentials.h +1 -1
  163. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +2 -2
  164. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +4 -1
  165. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +6 -4
  166. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -2
  167. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +7 -7
  168. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +6 -3
  169. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +1 -1
  170. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  171. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +6 -3
  172. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +1 -1
  173. data/src/core/ext/filters/http/client/http_client_filter.cc +6 -6
  174. data/src/core/ext/filters/http/client/http_client_filter.h +4 -1
  175. data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
  176. data/src/core/ext/filters/http/client_authority_filter.h +4 -1
  177. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -1
  178. data/src/core/ext/filters/http/message_compress/compression_filter.cc +11 -11
  179. data/src/core/ext/filters/http/message_compress/compression_filter.h +24 -5
  180. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  181. data/src/core/ext/filters/http/server/http_server_filter.h +4 -1
  182. data/src/core/ext/filters/message_size/message_size_filter.cc +2 -2
  183. data/src/core/ext/filters/message_size/message_size_filter.h +8 -2
  184. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
  185. data/src/core/ext/filters/rbac/rbac_filter.h +4 -1
  186. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +3 -3
  187. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  188. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +14 -14
  189. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +13 -2
  190. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +1 -1
  191. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -2
  192. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +58 -44
  193. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -3
  194. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +25 -24
  195. data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -2
  196. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +6 -6
  197. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +6 -6
  198. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +306 -148
  199. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -2
  200. data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -7
  201. data/src/core/ext/transport/chttp2/transport/flow_control.h +223 -83
  202. data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +105 -0
  203. data/src/core/ext/transport/chttp2/transport/frame.cc +175 -27
  204. data/src/core/ext/transport/chttp2/transport/frame.h +58 -10
  205. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
  206. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  207. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +5 -5
  208. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +6 -6
  209. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  210. data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -1
  211. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -15
  212. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
  213. data/src/core/ext/transport/chttp2/transport/goaway.cc +129 -0
  214. data/src/core/ext/transport/chttp2/transport/goaway.h +350 -0
  215. data/src/core/ext/transport/chttp2/transport/header_assembler.h +194 -54
  216. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +3 -3
  217. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -6
  218. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +8 -8
  219. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +3 -3
  220. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +5 -5
  221. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +34 -34
  222. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -7
  223. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +8 -8
  224. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -1
  225. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1475 -632
  226. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +384 -373
  227. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  228. data/src/core/ext/transport/chttp2/transport/http2_settings.h +6 -4
  229. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +4 -3
  230. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +6 -5
  231. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +417 -0
  232. data/src/core/ext/transport/chttp2/transport/http2_status.h +7 -1
  233. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +337 -30
  234. data/src/core/ext/transport/chttp2/transport/http2_transport.h +196 -21
  235. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +172 -72
  236. data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +128 -0
  237. data/src/core/ext/transport/chttp2/transport/internal.h +31 -19
  238. data/src/core/ext/transport/chttp2/transport/keepalive.cc +12 -5
  239. data/src/core/ext/transport/chttp2/transport/keepalive.h +14 -10
  240. data/src/core/ext/transport/chttp2/transport/message_assembler.h +30 -21
  241. data/src/core/ext/transport/chttp2/transport/parsing.cc +25 -23
  242. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
  243. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +3 -3
  244. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +70 -28
  245. data/src/core/ext/transport/chttp2/transport/ping_promise.h +63 -23
  246. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +1 -1
  247. data/src/core/ext/transport/chttp2/transport/security_frame.cc +31 -0
  248. data/src/core/ext/transport/chttp2/transport/security_frame.h +32 -0
  249. data/src/core/ext/transport/chttp2/transport/stream.h +287 -0
  250. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +476 -208
  251. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +8 -8
  252. data/src/core/ext/transport/chttp2/transport/transport_common.cc +17 -1
  253. data/src/core/ext/transport/chttp2/transport/transport_common.h +57 -0
  254. data/src/core/ext/transport/chttp2/transport/varint.h +2 -2
  255. data/src/core/ext/transport/chttp2/transport/writable_streams.h +202 -84
  256. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
  257. data/src/core/ext/transport/chttp2/transport/writing.cc +6 -6
  258. data/src/core/ext/transport/inproc/inproc_transport.cc +9 -3
  259. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +11 -8
  260. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +740 -0
  261. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +218 -0
  262. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +46 -0
  263. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +87 -55
  264. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +23 -21
  265. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.c +80 -0
  266. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.h +47 -0
  267. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.c +129 -0
  268. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.h +72 -0
  269. data/src/core/filter/auth/auth_filters.h +7 -1
  270. data/src/core/filter/auth/client_auth_filter.cc +2 -2
  271. data/src/core/filter/auth/server_auth_filter.cc +5 -5
  272. data/src/core/filter/blackboard.h +2 -2
  273. data/src/core/filter/filter_args.h +40 -2
  274. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +2 -2
  275. data/src/core/handshaker/handshaker.cc +8 -8
  276. data/src/core/handshaker/handshaker.h +2 -2
  277. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +5 -5
  278. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +12 -12
  279. data/src/core/handshaker/http_connect/http_proxy_mapper.h +1 -1
  280. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +1 -1
  281. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +1 -1
  282. data/src/core/handshaker/proxy_mapper.h +1 -1
  283. data/src/core/handshaker/proxy_mapper_registry.h +1 -1
  284. data/src/core/handshaker/security/legacy_secure_endpoint.cc +6 -6
  285. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +38 -15
  286. data/src/core/handshaker/security/secure_endpoint.cc +31 -11
  287. data/src/core/handshaker/security/security_handshaker.cc +11 -8
  288. data/src/core/handshaker/security/security_handshaker.h +1 -1
  289. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +6 -6
  290. data/src/core/lib/address_utils/parse_address.cc +5 -5
  291. data/src/core/lib/address_utils/parse_address.h +2 -2
  292. data/src/core/lib/address_utils/sockaddr_utils.cc +4 -4
  293. data/src/core/lib/address_utils/sockaddr_utils.h +1 -1
  294. data/src/core/lib/channel/channel_args.cc +1 -1
  295. data/src/core/lib/channel/channel_args.h +2 -2
  296. data/src/core/lib/channel/channel_stack.cc +29 -25
  297. data/src/core/lib/channel/channel_stack.h +8 -3
  298. data/src/core/lib/channel/channel_stack_builder.cc +8 -4
  299. data/src/core/lib/channel/channel_stack_builder.h +10 -9
  300. data/src/core/lib/channel/channel_stack_builder_impl.cc +8 -13
  301. data/src/core/lib/channel/channel_stack_builder_impl.h +1 -1
  302. data/src/core/lib/channel/connected_channel.cc +4 -4
  303. data/src/core/lib/channel/promise_based_filter.cc +132 -72
  304. data/src/core/lib/channel/promise_based_filter.h +39 -23
  305. data/src/core/lib/compression/compression_internal.cc +6 -6
  306. data/src/core/lib/compression/compression_internal.h +1 -1
  307. data/src/core/lib/compression/message_compress.cc +8 -8
  308. data/src/core/lib/debug/trace.cc +2 -5
  309. data/src/core/lib/debug/trace.h +10 -0
  310. data/src/core/lib/debug/trace_flags.cc +2 -2
  311. data/src/core/lib/debug/trace_flags.h +1 -1
  312. data/src/core/lib/event_engine/ares_resolver.cc +30 -28
  313. data/src/core/lib/event_engine/ares_resolver.h +4 -4
  314. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -3
  315. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +2 -2
  316. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +1 -1
  317. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +4 -4
  318. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +3 -3
  319. data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -1
  320. data/src/core/lib/event_engine/default_event_engine.cc +1 -1
  321. data/src/core/lib/event_engine/event_engine.cc +1 -1
  322. data/src/core/lib/event_engine/extensions/channelz.h +3 -3
  323. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +1 -1
  324. data/src/core/lib/event_engine/extensions/supports_fd.h +5 -5
  325. data/src/core/lib/event_engine/extensions/tcp_trace.h +8 -1
  326. data/src/core/lib/event_engine/grpc_polled_fd.h +1 -1
  327. data/src/core/lib/event_engine/memory_allocator_factory.h +1 -1
  328. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +12 -12
  329. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +5 -5
  330. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +15 -15
  331. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
  332. data/src/core/lib/event_engine/posix_engine/event_poller.h +2 -2
  333. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
  334. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +1 -1
  335. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +1 -1
  336. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +4 -4
  337. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +1 -1
  338. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +3 -3
  339. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +1 -1
  340. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +3 -3
  341. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +1 -1
  342. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +28 -27
  343. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +17 -17
  344. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +175 -177
  345. data/src/core/lib/event_engine/posix_engine/posix_engine.h +40 -61
  346. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +11 -7
  347. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +4 -4
  348. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +9 -9
  349. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -1
  350. data/src/core/lib/event_engine/posix_engine/posix_interface.h +2 -2
  351. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +5 -5
  352. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +1 -1
  353. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1 -1
  354. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
  355. data/src/core/lib/event_engine/posix_engine/timer.h +1 -1
  356. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -4
  357. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  358. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -2
  359. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +2 -2
  360. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +1 -1
  361. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
  362. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +1 -1
  363. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
  364. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +1 -1
  365. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -2
  366. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +1 -1
  367. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +1 -1
  368. data/src/core/lib/event_engine/resolved_address.cc +3 -3
  369. data/src/core/lib/event_engine/shim.cc +8 -11
  370. data/src/core/lib/event_engine/shim.h +2 -1
  371. data/src/core/lib/event_engine/slice.cc +2 -2
  372. data/src/core/lib/event_engine/tcp_socket_utils.cc +15 -15
  373. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  374. data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
  375. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +11 -11
  376. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -3
  377. data/src/core/lib/event_engine/utils.cc +3 -3
  378. data/src/core/lib/event_engine/utils.h +1 -1
  379. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +32 -32
  380. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +2 -2
  381. data/src/core/lib/event_engine/windows/iocp.cc +11 -11
  382. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  383. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +5 -2
  384. data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
  385. data/src/core/lib/event_engine/windows/win_socket.h +2 -2
  386. data/src/core/lib/event_engine/windows/windows_endpoint.cc +16 -16
  387. data/src/core/lib/event_engine/windows/windows_engine.cc +20 -18
  388. data/src/core/lib/event_engine/windows/windows_engine.h +3 -3
  389. data/src/core/lib/event_engine/windows/windows_listener.cc +10 -10
  390. data/src/core/lib/event_engine/windows/windows_listener.h +2 -2
  391. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -2
  392. data/src/core/lib/experiments/config.cc +4 -4
  393. data/src/core/lib/experiments/experiments.cc +255 -42
  394. data/src/core/lib/experiments/experiments.h +105 -21
  395. data/src/core/lib/iomgr/buffer_list.cc +1 -1
  396. data/src/core/lib/iomgr/call_combiner.cc +4 -4
  397. data/src/core/lib/iomgr/call_combiner.h +2 -2
  398. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  399. data/src/core/lib/iomgr/closure.h +2 -2
  400. data/src/core/lib/iomgr/combiner.cc +2 -2
  401. data/src/core/lib/iomgr/endpoint.h +1 -1
  402. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -7
  403. data/src/core/lib/iomgr/endpoint_pair_posix.cc +6 -6
  404. data/src/core/lib/iomgr/endpoint_pair_windows.cc +16 -15
  405. data/src/core/lib/iomgr/error.cc +1 -1
  406. data/src/core/lib/iomgr/error.h +2 -2
  407. data/src/core/lib/iomgr/error_cfstream.cc +1 -1
  408. data/src/core/lib/iomgr/ev_apple.cc +1 -1
  409. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  410. data/src/core/lib/iomgr/ev_poll_posix.cc +14 -14
  411. data/src/core/lib/iomgr/ev_posix.cc +3 -3
  412. data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -3
  413. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -1
  414. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +10 -9
  415. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -1
  416. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +2 -2
  417. data/src/core/lib/iomgr/exec_ctx.cc +3 -3
  418. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  419. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  420. data/src/core/lib/iomgr/internal_errqueue.cc +1 -1
  421. data/src/core/lib/iomgr/iocp_windows.cc +9 -9
  422. data/src/core/lib/iomgr/iomgr.cc +1 -1
  423. data/src/core/lib/iomgr/iomgr_windows.cc +3 -3
  424. data/src/core/lib/iomgr/lockfree_event.cc +3 -3
  425. data/src/core/lib/iomgr/polling_entity.cc +4 -4
  426. data/src/core/lib/iomgr/resolve_address.cc +1 -1
  427. data/src/core/lib/iomgr/resolve_address.h +2 -2
  428. data/src/core/lib/iomgr/resolve_address_posix.cc +4 -4
  429. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  430. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +1 -1
  431. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -4
  432. data/src/core/lib/iomgr/socket_windows.cc +6 -6
  433. data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -1
  434. data/src/core/lib/iomgr/tcp_client_posix.cc +7 -7
  435. data/src/core/lib/iomgr/tcp_client_windows.cc +4 -4
  436. data/src/core/lib/iomgr/tcp_posix.cc +47 -47
  437. data/src/core/lib/iomgr/tcp_server.cc +5 -0
  438. data/src/core/lib/iomgr/tcp_server.h +7 -0
  439. data/src/core/lib/iomgr/tcp_server_posix.cc +62 -31
  440. data/src/core/lib/iomgr/tcp_server_utils_posix.h +4 -1
  441. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -7
  442. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -4
  443. data/src/core/lib/iomgr/tcp_server_windows.cc +70 -31
  444. data/src/core/lib/iomgr/tcp_windows.cc +8 -8
  445. data/src/core/lib/iomgr/timer_generic.cc +5 -5
  446. data/src/core/lib/iomgr/timer_manager.cc +3 -3
  447. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  448. data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
  449. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -2
  450. data/src/core/lib/iomgr/vsock.cc +1 -1
  451. data/src/core/lib/iomgr/vsock.h +1 -1
  452. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +1 -1
  453. data/src/core/lib/promise/activity.cc +3 -3
  454. data/src/core/lib/promise/activity.h +11 -10
  455. data/src/core/lib/promise/all_ok.h +3 -3
  456. data/src/core/lib/promise/arena_promise.h +47 -6
  457. data/src/core/lib/promise/context.h +3 -3
  458. data/src/core/lib/promise/detail/join_state.h +10 -10
  459. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  460. data/src/core/lib/promise/detail/promise_like.h +1 -1
  461. data/src/core/lib/promise/detail/seq_state.h +16 -16
  462. data/src/core/lib/promise/detail/status.h +2 -2
  463. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +1 -1
  464. data/src/core/lib/promise/for_each.h +8 -8
  465. data/src/core/lib/promise/if.h +1 -1
  466. data/src/core/lib/promise/inter_activity_latch.h +3 -3
  467. data/src/core/lib/promise/inter_activity_mutex.h +1 -1
  468. data/src/core/lib/promise/interceptor_list.h +5 -5
  469. data/src/core/lib/promise/latch.h +9 -9
  470. data/src/core/lib/promise/loop.h +2 -2
  471. data/src/core/lib/promise/map.h +2 -2
  472. data/src/core/lib/promise/mpsc.cc +31 -30
  473. data/src/core/lib/promise/mpsc.h +2 -2
  474. data/src/core/lib/promise/observable.h +6 -6
  475. data/src/core/lib/promise/party.cc +43 -30
  476. data/src/core/lib/promise/party.h +27 -23
  477. data/src/core/lib/promise/pipe.h +31 -17
  478. data/src/core/lib/promise/poll.h +6 -5
  479. data/src/core/lib/promise/promise.h +2 -4
  480. data/src/core/lib/promise/sleep.cc +3 -1
  481. data/src/core/lib/promise/sleep.h +1 -1
  482. data/src/core/lib/promise/status_flag.h +8 -8
  483. data/src/core/lib/promise/try_join.h +5 -5
  484. data/src/core/lib/promise/try_seq.h +5 -5
  485. data/src/core/lib/promise/wait_set.h +2 -2
  486. data/src/core/lib/resource_quota/api.cc +1 -1
  487. data/src/core/lib/resource_quota/arena.cc +1 -1
  488. data/src/core/lib/resource_quota/arena.h +15 -2
  489. data/src/core/lib/resource_quota/connection_quota.cc +9 -7
  490. data/src/core/lib/resource_quota/connection_quota.h +1 -1
  491. data/src/core/lib/resource_quota/memory_quota.cc +48 -27
  492. data/src/core/lib/resource_quota/memory_quota.h +56 -20
  493. data/src/core/lib/resource_quota/periodic_update.h +1 -1
  494. data/src/core/lib/resource_quota/resource_quota.cc +8 -0
  495. data/src/core/lib/resource_quota/resource_quota.h +2 -1
  496. data/src/core/lib/resource_quota/stream_quota.cc +22 -0
  497. data/src/core/lib/resource_quota/stream_quota.h +31 -0
  498. data/src/core/lib/resource_quota/telemetry.h +55 -0
  499. data/src/core/lib/resource_quota/thread_quota.cc +2 -2
  500. data/src/core/lib/resource_quota/thread_quota.h +1 -1
  501. data/src/core/lib/resource_tracker/resource_tracker.cc +33 -0
  502. data/src/core/lib/resource_tracker/resource_tracker.h +46 -0
  503. data/src/core/lib/security/authorization/audit_logging.cc +7 -7
  504. data/src/core/lib/security/authorization/audit_logging.h +1 -1
  505. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  506. data/src/core/lib/security/authorization/evaluate_args.cc +5 -5
  507. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  508. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -2
  509. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -3
  510. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +4 -1
  511. data/src/core/lib/security/authorization/matchers.cc +2 -2
  512. data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
  513. data/src/core/lib/slice/percent_encoding.cc +1 -1
  514. data/src/core/lib/slice/slice.cc +1 -1
  515. data/src/core/lib/slice/slice.h +2 -2
  516. data/src/core/lib/slice/slice_buffer.cc +1 -1
  517. data/src/core/lib/slice/slice_internal.h +1 -1
  518. data/src/core/lib/surface/byte_buffer_reader.cc +2 -2
  519. data/src/core/lib/surface/call.cc +58 -28
  520. data/src/core/lib/surface/call.h +13 -6
  521. data/src/core/lib/surface/call_log_batch.cc +2 -2
  522. data/src/core/lib/surface/call_utils.cc +7 -7
  523. data/src/core/lib/surface/call_utils.h +85 -20
  524. data/src/core/lib/surface/channel.cc +6 -5
  525. data/src/core/lib/surface/channel.h +13 -3
  526. data/src/core/lib/surface/channel_create.cc +12 -8
  527. data/src/core/lib/surface/channel_create.h +1 -1
  528. data/src/core/lib/surface/channel_init.cc +84 -27
  529. data/src/core/lib/surface/channel_init.h +30 -13
  530. data/src/core/lib/surface/completion_queue.cc +21 -20
  531. data/src/core/lib/surface/completion_queue_factory.cc +7 -7
  532. data/src/core/lib/surface/connection_context.h +45 -2
  533. data/src/core/lib/surface/filter_stack_call.cc +25 -31
  534. data/src/core/lib/surface/filter_stack_call.h +6 -7
  535. data/src/core/lib/surface/init.cc +4 -4
  536. data/src/core/lib/surface/lame_client.cc +2 -2
  537. data/src/core/lib/surface/lame_client.h +3 -3
  538. data/src/core/lib/surface/legacy_channel.cc +10 -10
  539. data/src/core/lib/surface/legacy_channel.h +1 -1
  540. data/src/core/lib/surface/validate_metadata.cc +2 -2
  541. data/src/core/lib/surface/validate_metadata.h +3 -3
  542. data/src/core/lib/surface/version.cc +2 -2
  543. data/src/core/lib/transport/bdp_estimator.cc +2 -2
  544. data/src/core/lib/transport/bdp_estimator.h +5 -5
  545. data/src/core/lib/transport/connectivity_state.cc +1 -1
  546. data/src/core/lib/transport/connectivity_state.h +2 -2
  547. data/src/core/lib/transport/error_utils.h +1 -1
  548. data/src/core/lib/transport/promise_endpoint.cc +4 -4
  549. data/src/core/lib/transport/promise_endpoint.h +11 -11
  550. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  551. data/src/core/lib/transport/transport.cc +3 -3
  552. data/src/core/lib/transport/transport.h +62 -4
  553. data/src/core/lib/transport/transport_framing_endpoint_extension.h +1 -1
  554. data/src/core/lib/transport/transport_op_string.cc +2 -2
  555. data/src/core/load_balancing/address_filtering.cc +1 -1
  556. data/src/core/load_balancing/address_filtering.h +2 -2
  557. data/src/core/load_balancing/backend_metric_parser.cc +1 -1
  558. data/src/core/load_balancing/backend_metric_parser.h +1 -1
  559. data/src/core/load_balancing/child_policy_handler.cc +8 -8
  560. data/src/core/load_balancing/child_policy_handler.h +2 -2
  561. data/src/core/load_balancing/delegating_helper.h +2 -2
  562. data/src/core/load_balancing/endpoint_list.cc +6 -6
  563. data/src/core/load_balancing/endpoint_list.h +2 -2
  564. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +7 -5
  565. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +5 -1
  566. data/src/core/load_balancing/grpclb/grpclb.cc +37 -48
  567. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +2 -2
  568. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  569. data/src/core/load_balancing/grpclb/load_balancer_api.h +1 -1
  570. data/src/core/load_balancing/health_check_client.cc +13 -9
  571. data/src/core/load_balancing/health_check_client_internal.h +5 -5
  572. data/src/core/load_balancing/lb_policy.h +11 -8
  573. data/src/core/load_balancing/lb_policy_factory.h +2 -2
  574. data/src/core/load_balancing/lb_policy_registry.cc +3 -3
  575. data/src/core/load_balancing/lb_policy_registry.h +2 -2
  576. data/src/core/load_balancing/oob_backend_metric.cc +11 -7
  577. data/src/core/load_balancing/oob_backend_metric_internal.h +4 -4
  578. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +9 -17
  579. data/src/core/load_balancing/pick_first/pick_first.cc +62 -32
  580. data/src/core/load_balancing/priority/priority.cc +29 -30
  581. data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -11
  582. data/src/core/load_balancing/rls/rls.cc +23 -23
  583. data/src/core/load_balancing/round_robin/round_robin.cc +16 -16
  584. data/src/core/load_balancing/subchannel_interface.h +2 -2
  585. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +3 -3
  586. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +42 -41
  587. data/src/core/load_balancing/weighted_target/weighted_target.cc +14 -14
  588. data/src/core/load_balancing/xds/cds.cc +81 -37
  589. data/src/core/load_balancing/xds/xds_cluster_impl.cc +24 -41
  590. data/src/core/load_balancing/xds/xds_cluster_manager.cc +6 -6
  591. data/src/core/load_balancing/xds/xds_override_host.cc +14 -14
  592. data/src/core/load_balancing/xds/xds_override_host.h +1 -1
  593. data/src/core/load_balancing/xds/xds_wrr_locality.cc +5 -5
  594. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +8 -8
  595. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +1 -1
  596. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  597. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  598. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +35 -35
  599. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +16 -16
  600. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -2
  601. data/src/core/resolver/dns/dns_resolver_plugin.cc +8 -5
  602. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +10 -10
  603. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +1 -1
  604. data/src/core/resolver/dns/event_engine/service_config_helper.cc +2 -2
  605. data/src/core/resolver/dns/native/dns_resolver.cc +7 -7
  606. data/src/core/resolver/endpoint_addresses.cc +6 -6
  607. data/src/core/resolver/endpoint_addresses.h +4 -1
  608. data/src/core/resolver/fake/fake_resolver.cc +3 -3
  609. data/src/core/resolver/fake/fake_resolver.h +3 -3
  610. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +46 -59
  611. data/src/core/resolver/polling_resolver.cc +8 -8
  612. data/src/core/resolver/polling_resolver.h +1 -1
  613. data/src/core/resolver/resolver.h +2 -2
  614. data/src/core/resolver/resolver_factory.h +2 -2
  615. data/src/core/resolver/resolver_registry.cc +5 -4
  616. data/src/core/resolver/resolver_registry.h +1 -1
  617. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +4 -4
  618. data/src/core/resolver/xds/xds_config.cc +1 -1
  619. data/src/core/resolver/xds/xds_config.h +3 -3
  620. data/src/core/resolver/xds/xds_dependency_manager.cc +7 -7
  621. data/src/core/resolver/xds/xds_dependency_manager.h +3 -3
  622. data/src/core/resolver/xds/xds_resolver.cc +25 -22
  623. data/src/core/resolver/xds/xds_resolver_attributes.h +1 -1
  624. data/src/core/server/add_port.cc +2 -2
  625. data/src/core/server/server.cc +47 -43
  626. data/src/core/server/server.h +8 -7
  627. data/src/core/server/server_call_tracer_filter.cc +1 -1
  628. data/src/core/server/server_call_tracer_filter.h +9 -5
  629. data/src/core/server/server_config_selector.h +2 -2
  630. data/src/core/server/server_config_selector_filter.cc +5 -5
  631. data/src/core/server/xds_channel_stack_modifier.cc +3 -2
  632. data/src/core/server/xds_channel_stack_modifier.h +1 -1
  633. data/src/core/server/xds_server_config_fetcher.cc +19 -18
  634. data/src/core/service_config/service_config.h +1 -1
  635. data/src/core/service_config/service_config_channel_arg_filter.h +4 -1
  636. data/src/core/service_config/service_config_impl.cc +3 -3
  637. data/src/core/service_config/service_config_impl.h +4 -4
  638. data/src/core/service_config/service_config_parser.h +1 -1
  639. data/src/core/telemetry/call_tracer.cc +39 -49
  640. data/src/core/telemetry/call_tracer.h +201 -24
  641. data/src/core/telemetry/default_tcp_tracer.h +3 -3
  642. data/src/core/telemetry/histogram.h +205 -0
  643. data/src/core/telemetry/instrument.cc +999 -0
  644. data/src/core/telemetry/instrument.h +1105 -0
  645. data/src/core/telemetry/metrics.cc +15 -5
  646. data/src/core/telemetry/metrics.h +36 -5
  647. data/src/core/telemetry/stats.h +2 -2
  648. data/src/core/telemetry/stats_data.cc +1 -20
  649. data/src/core/telemetry/stats_data.h +2 -21
  650. data/src/core/transport/auth_context.cc +3 -3
  651. data/src/core/transport/auth_context.h +2 -1
  652. data/src/core/transport/auth_context_comparator_registry.h +1 -1
  653. data/src/core/tsi/alts/crypt/aes_gcm.cc +1 -1
  654. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +2 -2
  655. data/src/core/tsi/alts/frame_protector/frame_handler.cc +1 -1
  656. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +81 -48
  657. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -0
  658. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +3 -3
  659. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +46 -36
  660. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +4 -4
  661. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
  662. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +4 -4
  663. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +11 -3
  664. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +10 -0
  665. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +16 -8
  666. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +3 -0
  667. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +18 -5
  668. data/src/core/tsi/fake_transport_security.cc +6 -5
  669. data/src/core/tsi/local_transport_security.cc +1 -1
  670. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  671. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -1
  672. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +10 -10
  673. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +4 -4
  674. data/src/core/tsi/ssl_transport_security.cc +30 -30
  675. data/src/core/tsi/ssl_transport_security.h +1 -1
  676. data/src/core/tsi/ssl_transport_security_utils.cc +10 -10
  677. data/src/core/tsi/ssl_transport_security_utils.h +2 -2
  678. data/src/core/tsi/transport_security_grpc.cc +8 -0
  679. data/src/core/tsi/transport_security_grpc.h +15 -0
  680. data/src/core/util/alloc.cc +1 -1
  681. data/src/core/util/backoff.h +1 -1
  682. data/src/core/util/chunked_vector.h +4 -4
  683. data/src/core/util/crash.h +1 -1
  684. data/src/core/util/dual_ref_counted.h +2 -2
  685. data/src/core/util/event_log.cc +2 -2
  686. data/src/core/util/event_log.h +3 -3
  687. data/src/core/util/gcp_metadata_query.cc +7 -7
  688. data/src/core/util/gcp_metadata_query.h +2 -2
  689. data/src/core/util/glob.cc +2 -0
  690. data/src/core/util/grpc_check.cc +24 -0
  691. data/src/core/util/grpc_check.h +103 -0
  692. data/src/core/util/grpc_if_nametoindex_posix.cc +1 -1
  693. data/src/core/util/grpc_if_nametoindex_unsupported.cc +1 -1
  694. data/src/core/util/http_client/format_request.cc +1 -1
  695. data/src/core/util/http_client/httpcli.cc +6 -6
  696. data/src/core/util/http_client/httpcli.h +4 -4
  697. data/src/core/util/http_client/httpcli_security_connector.cc +4 -4
  698. data/src/core/util/http_client/parser.cc +4 -4
  699. data/src/core/util/json/json_channel_args.h +1 -1
  700. data/src/core/util/json/json_object_loader.h +6 -6
  701. data/src/core/util/json/json_reader.cc +2 -2
  702. data/src/core/util/json/json_reader.h +1 -1
  703. data/src/core/util/json/json_util.h +3 -3
  704. data/src/core/util/json/json_writer.cc +1 -1
  705. data/src/core/util/latent_see.cc +45 -24
  706. data/src/core/util/latent_see.h +199 -28
  707. data/src/core/util/linux/cpu.cc +1 -1
  708. data/src/core/util/load_file.cc +1 -1
  709. data/src/core/util/load_file.h +1 -1
  710. data/src/core/util/log.cc +3 -3
  711. data/src/core/util/lru_cache.h +4 -4
  712. data/src/core/util/matchers.h +1 -1
  713. data/src/core/util/memory_usage.h +17 -1
  714. data/src/core/util/mpscq.h +1 -1
  715. data/src/core/util/notification.h +1 -1
  716. data/src/core/util/posix/cpu.cc +1 -1
  717. data/src/core/util/posix/directory_reader.cc +3 -2
  718. data/src/core/util/posix/stat.cc +2 -2
  719. data/src/core/util/posix/sync.cc +24 -24
  720. data/src/core/util/posix/thd.cc +2 -2
  721. data/src/core/util/posix/tmpfile.cc +2 -2
  722. data/src/core/util/postmortem_emit.cc +52 -0
  723. data/src/core/util/postmortem_emit.h +30 -0
  724. data/src/core/util/ref_counted.h +2 -2
  725. data/src/core/util/ref_counted_ptr.h +6 -1
  726. data/src/core/util/ref_counted_string.h +1 -1
  727. data/src/core/util/single_set_ptr.h +3 -1
  728. data/src/core/util/status_helper.cc +8 -8
  729. data/src/core/util/status_helper.h +1 -1
  730. data/src/core/util/string.cc +2 -2
  731. data/src/core/util/sync_abseil.cc +1 -1
  732. data/src/core/util/table.h +1 -1
  733. data/src/core/util/time.cc +1 -1
  734. data/src/core/util/time_precise.cc +1 -1
  735. data/src/core/util/trie_lookup.h +170 -0
  736. data/src/core/util/unique_ptr_with_bitset.h +5 -5
  737. data/src/core/util/unique_type_name.h +1 -1
  738. data/src/core/util/upb_utils.h +6 -1
  739. data/src/core/util/validation_errors.cc +2 -2
  740. data/src/core/util/validation_errors.h +2 -3
  741. data/src/core/util/wait_for_single_owner.h +2 -2
  742. data/src/core/util/windows/directory_reader.cc +1 -1
  743. data/src/core/util/windows/stat.cc +2 -2
  744. data/src/core/util/windows/thd.cc +2 -2
  745. data/src/core/util/windows/time.cc +1 -1
  746. data/src/core/util/work_serializer.cc +3 -3
  747. data/src/core/util/work_serializer.h +2 -2
  748. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  749. data/src/core/xds/grpc/certificate_provider_store.h +2 -2
  750. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  751. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
  752. data/src/core/xds/grpc/xds_audit_logger_registry.cc +3 -3
  753. data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
  754. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +7 -7
  755. data/src/core/xds/grpc/xds_bootstrap_grpc.h +8 -3
  756. data/src/core/xds/grpc/xds_certificate_provider.cc +4 -4
  757. data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
  758. data/src/core/xds/grpc/xds_client_grpc.cc +39 -20
  759. data/src/core/xds/grpc/xds_client_grpc.h +6 -3
  760. data/src/core/xds/grpc/xds_cluster.cc +2 -2
  761. data/src/core/xds/grpc/xds_cluster.h +1 -1
  762. data/src/core/xds/grpc/xds_cluster_parser.cc +7 -7
  763. data/src/core/xds/grpc/xds_cluster_parser.h +1 -1
  764. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +4 -4
  765. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
  766. data/src/core/xds/grpc/xds_common_types.cc +1 -1
  767. data/src/core/xds/grpc/xds_common_types.h +1 -1
  768. data/src/core/xds/grpc/xds_common_types_parser.cc +5 -5
  769. data/src/core/xds/grpc/xds_endpoint.h +2 -2
  770. data/src/core/xds/grpc/xds_endpoint_parser.cc +7 -7
  771. data/src/core/xds/grpc/xds_endpoint_parser.h +1 -1
  772. data/src/core/xds/grpc/xds_health_status.cc +1 -1
  773. data/src/core/xds/grpc/xds_health_status.h +1 -1
  774. data/src/core/xds/grpc/xds_http_fault_filter.cc +4 -4
  775. data/src/core/xds/grpc/xds_http_fault_filter.h +2 -2
  776. data/src/core/xds/grpc/xds_http_filter.h +3 -3
  777. data/src/core/xds/grpc/xds_http_filter_registry.cc +4 -3
  778. data/src/core/xds/grpc/xds_http_filter_registry.h +2 -2
  779. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +3 -3
  780. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +2 -2
  781. data/src/core/xds/grpc/xds_http_rbac_filter.cc +4 -4
  782. data/src/core/xds/grpc/xds_http_rbac_filter.h +2 -2
  783. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +3 -3
  784. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +2 -2
  785. data/src/core/xds/grpc/xds_lb_policy_registry.cc +1 -1
  786. data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
  787. data/src/core/xds/grpc/xds_listener.cc +2 -2
  788. data/src/core/xds/grpc/xds_listener_parser.cc +9 -9
  789. data/src/core/xds/grpc/xds_listener_parser.h +1 -1
  790. data/src/core/xds/grpc/xds_matcher.cc +277 -0
  791. data/src/core/xds/grpc/xds_matcher.h +432 -0
  792. data/src/core/xds/grpc/xds_matcher_action.cc +47 -0
  793. data/src/core/xds/grpc/xds_matcher_action.h +48 -0
  794. data/src/core/xds/grpc/xds_matcher_context.cc +29 -0
  795. data/src/core/xds/grpc/xds_matcher_context.h +46 -0
  796. data/src/core/xds/grpc/xds_matcher_input.cc +79 -0
  797. data/src/core/xds/grpc/xds_matcher_input.h +105 -0
  798. data/src/core/xds/grpc/xds_matcher_parse.cc +356 -0
  799. data/src/core/xds/grpc/xds_matcher_parse.h +39 -0
  800. data/src/core/xds/grpc/xds_metadata.cc +4 -3
  801. data/src/core/xds/grpc/xds_metadata.h +3 -3
  802. data/src/core/xds/grpc/xds_metadata_parser.cc +2 -2
  803. data/src/core/xds/grpc/xds_route_config.cc +3 -3
  804. data/src/core/xds/grpc/xds_route_config_parser.cc +14 -14
  805. data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
  806. data/src/core/xds/grpc/xds_routing.cc +6 -6
  807. data/src/core/xds/grpc/xds_routing.h +2 -2
  808. data/src/core/xds/grpc/xds_server_grpc.cc +2 -2
  809. data/src/core/xds/grpc/xds_transport_grpc.cc +11 -11
  810. data/src/core/xds/grpc/xds_transport_grpc.h +2 -2
  811. data/src/core/xds/xds_client/lrs_client.cc +9 -9
  812. data/src/core/xds/xds_client/lrs_client.h +4 -4
  813. data/src/core/xds/xds_client/xds_api.h +1 -1
  814. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +1 -1
  815. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +1 -1
  816. data/src/core/xds/xds_client/xds_client.cc +17 -17
  817. data/src/core/xds/xds_client/xds_client.h +5 -5
  818. data/src/core/xds/xds_client/xds_locality.h +2 -2
  819. data/src/core/xds/xds_client/xds_resource_type.h +2 -2
  820. data/src/core/xds/xds_client/xds_resource_type_impl.h +1 -1
  821. data/src/core/xds/xds_client/xds_transport.h +2 -2
  822. data/src/ruby/ext/grpc/extconf.rb +14 -12
  823. data/src/ruby/ext/grpc/rb_call.c +0 -1
  824. data/src/ruby/ext/grpc/rb_channel_args.c +0 -1
  825. data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
  826. data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
  827. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  828. data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
  829. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
  830. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
  831. data/src/ruby/lib/grpc/grpc.rb +7 -9
  832. data/src/ruby/lib/grpc/version.rb +1 -1
  833. data/src/ruby/spec/client_server_spec.rb +1 -1
  834. data/src/ruby/spec/generic/rpc_server_pool_spec.rb +1 -1
  835. data/src/ruby/spec/generic/rpc_server_spec.rb +3 -4
  836. data/src/ruby/spec/spec_helper.rb +1 -1
  837. data/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
  838. data/third_party/abseil-cpp/absl/container/node_hash_map.h +687 -0
  839. metadata +67 -8
@@ -29,7 +29,6 @@
29
29
 
30
30
  #include <string>
31
31
 
32
- #include "absl/strings/str_format.h"
33
32
  #include "src/core/lib/address_utils/sockaddr_utils.h"
34
33
  #include "src/core/lib/event_engine/default_event_engine.h"
35
34
  #include "src/core/lib/iomgr/block_annotate.h"
@@ -43,6 +42,7 @@
43
42
  #include "src/core/util/host_port.h"
44
43
  #include "src/core/util/string.h"
45
44
  #include "src/core/util/thd.h"
45
+ #include "absl/strings/str_format.h"
46
46
 
47
47
  namespace grpc_core {
48
48
 
@@ -39,9 +39,9 @@
39
39
 
40
40
  #include <string>
41
41
 
42
- #include "absl/log/check.h"
43
42
  #include "src/core/lib/iomgr/sockaddr.h"
44
43
  #include "src/core/util/crash.h"
44
+ #include "absl/log/check.h"
45
45
 
46
46
  uint16_t grpc_htons(uint16_t hostshort) { return htons(hostshort); }
47
47
 
@@ -46,15 +46,15 @@
46
46
 
47
47
  #include <string>
48
48
 
49
- #include "absl/log/check.h"
50
- #include "absl/log/log.h"
51
- #include "absl/strings/str_cat.h"
52
49
  #include "src/core/lib/address_utils/sockaddr_utils.h"
53
50
  #include "src/core/lib/iomgr/sockaddr.h"
54
51
  #include "src/core/lib/iomgr/socket_factory_posix.h"
55
52
  #include "src/core/util/crash.h"
53
+ #include "src/core/util/grpc_check.h"
56
54
  #include "src/core/util/strerror.h"
57
55
  #include "src/core/util/string.h"
56
+ #include "absl/log/log.h"
57
+ #include "absl/strings/str_cat.h"
58
58
 
59
59
  // set a socket to use zerocopy
60
60
  grpc_error_handle grpc_set_socket_zerocopy(int fd) {
@@ -416,7 +416,7 @@ grpc_error_handle grpc_set_socket_tcp_user_timeout(
416
416
  // set a socket using a grpc_socket_mutator
417
417
  grpc_error_handle grpc_set_socket_with_mutator(int fd, grpc_fd_usage usage,
418
418
  grpc_socket_mutator* mutator) {
419
- CHECK(mutator);
419
+ GRPC_CHECK(mutator);
420
420
  if (!grpc_socket_mutator_mutate_fd(mutator, fd, usage)) {
421
421
  return GRPC_ERROR_CREATE("grpc_socket_mutator failed.");
422
422
  }
@@ -29,9 +29,6 @@
29
29
  #include <grpc/support/log_windows.h>
30
30
  #include <mswsock.h>
31
31
 
32
- #include "absl/log/check.h"
33
- #include "absl/log/log.h"
34
- #include "absl/strings/str_format.h"
35
32
  #include "src/core/lib/iomgr/iocp_windows.h"
36
33
  #include "src/core/lib/iomgr/iomgr_internal.h"
37
34
  #include "src/core/lib/iomgr/pollset.h"
@@ -39,6 +36,9 @@
39
36
  #include "src/core/lib/iomgr/sockaddr_windows.h"
40
37
  #include "src/core/lib/iomgr/socket_windows.h"
41
38
  #include "src/core/util/crash.h"
39
+ #include "src/core/util/grpc_check.h"
40
+ #include "absl/log/log.h"
41
+ #include "absl/strings/str_format.h"
42
42
 
43
43
  static DWORD s_wsa_socket_flags;
44
44
 
@@ -157,7 +157,7 @@ void grpc_winsocket_finish(grpc_winsocket* winsocket) {
157
157
 
158
158
  void grpc_winsocket_destroy(grpc_winsocket* winsocket) {
159
159
  gpr_mu_lock(&winsocket->state_mu);
160
- CHECK(!winsocket->destroy_called);
160
+ GRPC_CHECK(!winsocket->destroy_called);
161
161
  winsocket->destroy_called = true;
162
162
  bool should_destroy = check_destroyable(winsocket);
163
163
  gpr_mu_unlock(&winsocket->state_mu);
@@ -172,7 +172,7 @@ void grpc_winsocket_destroy(grpc_winsocket* winsocket) {
172
172
  //-) The IOCP hasn't completed yet, and we're queuing it for later.
173
173
  static void socket_notify_on_iocp(grpc_winsocket* socket, grpc_closure* closure,
174
174
  grpc_winsocket_callback_info* info) {
175
- CHECK(info->closure == NULL);
175
+ GRPC_CHECK(info->closure == NULL);
176
176
  gpr_mu_lock(&socket->state_mu);
177
177
  if (info->has_pending_iocp) {
178
178
  info->has_pending_iocp = 0;
@@ -194,7 +194,7 @@ void grpc_socket_notify_on_read(grpc_winsocket* socket, grpc_closure* closure) {
194
194
 
195
195
  bool grpc_socket_become_ready(grpc_winsocket* socket,
196
196
  grpc_winsocket_callback_info* info) {
197
- CHECK(!info->has_pending_iocp);
197
+ GRPC_CHECK(!info->has_pending_iocp);
198
198
  if (info->closure) {
199
199
  // Only run the closure once at shutdown.
200
200
  if (!info->closure_already_executed_at_shutdown) {
@@ -30,7 +30,6 @@
30
30
  #include <netinet/in.h>
31
31
  #include <string.h>
32
32
 
33
- #include "absl/log/log.h"
34
33
  #include "src/core/lib/address_utils/sockaddr_utils.h"
35
34
  #include "src/core/lib/event_engine/shim.h"
36
35
  #include "src/core/lib/iomgr/cfstream_handle.h"
@@ -43,6 +42,7 @@
43
42
  #include "src/core/lib/iomgr/timer.h"
44
43
  #include "src/core/util/crash.h"
45
44
  #include "src/core/util/host_port.h"
45
+ #include "absl/log/log.h"
46
46
 
47
47
  struct CFStreamConnect {
48
48
  gpr_mu mu;
@@ -32,10 +32,6 @@
32
32
 
33
33
  #include <memory>
34
34
 
35
- #include "absl/container/flat_hash_map.h"
36
- #include "absl/log/check.h"
37
- #include "absl/log/log.h"
38
- #include "absl/strings/str_cat.h"
39
35
  #include "src/core/lib/address_utils/sockaddr_utils.h"
40
36
  #include "src/core/lib/event_engine/resolved_address_internal.h"
41
37
  #include "src/core/lib/event_engine/shim.h"
@@ -53,8 +49,12 @@
53
49
  #include "src/core/lib/slice/slice_internal.h"
54
50
  #include "src/core/net/socket_mutator.h"
55
51
  #include "src/core/util/crash.h"
52
+ #include "src/core/util/grpc_check.h"
56
53
  #include "src/core/util/status_helper.h"
57
54
  #include "src/core/util/string.h"
55
+ #include "absl/container/flat_hash_map.h"
56
+ #include "absl/log/log.h"
57
+ #include "absl/strings/str_cat.h"
58
58
 
59
59
  using ::grpc_event_engine::experimental::EndpointConfig;
60
60
 
@@ -103,7 +103,7 @@ static grpc_error_handle prepare_socket(
103
103
  const grpc_core::PosixTcpOptions& options) {
104
104
  grpc_error_handle err;
105
105
 
106
- CHECK_GE(fd, 0);
106
+ GRPC_CHECK_GE(fd, 0);
107
107
 
108
108
  err = grpc_set_socket_nonblocking(fd, 1);
109
109
  if (!err.ok()) goto error;
@@ -187,7 +187,7 @@ static void on_writable(void* acp, grpc_error_handle error) {
187
187
  << ": on_writable: error=" << grpc_core::StatusToString(error);
188
188
 
189
189
  gpr_mu_lock(&ac->mu);
190
- CHECK(ac->fd);
190
+ GRPC_CHECK(ac->fd);
191
191
  fd = ac->fd;
192
192
  ac->fd = nullptr;
193
193
  bool connect_cancelled = ac->connect_cancelled;
@@ -438,7 +438,7 @@ static bool tcp_cancel_connect(int64_t connection_handle) {
438
438
  auto it = shard->pending_connections.find(connection_handle);
439
439
  if (it != shard->pending_connections.end()) {
440
440
  ac = it->second;
441
- CHECK_NE(ac, nullptr);
441
+ GRPC_CHECK_NE(ac, nullptr);
442
442
  // Trying to acquire ac->mu here would could cause a deadlock because
443
443
  // the on_writable method tries to acquire the two mutexes used
444
444
  // here in the reverse order. But we dont need to acquire ac->mu before
@@ -28,7 +28,6 @@
28
28
  #include <grpc/support/alloc.h>
29
29
  #include <grpc/support/log_windows.h>
30
30
 
31
- #include "absl/log/check.h"
32
31
  #include "src/core/lib/address_utils/sockaddr_utils.h"
33
32
  #include "src/core/lib/event_engine/shim.h"
34
33
  #include "src/core/lib/iomgr/event_engine_shims/tcp_client.h"
@@ -42,6 +41,7 @@
42
41
  #include "src/core/lib/resource_quota/api.h"
43
42
  #include "src/core/lib/slice/slice_internal.h"
44
43
  #include "src/core/util/crash.h"
44
+ #include "src/core/util/grpc_check.h"
45
45
 
46
46
  using ::grpc_event_engine::experimental::EndpointConfig;
47
47
 
@@ -82,7 +82,7 @@ static void on_alarm(void* acp, grpc_error_handle /* error */) {
82
82
  static void on_connect(void* acp, grpc_error_handle error) {
83
83
  async_connect* ac = (async_connect*)acp;
84
84
  grpc_endpoint** ep = ac->endpoint;
85
- CHECK(*ep == NULL);
85
+ GRPC_CHECK(*ep == NULL);
86
86
  grpc_closure* on_done = ac->on_done;
87
87
 
88
88
  gpr_mu_lock(&ac->mu);
@@ -101,7 +101,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
101
101
  BOOL wsa_success =
102
102
  WSAGetOverlappedResult(socket->socket, &socket->write_info.overlapped,
103
103
  &transferred_bytes, FALSE, &flags);
104
- CHECK_EQ(transferred_bytes, 0);
104
+ GRPC_CHECK_EQ(transferred_bytes, 0);
105
105
  if (!wsa_success) {
106
106
  error = GRPC_WSA_ERROR(WSAGetLastError(), "ConnectEx");
107
107
  closesocket(socket->socket);
@@ -242,7 +242,7 @@ static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
242
242
  return 0;
243
243
 
244
244
  failure:
245
- CHECK(!error.ok());
245
+ GRPC_CHECK(!error.ok());
246
246
  grpc_error_handle final_error =
247
247
  GRPC_ERROR_CREATE_REFERENCING("Failed to connect", &error, 1);
248
248
  if (socket != NULL) {
@@ -45,12 +45,6 @@
45
45
  #include <optional>
46
46
  #include <unordered_map>
47
47
 
48
- #include "absl/base/thread_annotations.h"
49
- #include "absl/log/check.h"
50
- #include "absl/log/log.h"
51
- #include "absl/status/status.h"
52
- #include "absl/strings/str_cat.h"
53
- #include "absl/strings/string_view.h"
54
48
  #include "src/core/lib/address_utils/sockaddr_utils.h"
55
49
  #include "src/core/lib/channel/channel_args.h"
56
50
  #include "src/core/lib/debug/trace.h"
@@ -70,10 +64,16 @@
70
64
  #include "src/core/telemetry/stats_data.h"
71
65
  #include "src/core/util/crash.h"
72
66
  #include "src/core/util/event_log.h"
67
+ #include "src/core/util/grpc_check.h"
73
68
  #include "src/core/util/strerror.h"
74
69
  #include "src/core/util/string.h"
75
70
  #include "src/core/util/sync.h"
76
71
  #include "src/core/util/time.h"
72
+ #include "absl/base/thread_annotations.h"
73
+ #include "absl/log/log.h"
74
+ #include "absl/status/status.h"
75
+ #include "absl/strings/str_cat.h"
76
+ #include "absl/strings/string_view.h"
77
77
 
78
78
  #ifndef SOL_TCP
79
79
  #define SOL_TCP IPPROTO_TCP
@@ -155,7 +155,7 @@ class TcpZerocopySendRecord {
155
155
  // sendmsg() failed or when tcp_write() is done.
156
156
  bool Unref() {
157
157
  const intptr_t prior = ref_.fetch_sub(1, std::memory_order_acq_rel);
158
- DCHECK_GT(prior, 0);
158
+ GRPC_DCHECK_GT(prior, 0);
159
159
  if (prior == 1) {
160
160
  AllSendsComplete();
161
161
  return true;
@@ -170,9 +170,9 @@ class TcpZerocopySendRecord {
170
170
  };
171
171
 
172
172
  void AssertEmpty() {
173
- DCHECK_EQ(buf_.count, 0u);
174
- DCHECK_EQ(buf_.length, 0u);
175
- DCHECK_EQ(ref_.load(std::memory_order_relaxed), 0);
173
+ GRPC_DCHECK_EQ(buf_.count, 0u);
174
+ GRPC_DCHECK_EQ(buf_.length, 0u);
175
+ GRPC_DCHECK_EQ(ref_.load(std::memory_order_relaxed), 0);
176
176
  }
177
177
 
178
178
  // When all sendmsg() calls associated with this tcp_write() have been
@@ -180,7 +180,7 @@ class TcpZerocopySendRecord {
180
180
  // for each sendmsg()) and all reference counts have been dropped, drop our
181
181
  // reference to the underlying data since we no longer need it.
182
182
  void AllSendsComplete() {
183
- DCHECK_EQ(ref_.load(std::memory_order_relaxed), 0);
183
+ GRPC_DCHECK_EQ(ref_.load(std::memory_order_relaxed), 0);
184
184
  grpc_slice_buffer_reset_and_unref(&buf_);
185
185
  }
186
186
 
@@ -260,7 +260,7 @@ class TcpZerocopySendCtx {
260
260
  --last_send_;
261
261
  if (ReleaseSendRecord(last_send_)->Unref()) {
262
262
  // We should still be holding the ref taken by tcp_write().
263
- DCHECK(0);
263
+ GRPC_DCHECK(0);
264
264
  }
265
265
  }
266
266
 
@@ -296,8 +296,8 @@ class TcpZerocopySendCtx {
296
296
  // max_sends_ tcp_write() instances with zerocopy enabled in flight at the
297
297
  // same time.
298
298
  void PutSendRecord(TcpZerocopySendRecord* record) {
299
- DCHECK(record >= send_records_);
300
- DCHECK(record < send_records_ + max_sends_);
299
+ GRPC_DCHECK(record >= send_records_);
300
+ GRPC_DCHECK(record < send_records_ + max_sends_);
301
301
  MutexLock guard(&lock_);
302
302
  PutSendRecordLocked(record);
303
303
  }
@@ -316,7 +316,7 @@ class TcpZerocopySendCtx {
316
316
  bool enabled() const { return enabled_; }
317
317
 
318
318
  void set_enabled(bool enabled) {
319
- DCHECK(!enabled || !memory_limited());
319
+ GRPC_DCHECK(!enabled || !memory_limited());
320
320
  enabled_ = enabled;
321
321
  }
322
322
 
@@ -354,7 +354,7 @@ class TcpZerocopySendCtx {
354
354
  zcopy_enobuf_state_ = OMemState::CHECK;
355
355
  return false;
356
356
  }
357
- DCHECK(zcopy_enobuf_state_ != OMemState::CHECK);
357
+ GRPC_DCHECK(zcopy_enobuf_state_ != OMemState::CHECK);
358
358
  if (zcopy_enobuf_state_ == OMemState::FULL) {
359
359
  // A previous sendmsg attempt was blocked by ENOBUFS. Return true to
360
360
  // mark the fd as writable so the next write attempt could be made.
@@ -428,7 +428,7 @@ class TcpZerocopySendCtx {
428
428
 
429
429
  TcpZerocopySendRecord* ReleaseSendRecordLocked(uint32_t seq) {
430
430
  auto iter = ctx_lookup_.find(seq);
431
- DCHECK(iter != ctx_lookup_.end());
431
+ GRPC_DCHECK(iter != ctx_lookup_.end());
432
432
  TcpZerocopySendRecord* record = iter->second;
433
433
  ctx_lookup_.erase(iter);
434
434
  return record;
@@ -446,7 +446,7 @@ class TcpZerocopySendCtx {
446
446
  }
447
447
 
448
448
  void PutSendRecordLocked(TcpZerocopySendRecord* record) {
449
- DCHECK(free_send_records_size_ < max_sends_);
449
+ GRPC_DCHECK(free_send_records_size_ < max_sends_);
450
450
  free_send_records_[free_send_records_size_] = record;
451
451
  free_send_records_size_++;
452
452
  }
@@ -635,7 +635,7 @@ static void run_poller(backup_poller* p) {
635
635
  g_backup_poller_mu->Lock();
636
636
  // last "uncovered" notification is the ref that keeps us polling
637
637
  if (g_uncovered_notifications_pending == 1) {
638
- CHECK(g_backup_poller == p);
638
+ GRPC_CHECK(g_backup_poller == p);
639
639
  g_backup_poller = nullptr;
640
640
  g_uncovered_notifications_pending = 0;
641
641
  g_backup_poller_mu->Unlock();
@@ -660,7 +660,7 @@ static void drop_uncovered(grpc_tcp* /*tcp*/) {
660
660
  p = g_backup_poller;
661
661
  old_count = g_uncovered_notifications_pending--;
662
662
  g_backup_poller_mu->Unlock();
663
- CHECK_GT(old_count, 1);
663
+ GRPC_CHECK_GT(old_count, 1);
664
664
  GRPC_TRACE_LOG(tcp, INFO) << "BACKUP_POLLER:" << p << " uncover cnt "
665
665
  << old_count << "->" << old_count - 1;
666
666
  }
@@ -914,8 +914,8 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
914
914
  iov[i].iov_len = GRPC_SLICE_LENGTH(tcp->incoming_buffer->slices[i]);
915
915
  }
916
916
 
917
- CHECK_NE(tcp->incoming_buffer->length, 0u);
918
- DCHECK_GT(tcp->min_progress_size, 0);
917
+ GRPC_CHECK_NE(tcp->incoming_buffer->length, 0u);
918
+ GRPC_DCHECK_GT(tcp->min_progress_size, 0);
919
919
 
920
920
  do {
921
921
  // Assume there is something on the queue. If we receive TCP_INQ from
@@ -981,12 +981,12 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
981
981
 
982
982
  grpc_core::global_stats().IncrementTcpReadSize(read_bytes);
983
983
  add_to_estimate(tcp, static_cast<size_t>(read_bytes));
984
- DCHECK((size_t)read_bytes <=
985
- tcp->incoming_buffer->length - total_read_bytes);
984
+ GRPC_DCHECK((size_t)read_bytes <=
985
+ tcp->incoming_buffer->length - total_read_bytes);
986
986
 
987
987
  #ifdef GRPC_HAVE_TCP_INQ
988
988
  if (tcp->inq_capable) {
989
- DCHECK(!(msg.msg_flags & MSG_CTRUNC));
989
+ GRPC_DCHECK(!(msg.msg_flags & MSG_CTRUNC));
990
990
  struct cmsghdr* cmsg = CMSG_FIRSTHDR(&msg);
991
991
  for (; cmsg != nullptr; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
992
992
  if (cmsg->cmsg_level == SOL_TCP && cmsg->cmsg_type == TCP_CM_INQ &&
@@ -1029,7 +1029,7 @@ static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
1029
1029
  finish_estimate(tcp);
1030
1030
  }
1031
1031
 
1032
- DCHECK_GT(total_read_bytes, 0u);
1032
+ GRPC_DCHECK_GT(total_read_bytes, 0u);
1033
1033
  *error = absl::OkStatus();
1034
1034
  if (grpc_core::IsTcpFrameSizeTuningEnabled()) {
1035
1035
  // Update min progress size based on the total number of bytes read in
@@ -1146,7 +1146,7 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
1146
1146
  static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
1147
1147
  grpc_closure* cb, bool urgent, int min_progress_size) {
1148
1148
  grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
1149
- CHECK_EQ(tcp->read_cb, nullptr);
1149
+ GRPC_CHECK_EQ(tcp->read_cb, nullptr);
1150
1150
  tcp->read_cb = cb;
1151
1151
  tcp->read_mu.Lock();
1152
1152
  tcp->incoming_buffer = incoming_buffer;
@@ -1228,8 +1228,8 @@ static TcpZerocopySendRecord* tcp_get_send_zerocopy_record(
1228
1228
  }
1229
1229
  if (zerocopy_send_record != nullptr) {
1230
1230
  zerocopy_send_record->PrepareForSends(buf);
1231
- DCHECK_EQ(buf->count, 0u);
1232
- DCHECK_EQ(buf->length, 0u);
1231
+ GRPC_DCHECK_EQ(buf->count, 0u);
1232
+ GRPC_DCHECK_EQ(buf->length, 0u);
1233
1233
  tcp->outgoing_byte_idx = 0;
1234
1234
  tcp->outgoing_buffer = nullptr;
1235
1235
  }
@@ -1290,10 +1290,10 @@ static void UnrefMaybePutZerocopySendRecord(grpc_tcp* tcp,
1290
1290
  uint32_t seq, const char* tag);
1291
1291
  // Reads \a cmsg to process zerocopy control messages.
1292
1292
  static void process_zerocopy(grpc_tcp* tcp, struct cmsghdr* cmsg) {
1293
- DCHECK(cmsg);
1293
+ GRPC_DCHECK(cmsg);
1294
1294
  auto serr = reinterpret_cast<struct sock_extended_err*>(CMSG_DATA(cmsg));
1295
- DCHECK_EQ(serr->ee_errno, 0u);
1296
- DCHECK(serr->ee_origin == SO_EE_ORIGIN_ZEROCOPY);
1295
+ GRPC_DCHECK_EQ(serr->ee_errno, 0u);
1296
+ GRPC_DCHECK(serr->ee_origin == SO_EE_ORIGIN_ZEROCOPY);
1297
1297
  const uint32_t lo = serr->ee_info;
1298
1298
  const uint32_t hi = serr->ee_data;
1299
1299
  for (uint32_t seq = lo; seq <= hi; ++seq) {
@@ -1303,7 +1303,7 @@ static void process_zerocopy(grpc_tcp* tcp, struct cmsghdr* cmsg) {
1303
1303
  // both; if so, batch the unref/put.
1304
1304
  TcpZerocopySendRecord* record =
1305
1305
  tcp->tcp_zerocopy_send_ctx.ReleaseSendRecord(seq);
1306
- DCHECK(record);
1306
+ GRPC_DCHECK(record);
1307
1307
  UnrefMaybePutZerocopySendRecord(tcp, record, seq, "CALLBACK RCVD");
1308
1308
  }
1309
1309
  if (tcp->tcp_zerocopy_send_ctx.UpdateZeroCopyOMemStateAfterFree()) {
@@ -1488,14 +1488,14 @@ static bool tcp_write_with_timestamps(grpc_tcp* /*tcp*/, struct msghdr* /*msg*/,
1488
1488
  int* /* saved_errno */,
1489
1489
  int /*additional_flags*/) {
1490
1490
  LOG(ERROR) << "Write with timestamps not supported for this platform";
1491
- CHECK(0);
1491
+ GRPC_CHECK(0);
1492
1492
  return false;
1493
1493
  }
1494
1494
 
1495
1495
  static void tcp_handle_error(void* /*arg*/ /* grpc_tcp */,
1496
1496
  grpc_error_handle /*error*/) {
1497
1497
  LOG(ERROR) << "Error handling is not supported for this platform";
1498
- CHECK(0);
1498
+ GRPC_CHECK(0);
1499
1499
  }
1500
1500
  #endif // GRPC_LINUX_ERRQUEUE
1501
1501
 
@@ -1534,7 +1534,7 @@ msg_iovlen_type TcpZerocopySendRecord::PopulateIovs(size_t* unwind_slice_idx,
1534
1534
  ++(out_offset_.slice_idx);
1535
1535
  out_offset_.byte_idx = 0;
1536
1536
  }
1537
- DCHECK_GT(iov_size, 0u);
1537
+ GRPC_DCHECK_GT(iov_size, 0u);
1538
1538
  return iov_size;
1539
1539
  }
1540
1540
 
@@ -1685,7 +1685,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
1685
1685
  outgoing_slice_idx++;
1686
1686
  tcp->outgoing_byte_idx = 0;
1687
1687
  }
1688
- CHECK_GT(iov_size, 0u);
1688
+ GRPC_CHECK_GT(iov_size, 0u);
1689
1689
 
1690
1690
  msg.msg_name = nullptr;
1691
1691
  msg.msg_namelen = 0;
@@ -1733,7 +1733,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
1733
1733
  }
1734
1734
  }
1735
1735
 
1736
- CHECK_EQ(tcp->outgoing_byte_idx, 0u);
1736
+ GRPC_CHECK_EQ(tcp->outgoing_byte_idx, 0u);
1737
1737
  grpc_core::EventLog::Append("tcp-write-outstanding", -sent_length);
1738
1738
  tcp->bytes_counter += sent_length;
1739
1739
  trailing = sending_length - static_cast<size_t>(sent_length);
@@ -1783,7 +1783,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
1783
1783
  GRPC_TRACE_LOG(tcp, INFO) << "write: delayed";
1784
1784
  notify_on_write(tcp);
1785
1785
  // tcp_flush does not populate error if it has returned false.
1786
- DCHECK(error.ok());
1786
+ GRPC_DCHECK(error.ok());
1787
1787
  } else {
1788
1788
  cb = tcp->write_cb;
1789
1789
  tcp->write_cb = nullptr;
@@ -1818,8 +1818,8 @@ static void tcp_write(
1818
1818
  }
1819
1819
  }
1820
1820
 
1821
- CHECK_EQ(tcp->write_cb, nullptr);
1822
- DCHECK_EQ(tcp->current_zerocopy_send, nullptr);
1821
+ GRPC_CHECK_EQ(tcp->write_cb, nullptr);
1822
+ GRPC_DCHECK_EQ(tcp->current_zerocopy_send, nullptr);
1823
1823
 
1824
1824
  if (buf->length == 0) {
1825
1825
  grpc_core::Closure::Run(DEBUG_LOCATION, cb,
@@ -1839,7 +1839,7 @@ static void tcp_write(
1839
1839
  tcp->outgoing_buffer_arg =
1840
1840
  args.TakeDeprecatedAndDiscouragedGoogleSpecificPointer();
1841
1841
  if (tcp->outgoing_buffer_arg) {
1842
- CHECK(grpc_event_engine_can_track_errors());
1842
+ GRPC_CHECK(grpc_event_engine_can_track_errors());
1843
1843
  }
1844
1844
 
1845
1845
  bool flush_result =
@@ -1944,10 +1944,10 @@ grpc_endpoint* grpc_tcp_create(
1944
1944
  grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
1945
1945
  const grpc_core::PosixTcpOptions& options,
1946
1946
  absl::string_view peer_string) {
1947
- CHECK(!grpc_event_engine::experimental::UsePollsetAlternative())
1947
+ GRPC_CHECK(!grpc_event_engine::experimental::UsePollsetAlternative())
1948
1948
  << "This function must not be called when the pollset_alternative "
1949
1949
  "experiment is enabled. This is a bug.";
1950
- CHECK(
1950
+ GRPC_CHECK(
1951
1951
  !grpc_core::IsEventEngineForAllOtherEndpointsEnabled() ||
1952
1952
  grpc_event_engine::experimental::EventEngineExperimentDisabledForPython())
1953
1953
  << "The event_engine_for_all_other_endpoints experiment should prevent "
@@ -1956,7 +1956,7 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
1956
1956
  tcp->base.vtable = &vtable;
1957
1957
  tcp->peer_string = std::string(peer_string);
1958
1958
  tcp->fd = grpc_fd_wrapped_fd(em_fd);
1959
- CHECK(options.resource_quota != nullptr);
1959
+ GRPC_CHECK(options.resource_quota != nullptr);
1960
1960
  tcp->memory_owner =
1961
1961
  options.resource_quota->memory_quota()->CreateMemoryOwner();
1962
1962
  tcp->self_reservation = tcp->memory_owner.MakeReservation(sizeof(grpc_tcp));
@@ -2047,7 +2047,7 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
2047
2047
 
2048
2048
  int grpc_tcp_fd(grpc_endpoint* ep) {
2049
2049
  grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
2050
- CHECK(ep->vtable == &vtable);
2050
+ GRPC_CHECK(ep->vtable == &vtable);
2051
2051
  return grpc_fd_wrapped_fd(tcp->em_fd);
2052
2052
  }
2053
2053
 
@@ -2058,7 +2058,7 @@ void grpc_tcp_destroy_and_release_fd(grpc_endpoint* ep, int* fd,
2058
2058
  grpc_event_engine_endpoint_destroy_and_release_fd(ep, fd, done);
2059
2059
  }
2060
2060
  grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
2061
- CHECK(ep->vtable == &vtable);
2061
+ GRPC_CHECK(ep->vtable == &vtable);
2062
2062
  tcp->release_fd = fd;
2063
2063
  tcp->release_fd_cb = done;
2064
2064
  grpc_slice_buffer_reset_and_unref(&tcp->last_read_buffer);
@@ -65,6 +65,11 @@ void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server* s,
65
65
  grpc_tcp_server_impl->shutdown_starting_add(s, shutdown_starting);
66
66
  }
67
67
 
68
+ void grpc_tcp_server_shutdown_ending_add(grpc_tcp_server* s,
69
+ grpc_closure* shutdown_ending) {
70
+ grpc_tcp_server_impl->shutdown_ending_add(s, shutdown_ending);
71
+ }
72
+
68
73
  void grpc_tcp_server_unref(grpc_tcp_server* s) {
69
74
  grpc_tcp_server_impl->unref(s);
70
75
  }
@@ -78,6 +78,8 @@ typedef struct grpc_tcp_server_vtable {
78
78
  grpc_tcp_server* (*ref)(grpc_tcp_server* s);
79
79
  void (*shutdown_starting_add)(grpc_tcp_server* s,
80
80
  grpc_closure* shutdown_starting);
81
+ void (*shutdown_ending_add)(grpc_tcp_server* s,
82
+ grpc_closure* shutdown_ending);
81
83
  void (*unref)(grpc_tcp_server* s);
82
84
  void (*shutdown_listeners)(grpc_tcp_server* s);
83
85
  int (*pre_allocated_fd)(grpc_tcp_server* s);
@@ -135,6 +137,11 @@ grpc_tcp_server* grpc_tcp_server_ref(grpc_tcp_server* s);
135
137
  void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server* s,
136
138
  grpc_closure* shutdown_starting);
137
139
 
140
+ // shutdown_ending is called when ref count has reached zero and the server
141
+ // has just been destroyed. Calling grpc_tcp_server_ref() from it has no effect.
142
+ void grpc_tcp_server_shutdown_ending_add(grpc_tcp_server* s,
143
+ grpc_closure* shutdown_ending);
144
+
138
145
  // If the refcount drops to zero, enqueue calls on exec_ctx to
139
146
  // shutdown_listeners and delete s.
140
147
  void grpc_tcp_server_unref(grpc_tcp_server* s);