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
@@ -50,12 +50,9 @@
50
50
 
51
51
  #include <string>
52
52
 
53
- #include "absl/log/check.h"
54
- #include "absl/log/log.h"
55
- #include "absl/strings/str_cat.h"
56
- #include "absl/strings/str_format.h"
57
53
  #include "src/core/lib/address_utils/sockaddr_utils.h"
58
54
  #include "src/core/lib/event_engine/default_event_engine.h"
55
+ #include "src/core/lib/event_engine/extensions/supports_fd.h"
59
56
  #include "src/core/lib/event_engine/memory_allocator_factory.h"
60
57
  #include "src/core/lib/event_engine/posix_engine/posix_endpoint.h"
61
58
  #include "src/core/lib/event_engine/query_extensions.h"
@@ -74,7 +71,11 @@
74
71
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
75
72
  #include "src/core/lib/iomgr/vsock.h"
76
73
  #include "src/core/lib/transport/error_utils.h"
74
+ #include "src/core/util/grpc_check.h"
77
75
  #include "src/core/util/strerror.h"
76
+ #include "absl/log/log.h"
77
+ #include "absl/strings/str_cat.h"
78
+ #include "absl/strings/str_format.h"
78
79
 
79
80
  static std::atomic<int64_t> num_dropped_connections{0};
80
81
  static constexpr grpc_core::Duration kRetryAcceptWaitTime{
@@ -89,7 +90,13 @@ using ::grpc_event_engine::experimental::SliceBuffer;
89
90
 
90
91
  static void finish_shutdown(grpc_tcp_server* s) {
91
92
  gpr_mu_lock(&s->mu);
92
- CHECK(s->shutdown);
93
+ GRPC_CHECK(s->shutdown);
94
+ if (grpc_core::ExecCtx::Get() == nullptr) {
95
+ grpc_core::ExecCtx exec_ctx;
96
+ grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_ending);
97
+ } else {
98
+ grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_ending);
99
+ }
93
100
  gpr_mu_unlock(&s->mu);
