grpc 1.75.0.pre1 → 1.76.0.pre1

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 (387) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +18 -5
  3. data/include/grpc/credentials.h +21 -5
  4. data/src/core/call/call_filters.cc +4 -4
  5. data/src/core/call/call_filters.h +36 -36
  6. data/src/core/call/call_spine.h +27 -27
  7. data/src/core/call/client_call.cc +6 -5
  8. data/src/core/call/filter_fusion.h +5 -5
  9. data/src/core/call/metadata_batch.h +3 -3
  10. data/src/core/call/security_context.cc +1 -1
  11. data/src/core/call/server_call.cc +4 -4
  12. data/src/core/call/server_call.h +1 -1
  13. data/src/core/channelz/channelz.cc +12 -18
  14. data/src/core/channelz/channelz.h +32 -16
  15. data/src/core/channelz/channelz_registry.h +11 -0
  16. data/src/core/channelz/property_list.cc +18 -0
  17. data/src/core/channelz/property_list.h +10 -1
  18. data/src/core/channelz/text_encode.cc +66 -0
  19. data/src/core/channelz/text_encode.h +29 -0
  20. data/src/core/channelz/v2tov1/convert.cc +11 -0
  21. data/src/core/channelz/v2tov1/legacy_api.cc +15 -8
  22. data/src/core/channelz/ztrace_collector.h +247 -86
  23. data/src/core/client_channel/backup_poller.cc +5 -6
  24. data/src/core/client_channel/client_channel.cc +20 -13
  25. data/src/core/client_channel/client_channel_filter.cc +53 -45
  26. data/src/core/client_channel/client_channel_filter.h +2 -2
  27. data/src/core/client_channel/client_channel_internal.h +3 -4
  28. data/src/core/client_channel/config_selector.h +3 -3
  29. data/src/core/client_channel/dynamic_filters.cc +3 -3
  30. data/src/core/client_channel/global_subchannel_pool.cc +0 -37
  31. data/src/core/client_channel/global_subchannel_pool.h +0 -27
  32. data/src/core/client_channel/load_balanced_call_destination.cc +7 -7
  33. data/src/core/client_channel/local_subchannel_pool.cc +4 -4
  34. data/src/core/client_channel/retry_filter.h +3 -3
  35. data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
  36. data/src/core/client_channel/subchannel.cc +8 -8
  37. data/src/core/client_channel/subchannel_stream_client.cc +4 -4
  38. data/src/core/config/config_vars.cc +30 -1
  39. data/src/core/config/config_vars.h +21 -0
  40. data/src/core/config/core_configuration.cc +5 -5
  41. data/src/core/config/core_configuration.h +7 -7
  42. data/src/core/config/load_config.cc +12 -0
  43. data/src/core/config/load_config.h +2 -0
  44. data/src/core/credentials/call/call_credentials.h +2 -2
  45. data/src/core/credentials/call/call_creds_util.cc +4 -3
  46. data/src/core/credentials/call/composite/composite_call_credentials.cc +4 -4
  47. data/src/core/credentials/call/external/aws_external_account_credentials.cc +3 -3
  48. data/src/core/credentials/call/external/external_account_credentials.cc +1 -1
  49. data/src/core/credentials/call/external/url_external_account_credentials.cc +1 -1
  50. data/src/core/credentials/call/iam/iam_credentials.cc +4 -4
  51. data/src/core/credentials/call/jwt/json_token.cc +3 -3
  52. data/src/core/credentials/call/jwt/jwt_credentials.cc +2 -2
  53. data/src/core/credentials/call/jwt/jwt_verifier.cc +14 -13
  54. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +20 -12
  55. data/src/core/credentials/call/plugin/plugin_credentials.cc +2 -2
  56. data/src/core/credentials/transport/alts/alts_credentials.cc +4 -4
  57. data/src/core/credentials/transport/alts/alts_security_connector.cc +14 -12
  58. data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +22 -2
  59. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.cc +10 -1
  60. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +31 -0
  61. data/src/core/credentials/transport/alts/grpc_alts_credentials_server_options.cc +8 -3
  62. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +5 -5
  63. data/src/core/credentials/transport/fake/fake_security_connector.cc +2 -2
  64. data/src/core/credentials/transport/google_default/google_default_credentials.cc +78 -28
  65. data/src/core/credentials/transport/insecure/insecure_security_connector.cc +3 -3
  66. data/src/core/credentials/transport/local/local_security_connector.cc +8 -8
  67. data/src/core/credentials/transport/security_connector.cc +5 -5
  68. data/src/core/credentials/transport/ssl/ssl_credentials.cc +12 -12
  69. data/src/core/credentials/transport/ssl/ssl_credentials.h +2 -2
  70. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +3 -3
  71. data/src/core/credentials/transport/tls/certificate_provider_registry.cc +2 -2
  72. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +24 -24
  73. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +5 -5
  74. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +2 -2
  75. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +2 -2
  76. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +2 -2
  77. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +17 -17
  78. data/src/core/credentials/transport/tls/ssl_utils.cc +14 -9
  79. data/src/core/credentials/transport/tls/tls_credentials.cc +2 -2
  80. data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -11
  81. data/src/core/credentials/transport/transport_credentials.cc +2 -2
  82. data/src/core/credentials/transport/transport_credentials.h +2 -2
  83. data/src/core/credentials/transport/xds/xds_credentials.cc +5 -5
  84. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +2 -0
  85. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +1 -1
  86. data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
  87. data/src/core/ext/filters/http/message_compress/compression_filter.h +3 -3
  88. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -7
  89. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -2
  90. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -9
  91. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +10 -7
  92. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
  93. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +6 -6
  94. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +96 -88
  95. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  96. data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -7
  97. data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +60 -0
  98. data/src/core/ext/transport/chttp2/transport/frame.cc +32 -10
  99. data/src/core/ext/transport/chttp2/transport/frame.h +16 -2
  100. data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -2
  101. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -4
  102. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -2
  103. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -2
  104. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +3 -3
  105. data/src/core/ext/transport/chttp2/transport/header_assembler.h +28 -12
  106. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -2
  107. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -2
  108. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +8 -8
  109. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +2 -2
  110. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +2 -2
  111. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +27 -27
  112. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  113. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
  114. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +543 -366
  115. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +198 -277
  116. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +3 -0
  117. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +11 -0
  118. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +179 -0
  119. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +51 -23
  120. data/src/core/ext/transport/chttp2/transport/http2_transport.h +13 -6
  121. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +115 -71
  122. data/src/core/ext/transport/chttp2/transport/internal.h +6 -14
  123. data/src/core/ext/transport/chttp2/transport/message_assembler.h +7 -7
  124. data/src/core/ext/transport/chttp2/transport/parsing.cc +17 -15
  125. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
  126. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +62 -26
  127. data/src/core/ext/transport/chttp2/transport/ping_promise.h +58 -22
  128. data/src/core/ext/transport/chttp2/transport/stream.h +207 -0
  129. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +328 -187
  130. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +7 -7
  131. data/src/core/ext/transport/chttp2/transport/transport_common.cc +17 -1
  132. data/src/core/ext/transport/chttp2/transport/transport_common.h +52 -0
  133. data/src/core/ext/transport/chttp2/transport/varint.h +2 -2
  134. data/src/core/ext/transport/chttp2/transport/writable_streams.h +181 -79
  135. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
  136. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -3
  137. data/src/core/ext/transport/inproc/inproc_transport.cc +1 -1
  138. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +3 -3
  139. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +740 -0
  140. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +218 -0
  141. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +46 -0
  142. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +87 -55
  143. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +23 -21
  144. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.c +80 -0
  145. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.h +47 -0
  146. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.c +129 -0
  147. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.h +72 -0
  148. data/src/core/filter/auth/server_auth_filter.cc +2 -2
  149. data/src/core/handshaker/handshaker.cc +3 -3
  150. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +2 -2
  151. data/src/core/handshaker/security/legacy_secure_endpoint.cc +2 -2
  152. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +31 -8
  153. data/src/core/handshaker/security/secure_endpoint.cc +16 -6
  154. data/src/core/handshaker/security/security_handshaker.cc +3 -3
  155. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -2
  156. data/src/core/lib/channel/channel_stack.cc +8 -5
  157. data/src/core/lib/channel/channel_stack.h +3 -0
  158. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -0
  159. data/src/core/lib/channel/connected_channel.cc +2 -2
  160. data/src/core/lib/channel/promise_based_filter.cc +69 -64
  161. data/src/core/lib/channel/promise_based_filter.h +16 -15
  162. data/src/core/lib/compression/compression_internal.cc +2 -2
  163. data/src/core/lib/compression/message_compress.cc +7 -7
  164. data/src/core/lib/event_engine/ares_resolver.cc +22 -20
  165. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +2 -2
  166. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +2 -2
  167. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -2
  168. data/src/core/lib/event_engine/extensions/channelz.h +2 -2
  169. data/src/core/lib/event_engine/extensions/supports_fd.h +5 -5
  170. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +8 -8
  171. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +10 -10
  172. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +2 -2
  173. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +23 -22
  174. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -11
  175. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +168 -170
  176. data/src/core/lib/event_engine/posix_engine/posix_engine.h +33 -54
  177. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -3
  178. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +5 -5
  179. data/src/core/lib/event_engine/posix_engine/posix_interface.h +1 -1
  180. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1 -1
  181. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +3 -3
  182. data/src/core/lib/event_engine/resolved_address.cc +3 -3
  183. data/src/core/lib/event_engine/shim.cc +8 -11
  184. data/src/core/lib/event_engine/shim.h +2 -1
  185. data/src/core/lib/event_engine/slice.cc +2 -2
  186. data/src/core/lib/event_engine/tcp_socket_utils.cc +11 -11
  187. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +7 -7
  188. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +31 -31
  189. data/src/core/lib/event_engine/windows/iocp.cc +10 -10
  190. data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
  191. data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -11
  192. data/src/core/lib/event_engine/windows/windows_engine.cc +16 -14
  193. data/src/core/lib/event_engine/windows/windows_listener.cc +7 -7
  194. data/src/core/lib/experiments/experiments.cc +105 -18
  195. data/src/core/lib/experiments/experiments.h +43 -11
  196. data/src/core/lib/iomgr/call_combiner.cc +3 -3
  197. data/src/core/lib/iomgr/endpoint_cfstream.cc +6 -6
  198. data/src/core/lib/iomgr/endpoint_pair_posix.cc +5 -5
  199. data/src/core/lib/iomgr/endpoint_pair_windows.cc +15 -14
  200. data/src/core/lib/iomgr/ev_epoll1_linux.cc +15 -15
  201. data/src/core/lib/iomgr/ev_poll_posix.cc +11 -11
  202. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +5 -4
  203. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -1
  204. data/src/core/lib/iomgr/iocp_windows.cc +8 -8
  205. data/src/core/lib/iomgr/iomgr_windows.cc +3 -3
  206. data/src/core/lib/iomgr/lockfree_event.cc +2 -2
  207. data/src/core/lib/iomgr/polling_entity.cc +3 -3
  208. data/src/core/lib/iomgr/socket_utils_common_posix.cc +2 -2
  209. data/src/core/lib/iomgr/socket_windows.cc +4 -4
  210. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -4
  211. data/src/core/lib/iomgr/tcp_client_windows.cc +4 -4
  212. data/src/core/lib/iomgr/tcp_posix.cc +42 -42
  213. data/src/core/lib/iomgr/tcp_server.cc +5 -0
  214. data/src/core/lib/iomgr/tcp_server.h +7 -0
  215. data/src/core/lib/iomgr/tcp_server_posix.cc +47 -27
  216. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
  217. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -5
  218. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
  219. data/src/core/lib/iomgr/tcp_server_windows.cc +68 -29
  220. data/src/core/lib/iomgr/tcp_windows.cc +7 -7
  221. data/src/core/lib/iomgr/timer_generic.cc +2 -2
  222. data/src/core/lib/iomgr/timer_manager.cc +2 -2
  223. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
  224. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -2
  225. data/src/core/lib/promise/activity.cc +2 -2
  226. data/src/core/lib/promise/activity.h +6 -6
  227. data/src/core/lib/promise/context.h +2 -2
  228. data/src/core/lib/promise/detail/join_state.h +9 -9
  229. data/src/core/lib/promise/detail/seq_state.h +13 -13
  230. data/src/core/lib/promise/detail/status.h +2 -2
  231. data/src/core/lib/promise/for_each.h +5 -5
  232. data/src/core/lib/promise/interceptor_list.h +2 -2
  233. data/src/core/lib/promise/latch.h +7 -7
  234. data/src/core/lib/promise/mpsc.cc +26 -26
  235. data/src/core/lib/promise/mpsc.h +2 -2
  236. data/src/core/lib/promise/observable.h +4 -4
  237. data/src/core/lib/promise/party.cc +32 -25
  238. data/src/core/lib/promise/party.h +16 -19
  239. data/src/core/lib/promise/pipe.h +15 -15
  240. data/src/core/lib/promise/poll.h +5 -4
  241. data/src/core/lib/promise/promise.h +0 -2
  242. data/src/core/lib/promise/sleep.cc +3 -1
  243. data/src/core/lib/promise/status_flag.h +7 -7
  244. data/src/core/lib/promise/try_join.h +2 -2
  245. data/src/core/lib/promise/try_seq.h +2 -2
  246. data/src/core/lib/resource_quota/arena.h +15 -2
  247. data/src/core/lib/resource_quota/connection_quota.cc +9 -7
  248. data/src/core/lib/resource_quota/memory_quota.cc +45 -24
  249. data/src/core/lib/resource_quota/memory_quota.h +48 -16
  250. data/src/core/lib/resource_quota/telemetry.h +54 -0
  251. data/src/core/lib/resource_quota/thread_quota.cc +2 -2
  252. data/src/core/lib/resource_tracker/resource_tracker.cc +33 -0
  253. data/src/core/lib/resource_tracker/resource_tracker.h +46 -0
  254. data/src/core/lib/security/authorization/audit_logging.cc +5 -5
  255. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -2
  256. data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
  257. data/src/core/lib/surface/byte_buffer_reader.cc +2 -2
  258. data/src/core/lib/surface/call.cc +16 -14
  259. data/src/core/lib/surface/call.h +1 -1
  260. data/src/core/lib/surface/call_utils.cc +2 -2
  261. data/src/core/lib/surface/call_utils.h +2 -2
  262. data/src/core/lib/surface/channel.cc +4 -4
  263. data/src/core/lib/surface/channel_create.cc +10 -6
  264. data/src/core/lib/surface/channel_init.cc +80 -23
  265. data/src/core/lib/surface/channel_init.h +26 -11
  266. data/src/core/lib/surface/completion_queue.cc +17 -16
  267. data/src/core/lib/surface/completion_queue_factory.cc +7 -7
  268. data/src/core/lib/surface/connection_context.h +45 -2
  269. data/src/core/lib/surface/filter_stack_call.cc +12 -23
  270. data/src/core/lib/surface/filter_stack_call.h +3 -4
  271. data/src/core/lib/surface/legacy_channel.cc +7 -7
  272. data/src/core/lib/surface/validate_metadata.h +2 -2
  273. data/src/core/lib/surface/version.cc +2 -2
  274. data/src/core/lib/transport/bdp_estimator.cc +2 -2
  275. data/src/core/lib/transport/bdp_estimator.h +3 -3
  276. data/src/core/lib/transport/promise_endpoint.cc +3 -3
  277. data/src/core/lib/transport/promise_endpoint.h +8 -8
  278. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  279. data/src/core/load_balancing/child_policy_handler.cc +4 -4
  280. data/src/core/load_balancing/endpoint_list.cc +2 -2
  281. data/src/core/load_balancing/grpclb/grpclb.cc +24 -24
  282. data/src/core/load_balancing/health_check_client.cc +4 -4
  283. data/src/core/load_balancing/health_check_client_internal.h +2 -2
  284. data/src/core/load_balancing/lb_policy_registry.cc +2 -2
  285. data/src/core/load_balancing/oob_backend_metric.cc +4 -4
  286. data/src/core/load_balancing/oob_backend_metric_internal.h +2 -2
  287. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
  288. data/src/core/load_balancing/pick_first/pick_first.cc +14 -14
  289. data/src/core/load_balancing/priority/priority.cc +23 -24
  290. data/src/core/load_balancing/ring_hash/ring_hash.cc +3 -3
  291. data/src/core/load_balancing/rls/rls.cc +13 -13
  292. data/src/core/load_balancing/round_robin/round_robin.cc +9 -9
  293. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +3 -3
  294. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +33 -26
  295. data/src/core/load_balancing/weighted_target/weighted_target.cc +5 -5
  296. data/src/core/load_balancing/xds/cds.cc +76 -32
  297. data/src/core/load_balancing/xds/xds_cluster_impl.cc +3 -3
  298. data/src/core/load_balancing/xds/xds_override_host.cc +4 -4
  299. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  300. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +33 -33
  301. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -10
  302. data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -3
  303. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +2 -2
  304. data/src/core/resolver/endpoint_addresses.cc +3 -3
  305. data/src/core/resolver/endpoint_addresses.h +3 -0
  306. data/src/core/resolver/fake/fake_resolver.cc +2 -2
  307. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +41 -54
  308. data/src/core/resolver/polling_resolver.cc +3 -3
  309. data/src/core/resolver/resolver_registry.cc +5 -4
  310. data/src/core/resolver/xds/xds_dependency_manager.cc +5 -5
  311. data/src/core/resolver/xds/xds_resolver.cc +9 -9
  312. data/src/core/server/server.cc +38 -38
  313. data/src/core/server/server_call_tracer_filter.h +4 -4
  314. data/src/core/server/server_config_selector_filter.cc +2 -2
  315. data/src/core/server/xds_server_config_fetcher.cc +9 -8
  316. data/src/core/service_config/service_config_impl.h +2 -2
  317. data/src/core/telemetry/call_tracer.cc +39 -49
  318. data/src/core/telemetry/call_tracer.h +199 -22
  319. data/src/core/telemetry/histogram.h +205 -0
  320. data/src/core/telemetry/instrument.cc +719 -0
  321. data/src/core/telemetry/instrument.h +932 -0
  322. data/src/core/telemetry/metrics.cc +13 -5
  323. data/src/core/telemetry/metrics.h +3 -1
  324. data/src/core/telemetry/stats_data.cc +0 -19
  325. data/src/core/telemetry/stats_data.h +0 -19
  326. data/src/core/transport/auth_context.cc +2 -2
  327. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -45
  328. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -0
  329. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +3 -3
  330. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +39 -31
  331. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +3 -3
  332. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +3 -3
  333. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +7 -7
  334. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +3 -3
  335. data/src/core/tsi/fake_transport_security.cc +4 -4
  336. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +4 -4
  337. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +9 -9
  338. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +3 -3
  339. data/src/core/tsi/ssl_transport_security.cc +26 -25
  340. data/src/core/tsi/ssl_transport_security_utils.cc +9 -9
  341. data/src/core/util/chunked_vector.h +4 -4
  342. data/src/core/util/event_log.cc +2 -2
  343. data/src/core/util/gcp_metadata_query.cc +2 -2
  344. data/src/core/util/grpc_check.cc +22 -0
  345. data/src/core/util/grpc_check.h +103 -0
  346. data/src/core/util/http_client/httpcli.cc +3 -3
  347. data/src/core/util/http_client/parser.cc +4 -4
  348. data/src/core/util/latent_see.h +7 -4
  349. data/src/core/util/lru_cache.h +4 -4
  350. data/src/core/util/memory_usage.h +16 -0
  351. data/src/core/util/posix/directory_reader.cc +3 -2
  352. data/src/core/util/posix/sync.cc +24 -24
  353. data/src/core/util/postmortem_emit.cc +52 -0
  354. data/src/core/util/postmortem_emit.h +30 -0
  355. data/src/core/util/ref_counted_ptr.h +5 -0
  356. data/src/core/util/trie_lookup.h +170 -0
  357. data/src/core/util/unique_ptr_with_bitset.h +5 -5
  358. data/src/core/xds/grpc/xds_bootstrap_grpc.h +6 -1
  359. data/src/core/xds/grpc/xds_certificate_provider.cc +3 -3
  360. data/src/core/xds/grpc/xds_client_grpc.cc +34 -15
  361. data/src/core/xds/grpc/xds_client_grpc.h +4 -1
  362. data/src/core/xds/grpc/xds_cluster_parser.cc +2 -2
  363. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  364. data/src/core/xds/grpc/xds_endpoint_parser.cc +2 -2
  365. data/src/core/xds/grpc/xds_http_filter_registry.cc +4 -3
  366. data/src/core/xds/grpc/xds_listener_parser.cc +3 -3
  367. data/src/core/xds/grpc/xds_matcher.cc +277 -0
  368. data/src/core/xds/grpc/xds_matcher.h +432 -0
  369. data/src/core/xds/grpc/xds_matcher_action.cc +47 -0
  370. data/src/core/xds/grpc/xds_matcher_action.h +48 -0
  371. data/src/core/xds/grpc/xds_matcher_context.cc +29 -0
  372. data/src/core/xds/grpc/xds_matcher_context.h +46 -0
  373. data/src/core/xds/grpc/xds_matcher_input.cc +79 -0
  374. data/src/core/xds/grpc/xds_matcher_input.h +105 -0
  375. data/src/core/xds/grpc/xds_matcher_parse.cc +356 -0
  376. data/src/core/xds/grpc/xds_matcher_parse.h +39 -0
  377. data/src/core/xds/grpc/xds_metadata.cc +4 -3
  378. data/src/core/xds/grpc/xds_route_config_parser.cc +6 -6
  379. data/src/core/xds/grpc/xds_routing.cc +3 -3
  380. data/src/core/xds/grpc/xds_transport_grpc.cc +10 -10
  381. data/src/core/xds/xds_client/lrs_client.cc +6 -6
  382. data/src/core/xds/xds_client/xds_client.cc +9 -9
  383. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  384. data/src/ruby/lib/grpc/version.rb +1 -1
  385. data/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
  386. data/third_party/abseil-cpp/absl/container/node_hash_map.h +687 -0
  387. metadata +37 -2
