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
@@ -53,7 +53,6 @@
53
53
 
54
54
  #include "absl/base/thread_annotations.h"
55
55
  #include "absl/hash/hash.h"
56
- #include "absl/log/check.h"
57
56
  #include "absl/log/log.h"
58
57
  #include "absl/random/random.h"
59
58
  #include "absl/status/status.h"
@@ -90,6 +89,7 @@
90
89
  #include "src/core/util/backoff.h"
91
90
  #include "src/core/util/debug_location.h"
92
91
  #include "src/core/util/dual_ref_counted.h"
92
+ #include "src/core/util/grpc_check.h"
93
93
  #include "src/core/util/json/json.h"
94
94
  #include "src/core/util/json/json_args.h"
95
95
  #include "src/core/util/json/json_object_loader.h"
@@ -797,7 +797,7 @@ void RlsLb::ChildPolicyWrapper::StartUpdate(
797
797
  auto child_policy_config = InsertOrUpdateChildPolicyField(
798
798
  lb_policy_->config_->child_policy_config_target_field_name(), target_,
799
799
  lb_policy_->config_->child_policy_config(), &errors);
800
- CHECK(child_policy_config.has_value());
800
+ GRPC_CHECK(child_policy_config.has_value());
801
801
  GRPC_TRACE_LOG(rls_lb, INFO)
802
802
  << "[rlslb " << lb_policy_.get() << "] ChildPolicyWrapper=" << this
803
803
  << " [" << target_
@@ -874,7 +874,7 @@ void RlsLb::ChildPolicyWrapper::ChildPolicyHelper::UpdateState(
874
874
  return;
875
875
  }
876
876
  wrapper_->connectivity_state_ = state;
877
- DCHECK(picker != nullptr);
877
+ GRPC_DCHECK(picker != nullptr);
878
878
  if (picker != nullptr) {
879
879
  // We want to unref the picker after we release the lock.
880
880
  wrapper_->picker_.swap(picker);
@@ -898,7 +898,7 @@ std::map<std::string, std::string> BuildKeyMap(
898
898
  if (it == key_builder_map.end()) {
899
899
  // Didn't find exact match, try method wildcard.
900
900
  last_slash_pos = path.rfind('/');
901
- DCHECK(last_slash_pos != path.npos);
901
+ GRPC_DCHECK(last_slash_pos != path.npos);
902
902
  if (GPR_UNLIKELY(last_slash_pos == path.npos)) return {};
903
903
  std::string service(path.substr(0, last_slash_pos + 1));
904
904
  it = key_builder_map.find(service);
@@ -930,7 +930,7 @@ std::map<std::string, std::string> BuildKeyMap(
930
930
  if (!key_builder->service_key.empty()) {
931
931
  if (last_slash_pos == path.npos) {
932
932
  last_slash_pos = path.rfind('/');
933
- DCHECK(last_slash_pos != path.npos);
933
+ GRPC_DCHECK(last_slash_pos != path.npos);
934
934
  if (GPR_UNLIKELY(last_slash_pos == path.npos)) return {};
935
935
  }
936
936
  key_map[key_builder->service_key] =
@@ -940,7 +940,7 @@ std::map<std::string, std::string> BuildKeyMap(
940
940
  if (!key_builder->method_key.empty()) {
941
941
  if (last_slash_pos == path.npos) {
942
942
  last_slash_pos = path.rfind('/');
943
- DCHECK(last_slash_pos != path.npos);
943
+ GRPC_DCHECK(last_slash_pos != path.npos);
944
944
  if (GPR_UNLIKELY(last_slash_pos == path.npos)) return {};
945
945
  }
946
946
  key_map[key_builder->method_key] =
@@ -1126,7 +1126,7 @@ void RlsLb::Cache::Entry::Orphan() {
1126
1126
  is_shutdown_ = true;
1127
1127
  lb_policy_->cache_.lru_list_.erase(lru_iterator_);
1128
1128
  lru_iterator_ = lb_policy_->cache_.lru_list_.end(); // Just in case.
1129
- CHECK(child_policy_wrappers_.empty());
1129
+ GRPC_CHECK(child_policy_wrappers_.empty());
1130
1130
  backoff_state_.reset();
1131
1131
  if (backoff_timer_ != nullptr) {
1132
1132
  backoff_timer_.reset();
@@ -1137,7 +1137,7 @@ void RlsLb::Cache::Entry::Orphan() {
1137
1137
 
1138
1138
  size_t RlsLb::Cache::Entry::Size() const {
1139
1139
  // lru_iterator_ is not valid once we're shut down.
1140
- CHECK(!is_shutdown_);
1140
+ GRPC_CHECK(!is_shutdown_);
1141
1141
  return lb_policy_->cache_.EntrySizeForKey(*lru_iterator_);
1142
1142
  }
1143
1143
 
@@ -1430,7 +1430,7 @@ void RlsLb::Cache::MaybeShrinkSize(
1430
1430
  auto lru_it = lru_list_.begin();
1431
1431
  if (GPR_UNLIKELY(lru_it == lru_list_.end())) break;
1432
1432
  auto map_it = map_.find(*lru_it);
1433
- CHECK(map_it != map_.end());
1433
+ GRPC_CHECK(map_it != map_.end());
1434
1434
  auto& entry = map_it->second;
1435
1435
  if (!entry->CanEvict()) break;
1436
1436
  GRPC_TRACE_LOG(rls_lb, INFO)
@@ -1578,7 +1578,7 @@ void RlsLb::RlsChannel::Orphan() {
1578
1578
  // Remove channelz linkage.
1579
1579
  if (parent_channelz_node_ != nullptr) {
1580
1580
  channelz::ChannelNode* child_channelz_node = channel_->channelz_node();
1581
- CHECK_NE(child_channelz_node, nullptr);
1581
+ GRPC_CHECK_NE(child_channelz_node, nullptr);
1582
1582
  child_channelz_node->RemoveParent(parent_channelz_node_.get());
1583
1583
  }
1584
1584
  // Stop connectivity watch.
@@ -1614,7 +1614,7 @@ void RlsLb::RlsChannel::ReportResponseLocked(bool response_succeeded) {
1614
1614
  }
1615
1615
 
1616
1616
  void RlsLb::RlsChannel::ResetBackoff() {
1617
- DCHECK(channel_ != nullptr);
1617
+ GRPC_DCHECK(channel_ != nullptr);
1618
1618
  channel_->ResetConnectionBackoff();
1619
1619
  }
1620
1620
 
@@ -1647,7 +1647,7 @@ RlsLb::RlsRequest::RlsRequest(
1647
1647
  absl::OkStatus());
1648
1648
  }
1649
1649
 
1650
- RlsLb::RlsRequest::~RlsRequest() { CHECK_EQ(call_, nullptr); }
1650
+ RlsLb::RlsRequest::~RlsRequest() { GRPC_CHECK_EQ(call_, nullptr); }
1651
1651
 
1652
1652
  void RlsLb::RlsRequest::Orphan() {
1653
1653
  if (call_ != nullptr) {
@@ -1707,7 +1707,7 @@ void RlsLb::RlsRequest::StartCallLocked() {
1707
1707
  Ref(DEBUG_LOCATION, "OnRlsCallComplete").release();
1708
1708
  auto call_error = grpc_call_start_batch_and_execute(
1709
1709
  call_, ops, static_cast<size_t>(op - ops), &call_complete_cb_);
1710
- CHECK_EQ(call_error, GRPC_CALL_OK);
1710
+ GRPC_CHECK_EQ(call_error, GRPC_CALL_OK);
1711
1711
  }
1712
1712
 
1713
1713
  void RlsLb::RlsRequest::OnRlsCallComplete(void* arg, grpc_error_handle error) {
@@ -27,7 +27,6 @@
27
27
  #include <utility>
28
28
  #include <vector>
29
29
 
30
- #include "absl/log/check.h"
31
30
  #include "absl/log/log.h"
32
31
  #include "absl/meta/type_traits.h"
33
32
  #include "absl/random/random.h"
@@ -44,6 +43,7 @@
44
43
  #include "src/core/load_balancing/lb_policy_factory.h"
45
44
  #include "src/core/resolver/endpoint_addresses.h"
46
45
  #include "src/core/util/debug_location.h"
46
+ #include "src/core/util/grpc_check.h"
47
47
  #include "src/core/util/json/json.h"
48
48
  #include "src/core/util/orphanable.h"
49
49
  #include "src/core/util/ref_counted_ptr.h"
@@ -208,8 +208,8 @@ RoundRobin::RoundRobin(Args args) : LoadBalancingPolicy(std::move(args)) {
208
208
  RoundRobin::~RoundRobin() {
209
209
  GRPC_TRACE_LOG(round_robin, INFO)
210
210
  << "[RR " << this << "] Destroying Round Robin policy";
211
- CHECK(endpoint_list_ == nullptr);
212
- CHECK(latest_pending_endpoint_list_ == nullptr);
211
+ GRPC_CHECK(endpoint_list_ == nullptr);
212
+ GRPC_CHECK(latest_pending_endpoint_list_ == nullptr);
213
213
  }
214
214
 
215
215
  void RoundRobin::ShutdownLocked() {
@@ -315,20 +315,20 @@ void RoundRobin::RoundRobinEndpointList::UpdateStateCountersLocked(
315
315
  // We treat IDLE the same as CONNECTING, since it will immediately
316
316
  // transition into that state anyway.
317
317
  if (old_state.has_value()) {
318
- CHECK(*old_state != GRPC_CHANNEL_SHUTDOWN);
318
+ GRPC_CHECK(*old_state != GRPC_CHANNEL_SHUTDOWN);
319
319
  if (*old_state == GRPC_CHANNEL_READY) {
320
- CHECK_GT(num_ready_, 0u);
320
+ GRPC_CHECK_GT(num_ready_, 0u);
321
321
  --num_ready_;
322
322
  } else if (*old_state == GRPC_CHANNEL_CONNECTING ||
323
323
  *old_state == GRPC_CHANNEL_IDLE) {
324
- CHECK_GT(num_connecting_, 0u);
324
+ GRPC_CHECK_GT(num_connecting_, 0u);
325
325
  --num_connecting_;
326
326
  } else if (*old_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
327
- CHECK_GT(num_transient_failure_, 0u);
327
+ GRPC_CHECK_GT(num_transient_failure_, 0u);
328
328
  --num_transient_failure_;
329
329
  }
330
330
  }
331
- CHECK(new_state != GRPC_CHANNEL_SHUTDOWN);
331
+ GRPC_CHECK(new_state != GRPC_CHANNEL_SHUTDOWN);
332
332
  if (new_state == GRPC_CHANNEL_READY) {
333
333
  ++num_ready_;
334
334
  } else if (new_state == GRPC_CHANNEL_CONNECTING ||
@@ -380,7 +380,7 @@ void RoundRobin::RoundRobinEndpointList::
380
380
  pickers.push_back(endpoint->picker());
381
381
  }
382
382
  }
383
- CHECK(!pickers.empty());
383
+ GRPC_CHECK(!pickers.empty());
384
384
  round_robin->channel_control_helper()->UpdateState(
385
385
  GRPC_CHANNEL_READY, absl::OkStatus(),
386
386
  MakeRefCounted<Picker>(round_robin, std::move(pickers)));
@@ -25,7 +25,7 @@
25
25
  #include <vector>
26
26
 
27
27
  #include "absl/functional/any_invocable.h"
28
- #include "absl/log/check.h"
28
+ #include "src/core/util/grpc_check.h"
29
29
 
30
30
  namespace grpc_core {
31
31
 
@@ -146,7 +146,7 @@ std::optional<StaticStrideScheduler> StaticStrideScheduler::Make(
146
146
  }
147
147
  }
148
148
 
149
- CHECK(weights.size() == float_weights.size());
149
+ GRPC_CHECK(weights.size() == float_weights.size());
150
150
  return StaticStrideScheduler{std::move(weights),
151
151
  std::move(next_sequence_func)};
152
152
  }
@@ -156,7 +156,7 @@ StaticStrideScheduler::StaticStrideScheduler(
156
156
  absl::AnyInvocable<uint32_t()> next_sequence_func)
157
157
  : next_sequence_func_(std::move(next_sequence_func)),
158
158
  weights_(std::move(weights)) {
159
- CHECK(next_sequence_func_ != nullptr);
159
+ GRPC_CHECK(next_sequence_func_ != nullptr);
160
160
  }
161
161
 
162
162
  size_t StaticStrideScheduler::Pick() const {
@@ -33,7 +33,6 @@
33
33
  #include <vector>
34
34
 
35
35
  #include "absl/base/thread_annotations.h"
36
- #include "absl/log/check.h"
37
36
  #include "absl/log/log.h"
38
37
  #include "absl/meta/type_traits.h"
39
38
  #include "absl/random/random.h"
@@ -62,6 +61,7 @@
62
61
  #include "src/core/telemetry/stats.h"
63
62
  #include "src/core/telemetry/stats_data.h"
64
63
  #include "src/core/util/debug_location.h"
64
+ #include "src/core/util/grpc_check.h"
65
65
  #include "src/core/util/json/json.h"
66
66
  #include "src/core/util/json/json_args.h"
67
67
  #include "src/core/util/json/json_object_loader.h"
@@ -81,6 +81,8 @@ namespace {
81
81
  constexpr absl::string_view kWeightedRoundRobin = "weighted_round_robin";
82
82
 
83
83
  constexpr absl::string_view kMetricLabelLocality = "grpc.lb.locality";
84
+ constexpr absl::string_view kMetricLabelBackendService =
85
+ "grpc.lb.backend_service";
84
86
 
85
87
  const auto kMetricRrFallback =
86
88
  GlobalInstrumentsRegistry::RegisterUInt64Counter(
@@ -90,7 +92,7 @@ const auto kMetricRrFallback =
90
92
  "fall back to RR behavior.",
91
93
  "{update}", false)
92
94
  .Labels(kMetricLabelTarget)
93
- .OptionalLabels(kMetricLabelLocality)
95
+ .OptionalLabels(kMetricLabelLocality, kMetricLabelBackendService)
94
96
  .Build();
95
97
 
96
98
  const auto kMetricEndpointWeightNotYetUsable =
@@ -102,7 +104,7 @@ const auto kMetricEndpointWeightNotYetUsable =
102
104
  "period).",
103
105
  "{endpoint}", false)
104
106
  .Labels(kMetricLabelTarget)
105
- .OptionalLabels(kMetricLabelLocality)
107
+ .OptionalLabels(kMetricLabelLocality, kMetricLabelBackendService)
106
108
  .Build();
107
109
 
108
110
  const auto kMetricEndpointWeightStale =
@@ -112,7 +114,7 @@ const auto kMetricEndpointWeightStale =
112
114
  "latest weight is older than the expiration period.",
113
115
  "{endpoint}", false)
114
116
  .Labels(kMetricLabelTarget)
115
- .OptionalLabels(kMetricLabelLocality)
117
+ .OptionalLabels(kMetricLabelLocality, kMetricLabelBackendService)
116
118
  .Build();
117
119
 
118
120
  const auto kMetricEndpointWeights =
@@ -124,7 +126,7 @@ const auto kMetricEndpointWeights =
124
126
  "without usable weights will have weight 0.",
125
127
  "{weight}", false)
126
128
  .Labels(kMetricLabelTarget)
127
- .OptionalLabels(kMetricLabelLocality)
129
+ .OptionalLabels(kMetricLabelLocality, kMetricLabelBackendService)
128
130
  .Build();
129
131
 
130
132
  // Config for WRR policy.
@@ -413,6 +415,7 @@ class WeightedRoundRobin final : public LoadBalancingPolicy {
413
415
  ABSL_GUARDED_BY(&endpoint_weight_map_mu_);
414
416
 
415
417
  const absl::string_view locality_name_;
418
+ const absl::string_view backend_service_name_;
416
419
 
417
420
  bool shutdown_ = false;
418
421
 
@@ -574,7 +577,7 @@ void WeightedRoundRobin::Picker::Orphaned() {
574
577
 
575
578
  WeightedRoundRobin::PickResult WeightedRoundRobin::Picker::Pick(PickArgs args) {
576
579
  size_t index = PickIndex();
577
- CHECK(index < endpoints_.size());
580
+ GRPC_CHECK(index < endpoints_.size());
578
581
  auto& endpoint_info = endpoints_[index];
579
582
  GRPC_TRACE_LOG(weighted_round_robin_lb, INFO)
580
583
  << "[WRR " << wrr_.get() << " picker " << this << "] returning index "
@@ -620,16 +623,18 @@ void WeightedRoundRobin::Picker::BuildSchedulerAndStartTimerLocked() {
620
623
  now, config_->weight_expiration_period(), config_->blackout_period(),
621
624
  &num_not_yet_usable, &num_stale);
622
625
  weights.push_back(weight);
623
- stats_plugins.RecordHistogram(kMetricEndpointWeights, weight,
624
- {wrr_->channel_control_helper()->GetTarget()},
625
- {wrr_->locality_name_});
626
+ stats_plugins.RecordHistogram(
627
+ kMetricEndpointWeights, weight,
628
+ {wrr_->channel_control_helper()->GetTarget()},
629
+ {wrr_->locality_name_, wrr_->backend_service_name_});
626
630
  }
627
- stats_plugins.AddCounter(
628
- kMetricEndpointWeightNotYetUsable, num_not_yet_usable,
629
- {wrr_->channel_control_helper()->GetTarget()}, {wrr_->locality_name_});
631
+ stats_plugins.AddCounter(kMetricEndpointWeightNotYetUsable,
632
+ num_not_yet_usable,
633
+ {wrr_->channel_control_helper()->GetTarget()},
634
+ {wrr_->locality_name_, wrr_->backend_service_name_});
630
635
  stats_plugins.AddCounter(kMetricEndpointWeightStale, num_stale,
631
636
  {wrr_->channel_control_helper()->GetTarget()},
632
- {wrr_->locality_name_});
637
+ {wrr_->locality_name_, wrr_->backend_service_name_});
633
638
  GRPC_TRACE_LOG(weighted_round_robin_lb, INFO)
634
639
  << "[WRR " << wrr_.get() << " picker " << this
635
640
  << "] new weights: " << absl::StrJoin(weights, " ");
@@ -646,9 +651,9 @@ void WeightedRoundRobin::Picker::BuildSchedulerAndStartTimerLocked() {
646
651
  GRPC_TRACE_LOG(weighted_round_robin_lb, INFO)
647
652
  << "[WRR " << wrr_.get() << " picker " << this
648
653
  << "] no scheduler, falling back to RR";
649
- stats_plugins.AddCounter(kMetricRrFallback, 1,
650
- {wrr_->channel_control_helper()->GetTarget()},
651
- {wrr_->locality_name_});
654
+ stats_plugins.AddCounter(
655
+ kMetricRrFallback, 1, {wrr_->channel_control_helper()->GetTarget()},
656
+ {wrr_->locality_name_, wrr_->backend_service_name_});
652
657
  }
653
658
  {
654
659
  MutexLock lock(&scheduler_mu_);
@@ -689,17 +694,19 @@ WeightedRoundRobin::WeightedRoundRobin(Args args)
689
694
  : LoadBalancingPolicy(std::move(args)),
690
695
  locality_name_(channel_args()
691
696
  .GetString(GRPC_ARG_LB_WEIGHTED_TARGET_CHILD)
692
- .value_or("")) {
697
+ .value_or("")),
698
+ backend_service_name_(
699
+ channel_args().GetString(GRPC_ARG_BACKEND_SERVICE).value_or("")) {
693
700
  GRPC_TRACE_LOG(weighted_round_robin_lb, INFO)
694
- << "[WRR " << this << "] Created -- locality_name=\""
695
- << std::string(locality_name_) << "\"";
701
+ << "[WRR " << this << "] Created -- locality_name=\"" << locality_name_
702
+ << "\", backend_service_name=\"" << backend_service_name_ << "\"";
696
703
  }
697
704
 
698
705
  WeightedRoundRobin::~WeightedRoundRobin() {
699
706
  GRPC_TRACE_LOG(weighted_round_robin_lb, INFO)
700
707
  << "[WRR " << this << "] Destroying Round Robin policy";
701
- CHECK(endpoint_list_ == nullptr);
702
- CHECK(latest_pending_endpoint_list_ == nullptr);
708
+ GRPC_CHECK(endpoint_list_ == nullptr);
709
+ GRPC_CHECK(latest_pending_endpoint_list_ == nullptr);
703
710
  }
704
711
 
705
712
  void WeightedRoundRobin::ShutdownLocked() {
@@ -898,20 +905,20 @@ void WeightedRoundRobin::WrrEndpointList::UpdateStateCountersLocked(
898
905
  // We treat IDLE the same as CONNECTING, since it will immediately
899
906
  // transition into that state anyway.
900
907
  if (old_state.has_value()) {
901
- CHECK(*old_state != GRPC_CHANNEL_SHUTDOWN);
908
+ GRPC_CHECK(*old_state != GRPC_CHANNEL_SHUTDOWN);
902
909
  if (*old_state == GRPC_CHANNEL_READY) {
903
- CHECK_GT(num_ready_, 0u);
910
+ GRPC_CHECK_GT(num_ready_, 0u);
904
911
  --num_ready_;
905
912
  } else if (*old_state == GRPC_CHANNEL_CONNECTING ||
906
913
  *old_state == GRPC_CHANNEL_IDLE) {
907
- CHECK_GT(num_connecting_, 0u);
914
+ GRPC_CHECK_GT(num_connecting_, 0u);
908
915
  --num_connecting_;
909
916
  } else if (*old_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
910
- CHECK_GT(num_transient_failure_, 0u);
917
+ GRPC_CHECK_GT(num_transient_failure_, 0u);
911
918
  --num_transient_failure_;
912
919
  }
913
920
  }
914
- CHECK(new_state != GRPC_CHANNEL_SHUTDOWN);
921
+ GRPC_CHECK(new_state != GRPC_CHANNEL_SHUTDOWN);
915
922
  if (new_state == GRPC_CHANNEL_READY) {
916
923
  ++num_ready_;
917
924
  } else if (new_state == GRPC_CHANNEL_CONNECTING ||
@@ -31,7 +31,6 @@
31
31
  #include <vector>
32
32
 
33
33
  #include "absl/base/thread_annotations.h"
34
- #include "absl/log/check.h"
35
34
  #include "absl/log/log.h"
36
35
  #include "absl/meta/type_traits.h"
37
36
  #include "absl/random/random.h"
@@ -54,6 +53,7 @@
54
53
  #include "src/core/load_balancing/lb_policy_registry.h"
55
54
  #include "src/core/resolver/endpoint_addresses.h"
56
55
  #include "src/core/util/debug_location.h"
56
+ #include "src/core/util/grpc_check.h"
57
57
  #include "src/core/util/json/json.h"
58
58
  #include "src/core/util/json/json_args.h"
59
59
  #include "src/core/util/json/json_object_loader.h"
@@ -265,7 +265,7 @@ WeightedTargetLb::PickResult WeightedTargetLb::WeightedPicker::Pick(
265
265
  }
266
266
  }
267
267
  if (index == 0) index = start_index;
268
- CHECK(pickers_[index].first > key);
268
+ GRPC_CHECK(pickers_[index].first > key);
269
269
  // Delegate to the child picker.
270
270
  return pickers_[index].second->Pick(args);
271
271
  }
@@ -394,7 +394,7 @@ void WeightedTargetLb::UpdateStateLocked() {
394
394
  << " weight=" << child->weight() << " picker=" << child_picker.get();
395
395
  switch (child->connectivity_state()) {
396
396
  case GRPC_CHANNEL_READY: {
397
- CHECK_GT(child->weight(), 0u);
397
+ GRPC_CHECK_GT(child->weight(), 0u);
398
398
  ready_end += child->weight();
399
399
  ready_picker_list.emplace_back(ready_end, std::move(child_picker));
400
400
  break;
@@ -408,7 +408,7 @@ void WeightedTargetLb::UpdateStateLocked() {
408
408
  break;
409
409
  }
410
410
  case GRPC_CHANNEL_TRANSIENT_FAILURE: {
411
- CHECK_GT(child->weight(), 0u);
411
+ GRPC_CHECK_GT(child->weight(), 0u);
412
412
  tf_end += child->weight();
413
413
  tf_picker_list.emplace_back(tf_end, std::move(child_picker));
414
414
  break;
@@ -482,7 +482,7 @@ void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::Orphan() {
482
482
  }
483
483
 
484
484
  void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::OnTimerLocked() {
485
- CHECK(timer_handle_.has_value());
485
+ GRPC_CHECK(timer_handle_.has_value());
486
486
  timer_handle_.reset();
487
487
  weighted_child_->weighted_target_policy_->targets_.erase(
488
488
  weighted_child_->name_);