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
@@ -30,12 +30,12 @@
30
30
  #include <variant>
31
31
  #include <vector>
32
32
 
33
- #include "absl/log/check.h"
34
33
  #include "absl/log/log.h"
35
34
  #include "absl/status/status.h"
36
35
  #include "absl/status/statusor.h"
37
36
  #include "absl/strings/str_cat.h"
38
37
  #include "absl/strings/string_view.h"
38
+ #include "src/core/client_channel/client_channel_internal.h"
39
39
  #include "src/core/config/core_configuration.h"
40
40
  #include "src/core/lib/channel/channel_args.h"
41
41
  #include "src/core/lib/debug/trace.h"
@@ -50,6 +50,7 @@
50
50
  #include "src/core/resolver/xds/xds_dependency_manager.h"
51
51
  #include "src/core/util/debug_location.h"
52
52
  #include "src/core/util/env.h"
53
+ #include "src/core/util/grpc_check.h"
53
54
  #include "src/core/util/json/json.h"
54
55
  #include "src/core/util/json/json_args.h"
55
56
  #include "src/core/util/json/json_object_loader.h"
@@ -121,8 +122,43 @@ class CdsLb final : public LoadBalancingPolicy {
121
122
  void ExitIdleLocked() override;
122
123
 
123
124
  private:
125
+ class Picker final : public SubchannelPicker {
126
+ public:
127
+ Picker(CdsLb* cds_lb, RefCountedPtr<SubchannelPicker> child_picker)
128
+ : cluster_name_(cds_lb->cluster_name_),
129
+ child_picker_(std::move(child_picker)) {}
130
+
131
+ PickResult Pick(PickArgs args) override {
132
+ auto* call_state =
133
+ static_cast<ClientChannelLbCallState*>(args.call_state);
134
+ auto* call_attempt_tracer = call_state->GetCallAttemptTracer();
135
+ if (call_attempt_tracer != nullptr) {
136
+ call_attempt_tracer->SetOptionalLabel(
137
+ ClientCallTracerInterface::CallAttemptTracer::OptionalLabelKey::
138
+ kBackendService,
139
+ cluster_name_);
140
+ }
141
+ return child_picker_->Pick(args);
142
+ }
143
+
144
+ private:
145
+ RefCountedStringValue cluster_name_;
146
+ RefCountedPtr<SubchannelPicker> child_picker_;
147
+ };
148
+
124
149
  // Delegating helper to be passed to child policy.
125
- using Helper = ParentOwningDelegatingChannelControlHelper<CdsLb>;
150
+ class Helper final
151
+ : public ParentOwningDelegatingChannelControlHelper<CdsLb> {
152
+ public:
153
+ using ParentOwningDelegatingChannelControlHelper::
154
+ ParentOwningDelegatingChannelControlHelper;
155
+
156
+ void UpdateState(grpc_connectivity_state state, const absl::Status& status,
157
+ RefCountedPtr<SubchannelPicker> picker) override {
158
+ parent_helper()->UpdateState(
159
+ state, status, MakeRefCounted<Picker>(parent(), std::move(picker)));
160
+ }
161
+ };
126
162
 
127
163
  // State used to retain child policy names for the priority policy.
128
164
  struct ChildNameState {
@@ -160,7 +196,7 @@ class CdsLb final : public LoadBalancingPolicy {
160
196
 
161
197
  void ReportTransientFailure(absl::Status status);
162
198
 
163
- std::string cluster_name_;
199
+ RefCountedStringValue cluster_name_;
164
200
  RefCountedPtr<const XdsConfig> xds_config_;
165
201
 
166
202
  // Cluster subscription, for dynamic clusters (e.g., RLS).
@@ -225,7 +261,7 @@ std::string MakeChildPolicyName(absl::string_view cluster,
225
261
  class PriorityEndpointIterator final : public EndpointAddressesIterator {
226
262
  public:
227
263
  PriorityEndpointIterator(
228
- std::string cluster_name, bool use_http_connect,
264
+ RefCountedStringValue cluster_name, bool use_http_connect,
229
265
  std::shared_ptr<const XdsEndpointResource> endpoints,
230
266
  std::vector<size_t /*child_number*/> priority_child_numbers)
231
267
  : cluster_name_(std::move(cluster_name)),
@@ -238,8 +274,8 @@ class PriorityEndpointIterator final : public EndpointAddressesIterator {
238
274
  const auto& priority_list = GetUpdatePriorityList(endpoints_.get());
239
275
  for (size_t priority = 0; priority < priority_list.size(); ++priority) {
240
276
  const auto& priority_entry = priority_list[priority];
241
- std::string priority_child_name =
242
- MakeChildPolicyName(cluster_name_, priority_child_numbers_[priority]);
277
+ std::string priority_child_name = MakeChildPolicyName(
278
+ cluster_name_.as_string_view(), priority_child_numbers_[priority]);
243
279
  for (const auto& [locality_name, locality] : priority_entry.localities) {
244
280
  std::vector<RefCountedStringValue> hierarchical_path = {
245
281
  RefCountedStringValue(priority_child_name),
@@ -264,7 +300,7 @@ class PriorityEndpointIterator final : public EndpointAddressesIterator {
264
300
  }
265
301
 
266
302
  private:
267
- std::string cluster_name_;
303
+ RefCountedStringValue cluster_name_;
268
304
  bool use_http_connect_;
269
305
  std::shared_ptr<const XdsEndpointResource> endpoints_;
270
306
  std::vector<size_t /*child_number*/> priority_child_numbers_;
@@ -277,19 +313,19 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
277
313
  << "[cdslb " << this
278
314
  << "] received update: cluster=" << new_config->cluster()
279
315
  << " is_dynamic=" << new_config->is_dynamic();
280
- CHECK(new_config != nullptr);
316
+ GRPC_CHECK(new_config != nullptr);
281
317
  // Cluster name should never change, because we should use a different
282
318
  // child name in xds_cluster_manager in that case.
283
- if (cluster_name_.empty()) {
284
- cluster_name_ = new_config->cluster();
319
+ if (cluster_name_.as_string_view().empty()) {
320
+ cluster_name_ = RefCountedStringValue(new_config->cluster());
285
321
  } else {
286
- CHECK(cluster_name_ == new_config->cluster());
322
+ GRPC_CHECK_EQ(cluster_name_.as_string_view(), new_config->cluster());
287
323
  }
288
324
  // Start dynamic subscription if needed.
289
325
  if (new_config->is_dynamic() && subscription_ == nullptr) {
290
326
  GRPC_TRACE_LOG(cds_lb, INFO)
291
327
  << "[cdslb " << this << "] obtaining dynamic subscription for cluster "
292
- << cluster_name_;
328
+ << cluster_name_.as_string_view();
293
329
  auto* dependency_mgr = args.args.GetObject<XdsDependencyManager>();
294
330
  if (dependency_mgr == nullptr) {
295
331
  // Should never happen.
@@ -298,7 +334,8 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
298
334
  ReportTransientFailure(status);
299
335
  return status;
300
336
  }
301
- subscription_ = dependency_mgr->GetClusterSubscription(cluster_name_);
337
+ subscription_ =
338
+ dependency_mgr->GetClusterSubscription(cluster_name_.as_string_view());
302
339
  }
303
340
  // Get xDS config.
304
341
  auto new_xds_config = args.args.GetObjectRef<XdsConfig>();
@@ -309,7 +346,7 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
309
346
  ReportTransientFailure(status);
310
347
  return status;
311
348
  }
312
- auto it = new_xds_config->clusters.find(cluster_name_);
349
+ auto it = new_xds_config->clusters.find(cluster_name_.as_string_view());
313
350
  if (it == new_xds_config->clusters.end()) {
314
351
  // Cluster not present.
315
352
  if (new_config->is_dynamic()) {
@@ -318,14 +355,16 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
318
355
  // got the new cluster, in which case it will still be missing.
319
356
  GRPC_TRACE_LOG(cds_lb, INFO)
320
357
  << "[cdslb " << this
321
- << "] xDS config has no entry for dynamic cluster " << cluster_name_
358
+ << "] xDS config has no entry for dynamic cluster "
359
+ << cluster_name_.as_string_view()
322
360
  << ", waiting for subsequent update";
323
361
  // Stay in CONNECTING until we get an update that has the cluster.
324
362
  return absl::OkStatus();
325
363
  }
326
364
  // Not a dynamic cluster. This should never happen.
327
- absl::Status status = absl::UnavailableError(absl::StrCat(
328
- "xDS config has no entry for static cluster ", cluster_name_));
365
+ absl::Status status = absl::UnavailableError(
366
+ absl::StrCat("xDS config has no entry for static cluster ",
367
+ cluster_name_.as_string_view()));
329
368
  ReportTransientFailure(status);
330
369
  return status;
331
370
  }
@@ -335,11 +374,11 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
335
374
  ReportTransientFailure(new_cluster_config.status());
336
375
  return new_cluster_config.status();
337
376
  }
338
- CHECK_NE(new_cluster_config->cluster, nullptr);
377
+ GRPC_CHECK_NE(new_cluster_config->cluster, nullptr);
339
378
  // Find old cluster, if any.
340
379
  const XdsConfig::ClusterConfig* old_cluster_config = nullptr;
341
380
  if (xds_config_ != nullptr) {
342
- auto it_old = xds_config_->clusters.find(cluster_name_);
381
+ auto it_old = xds_config_->clusters.find(cluster_name_.as_string_view());
343
382
  if (it_old != xds_config_->clusters.end() && it_old->second.ok()) {
344
383
  old_cluster_config = &*it_old->second;
345
384
  // If nothing changed for a leaf cluster, then ignore the update.
@@ -375,11 +414,12 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
375
414
  ReportTransientFailure(aggregate_cluster_config.status());
376
415
  return aggregate_cluster_config.status();
377
416
  }
378
- CHECK_NE(aggregate_cluster_config->cluster, nullptr);
417
+ GRPC_CHECK_NE(aggregate_cluster_config->cluster, nullptr);
379
418
  aggregate_cluster_resource = aggregate_cluster_config->cluster.get();
380
419
  }
381
420
  } else {
382
- args.args = args.args.Set(kArgXdsAggregateClusterName, cluster_name_);
421
+ args.args = args.args.Set(kArgXdsAggregateClusterName,
422
+ cluster_name_.as_string_view());
383
423
  }
384
424
  }
385
425
  // Construct child policy config and update state based on the cluster type.
@@ -408,6 +448,9 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
408
448
  // Construct child policy config.
409
449
  child_policy_config_json = CreateChildPolicyConfigForLeafCluster(
410
450
  *new_cluster_config, endpoint_config, aggregate_cluster_resource);
451
+ // Pass backend service label to child policy.
452
+ args.args = args.args.Set(GRPC_ARG_BACKEND_SERVICE,
453
+ cluster_name_.as_string_view());
411
454
  },
412
455
  // Aggregate cluster.
413
456
  [&](const XdsConfig::ClusterConfig::AggregateConfig& aggregate_config) {
@@ -426,9 +469,9 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
426
469
  child_policy_config_json);
427
470
  if (!child_config.ok()) {
428
471
  // Should never happen.
429
- absl::Status status = absl::InternalError(
430
- absl::StrCat(cluster_name_, ": error parsing child policy config: ",
431
- child_config.status().message()));
472
+ absl::Status status = absl::InternalError(absl::StrCat(
473
+ cluster_name_.as_string_view(), ": error parsing child policy config: ",
474
+ child_config.status().message()));
432
475
  ReportTransientFailure(status);
433
476
  return status;
434
477
  }
@@ -444,8 +487,8 @@ absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
444
487
  (*child_config)->name(), std::move(lb_args));
445
488
  if (child_policy_ == nullptr) {
446
489
  // Should never happen.
447
- absl::Status status = absl::UnavailableError(
448
- absl::StrCat(cluster_name_, ": failed to create child policy"));
490
+ absl::Status status = absl::UnavailableError(absl::StrCat(
491
+ cluster_name_.as_string_view(), ": failed to create child policy"));
449
492
  ReportTransientFailure(status);
450
493
  return status;
451
494
  }
@@ -465,7 +508,7 @@ CdsLb::ChildNameState CdsLb::ComputeChildNames(
465
508
  const XdsConfig::ClusterConfig* old_cluster,
466
509
  const XdsConfig::ClusterConfig& new_cluster,
467
510
  const XdsConfig::ClusterConfig::EndpointConfig& endpoint_config) const {
468
- CHECK(!std::holds_alternative<XdsConfig::ClusterConfig::AggregateConfig>(
511
+ GRPC_CHECK(!std::holds_alternative<XdsConfig::ClusterConfig::AggregateConfig>(
469
512
  new_cluster.children));
470
513
  // First, build some maps from locality to child number and the reverse
471
514
  // from old_cluster and child_name_state_.
@@ -566,8 +609,9 @@ Json CdsLb::CreateChildPolicyConfigForLeafCluster(
566
609
  GetUpdatePriorityList(endpoint_config.endpoints.get());
567
610
  for (size_t priority = 0; priority < priority_list.size(); ++priority) {
568
611
  // Add priority entry, with the appropriate child name.
569
- std::string child_name = MakeChildPolicyName(
570
- cluster_name_, child_name_state_.priority_child_numbers[priority]);
612
+ std::string child_name =
613
+ MakeChildPolicyName(cluster_name_.as_string_view(),
614
+ child_name_state_.priority_child_numbers[priority]);
571
615
  priority_priorities.emplace_back(Json::FromString(child_name));
572
616
  Json::Object child_config = {{"config", xds_lb_policy}};
573
617
  if (!is_logical_dns) {
@@ -586,7 +630,7 @@ Json CdsLb::CreateChildPolicyConfigForLeafCluster(
586
630
  Json xds_override_host_policy = Json::FromArray({Json::FromObject({
587
631
  {"xds_override_host_experimental",
588
632
  Json::FromObject({
589
- {"clusterName", Json::FromString(cluster_name_)},
633
+ {"clusterName", Json::FromString(cluster_name_.c_str())},
590
634
  {"childPolicy", std::move(priority_policy)},
591
635
  })},
592
636
  })});
@@ -594,7 +638,7 @@ Json CdsLb::CreateChildPolicyConfigForLeafCluster(
594
638
  Json xds_cluster_impl_policy = Json::FromArray({Json::FromObject({
595
639
  {"xds_cluster_impl_experimental",
596
640
  Json::FromObject({
597
- {"clusterName", Json::FromString(cluster_name_)},
641
+ {"clusterName", Json::FromString(cluster_name_.c_str())},
598
642
  {"childPolicy", std::move(xds_override_host_policy)},
599
643
  })},
600
644
  })});
@@ -689,7 +733,7 @@ Json CdsLb::CreateChildPolicyConfigForAggregateCluster(
689
733
  }
690
734
 
691
735
  void CdsLb::ResetState() {
692
- cluster_name_.clear();
736
+ cluster_name_ = RefCountedStringValue("");
693
737
  xds_config_.reset();
694
738
  child_name_state_.Reset();
695
739
  if (child_policy_ != nullptr) {
@@ -29,7 +29,6 @@
29
29
  #include <vector>
30
30
 
31
31
  #include "absl/base/thread_annotations.h"
32
- #include "absl/log/check.h"
33
32
  #include "absl/log/log.h"
34
33
  #include "absl/status/status.h"
35
34
  #include "absl/status/statusor.h"
@@ -56,6 +55,7 @@
56
55
  #include "src/core/resolver/xds/xds_resolver_attributes.h"
57
56
  #include "src/core/telemetry/call_tracer.h"
58
57
  #include "src/core/util/debug_location.h"
58
+ #include "src/core/util/grpc_check.h"
59
59
  #include "src/core/util/json/json.h"
60
60
  #include "src/core/util/json/json_args.h"
61
61
  #include "src/core/util/json/json_object_loader.h"
@@ -333,7 +333,7 @@ class XdsClusterImplLb::Picker::SubchannelCallTracker final
333
333
  locality_stats_.reset(DEBUG_LOCATION, "SubchannelCallTracker");
334
334
  call_counter_.reset(DEBUG_LOCATION, "SubchannelCallTracker");
335
335
  #ifndef NDEBUG
336
- DCHECK(!started_);
336
+ GRPC_DCHECK(!started_);
337
337
  #endif
338
338
  }
339
339
 
@@ -561,7 +561,7 @@ absl::Status XdsClusterImplLb::UpdateLocked(UpdateArgs args) {
561
561
  // different priority child name if that happens, which means that this
562
562
  // policy instance will get replaced instead of being updated.
563
563
  if (config_ != nullptr) {
564
- CHECK(config_->cluster_name() == new_config->cluster_name());
564
+ GRPC_CHECK(config_->cluster_name() == new_config->cluster_name());
565
565
  }
566
566
  // Get xDS config.
567
567
  auto new_xds_config = args.args.GetObjectRef<XdsConfig>();
@@ -36,7 +36,6 @@
36
36
 
37
37
  #include "absl/base/thread_annotations.h"
38
38
  #include "absl/functional/function_ref.h"
39
- #include "absl/log/check.h"
40
39
  #include "absl/log/log.h"
41
40
  #include "absl/status/status.h"
42
41
  #include "absl/status/statusor.h"
@@ -69,6 +68,7 @@
69
68
  #include "src/core/resolver/endpoint_addresses.h"
70
69
  #include "src/core/resolver/xds/xds_config.h"
71
70
  #include "src/core/util/debug_location.h"
71
+ #include "src/core/util/grpc_check.h"
72
72
  #include "src/core/util/json/json.h"
73
73
  #include "src/core/util/json/json_args.h"
74
74
  #include "src/core/util/json/json_object_loader.h"
@@ -225,7 +225,7 @@ class XdsOverrideHostLb final : public LoadBalancingPolicy {
225
225
  // already has an owned subchannel.
226
226
  void SetOwnedSubchannel(RefCountedPtr<SubchannelWrapper> subchannel)
227
227
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsOverrideHostLb::mu_) {
228
- DCHECK(!HasOwnedSubchannel());
228
+ GRPC_DCHECK(!HasOwnedSubchannel());
229
229
  subchannel_ = std::move(subchannel);
230
230
  }
231
231
 
@@ -427,7 +427,7 @@ XdsOverrideHostLb::Picker::Picker(
427
427
  std::optional<LoadBalancingPolicy::PickResult>
428
428
  XdsOverrideHostLb::Picker::PickOverriddenHost(
429
429
  XdsOverrideHostAttribute* override_host_attr) const {
430
- CHECK_NE(override_host_attr, nullptr);
430
+ GRPC_CHECK_NE(override_host_attr, nullptr);
431
431
  auto cookie_address_list = override_host_attr->cookie_address_list();
432
432
  if (cookie_address_list.empty()) return std::nullopt;
433
433
  // The cookie has an address list, so look through the addresses in order.
@@ -904,7 +904,7 @@ void XdsOverrideHostLb::CreateSubchannelForAddress(absl::string_view address) {
904
904
  << "[xds_override_host_lb " << this << "] creating owned subchannel for "
905
905
  << address;
906
906
  auto addr = StringToSockaddr(address);
907
- CHECK(addr.ok());
907
+ GRPC_CHECK(addr.ok());
908
908
  // We need to do 3 things here:
909
909
  // 1. Get the per-endpoint args from the entry in subchannel_map_.
910
910
  // 2. Create the subchannel using those per-endpoint args.
@@ -35,7 +35,6 @@
35
35
  #include <utility>
36
36
 
37
37
  #include "absl/base/thread_annotations.h"
38
- #include "absl/log/check.h"
39
38
  #include "absl/strings/str_cat.h"
40
39
  #include "src/core/lib/iomgr/closure.h"
41
40
  #include "src/core/lib/iomgr/error.h"
@@ -44,6 +43,7 @@
44
43
  #include "src/core/lib/iomgr/socket_utils_posix.h"
45
44
  #include "src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h"
46
45
  #include "src/core/resolver/dns/c_ares/grpc_ares_wrapper.h"
46
+ #include "src/core/util/grpc_check.h"
47
47
  #include "src/core/util/sync.h"
48
48
 
49
49
  namespace grpc_core {
@@ -113,7 +113,7 @@ class GrpcPolledFdFactoryPosix final : public GrpcPolledFdFactory {
113
113
  GrpcPolledFd* NewGrpcPolledFdLocked(
114
114
  ares_socket_t as, grpc_pollset_set* driver_pollset_set) override {
115
115
  auto insert_result = owned_fds_.insert(as);
116
- CHECK(insert_result.second);
116
+ GRPC_CHECK(insert_result.second);
117
117
  return new GrpcPolledFdPosix(as, driver_pollset_set);
118
118
  }
119
119
 
@@ -31,7 +31,6 @@
31
31
  #include <unordered_set>
32
32
 
33
33
  #include "absl/functional/any_invocable.h"
34
- #include "absl/log/check.h"
35
34
  #include "absl/strings/str_format.h"
36
35
  #include "src/core/lib/address_utils/sockaddr_utils.h"
37
36
  #include "src/core/lib/iomgr/iocp_windows.h"
@@ -45,6 +44,7 @@
45
44
  #include "src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h"
46
45
  #include "src/core/resolver/dns/c_ares/grpc_ares_wrapper.h"
47
46
  #include "src/core/util/crash.h"
47
+ #include "src/core/util/grpc_check.h"
48
48
  #include "src/core/util/memory.h"
49
49
  #include "src/core/util/string.h"
50
50
 
@@ -135,8 +135,8 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
135
135
  << "| ~GrpcPolledFdWindows shutdown_called_: " << shutdown_called_;
136
136
  CSliceUnref(read_buf_);
137
137
  CSliceUnref(write_buf_);
138
- CHECK_EQ(read_closure_, nullptr);
139
- CHECK_EQ(write_closure_, nullptr);
138
+ GRPC_CHECK_EQ(read_closure_, nullptr);
139
+ GRPC_CHECK_EQ(write_closure_, nullptr);
140
140
  if (!shutdown_called_) {
141
141
  // This can happen if the socket was never seen by grpc ares wrapper
142
142
  // code, i.e. if we never started I/O polling on it.
@@ -156,16 +156,16 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
156
156
  }
157
157
 
158
158
  void RegisterForOnReadableLocked(grpc_closure* read_closure) override {
159
- CHECK_EQ(read_closure_, nullptr);
159
+ GRPC_CHECK_EQ(read_closure_, nullptr);
160
160
  read_closure_ = read_closure;
161
- CHECK_EQ(GRPC_SLICE_LENGTH(read_buf_), 0);
161
+ GRPC_CHECK_EQ(GRPC_SLICE_LENGTH(read_buf_), 0);
162
162
  CSliceUnref(read_buf_);
163
- CHECK(!read_buf_has_data_);
163
+ GRPC_CHECK(!read_buf_has_data_);
164
164
  read_buf_ = GRPC_SLICE_MALLOC(4192);
165
165
  if (connect_done_) {
166
166
  ContinueRegisterForOnReadableLocked();
167
167
  } else {
168
- CHECK(pending_continue_register_for_on_readable_locked_ == false);
168
+ GRPC_CHECK(pending_continue_register_for_on_readable_locked_ == false);
169
169
  pending_continue_register_for_on_readable_locked_ = true;
170
170
  }
171
171
  }
@@ -175,7 +175,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
175
175
  << "(c-ares resolver) fd:|" << GetName()
176
176
  << "| ContinueRegisterForOnReadableLocked "
177
177
  << "wsa_connect_error_:" << wsa_connect_error_;
178
- CHECK(connect_done_);
178
+ GRPC_CHECK(connect_done_);
179
179
  if (wsa_connect_error_ != 0) {
180
180
  ScheduleAndNullReadClosure(GRPC_WSA_ERROR(wsa_connect_error_, "connect"));
181
181
  return;
@@ -212,16 +212,16 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
212
212
  << "(c-ares resolver) fd:|" << GetName()
213
213
  << "| RegisterForOnWriteableLocked called";
214
214
  } else {
215
- CHECK(socket_type_ == SOCK_STREAM);
215
+ GRPC_CHECK(socket_type_ == SOCK_STREAM);
216
216
  GRPC_TRACE_VLOG(cares_resolver, 2)
217
217
  << "(c-ares resolver) fd:|" << GetName()
218
218
  << "| RegisterForOnWriteableLocked called tcp_write_state_: "
219
219
  << tcp_write_state_ << " connect_done_: " << connect_done_;
220
220
  }
221
- CHECK_EQ(write_closure_, nullptr);
221
+ GRPC_CHECK_EQ(write_closure_, nullptr);
222
222
  write_closure_ = write_closure;
223
223
  if (!connect_done_) {
224
- CHECK(!pending_continue_register_for_on_writeable_locked_);
224
+ GRPC_CHECK(!pending_continue_register_for_on_writeable_locked_);
225
225
  pending_continue_register_for_on_writeable_locked_ = true;
226
226
  // Register an async OnTcpConnect callback here rather than when the
227
227
  // connect was initiated, since we are now guaranteed to hold a ref of the
@@ -237,7 +237,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
237
237
  << "(c-ares resolver) fd:|" << GetName()
238
238
  << "| ContinueRegisterForOnWriteableLocked "
239
239
  << "wsa_connect_error_:" << wsa_connect_error_;
240
- CHECK(connect_done_);
240
+ GRPC_CHECK(connect_done_);
241
241
  if (wsa_connect_error_ != 0) {
242
242
  ScheduleAndNullWriteClosure(
243
243
  GRPC_WSA_ERROR(wsa_connect_error_, "connect"));
@@ -246,7 +246,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
246
246
  if (socket_type_ == SOCK_DGRAM) {
247
247
  ScheduleAndNullWriteClosure(absl::OkStatus());
248
248
  } else {
249
- CHECK(socket_type_ == SOCK_STREAM);
249
+ GRPC_CHECK(socket_type_ == SOCK_STREAM);
250
250
  int wsa_error_code = 0;
251
251
  switch (tcp_write_state_) {
252
252
  case WRITE_IDLE:
@@ -272,7 +272,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
272
272
  bool IsFdStillReadableLocked() override { return read_buf_has_data_; }
273
273
 
274
274
  void ShutdownLocked(grpc_error_handle /* error */) override {
275
- CHECK(!shutdown_called_);
275
+ GRPC_CHECK(!shutdown_called_);
276
276
  shutdown_called_ = true;
277
277
  on_shutdown_locked_();
278
278
  grpc_winsocket_shutdown(winsocket_);
@@ -308,7 +308,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
308
308
  // c-ares overloads this recv_from virtual socket function to receive
309
309
  // data on both UDP and TCP sockets, and from is nullptr for TCP.
310
310
  if (from != nullptr) {
311
- CHECK(*from_len >= recv_from_source_addr_len_);
311
+ GRPC_CHECK(*from_len >= recv_from_source_addr_len_);
312
312
  memcpy(from, &recv_from_source_addr_, recv_from_source_addr_len_);
313
313
  *from_len = recv_from_source_addr_len_;
314
314
  }
@@ -379,7 +379,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
379
379
  // to write everything inline.
380
380
  GRPC_TRACE_VLOG(cares_resolver, 2)
381
381
  << "(c-ares resolver) fd:" << GetName() << " SendVUDP called";
382
- CHECK_EQ(GRPC_SLICE_LENGTH(write_buf_), 0);
382
+ GRPC_CHECK_EQ(GRPC_SLICE_LENGTH(write_buf_), 0);
383
383
  CSliceUnref(write_buf_);
384
384
  write_buf_ = FlattenIovec(iov, iov_count);
385
385
  DWORD bytes_sent = 0;
@@ -414,7 +414,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
414
414
  switch (tcp_write_state_) {
415
415
  case WRITE_IDLE:
416
416
  tcp_write_state_ = WRITE_REQUESTED;
417
- CHECK_EQ(GRPC_SLICE_LENGTH(write_buf_), 0);
417
+ GRPC_CHECK_EQ(GRPC_SLICE_LENGTH(write_buf_), 0);
418
418
  CSliceUnref(write_buf_);
419
419
  write_buf_ = FlattenIovec(iov, iov_count);
420
420
  wsa_error_ctx->SetWSAError(WSAEWOULDBLOCK);
@@ -430,12 +430,12 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
430
430
  // send again. If c-ares still needs to send even more data, we'll get
431
431
  // to it eventually.
432
432
  grpc_slice currently_attempted = FlattenIovec(iov, iov_count);
433
- CHECK(GRPC_SLICE_LENGTH(currently_attempted) >=
434
- GRPC_SLICE_LENGTH(write_buf_));
433
+ GRPC_CHECK(GRPC_SLICE_LENGTH(currently_attempted) >=
434
+ GRPC_SLICE_LENGTH(write_buf_));
435
435
  ares_ssize_t total_sent = 0;
436
436
  for (size_t i = 0; i < GRPC_SLICE_LENGTH(write_buf_); i++) {
437
- CHECK(GRPC_SLICE_START_PTR(currently_attempted)[i] ==
438
- GRPC_SLICE_START_PTR(write_buf_)[i]);
437
+ GRPC_CHECK(GRPC_SLICE_START_PTR(currently_attempted)[i] ==
438
+ GRPC_SLICE_START_PTR(write_buf_)[i]);
439
439
  total_sent++;
440
440
  }
441
441
  CSliceUnref(currently_attempted);
@@ -460,9 +460,9 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
460
460
  << pending_continue_register_for_on_readable_locked_
461
461
  << " pending_register_for_writeable:"
462
462
  << pending_continue_register_for_on_writeable_locked_;
463
- CHECK(!connect_done_);
463
+ GRPC_CHECK(!connect_done_);
464
464
  connect_done_ = true;
465
- CHECK_EQ(wsa_connect_error_, 0);
465
+ GRPC_CHECK_EQ(wsa_connect_error_, 0);
466
466
  if (!error.ok() || shutdown_called_) {
467
467
  wsa_connect_error_ = WSA_OPERATION_ABORTED;
468
468
  } else {
@@ -472,7 +472,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
472
472
  WSAGetOverlappedResult(grpc_winsocket_wrapped_socket(winsocket_),
473
473
  &winsocket_->write_info.overlapped,
474
474
  &transferred_bytes, FALSE, &flags);
475
- CHECK_EQ(transferred_bytes, 0);
475
+ GRPC_CHECK_EQ(transferred_bytes, 0);
476
476
  if (!wsa_success) {
477
477
  wsa_connect_error_ = WSAGetLastError();
478
478
  char* msg = gpr_format_message(wsa_connect_error_);
@@ -507,8 +507,8 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
507
507
  ares_socklen_t target_len) {
508
508
  GRPC_TRACE_VLOG(cares_resolver, 2)
509
509
  << "(c-ares resolver) fd:" << GetName() << " ConnectUDP";
510
- CHECK(!connect_done_);
511
- CHECK_EQ(wsa_connect_error_, 0);
510
+ GRPC_CHECK(!connect_done_);
511
+ GRPC_CHECK_EQ(wsa_connect_error_, 0);
512
512
  SOCKET s = grpc_winsocket_wrapped_socket(winsocket_);
513
513
  int out =
514
514
  WSAConnect(s, target, target_len, nullptr, nullptr, nullptr, nullptr);
@@ -652,7 +652,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
652
652
  void OnIocpWriteableLocked(grpc_error_handle error) {
653
653
  GRPC_TRACE_VLOG(cares_resolver, 2)
654
654
  << "(c-ares resolver) OnIocpWriteableInner. fd:|" << GetName() << "|";
655
- CHECK(socket_type_ == SOCK_STREAM);
655
+ GRPC_CHECK(socket_type_ == SOCK_STREAM);
656
656
  if (error.ok()) {
657
657
  if (winsocket_->write_info.wsa_error != 0) {
658
658
  error = GRPC_WSA_ERROR(winsocket_->write_info.wsa_error,
@@ -665,7 +665,7 @@ class GrpcPolledFdWindows final : public GrpcPolledFd {
665
665
  << StatusToString(error) << "|";
666
666
  }
667
667
  }
668
- CHECK(tcp_write_state_ == WRITE_PENDING);
668
+ GRPC_CHECK(tcp_write_state_ == WRITE_PENDING);
669
669
  if (error.ok()) {
670
670
  tcp_write_state_ = WRITE_WAITING_FOR_VERIFICATION_UPON_RETRY;
671
671
  write_buf_ = grpc_slice_sub_no_ref(
@@ -726,7 +726,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory {
726
726
  GrpcPolledFd* NewGrpcPolledFdLocked(
727
727
  ares_socket_t as, grpc_pollset_set* /* driver_pollset_set */) override {
728
728
  auto it = sockets_.find(as);
729
- CHECK(it != sockets_.end());
729
+ GRPC_CHECK(it != sockets_.end());
730
730
  return it->second;
731
731
  }
732
732
 
@@ -777,7 +777,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory {
777
777
  << "(c-ares resolver) fd:" << polled_fd->GetName()
778
778
  << " created with params af:" << af << " type:" << type
779
779
  << " protocol:" << protocol;
780
- CHECK(self->sockets_.insert({s, polled_fd}).second);
780
+ GRPC_CHECK(self->sockets_.insert({s, polled_fd}).second);
781
781
  return s;
782
782
  }
783
783
 
@@ -787,7 +787,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory {
787
787
  GrpcPolledFdFactoryWindows* self =
788
788
  static_cast<GrpcPolledFdFactoryWindows*>(user_data);
789
789
  auto it = self->sockets_.find(as);
790
- CHECK(it != self->sockets_.end());
790
+ GRPC_CHECK(it != self->sockets_.end());
791
791
  return it->second->Connect(&wsa_error_ctx, target, target_len);
792
792
  }
793
793
 
@@ -797,7 +797,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory {
797
797
  GrpcPolledFdFactoryWindows* self =
798
798
  static_cast<GrpcPolledFdFactoryWindows*>(user_data);
799
799
  auto it = self->sockets_.find(as);
800
- CHECK(it != self->sockets_.end());
800
+ GRPC_CHECK(it != self->sockets_.end());
801
801
  return it->second->SendV(&wsa_error_ctx, iov, iovec_count);
802
802
  }
803
803
 
@@ -808,7 +808,7 @@ class GrpcPolledFdFactoryWindows final : public GrpcPolledFdFactory {
808
808
  GrpcPolledFdFactoryWindows* self =
809
809
  static_cast<GrpcPolledFdFactoryWindows*>(user_data);
810
810
  auto it = self->sockets_.find(as);
811
- CHECK(it != self->sockets_.end());
811
+ GRPC_CHECK(it != self->sockets_.end());
812
812
  return it->second->RecvFrom(&wsa_error_ctx, data, data_len, flags, from,
813
813
  from_len);
814
814
  }