@@ -22,7 +22,6 @@
22
22
  #include <winsock2.h>
23
23
 
24
24
  #include "absl/functional/any_invocable.h"
25
- #include "absl/log/check.h"
26
25
  #include "absl/status/status.h"
27
26
  #include "absl/strings/str_format.h"
28
27
  #include "src/core/lib/address_utils/sockaddr_utils.h"
@@ -35,6 +34,7 @@
35
34
  #include "src/core/lib/iomgr/error.h"
36
35
  #include "src/core/lib/slice/slice.h"
37
36
  #include "src/core/util/debug_location.h"
37
+ #include "src/core/util/grpc_check.h"
38
38
  #include "src/core/util/sync.h"
39
39
 
40
40
  // TODO(apolcyn): remove this hack after fixing upstream.
@@ -130,8 +130,8 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
130
130
  << "| ~GrpcPolledFdWindows shutdown_called_: " << shutdown_called_;
131
131
  grpc_core::CSliceUnref(read_buf_);
132
132
  grpc_core::CSliceUnref(write_buf_);
133
- CHECK(read_closure_ == nullptr);
134
- CHECK(write_closure_ == nullptr);
133
+ GRPC_CHECK(read_closure_ == nullptr);
134
+ GRPC_CHECK(write_closure_ == nullptr);
135
135
  if (!shutdown_called_) {
136
136
  winsocket_->Shutdown(DEBUG_LOCATION, "~GrpcPolledFdWindows");
137
137
  }