94
101
  if (s->shutdown_complete != nullptr) {
95
102
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, s->shutdown_complete,
@@ -157,10 +164,17 @@ static grpc_error_handle CreateEventEngineListener(
157
164
  addr.len =
158
165
  static_cast<socklen_t>(sizeof(struct sockaddr_storage));
159
166
  // Get the fd of the socket connected to peer.
160
- int fd =
161
- reinterpret_cast<
162
- grpc_event_engine::experimental::PosixEndpoint*>(ep.get())
163
- ->GetWrappedFd();
167
+ auto* supports_fd =
168
+ grpc_event_engine::experimental::QueryExtension<
169
+ grpc_event_engine::experimental::
170
+ EndpointSupportsFdExtension>(ep.get());
171
+ if (supports_fd == nullptr) {
172
+ LOG(ERROR)
173
+ << "SERVER_CONNECT ERROR: unsupported endpoint created. "
174
+ "Endpoint doesn't support file descriptor extension. ";
175
+ return;
176
+ }
177
+ int fd = supports_fd->GetWrappedFd();
164
178
  if (getpeername(fd, reinterpret_cast<struct sockaddr*>(addr.addr),
165
179
  &(addr.len)) < 0) {
166
180
  LOG(ERROR) << "Failed getpeername: "
@@ -230,7 +244,7 @@ static grpc_error_handle CreateEventEngineListener(
230
244
  listener = engine->CreateListener(
231
245
  std::move(accept_cb),
232
246
  [s, ee = keeper, shutdown_complete](absl::Status status) {
233
- CHECK_EQ(gpr_atm_no_barrier_load(&s->refs.count), 0);
247
+ GRPC_CHECK_EQ(gpr_atm_no_barrier_load(&s->refs.count), 0);
234
248
  grpc_event_engine::experimental::RunEventEngineClosure(
235
249
  shutdown_complete, absl_status_to_grpc_error(status));
236
250
  finish_shutdown(s);
@@ -271,6 +285,8 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
271
285
  s->shutdown = false;
272
286
  s->shutdown_starting.head = nullptr;
273
287
  s->shutdown_starting.tail = nullptr;
288
+ s->shutdown_ending.head = nullptr;
289
+ s->shutdown_ending.tail = nullptr;
274
290
  if (!grpc_event_engine::experimental::UseEventEngineListener()) {
275
291
  s->shutdown_complete = shutdown_complete;
276
292
  } else {
@@ -283,8 +299,8 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
283
299
  s->nports = 0;
284
300
  s->options = ::TcpOptionsFromEndpointConfig(config);
285
301
  s->fd_handler = nullptr;
286
- CHECK(s->options.resource_quota != nullptr);
287
- CHECK(s->on_accept_cb);
302
+ GRPC_CHECK(s->options.resource_quota != nullptr);
303
+ GRPC_CHECK(s->on_accept_cb);
288
304
  s->memory_quota = s->options.resource_quota->memory_quota();
289
305
  s->pre_allocated_fd = -1;
290
306
  gpr_atm_no_barrier_store(&s->next_pollset_to_assign, 0);
@@ -306,7 +322,7 @@ static void destroyed_port(void* server, grpc_error_handle /*error*/) {
306
322
  gpr_mu_unlock(&s->mu);
307
323
  finish_shutdown(s);
308
324
  } else {
309
- CHECK(s->destroyed_ports < s->nports);
325
+ GRPC_CHECK(s->destroyed_ports < s->nports);
310
326
  gpr_mu_unlock(&s->mu);
311
327
  }
312
328
  }
@@ -318,7 +334,7 @@ static void deactivated_all_ports(grpc_tcp_server* s) {
318
334
  // delete ALL the things
319
335
  gpr_mu_lock(&s->mu);
320
336
 
321
- CHECK(s->shutdown);
337
+ GRPC_CHECK(s->shutdown);
322
338
 
323
339
  if (s->head) {
324
340
  grpc_tcp_listener* sp;
@@ -347,7 +363,7 @@ static void deactivated_all_ports(grpc_tcp_server* s) {
347
363
 
348
364
  static void tcp_server_destroy(grpc_tcp_server* s) {
349
365
  gpr_mu_lock(&s->mu);
350
- CHECK(!s->shutdown);
366
+ GRPC_CHECK(!s->shutdown);
351
367
  s->shutdown = true;
352
368
  // shutdown all fd's
353
369
  if (s->active_ports) {
@@ -413,7 +429,8 @@ static void on_read(void* arg, grpc_error_handle err) {
413
429
  goto error;
414
430
  }
415
431
 
416
- if (sp->server->memory_quota->IsMemoryPressureHigh()) {
432
+ if (sp->server->memory_quota
433
+ ->RejectNewConnectionsUnderHighMemoryPressure()) {
417
434
  int64_t dropped_connections_count =
418
435
  num_dropped_connections.fetch_add(1, std::memory_order_relaxed) + 1;
419
436
  if (dropped_connections_count % 1000 == 1) {
@@ -550,8 +567,8 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
550
567
  } else {
551
568
  grpc_error_handle root_err =
552
569
  GRPC_ERROR_CREATE("Failed to add any wildcard listeners");
553
- CHECK(!v6_err.ok());
554
- CHECK(!v4_err.ok());
570
+ GRPC_CHECK(!v6_err.ok());
571
+ GRPC_CHECK(!v4_err.ok());
555
572
  root_err = grpc_error_add_child(root_err, v6_err);
556
573
  root_err = grpc_error_add_child(root_err, v4_err);
557
574
  return root_err;
@@ -602,7 +619,7 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
602
619
  sp->port = port;
603
620
  sp->port_index = listener->port_index;
604
621
  sp->fd_index = listener->fd_index + count - i;
605
- CHECK(sp->emfd);
622
+ GRPC_CHECK(sp->emfd);
606
623
  grpc_tcp_server_listener_initialize_retry_timer(sp);
607
624
  while (listener->server->tail->next != nullptr) {
608
625
  listener->server->tail = listener->server->tail->next;
@@ -634,7 +651,7 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
634
651
  if (!listen_fd.ok()) {
635
652
  return;
636
653
  }
637
- DCHECK_GT(*listen_fd, 0);
654
+ GRPC_DCHECK_GT(*listen_fd, 0);
638
655
  s->listen_fd_to_index_map.insert_or_assign(
639
656
  *listen_fd, std::tuple(s->n_bind_ports, fd_index++));
640
657
  });
@@ -649,7 +666,7 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
649
666
  gpr_mu_unlock(&s->mu);
650
667
  return port.status();
651
668
  }
652
- CHECK(addr->len <= GRPC_MAX_SOCKADDR_SIZE);
669
+ GRPC_CHECK(addr->len <= GRPC_MAX_SOCKADDR_SIZE);
653
670
  grpc_tcp_listener* sp;
654
671
  grpc_resolved_address sockname_temp;
655
672
  grpc_resolved_address addr6_v4mapped;
@@ -777,12 +794,12 @@ static void tcp_server_start(grpc_tcp_server* s,
777
794
  size_t i;
778
795
  grpc_tcp_listener* sp;
779
796
  gpr_mu_lock(&s->mu);
780
- CHECK(s->on_accept_cb);
781
- CHECK_EQ(s->active_ports, 0u);
797
+ GRPC_CHECK(s->on_accept_cb);
798
+ GRPC_CHECK_EQ(s->active_ports, 0u);
782
799
  s->pollsets = pollsets;
783
800
  if (grpc_event_engine::experimental::UseEventEngineListener()) {
784
- CHECK(!s->shutdown_listeners);
785
- CHECK(GRPC_LOG_IF_ERROR("listener_start", s->ee_listener->Start()));
801
+ GRPC_CHECK(!s->shutdown_listeners);
802
+ GRPC_CHECK(GRPC_LOG_IF_ERROR("listener_start", s->ee_listener->Start()));
786
803
  gpr_mu_unlock(&s->mu);
787
804
  return;
788
805
  }
@@ -790,7 +807,7 @@ static void tcp_server_start(grpc_tcp_server* s,
790
807
  while (sp != nullptr) {
791
808
  if (s->so_reuseport && !grpc_is_unix_socket(&sp->addr) &&
792
809
  !grpc_is_vsock(&sp->addr) && pollsets->size() > 1) {
793
- CHECK(GRPC_LOG_IF_ERROR(
810
+ GRPC_CHECK(GRPC_LOG_IF_ERROR(
794
811
  "clone_port", clone_port(sp, (unsigned)(pollsets->size() - 1))));
795
812
  for (i = 0; i < pollsets->size(); i++) {
796
813
  grpc_pollset_add_fd((*pollsets)[i], sp->emfd);
@@ -827,11 +844,24 @@ static void tcp_server_shutdown_starting_add(grpc_tcp_server* s,
827
844
  gpr_mu_unlock(&s->mu);
828
845
  }
829
846
 
847
+ static void tcp_server_shutdown_ending_add(grpc_tcp_server* s,
848
+ grpc_closure* shutdown_ending) {
849
+ gpr_mu_lock(&s->mu);
850
+ grpc_closure_list_append(&s->shutdown_ending, shutdown_ending,
851
+ absl::OkStatus());
852
+ gpr_mu_unlock(&s->mu);
853
+ }
854
+
830
855
  static void tcp_server_unref(grpc_tcp_server* s) {
831
856
  if (gpr_unref(&s->refs)) {
832
857
  grpc_tcp_server_shutdown_listeners(s);
833
858
  gpr_mu_lock(&s->mu);
834
- grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_starting);
859
+ if (grpc_core::ExecCtx::Get() == nullptr) {
860
+ grpc_core::ExecCtx exec_ctx;
861
+ grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_starting);
862
+ } else {
863
+ grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_starting);
864
+ }
835
865
  gpr_mu_unlock(&s->mu);
836
866
  tcp_server_destroy(s);
837
867
  }
@@ -882,16 +912,16 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
882
912
  grpc_event_engine::experimental::QueryExtension<
883
913
  grpc_event_engine::experimental::ListenerSupportsFdExtension>(
884
914
  s_->ee_listener.get());
885
- CHECK_NE(listener_supports_fd, nullptr);
915
+ GRPC_CHECK_NE(listener_supports_fd, nullptr);
886
916
  grpc_event_engine::experimental::SliceBuffer pending_data;
887
917
  if (buf != nullptr) {
888
918
  pending_data =
889
919
  grpc_event_engine::experimental::SliceBuffer::TakeCSliceBuffer(
890
920
  buf->data.raw.slice_buffer);
891
921
  }
892
- CHECK(GRPC_LOG_IF_ERROR("listener_handle_external_connection",
893
- listener_supports_fd->HandleExternalConnection(
894
- listener_fd, fd, &pending_data)));
922
+ GRPC_LOG_IF_ERROR("listener_handle_external_connection",
923
+ listener_supports_fd->HandleExternalConnection(
924
+ listener_fd, fd, &pending_data));
895
925
  return;
896
926
  }
897
927
  grpc_pollset* read_notifier_pollset;
@@ -960,6 +990,7 @@ grpc_tcp_server_vtable grpc_posix_tcp_server_vtable = {
960
990
  tcp_server_port_fd,
961
991
  tcp_server_ref,
962
992
  tcp_server_shutdown_starting_add,
993
+ tcp_server_shutdown_ending_add,
963
994
  tcp_server_unref,
964
995
  tcp_server_shutdown_listeners,
965
996
  tcp_server_pre_allocated_fd,
@@ -23,7 +23,6 @@
23
23
 
24
24
  #include <memory>
25
25
 
26
- #include "absl/container/flat_hash_map.h"
27
26
  #include "src/core/lib/event_engine/posix.h"
28
27
  #include "src/core/lib/iomgr/ev_posix.h"
29
28
  #include "src/core/lib/iomgr/resolve_address.h"
@@ -31,6 +30,7 @@
31
30
  #include "src/core/lib/iomgr/tcp_server.h"
32
31
  #include "src/core/lib/iomgr/timer.h"
33
32
  #include "src/core/lib/resource_quota/memory_quota.h"
33
+ #include "absl/container/flat_hash_map.h"
34
34
 
35
35
  // one listening port
36
36
  typedef struct grpc_tcp_listener {
@@ -90,6 +90,9 @@ struct grpc_tcp_server {
90
90
  // List of closures passed to shutdown_starting_add().
91
91
  grpc_closure_list shutdown_starting{nullptr, nullptr};
92
92
 
93
+ // List of closures passed to shutdown_ending_add().
94
+ grpc_closure_list shutdown_ending{nullptr, nullptr};
95
+
93
96
  // shutdown callback
94
97
  grpc_closure* shutdown_complete = nullptr;
95
98
 
@@ -33,9 +33,6 @@
33
33
 
34
34
  #include <string>
35
35
 
36
- #include "absl/log/check.h"
37
- #include "absl/log/log.h"
38
- #include "absl/strings/str_cat.h"
39
36
  #include "src/core/lib/address_utils/sockaddr_utils.h"
40
37
  #include "src/core/lib/iomgr/error.h"
41
38
  #include "src/core/lib/iomgr/sockaddr.h"
@@ -43,6 +40,9 @@
43
40
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
44
41
  #include "src/core/lib/iomgr/vsock.h"
45
42
  #include "src/core/util/crash.h"
43
+ #include "src/core/util/grpc_check.h"
44
+ #include "absl/log/log.h"
45
+ #include "absl/strings/str_cat.h"
46
46
 
47
47
  #define MIN_SAFE_ACCEPT_QUEUE_SIZE 100
48
48
 
@@ -109,7 +109,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd,
109
109
  grpc_error_handle err =
110
110
  grpc_tcp_server_prepare_socket(s, fd, addr, s->so_reuseport, &port);
111
111
  if (!err.ok()) return err;
112
- CHECK_GT(port, 0);
112
+ GRPC_CHECK_GT(port, 0);
113
113
  absl::StatusOr<std::string> addr_str = grpc_sockaddr_to_string(addr, true);
114
114
  if (!addr_str.ok()) {
115
115
  return GRPC_ERROR_CREATE(addr_str.status().ToString());
@@ -142,7 +142,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd,
142
142
  sp->fd_index = fd_index;
143
143
  sp->is_sibling = 0;
144
144
  sp->sibling = nullptr;
145
- CHECK(sp->emfd);
145
+ GRPC_CHECK(sp->emfd);
146
146
  gpr_mu_unlock(&s->mu);
147
147
 
148
148
  *listener = sp;
@@ -206,7 +206,7 @@ grpc_error_handle grpc_tcp_server_prepare_socket(
206
206
  grpc_resolved_address sockname_temp;
207
207
  grpc_error_handle err;
208
208
 
209
- CHECK_GE(fd, 0);
209
+ GRPC_CHECK_GE(fd, 0);
210
210
 
211
211
  if (so_reuseport && !grpc_is_unix_socket(addr) && !grpc_is_vsock(addr)) {
212
212
  err = grpc_set_socket_reuse_port(fd, 1);
@@ -269,7 +269,7 @@ grpc_error_handle grpc_tcp_server_prepare_socket(
269
269
  return absl::OkStatus();
270
270
 
271
271
  error:
272
- CHECK(!err.ok());
272
+ GRPC_CHECK(!err.ok());
273
273
  if (fd >= 0) {
274
274
  close(fd);
275
275
  }
@@ -31,14 +31,14 @@
31
31
 
32
32
  #include <string>
33
33
 
34
- #include "absl/log/check.h"
35
- #include "absl/log/log.h"
36
- #include "absl/strings/str_cat.h"
37
34
  #include "src/core/lib/address_utils/sockaddr_utils.h"
38
35
  #include "src/core/lib/iomgr/error.h"
39
36
  #include "src/core/lib/iomgr/sockaddr.h"
40
37
  #include "src/core/lib/iomgr/tcp_server_utils_posix.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_cat.h"
42
42
 
43
43
  // Return the listener in s with address addr or NULL.
44
44
  static grpc_tcp_listener* find_listener_with_addr(grpc_tcp_server* s,
@@ -165,7 +165,7 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
165
165
  err = grpc_error_add_child(root_err, err);
166
166
  break;
167
167
  } else {
168
- CHECK(requested_port == new_sp->port);
168
+ GRPC_CHECK(requested_port == new_sp->port);
169
169
  ++fd_index;
170
170
  if (sp != nullptr) {
171
171
  new_sp->is_sibling = 1;
@@ -35,9 +35,6 @@
35
35
 
36
36
  #include <vector>
37
37
 
38
- #include "absl/log/check.h"
39
- #include "absl/log/log.h"
40
- #include "absl/strings/str_cat.h"
41
38
  #include "src/core/lib/address_utils/sockaddr_utils.h"
42
39
  #include "src/core/lib/event_engine/memory_allocator_factory.h"
43
40
  #include "src/core/lib/event_engine/resolved_address_internal.h"
@@ -58,6 +55,9 @@
58
55
  #include "src/core/lib/resource_quota/resource_quota.h"
59
56
  #include "src/core/lib/slice/slice_internal.h"
60
57
  #include "src/core/util/crash.h"
58
+ #include "src/core/util/grpc_check.h"
59
+ #include "absl/log/log.h"
60
+ #include "absl/strings/str_cat.h"
61
61
 
62
62
  #define MIN_SAFE_ACCEPT_QUEUE_SIZE 100
63
63
 
@@ -123,6 +123,9 @@ struct grpc_tcp_server {
123
123
  // List of closures passed to shutdown_starting_add().
124
124
  grpc_closure_list shutdown_starting;
125
125
 
126
+ // List of closures passed to shutdown_ending_add().
127
+ grpc_closure_list shutdown_ending;
128
+
126
129
  // shutdown callback
127
130
  grpc_closure* shutdown_complete;
128
131
 
@@ -188,6 +191,8 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
188
191
  s->tail = NULL;
189
192
  s->shutdown_starting.head = NULL;
190
193
  s->shutdown_starting.tail = NULL;
194
+ s->shutdown_ending.head = NULL;
195
+ s->shutdown_ending.tail = NULL;
191
196
  s->shutdown_complete = shutdown_complete;
192
197
  new (&s->ee_listener) std::unique_ptr<EventEngine::Listener>(nullptr);
193
198
  *server = s;
@@ -219,6 +224,7 @@ static void finish_shutdown_locked(grpc_tcp_server* s) {
219
224
  absl::OkStatus());
220
225
  }
221
226
 
227
+ grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_ending);
222
228
  grpc_core::ExecCtx::Run(
223
229
  DEBUG_LOCATION,
224
230
  GRPC_CLOSURE_CREATE(destroy_server, s, grpc_schedule_on_exec_ctx),
@@ -238,6 +244,14 @@ static void tcp_server_shutdown_starting_add(grpc_tcp_server* s,
238
244
  gpr_mu_unlock(&s->mu);
239
245
  }
240
246
 
247
+ static void tcp_server_shutdown_ending_add(grpc_tcp_server* s,
248
+ grpc_closure* shutdown_ending) {
249
+ gpr_mu_lock(&s->mu);
250
+ grpc_closure_list_append(&s->shutdown_ending, shutdown_ending,
251
+ absl::OkStatus());
252
+ gpr_mu_unlock(&s->mu);
253
+ }
254
+
241
255
  static void tcp_server_destroy(grpc_tcp_server* s) {
242
256
  grpc_tcp_listener* sp;
243
257
  gpr_mu_lock(&s->mu);
@@ -303,7 +317,7 @@ static grpc_error_handle prepare_socket(SOCKET sock,
303
317
  return absl::OkStatus();
304
318
 
305
319
  failure:
306
- CHECK(!error.ok());
320
+ GRPC_CHECK(!error.ok());
307
321
  error = GRPC_ERROR_CREATE_REFERENCING("Failed to prepare server socket",
308
322
  &error, 1);
309
323
  if (sock != INVALID_SOCKET) closesocket(sock);
@@ -312,7 +326,7 @@ failure:
312
326
 
313
327
  static void decrement_active_ports_and_notify_locked(grpc_tcp_listener* sp) {
314
328
  sp->shutting_down = 0;
315
- CHECK_GT(sp->server->active_ports, 0u);
329
+ GRPC_CHECK_GT(sp->server->active_ports, 0u);
316
330
  if (0 == --sp->server->active_ports) {
317
331
  finish_shutdown_locked(sp->server);
318
332
  }
@@ -370,7 +384,7 @@ static grpc_error_handle start_accept_locked(grpc_tcp_listener* port) {
370
384
  return error;
371
385
 
372
386
  failure:
373
- CHECK(!error.ok());
387
+ GRPC_CHECK(!error.ok());
374
388
  if (sock != INVALID_SOCKET) closesocket(sock);
375
389
  return error;
376
390
  }
@@ -463,7 +477,7 @@ static void on_accept(void* arg, grpc_error_handle error) {
463
477
  // the former socked we created has now either been destroy or assigned
464
478
  // to the new connection. We need to create a new one for the next
465
479
  // connection.
466
- CHECK(GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(sp)));
480
+ GRPC_CHECK(GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(sp)));
467
481
  if (0 == --sp->outstanding_calls) {
468
482
  decrement_active_ports_and_notify_locked(sp);
469
483
  }
@@ -499,7 +513,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, SOCKET sock,
499
513
  return error;
500
514
  }
501
515
 
502
- CHECK_GE(port, 0);
516
+ GRPC_CHECK_GE(port, 0);
503
517
  gpr_mu_lock(&s->mu);
504
518
  sp = (grpc_tcp_listener*)gpr_malloc(sizeof(grpc_tcp_listener));
505
519
  sp->next = NULL;
@@ -519,7 +533,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, SOCKET sock,
519
533
  sp->port = port;
520
534
  sp->port_index = port_index;
521
535
  GRPC_CLOSURE_INIT(&sp->on_accept, on_accept, sp, grpc_schedule_on_exec_ctx);
522
- CHECK(sp->socket);
536
+ GRPC_CHECK(sp->socket);
523
537
  gpr_mu_unlock(&s->mu);
524
538
  *listener = sp;
525
539
 
@@ -596,7 +610,7 @@ done:
596
610
  error = error_out;
597
611
  *port = -1;
598
612
  } else {
599
- CHECK(sp != NULL);
613
+ GRPC_CHECK(sp != NULL);
600
614
  *port = sp->port;
601
615
  }
602
616
  return error;
@@ -606,9 +620,9 @@ static void tcp_server_start(grpc_tcp_server* s,
606
620
  const std::vector<grpc_pollset*>* /*pollsets*/) {
607
621
  grpc_tcp_listener* sp;
608
622
  gpr_mu_lock(&s->mu);
609
- CHECK_EQ(s->active_ports, 0u);
623
+ GRPC_CHECK_EQ(s->active_ports, 0u);
610
624
  for (sp = s->head; sp; sp = sp->next) {
611
- CHECK(GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(sp)));
625
+ GRPC_CHECK(GRPC_LOG_IF_ERROR("start_accept", start_accept_locked(sp)));
612
626
  s->active_ports++;
613
627
  }
614
628
  gpr_mu_unlock(&s->mu);
@@ -637,12 +651,19 @@ static int tcp_pre_allocated_fd(grpc_tcp_server* /* s */) { return -1; }
637
651
  static void tcp_set_pre_allocated_fd(grpc_tcp_server* /* s */, int /* fd */) {}
638
652
 
639
653
  grpc_tcp_server_vtable grpc_windows_tcp_server_vtable = {
640
- tcp_server_create, tcp_server_start,
641
- tcp_server_add_port, tcp_server_create_fd_handler,
642
- tcp_server_port_fd_count, tcp_server_port_fd,
643
- tcp_server_ref, tcp_server_shutdown_starting_add,
644
- tcp_server_unref, tcp_server_shutdown_listeners,
645
- tcp_pre_allocated_fd, tcp_set_pre_allocated_fd};
654
+ tcp_server_create,
655
+ tcp_server_start,
656
+ tcp_server_add_port,
657
+ tcp_server_create_fd_handler,
658
+ tcp_server_port_fd_count,
659
+ tcp_server_port_fd,
660
+ tcp_server_ref,
661
+ tcp_server_shutdown_starting_add,
662
+ tcp_server_shutdown_ending_add,
663
+ tcp_server_unref,
664
+ tcp_server_shutdown_listeners,
665
+ tcp_pre_allocated_fd,
666
+ tcp_set_pre_allocated_fd};
646
667
 
647
668
  // ---- EventEngine shim ------------------------------------------------------
648
669
 
@@ -655,7 +676,7 @@ static grpc_error_handle event_engine_create(grpc_closure* shutdown_complete,
655
676
  grpc_tcp_server** server) {
656
677
  grpc_tcp_server* s = (grpc_tcp_server*)gpr_malloc(sizeof(grpc_tcp_server));
657
678
  new (&s->ee_listener) std::unique_ptr<EventEngine::Listener>(nullptr);
658
- CHECK_NE(on_accept_cb, nullptr);
679
+ GRPC_CHECK_NE(on_accept_cb, nullptr);
659
680
  auto accept_cb = [s, on_accept_cb, on_accept_cb_arg](
660
681
  std::unique_ptr<EventEngine::Endpoint> endpoint,
661
682
  MemoryAllocator memory_allocator) {
@@ -677,7 +698,7 @@ static grpc_error_handle event_engine_create(grpc_closure* shutdown_complete,
677
698
  grpc_core::RefCountedPtr<grpc_core::ResourceQuota> resource_quota;
678
699
  {
679
700
  void* tmp_quota = config.GetVoidPointer(GRPC_ARG_RESOURCE_QUOTA);
680
- CHECK_NE(tmp_quota, nullptr);
701
+ GRPC_CHECK_NE(tmp_quota, nullptr);
681
702
  resource_quota =
682
703
  reinterpret_cast<grpc_core::ResourceQuota*>(tmp_quota)->Ref();
683
704
  }
@@ -685,13 +706,13 @@ static grpc_error_handle event_engine_create(grpc_closure* shutdown_complete,
685
706
  gpr_mu_init(&s->mu);
686
707
  EventEngine* engine = reinterpret_cast<EventEngine*>(
687
708
  config.GetVoidPointer(GRPC_INTERNAL_ARG_EVENT_ENGINE));
688
- CHECK_NE(engine, nullptr);
709
+ GRPC_CHECK_NE(engine, nullptr);
689
710
  auto listener = engine->CreateListener(
690
711
  std::move(accept_cb), std::move(on_shutdown), config,
691
712
  std::make_unique<MemoryQuotaBasedMemoryAllocatorFactory>(
692
713
  resource_quota->memory_quota()));
693
714
  GRPC_RETURN_IF_ERROR(listener.status());
694
- CHECK_NE(listener->get(), nullptr);
715
+ GRPC_CHECK_NE(listener->get(), nullptr);
695
716
  GRPC_TRACE_LOG(event_engine, INFO)
696
717
  << "EventEngine::" << engine << ": created Listener::" << listener->get();
697
718
  s->ee_listener = std::move(*listener);
@@ -706,6 +727,8 @@ static grpc_error_handle event_engine_create(grpc_closure* shutdown_complete,
706
727
  s->tail = nullptr;
707
728
  s->shutdown_starting.head = nullptr;
708
729
  s->shutdown_starting.tail = nullptr;
730
+ s->shutdown_ending.head = nullptr;
731
+ s->shutdown_ending.tail = nullptr;
709
732
  s->shutdown_complete = grpc_core::NewClosure([](absl::Status) {
710
733
  grpc_core::Crash("iomgr shutdown_complete callback should be unused");
711
734
  });
@@ -715,13 +738,13 @@ static grpc_error_handle event_engine_create(grpc_closure* shutdown_complete,
715
738
 
716
739
  static void event_engine_start(grpc_tcp_server* s,
717
740
  const std::vector<grpc_pollset*>* /*pollsets*/) {
718
- CHECK(s->ee_listener->Start().ok());
741
+ GRPC_CHECK(s->ee_listener->Start().ok());
719
742
  }
720
743
 
721
744
  static grpc_error_handle event_engine_add_port(
722
745
  grpc_tcp_server* s, const grpc_resolved_address* addr, int* port) {
723
- CHECK_NE(addr, nullptr);
724
- CHECK_NE(port, nullptr);
746
+ GRPC_CHECK_NE(addr, nullptr);
747
+ GRPC_CHECK_NE(port, nullptr);
725
748
  auto ee_addr = CreateResolvedAddress(*addr);
726
749
  auto out_port = s->ee_listener->Bind(ee_addr);
727
750
  *port = out_port.ok() ? *out_port : -1;
@@ -767,6 +790,7 @@ static void event_engine_unref(grpc_tcp_server* s) {
767
790
  gpr_mu_unlock(&s->mu);
768
791
  gpr_mu_destroy(&s->mu);
769
792
  std::destroy_at(&s->ee_listener);
793
+ grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &s->shutdown_ending);
770
794
  gpr_free(s);
771
795
  }
772
796
  }
@@ -779,14 +803,29 @@ static void event_engine_shutdown_starting_add(
779
803
  gpr_mu_unlock(&s->mu);
780
804
  }
781
805
 
806
+ static void event_engine_shutdown_ending_add(grpc_tcp_server* s,
807
+ grpc_closure* shutdown_ending) {
808
+ gpr_mu_lock(&s->mu);
809
+ grpc_closure_list_append(&s->shutdown_ending, shutdown_ending,
810
+ absl::OkStatus());
811
+ gpr_mu_unlock(&s->mu);
812
+ }
813
+
782
814
  } // namespace
783
815
 
784
816
  grpc_tcp_server_vtable grpc_windows_event_engine_tcp_server_vtable = {
785
- event_engine_create, event_engine_start,
786
- event_engine_add_port, event_engine_create_fd_handler,
787
- event_engine_port_fd_count, event_engine_port_fd,
788
- event_engine_ref, event_engine_shutdown_starting_add,
789
- event_engine_unref, event_engine_shutdown_listeners,
790
- tcp_pre_allocated_fd, tcp_set_pre_allocated_fd};
817
+ event_engine_create,
818
+ event_engine_start,
819
+ event_engine_add_port,
820
+ event_engine_create_fd_handler,
821
+ event_engine_port_fd_count,
822
+ event_engine_port_fd,
823
+ event_engine_ref,
824
+ event_engine_shutdown_starting_add,
825
+ event_engine_shutdown_ending_add,
826
+ event_engine_unref,
827
+ event_engine_shutdown_listeners,
828
+ tcp_pre_allocated_fd,
829
+ tcp_set_pre_allocated_fd};
791
830
 
792
831
  #endif // GRPC_WINSOCK_SOCKET
@@ -27,8 +27,6 @@
27
27
  #include <grpc/support/string_util.h>
28
28
  #include <limits.h>
29
29
 
30
- #include "absl/log/check.h"
31
- #include "absl/log/log.h"
32
30
  #include "src/core/lib/address_utils/sockaddr_utils.h"
33
31
  #include "src/core/lib/iomgr/iocp_windows.h"
34
32
  #include "src/core/lib/iomgr/sockaddr.h"
@@ -40,8 +38,10 @@
40
38
  #include "src/core/lib/slice/slice_internal.h"
41
39
  #include "src/core/lib/slice/slice_string_helpers.h"
42
40
  #include "src/core/util/crash.h"
41
+ #include "src/core/util/grpc_check.h"
43
42
  #include "src/core/util/string.h"
44
43
  #include "src/core/util/useful.h"
44
+ #include "absl/log/log.h"
45
45
 
46
46
  #if defined(__MSYS__) && defined(GPR_ARCH_64)
47
47
  // Nasty workaround for nasty bug when using the 64 bits msys compiler
@@ -182,7 +182,7 @@ static void on_read(void* tcpp, grpc_error_handle error) {
182
182
  grpc_slice_buffer_reset_and_unref(tcp->read_slices);
183
183
  } else {
184
184
  if (info->bytes_transferred != 0 && !tcp->shutting_down) {
185
- CHECK((size_t)info->bytes_transferred <= tcp->read_slices->length);
185
+ GRPC_CHECK((size_t)info->bytes_transferred <= tcp->read_slices->length);
186
186
  if (static_cast<size_t>(info->bytes_transferred) !=
187
187
  tcp->read_slices->length) {
188
188
  grpc_slice_buffer_trim_end(
@@ -191,7 +191,7 @@ static void on_read(void* tcpp, grpc_error_handle error) {
191
191
  static_cast<size_t>(info->bytes_transferred),
192
192
  &tcp->last_read_buffer);
193
193
  }
194
- CHECK((size_t)info->bytes_transferred == tcp->read_slices->length);
194
+ GRPC_CHECK((size_t)info->bytes_transferred == tcp->read_slices->length);
195
195
 
196
196
  if (GRPC_TRACE_FLAG_ENABLED(tcp) && ABSL_VLOG_IS_ON(2)) {
197
197
  size_t i;
@@ -256,7 +256,7 @@ static void win_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
256
256
  GRPC_SLICE_MALLOC(DEFAULT_TARGET_READ_SIZE));
257
257
  }
258
258
 
259
- CHECK(tcp->read_slices->count <= MAX_WSABUF_COUNT);
259
+ GRPC_CHECK(tcp->read_slices->count <= MAX_WSABUF_COUNT);
260
260
  for (i = 0; i < tcp->read_slices->count; i++) {
261
261
  buffers[i].len = (ULONG)GRPC_SLICE_LENGTH(
262
262
  tcp->read_slices->slices[i]); // we know slice size fits in 32bit.
@@ -313,7 +313,7 @@ static void on_write(void* tcpp, grpc_error_handle error) {
313
313
  if (info->wsa_error != 0) {
314
314
  error = GRPC_WSA_ERROR(info->wsa_error, "WSASend");
315
315
  } else {
316
- CHECK(info->bytes_transferred <= tcp->write_slices->length);
316
+ GRPC_CHECK(info->bytes_transferred <= tcp->write_slices->length);
317
317
  }
318
318
  }
319
319
 
@@ -359,7 +359,7 @@ static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
359
359
 
360
360
  tcp->write_cb = cb;
361
361
  tcp->write_slices = slices;
362
- CHECK(tcp->write_slices->count <= UINT_MAX);
362
+ GRPC_CHECK(tcp->write_slices->count <= UINT_MAX);
363
363
  if (tcp->write_slices->count > GPR_ARRAY_SIZE(local_buffers)) {
364
364
  buffers = (WSABUF*)gpr_malloc(sizeof(WSABUF) * tcp->write_slices->count);
365
365
  allocated = buffers;
@@ -367,7 +367,7 @@ static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
367
367
 
368
368
  for (i = 0; i < tcp->write_slices->count; i++) {
369
369
  len = GRPC_SLICE_LENGTH(tcp->write_slices->slices[i]);
370
- CHECK(len <= ULONG_MAX);
370
+ GRPC_CHECK(len <= ULONG_MAX);
371
371
  buffers[i].len = (ULONG)len;
372
372
  buffers[i].buf = (char*)GRPC_SLICE_START_PTR(tcp->write_slices->slices[i]);
373
373
  }