@@ -139,15 +139,15 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
139
139
 
140
140
  void RegisterForOnReadableLocked(
141
141
  absl::AnyInvocable<void(absl::Status)> read_closure) override {
142
- CHECK(read_closure_ == nullptr);
142
+ GRPC_CHECK(read_closure_ == nullptr);
143
143
  read_closure_ = std::move(read_closure);
144
144
  grpc_core::CSliceUnref(read_buf_);
145
- CHECK(!read_buf_has_data_);
145
+ GRPC_CHECK(!read_buf_has_data_);
146
146
  read_buf_ = GRPC_SLICE_MALLOC(kReadBufferSize);
147
147
  if (connect_done_) {
148
148
  ContinueRegisterForOnReadableLocked();
149
149
  } else {
150
- CHECK(pending_continue_register_for_on_readable_locked_ == false);
150
+ GRPC_CHECK(pending_continue_register_for_on_readable_locked_ == false);
151
151
  pending_continue_register_for_on_readable_locked_ = true;
152
152
  }
153
153
  }
@@ -159,17 +159,17 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
159
159
  << "(EventEngine c-ares resolver) fd:|" << GetName()
160
160
  << "| RegisterForOnWriteableLocked called";
161
161
  } else {
162
- CHECK(socket_type_ == SOCK_STREAM);
162
+ GRPC_CHECK(socket_type_ == SOCK_STREAM);
163
163
  GRPC_TRACE_LOG(cares_resolver, INFO)
164
164
  << "(EventEngine c-ares resolver) fd:|" << GetName()
165
165
  << "| RegisterForOnWriteableLocked called tcp_write_state_: "
166
166
  << static_cast<int>(tcp_write_state_)
167
167
  << " connect_done_: " << connect_done_;
168
168
  }
169
- CHECK(write_closure_ == nullptr);
169
+ GRPC_CHECK(write_closure_ == nullptr);
170
170
  write_closure_ = std::move(write_closure);
171
171
  if (!connect_done_) {
172
- CHECK(!pending_continue_register_for_on_writeable_locked_);
172
+ GRPC_CHECK(!pending_continue_register_for_on_writeable_locked_);
173
173
  pending_continue_register_for_on_writeable_locked_ = true;
174
174
  } else {
175
175
  ContinueRegisterForOnWriteableLocked();
@@ -179,7 +179,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
179
179
  bool IsFdStillReadableLocked() override { return read_buf_has_data_; }
180
180
 
181
181
  bool ShutdownLocked(absl::Status error) override {
182
- CHECK(!shutdown_called_);
182
+ GRPC_CHECK(!shutdown_called_);
183
183
  if (!absl::IsCancelled(error)) {
184
184
  return false;
185
185
  }
@@ -224,7 +224,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
224
224
  // c-ares overloads this recv_from virtual socket function to receive
225
225
  // data on both UDP and TCP sockets, and from is nullptr for TCP.
226
226
  if (from != nullptr) {
227
- CHECK(*from_len >= recv_from_source_addr_len_);
227
+ GRPC_CHECK(*from_len >= recv_from_source_addr_len_);
228
228
  memcpy(from, &recv_from_source_addr_, recv_from_source_addr_len_);
229
229
  *from_len = recv_from_source_addr_len_;
230
230
  }
@@ -295,7 +295,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
295
295
  << "(EventEngine c-ares resolver) fd:|" << GetName()
296
296
  << "| ContinueRegisterForOnReadableLocked wsa_connect_error_:"
297
297
  << wsa_connect_error_;
298
- CHECK(connect_done_);
298
+ GRPC_CHECK(connect_done_);
299
299
  if (wsa_connect_error_ != 0) {
300
300
  ScheduleAndNullReadClosure(GRPC_WSA_ERROR(wsa_connect_error_, "connect"));
301
301
  return;
@@ -332,7 +332,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
332
332
  << "(EventEngine c-ares resolver) fd:|" << GetName()
333
333
  << "| ContinueRegisterForOnWriteableLocked wsa_connect_error_:"
334
334
  << wsa_connect_error_;
335
- CHECK(connect_done_);
335
+ GRPC_CHECK(connect_done_);
336
336
  if (wsa_connect_error_ != 0) {
337
337
  ScheduleAndNullWriteClosure(
338
338
  GRPC_WSA_ERROR(wsa_connect_error_, "connect"));
@@ -342,7 +342,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
342
342
  ScheduleAndNullWriteClosure(absl::OkStatus());
343
343
  return;
344
344
  }
345
- CHECK(socket_type_ == SOCK_STREAM);
345
+ GRPC_CHECK(socket_type_ == SOCK_STREAM);
346
346
  int wsa_error_code = 0;
347
347
  switch (tcp_write_state_) {
348
348
  case WRITE_IDLE:
@@ -391,7 +391,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
391
391
  // to write everything inline.
392
392
  GRPC_TRACE_LOG(cares_resolver, INFO) << "(EventEngine c-ares resolver) fd:|"
393
393
  << GetName() << "| SendVUDP called";
394
- CHECK_EQ(GRPC_SLICE_LENGTH(write_buf_), 0);
394
+ GRPC_CHECK_EQ(GRPC_SLICE_LENGTH(write_buf_), 0);
395
395
  grpc_core::CSliceUnref(write_buf_);
396
396
  write_buf_ = FlattenIovec(iov, iov_count);
397
397
  DWORD bytes_sent = 0;
@@ -442,12 +442,12 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
442
442
  // send again. If c-ares still needs to send even more data, we'll get
443
443
  // to it eventually.
444
444
  grpc_slice currently_attempted = FlattenIovec(iov, iov_count);
445
- CHECK(GRPC_SLICE_LENGTH(currently_attempted) >=
446
- GRPC_SLICE_LENGTH(write_buf_));
445
+ GRPC_CHECK(GRPC_SLICE_LENGTH(currently_attempted) >=
446
+ GRPC_SLICE_LENGTH(write_buf_));
447
447
  ares_ssize_t total_sent = 0;
448
448
  for (size_t i = 0; i < GRPC_SLICE_LENGTH(write_buf_); i++) {
449
- CHECK(GRPC_SLICE_START_PTR(currently_attempted)[i] ==
450
- GRPC_SLICE_START_PTR(write_buf_)[i]);
449
+ GRPC_CHECK(GRPC_SLICE_START_PTR(currently_attempted)[i] ==
450
+ GRPC_SLICE_START_PTR(write_buf_)[i]);
451
451
  total_sent++;
452
452
  }
453
453
  grpc_core::CSliceUnref(currently_attempted);
@@ -466,9 +466,9 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
466
466
  << pending_continue_register_for_on_readable_locked_
467
467
  << " pending_register_for_writeable:"
468
468
  << pending_continue_register_for_on_writeable_locked_;
469
- CHECK(!connect_done_);
469
+ GRPC_CHECK(!connect_done_);
470
470
  connect_done_ = true;
471
- CHECK_EQ(wsa_connect_error_, 0);
471
+ GRPC_CHECK_EQ(wsa_connect_error_, 0);
472
472
  if (shutdown_called_) {
473
473
  wsa_connect_error_ = WSA_OPERATION_ABORTED;
474
474
  } else {
@@ -477,7 +477,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
477
477
  BOOL wsa_success = WSAGetOverlappedResult(
478
478
  winsocket_->raw_socket(), winsocket_->write_info()->overlapped(),
479
479
  &transferred_bytes, FALSE, &flags);
480
- CHECK_EQ(transferred_bytes, 0);
480
+ GRPC_CHECK_EQ(transferred_bytes, 0);
481
481
  if (!wsa_success) {
482
482
  wsa_connect_error_ = WSAGetLastError();
483
483
  char* msg = gpr_format_message(wsa_connect_error_);
@@ -500,8 +500,8 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
500
500
  ares_socklen_t target_len) {
501
501
  GRPC_TRACE_LOG(cares_resolver, INFO)
502
502
  << "(EventEngine c-ares resolver) fd:" << GetName() << " ConnectUDP";
503
- CHECK(!connect_done_);
504
- CHECK_EQ(wsa_connect_error_, 0);
503
+ GRPC_CHECK(!connect_done_);
504
+ GRPC_CHECK_EQ(wsa_connect_error_, 0);
505
505
  SOCKET s = winsocket_->raw_socket();
506
506
  int out =
507
507
  WSAConnect(s, target, target_len, nullptr, nullptr, nullptr, nullptr);
@@ -639,7 +639,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
639
639
  GRPC_TRACE_LOG(cares_resolver, INFO)
640
640
  << "(EventEngine c-ares resolver) OnIocpWriteableInner. fd:|"
641
641
  << GetName() << "|";
642
- CHECK(socket_type_ == SOCK_STREAM);
642
+ GRPC_CHECK(socket_type_ == SOCK_STREAM);
643
643
  absl::Status error;
644
644
  if (winsocket_->write_info()->result().wsa_error != 0) {
645
645
  error = GRPC_WSA_ERROR(winsocket_->write_info()->result().wsa_error,
@@ -651,7 +651,7 @@ class GrpcPolledFdWindows : public GrpcPolledFd {
651
651
  << winsocket_->write_info()->result().wsa_error << "| msg:|"
652
652
  << grpc_core::StatusToString(error) << "|";
653
653
  }
654
- CHECK(tcp_write_state_ == WRITE_PENDING);
654
+ GRPC_CHECK(tcp_write_state_ == WRITE_PENDING);
655
655
  if (error.ok()) {
656
656
  tcp_write_state_ = WRITE_WAITING_FOR_VERIFICATION_UPON_RETRY;
657
657
  write_buf_ = grpc_slice_sub_no_ref(
@@ -738,7 +738,7 @@ class CustomSockFuncs {
738
738
  << "(EventEngine c-ares resolver) fd:" << polled_fd->GetName()
739
739
  << " created with params af:" << af << " type:" << type
740
740
  << " protocol:" << protocol;
741
- CHECK(self->sockets_.insert({s, std::move(polled_fd)}).second);
741
+ GRPC_CHECK(self->sockets_.insert({s, std::move(polled_fd)}).second);
742
742
  return s;
743
743
  }
744
744
 
@@ -748,7 +748,7 @@ class CustomSockFuncs {
748
748
  GrpcPolledFdFactoryWindows* self =
749
749
  static_cast<GrpcPolledFdFactoryWindows*>(user_data);
750
750
  auto it = self->sockets_.find(as);
751
- CHECK(it != self->sockets_.end());
751
+ GRPC_CHECK(it != self->sockets_.end());
752
752
  return it->second->Connect(&wsa_error_ctx, target, target_len);
753
753
  }
754
754
 
@@ -758,7 +758,7 @@ class CustomSockFuncs {
758
758
  GrpcPolledFdFactoryWindows* self =
759
759
  static_cast<GrpcPolledFdFactoryWindows*>(user_data);
760
760
  auto it = self->sockets_.find(as);
761
- CHECK(it != self->sockets_.end());
761
+ GRPC_CHECK(it != self->sockets_.end());
762
762
  return it->second->SendV(&wsa_error_ctx, iov, iovec_count);
763
763
  }
764
764
 
@@ -769,7 +769,7 @@ class CustomSockFuncs {
769
769
  GrpcPolledFdFactoryWindows* self =
770
770
  static_cast<GrpcPolledFdFactoryWindows*>(user_data);
771
771
  auto it = self->sockets_.find(as);
772
- CHECK(it != self->sockets_.end());
772
+ GRPC_CHECK(it != self->sockets_.end());
773
773
  return it->second->RecvFrom(&wsa_error_ctx, data, data_len, flags, from,
774
774
  from_len);
775
775
  }
@@ -832,7 +832,7 @@ void GrpcPolledFdFactoryWindows::Initialize(grpc_core::Mutex* mutex,
832
832
  std::unique_ptr<GrpcPolledFd> GrpcPolledFdFactoryWindows::NewGrpcPolledFdLocked(
833
833
  ares_socket_t as) {
834
834
  auto it = sockets_.find(as);
835
- CHECK(it != sockets_.end());
835
+ GRPC_CHECK(it != sockets_.end());
836
836
  return std::make_unique<GrpcPolledFdWrapper>(it->second.get());
837
837
  }
838
838
 
@@ -20,7 +20,6 @@
20
20
 
21
21
  #include <chrono>
22
22
 
23
- #include "absl/log/check.h"
24
23
  #include "absl/strings/str_format.h"
25
24
  #include "src/core/lib/event_engine/thread_pool/thread_pool.h"
26
25
  #include "src/core/lib/event_engine/time_util.h"
@@ -28,6 +27,7 @@
28
27
  #include "src/core/lib/event_engine/windows/win_socket.h"
29
28
  #include "src/core/lib/iomgr/error.h"
30
29
  #include "src/core/util/crash.h"
30
+ #include "src/core/util/grpc_check.h"
31
31
 
32
32
  namespace grpc_event_engine::experimental {
33
33
 
@@ -35,7 +35,7 @@ IOCP::IOCP(ThreadPool* thread_pool) noexcept
35
35
  : thread_pool_(thread_pool),
36
36
  iocp_handle_(CreateIoCompletionPort(INVALID_HANDLE_VALUE, nullptr,
37
37
  (ULONG_PTR) nullptr, 0)) {
38
- CHECK(iocp_handle_);
38
+ GRPC_CHECK(iocp_handle_);
39
39
  WSASocketFlagsInit();
40
40
  }
41
41
 
@@ -52,7 +52,7 @@ std::unique_ptr<WinSocket> IOCP::Watch(SOCKET socket) {
52
52
  GRPC_WSA_ERROR(WSAGetLastError(), "Unable to add socket to iocp")
53
53
  .ToString());
54
54
  }
55
- CHECK(ret == iocp_handle_);
55
+ GRPC_CHECK(ret == iocp_handle_);
56
56
  return wrapped_socket;
57
57
  }
58
58
 
@@ -63,7 +63,7 @@ void IOCP::Shutdown() {
63
63
  while (outstanding_kicks_.load() > 0) {
64
64
  Work(std::chrono::hours(42), []() {});
65
65
  }
66
- CHECK(CloseHandle(iocp_handle_));
66
+ GRPC_CHECK(CloseHandle(iocp_handle_));
67
67
  }
68
68
 
69
69
  Poller::WorkResult IOCP::Work(EventEngine::Duration timeout,
@@ -81,8 +81,8 @@ Poller::WorkResult IOCP::Work(EventEngine::Duration timeout,
81
81
  << "IOCP::" << this << " deadline exceeded";
82
82
  return Poller::WorkResult::kDeadlineExceeded;
83
83
  }
84
- CHECK(completion_key);
85
- CHECK(overlapped);
84
+ GRPC_CHECK(completion_key);
85
+ GRPC_CHECK(overlapped);
86
86
  if (overlapped == &kick_overlap_) {
87
87
  GRPC_TRACE_LOG(event_engine_poller, INFO) << "IOCP::" << this << " kicked";
88
88
  outstanding_kicks_.fetch_sub(1);
@@ -101,7 +101,7 @@ Poller::WorkResult IOCP::Work(EventEngine::Duration timeout,
101
101
  // about to register for notification of an overlapped event.
102
102
  auto* socket = reinterpret_cast<WinSocket*>(completion_key);
103
103
  WinSocket::OpState* info = socket->GetOpInfoForOverlapped(overlapped);
104
- CHECK_NE(info, nullptr);
104
+ GRPC_CHECK_NE(info, nullptr);
105
105
  info->GetOverlappedResult();
106
106
  info->SetReady();
107
107
  schedule_poll_again();
@@ -110,9 +110,9 @@ Poller::WorkResult IOCP::Work(EventEngine::Duration timeout,
110
110
 
111
111
  void IOCP::Kick() {
112
112
  outstanding_kicks_.fetch_add(1);
113
- CHECK(PostQueuedCompletionStatus(iocp_handle_, 0,
114
- reinterpret_cast<ULONG_PTR>(&kick_token_),
115
- &kick_overlap_));
113
+ GRPC_CHECK(PostQueuedCompletionStatus(
114
+ iocp_handle_, 0, reinterpret_cast<ULONG_PTR>(&kick_token_),
115
+ &kick_overlap_));
116
116
  }
117
117
 
118
118
  DWORD IOCP::GetDefaultSocketFlags() {
@@ -17,13 +17,13 @@
17
17
  #include <grpc/support/alloc.h>
18
18
  #include <grpc/support/log_windows.h>
19
19
 
20
- #include "absl/log/check.h"
21
20
  #include "absl/log/log.h"
22
21
  #include "src/core/lib/event_engine/tcp_socket_utils.h"
23
22
  #include "src/core/lib/event_engine/thread_pool/thread_pool.h"
24
23
  #include "src/core/lib/event_engine/windows/win_socket.h"
25
24
  #include "src/core/lib/iomgr/error.h"
26
25
  #include "src/core/util/debug_location.h"
26
+ #include "src/core/util/grpc_check.h"
27
27
  #include "src/core/util/sync.h"
28
28
 
29
29
  #if defined(__MSYS__) && defined(GPR_ARCH_64)
@@ -45,7 +45,7 @@ WinSocket::WinSocket(SOCKET socket, ThreadPool* thread_pool) noexcept
45
45
  write_info_(this) {}
46
46
 
47
47
  WinSocket::~WinSocket() {
48
- CHECK(is_shutdown_.load());
48
+ GRPC_CHECK(is_shutdown_.load());
49
49
  GRPC_TRACE_LOG(event_engine_endpoint, INFO)
50
50
  << "WinSocket::" << this << " destroyed";
51
51
  }
@@ -103,7 +103,7 @@ void WinSocket::NotifyOnReady(OpState& info, EventEngine::Closure* closure) {
103
103
  return;
104
104
  };
105
105
  // It is an error if any notification is already registered for this socket.
106
- CHECK_EQ(std::exchange(info.closure_, closure), nullptr);
106
+ GRPC_CHECK_EQ(std::exchange(info.closure_, closure), nullptr);
107
107
  }
108
108
 
109
109
  void WinSocket::NotifyOnRead(EventEngine::Closure* on_read) {
@@ -115,11 +115,11 @@ void WinSocket::NotifyOnWrite(EventEngine::Closure* on_write) {
115
115
  }
116
116
 
117
117
  void WinSocket::UnregisterReadCallback() {
118
- CHECK_NE(std::exchange(read_info_.closure_, nullptr), nullptr);
118
+ GRPC_CHECK_NE(std::exchange(read_info_.closure_, nullptr), nullptr);
119
119
  }
120
120
 
121
121
  void WinSocket::UnregisterWriteCallback() {
122
- CHECK_NE(std::exchange(write_info_.closure_, nullptr), nullptr);
122
+ GRPC_CHECK_NE(std::exchange(write_info_.closure_, nullptr), nullptr);
123
123
  }
124
124
 
125
125
  // ---- WinSocket::OpState ----
@@ -133,7 +133,7 @@ void WinSocket::OpState::SetReady() {
133
133
  auto* closure = std::exchange(closure_, nullptr);
134
134
  // If an IOCP event is returned for a socket, and no callback has been
135
135
  // registered for notification, this is invalid usage.
136
- CHECK_NE(closure, nullptr);
136
+ GRPC_CHECK_NE(closure, nullptr);
137
137
  win_socket_->thread_pool_->Run(closure);
138
138
  }
139
139
 
@@ -20,7 +20,6 @@
20
20
 
21
21
  #include "absl/cleanup/cleanup.h"
22
22
  #include "absl/functional/any_invocable.h"
23
- #include "absl/log/check.h"
24
23
  #include "absl/log/log.h"
25
24
  #include "absl/status/status.h"
26
25
  #include "absl/strings/str_format.h"
@@ -30,6 +29,7 @@
30
29
  #include "src/core/lib/event_engine/windows/windows_endpoint.h"
31
30
  #include "src/core/lib/iomgr/error.h"
32
31
  #include "src/core/util/debug_location.h"
32
+ #include "src/core/util/grpc_check.h"
33
33
  #include "src/core/util/status_helper.h"
34
34
 
35
35
  namespace grpc_event_engine::experimental {
@@ -59,7 +59,7 @@ WindowsEndpoint::WindowsEndpoint(
59
59
  io_state_(std::make_shared<AsyncIOState>(
60
60
  this, std::move(socket), std::move(engine), thread_pool)) {
61
61
  auto local_address = SocketToAddress(io_state_->socket->raw_socket());
62
- CHECK(local_address.ok())
62
+ GRPC_CHECK(local_address.ok())
63
63
  << "Failed to get local socket address: " << local_address.status();
64
64
  local_address_ = std::move(*local_address);
65
65
  local_address_string_ = *ResolvedAddressToURI(local_address_);
@@ -81,7 +81,7 @@ void WindowsEndpoint::AsyncIOState::DoTcpRead(SliceBuffer* buffer) {
81
81
  return;
82
82
  }
83
83
  // Prepare the WSABUF struct
84
- CHECK(buffer->Count() <= kMaxWSABUFCount);
84
+ GRPC_CHECK(buffer->Count() <= kMaxWSABUFCount);
85
85
  WSABUF wsa_buffers[kMaxWSABUFCount];
86
86
  for (size_t i = 0; i < buffer->Count(); i++) {
87
87
  auto& slice = buffer->MutableSliceAt(i);
@@ -160,11 +160,11 @@ bool WindowsEndpoint::Write(absl::AnyInvocable<void(absl::Status)> on_writable,
160
160
  << " WRITE (peer=" << peer_address_string_ << "): " << str;
161
161
  }
162
162
  }
163
- CHECK(data->Count() <= UINT_MAX);
163
+ GRPC_CHECK(data->Count() <= UINT_MAX);
164
164
  absl::InlinedVector<WSABUF, kMaxWSABUFCount> buffers(data->Count());
165
165
  for (size_t i = 0; i < data->Count(); i++) {
166
166
  auto& slice = data->MutableSliceAt(i);
167
- CHECK(slice.size() <= ULONG_MAX);
167
+ GRPC_CHECK(slice.size() <= ULONG_MAX);
168
168
  buffers[i].len = slice.size();
169
169
  buffers[i].buf = (char*)slice.begin();
170
170
  }
@@ -289,7 +289,7 @@ void WindowsEndpoint::HandleReadClosure::Run() {
289
289
  return ResetAndReturnCallback()(status);
290
290
  }
291
291
  if (result.bytes_transferred == 0) {
292
- DCHECK_GT(io_state.use_count(), 0);
292
+ GRPC_DCHECK_GT(io_state.use_count(), 0);
293
293
  // Either the endpoint is shut down or we've seen the end of the stream
294
294
  if (GRPC_TRACE_FLAG_ENABLED(event_engine_endpoint_data)) {
295
295
  LOG(INFO) << "WindowsEndpoint::" << this << " read 0 bytes.";
@@ -308,8 +308,8 @@ void WindowsEndpoint::HandleReadClosure::Run() {
308
308
  }
309
309
  return ResetAndReturnCallback()(status);
310
310
  }
311
- DCHECK_GT(result.bytes_transferred, 0);
312
- DCHECK(result.bytes_transferred <= buffer_->Length());
311
+ GRPC_DCHECK_GT(result.bytes_transferred, 0);
312
+ GRPC_DCHECK(result.bytes_transferred <= buffer_->Length());
313
313
  buffer_->MoveFirstNBytesIntoSliceBuffer(result.bytes_transferred,
314
314
  last_read_buffer_);
315
315
  if (buffer_->Length() == 0) {
@@ -340,9 +340,9 @@ bool WindowsEndpoint::HandleReadClosure::MaybeFinishIfDataHasAlreadyBeenRead() {
340
340
  void WindowsEndpoint::HandleReadClosure::DonateSpareSlices(
341
341
  SliceBuffer* buffer) {
342
342
  // Donee buffer must be empty.
343
- CHECK_EQ(buffer->Length(), 0);
343
+ GRPC_CHECK_EQ(buffer->Length(), 0);
344
344
  // HandleReadClosure must be in the reset state.
345
- CHECK_EQ(buffer_, nullptr);
345
+ GRPC_CHECK_EQ(buffer_, nullptr);
346
346
  buffer->Swap(last_read_buffer_);
347
347
  }
348
348
 
@@ -360,7 +360,7 @@ void WindowsEndpoint::HandleWriteClosure::Run() {
360
360
  if (result.wsa_error != 0) {
361
361
  status = GRPC_WSA_ERROR(result.wsa_error, "WSASend");
362
362
  } else {
363
- CHECK(result.bytes_transferred == buffer_->Length());
363
+ GRPC_CHECK(result.bytes_transferred == buffer_->Length());
364
364
  }
365
365
  return ResetAndReturnCallback()(status);
366
366
  }
@@ -24,7 +24,6 @@
24
24
  #include <memory>
25
25
  #include <ostream>
26
26
 
27
- #include "absl/log/check.h"
28
27
  #include "absl/log/log.h"
29
28
  #include "absl/status/status.h"
30
29
  #include "absl/status/statusor.h"
@@ -46,6 +45,7 @@
46
45
  #include "src/core/lib/resource_quota/resource_quota.h"
47
46
  #include "src/core/util/crash.h"
48
47
  #include "src/core/util/dump_args.h"
48
+ #include "src/core/util/grpc_check.h"
49
49
  #include "src/core/util/sync.h"
50
50
  #include "src/core/util/time.h"
51
51
 
@@ -75,7 +75,7 @@ WindowsEventEngine::ConnectionState::ConnectionState(
75
75
  allocator_(std::move(allocator)),
76
76
  on_connect_user_callback_(std::move(on_connect_user_callback)),
77
77
  engine_(std::move(engine)) {
78
- CHECK(socket_ != nullptr);
78
+ GRPC_CHECK(socket_ != nullptr);
79
79
  connection_handle_ = ConnectionHandle{reinterpret_cast<intptr_t>(this),
80
80
  engine_->aba_token_.fetch_add(1)};
81
81
  }
@@ -112,7 +112,7 @@ void WindowsEventEngine::ConnectionState::AbortDeadlineTimer() {
112
112
  }
113
113
 
114
114
  void WindowsEventEngine::ConnectionState::OnConnectedCallback::Run() {
115
- DCHECK_NE(connection_state_, nullptr)
115
+ GRPC_DCHECK_NE(connection_state_, nullptr)
116
116
  << "ConnectionState::OnConnectedCallback::" << this
117
117
  << " has already run. It should only ever run once.";
118
118
  bool has_run;
@@ -131,7 +131,7 @@ void WindowsEventEngine::ConnectionState::OnConnectedCallback::Run() {
131
131
  }
132
132
 
133
133
  void WindowsEventEngine::ConnectionState::DeadlineTimerCallback::Run() {
134
- DCHECK_NE(connection_state_, nullptr)
134
+ GRPC_DCHECK_NE(connection_state_, nullptr)
135
135
  << "ConnectionState::DeadlineTimerCallback::" << this
136
136
  << " has already run. It should only ever run once.";
137
137
  bool has_run;
@@ -207,7 +207,7 @@ WindowsEventEngine::WindowsEventEngine()
207
207
  iocp_worker_(thread_pool_.get(), &iocp_) {
208
208
  WSADATA wsaData;
209
209
  int status = WSAStartup(MAKEWORD(2, 0), &wsaData);
210
- CHECK_EQ(status, 0);
210
+ GRPC_CHECK_EQ(status, 0);
211
211
  }
212
212
 
213
213
  WindowsEventEngine::~WindowsEventEngine() {
@@ -235,13 +235,13 @@ WindowsEventEngine::~WindowsEventEngine() {
235
235
  task_mu_.Lock();
236
236
  }
237
237
  }
238
- CHECK(GPR_LIKELY(known_handles_.empty()));
238
+ GRPC_CHECK(GPR_LIKELY(known_handles_.empty()));
239
239
  task_mu_.Unlock();
240
240
  }
241
241
  iocp_.Kick();
242
242
  iocp_worker_.WaitForShutdown();
243
243
  iocp_.Shutdown();
244
- CHECK_EQ(WSACleanup(), 0);
244
+ GRPC_CHECK_EQ(WSACleanup(), 0);
245
245
  timer_manager_.Shutdown();
246
246
  thread_pool_->Quiesce();
247
247
  }
@@ -287,9 +287,10 @@ WindowsEventEngine::CreateEndpointFromWinSocket(SOCKET socket,
287
287
  ->CreateMemoryAllocator(local_address_string);
288
288
  } else {
289
289
  auto* rqv = config.GetVoidPointer(GRPC_ARG_RESOURCE_QUOTA);
290
- CHECK_NE(rqv, nullptr) << "WindowsEventEngine::" << this
291
- << ": config does not contain a resource quota. "
292
- "This should not happen.";
290
+ GRPC_CHECK_NE(rqv, nullptr)
291
+ << "WindowsEventEngine::" << this
292
+ << ": config does not contain a resource quota. "
293
+ "This should not happen.";
293
294
  allocator = static_cast<grpc_core::ResourceQuota*>(rqv)
294
295
  ->memory_quota()
295
296
  ->CreateMemoryAllocator(local_address_string);
@@ -552,10 +553,11 @@ EventEngine::ConnectionHandle WindowsEventEngine::Connect(
552
553
  erased_handles =
553
554
  known_connection_handles_.erase(connection_state->connection_handle());
554
555
  }
555
- CHECK_EQ(erased_handles, 1) << "Did not find connection handle "
556
- << connection_state->connection_handle()
557
- << " after a synchronous connection failure. "
558
- "This should not be possible.";
556
+ GRPC_CHECK_EQ(erased_handles, 1)
557
+ << "Did not find connection handle "
558
+ << connection_state->connection_handle()
559
+ << " after a synchronous connection failure. "
560
+ "This should not be possible.";
559
561
  connection_state->socket()->Shutdown(DEBUG_LOCATION, "ConnectEx");
560
562
  if (!Cancel(connection_state->timer_handle())) {
561
563
  // The deadline timer will run, or is running.
@@ -15,7 +15,6 @@
15
15
 
16
16
  #ifdef GPR_WINDOWS
17
17
 
18
- #include "absl/log/check.h"
19
18
  #include "absl/log/log.h"
20
19
  #include "absl/status/status.h"
21
20
  #include "absl/strings/str_format.h"
@@ -28,6 +27,7 @@
28
27
  #include "src/core/lib/iomgr/error.h"
29
28
  #include "src/core/lib/iomgr/port.h"
30
29
  #include "src/core/util/crash.h"
30
+ #include "src/core/util/grpc_check.h"
31
31
  #include "src/core/util/sync.h"
32
32
 
33
33
  namespace grpc_event_engine::experimental {
@@ -47,7 +47,7 @@ WindowsEventEngineListener::SinglePortSocketListener::AsyncIOState::
47
47
 
48
48
  void WindowsEventEngineListener::SinglePortSocketListener::
49
49
  OnAcceptCallbackWrapper::Run() {
50
- CHECK_NE(io_state_, nullptr);
50
+ GRPC_CHECK_NE(io_state_, nullptr);
51
51
  grpc_core::ReleasableMutexLock lock(&io_state_->mu);
52
52
  if (io_state_->listener_socket->IsShutdown()) {
53
53
  GRPC_TRACE_LOG(event_engine, INFO)
@@ -135,7 +135,7 @@ WindowsEventEngineListener::SinglePortSocketListener::Create(
135
135
  }
136
136
  auto result = SinglePortSocketListener::PrepareListenerSocket(sock, addr);
137
137
  GRPC_RETURN_IF_ERROR(result.status());
138
- CHECK_GE(result->port, 0);
138
+ GRPC_CHECK_GE(result->port, 0);
139
139
  // Using `new` to access non-public constructor
140
140
  return absl::WrapUnique(new SinglePortSocketListener(
141
141
  listener, AcceptEx, /*win_socket=*/listener->iocp_->Watch(sock),
@@ -201,8 +201,8 @@ void WindowsEventEngineListener::SinglePortSocketListener::
201
201
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(io_state_->mu) {
202
202
  if (do_close_socket) closesocket(io_state_->accept_socket);
203
203
  io_state_->accept_socket = INVALID_SOCKET;
204
- CHECK(GRPC_LOG_IF_ERROR("SinglePortSocketListener::Start",
205
- StartLocked()));
204
+ GRPC_CHECK(GRPC_LOG_IF_ERROR("SinglePortSocketListener::Start",
205
+ StartLocked()));
206
206
  };
207
207
  const auto& overlapped_result =
208
208
  io_state_->listener_socket->read_info()->result();
@@ -269,7 +269,7 @@ absl::StatusOr<WindowsEventEngineListener::SinglePortSocketListener::
269
269
  WindowsEventEngineListener::SinglePortSocketListener::PrepareListenerSocket(
270
270
  SOCKET sock, const EventEngine::ResolvedAddress& addr) {
271
271
  auto fail = [&](absl::Status error) -> absl::Status {
272
- CHECK(!error.ok());
272
+ GRPC_CHECK(!error.ok());
273
273
  error = GRPC_ERROR_CREATE_REFERENCING("Failed to prepare server socket",
274
274
  &error, 1);
275
275
  if (sock != INVALID_SOCKET) closesocket(sock);
@@ -371,7 +371,7 @@ absl::StatusOr<int> WindowsEventEngineListener::Bind(
371
371
  }
372
372
 
373
373
  absl::Status WindowsEventEngineListener::Start() {
374
- CHECK(!started_.exchange(true));
374
+ GRPC_CHECK(!started_.exchange(true));
375
375
  grpc_core::MutexLock lock(&port_listeners_mu_);
376
376
  for (auto& port_listener : port_listeners_) {
377
377
  GRPC_RETURN_IF_ERROR(port_listener->Start());