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
@@ -32,15 +32,17 @@
32
32
 
33
33
  #include "absl/base/thread_annotations.h"
34
34
  #include "absl/container/flat_hash_set.h"
35
- #include "absl/log/check.h"
36
35
  #include "absl/log/log.h"
37
36
  #include "absl/strings/string_view.h"
38
37
  #include "src/core/channelz/channelz.h"
38
+ #include "src/core/config/config_vars.h"
39
39
  #include "src/core/lib/debug/trace.h"
40
40
  #include "src/core/lib/experiments/experiments.h"
41
41
  #include "src/core/lib/promise/activity.h"
42
42
  #include "src/core/lib/promise/poll.h"
43
43
  #include "src/core/lib/resource_quota/periodic_update.h"
44
+ #include "src/core/lib/resource_quota/telemetry.h"
45
+ #include "src/core/util/grpc_check.h"
44
46
  #include "src/core/util/orphanable.h"
45
47
  #include "src/core/util/ref_counted_ptr.h"
46
48
  #include "src/core/util/sync.h"
@@ -134,7 +136,7 @@ class ReclaimerQueue {
134
136
  explicit Handle(F reclaimer, std::shared_ptr<State> state)
135
137
  : sweep_(new SweepFn<F>(std::move(reclaimer), std::move(state))) {}
136
138
  ~Handle() override {
137
- DCHECK_EQ(sweep_.load(std::memory_order_relaxed), nullptr);
139
+ GRPC_DCHECK_EQ(sweep_.load(std::memory_order_relaxed), nullptr);
138
140
  }
139
141
 
140
142
  Handle(const Handle&) = delete;
@@ -273,6 +275,11 @@ class PressureTracker {
273
275
  std::atomic<double> report_{0.0};
274
276
  PeriodicUpdate update_{Duration::Seconds(1)};
275
277
  PressureController controller_{100, 3};
278
+
279
+ const double target_memory_pressure_ =
280
+ ConfigVars::Get().ExperimentalTargetMemoryPressure();
281
+ const double memory_pressure_threshold_ =
282
+ ConfigVars::Get().ExperimentalMemoryPressureThreshold();
276
283
  };
277
284
  } // namespace memory_quota_detail
278
285
 
@@ -284,7 +291,8 @@ static constexpr size_t kSmallAllocatorThreshold = 0.1 * 1024 * 1024;
284
291
 
285
292
  class BasicMemoryQuota final
286
293
  : public std::enable_shared_from_this<BasicMemoryQuota>,
287
- public channelz::DataSource {
294
+ public channelz::DataSource,
295
+ public GaugeProvider<ResourceQuotaDomain> {
288
296
  public:
289
297
  // Data about current memory pressure.
290
298
  struct PressureInfo {
@@ -298,8 +306,9 @@ class BasicMemoryQuota final
298
306
  };
299
307
 
300
308
  explicit BasicMemoryQuota(
301
- RefCountedPtr<channelz::ResourceQuotaNode> channelz_node);
302
- ~BasicMemoryQuota() { channelz::DataSource::SourceDestructing(); }
309
+ RefCountedPtr<channelz::ResourceQuotaNode> channelz_node,
310
+ InstrumentStorageRefPtr<ResourceQuotaDomain> telemetry_storage);
311
+ ~BasicMemoryQuota();
303
312
 
304
313
  // Start the reclamation activity.
305
314
  void Start();
@@ -335,6 +344,12 @@ class BasicMemoryQuota final
335
344
 
336
345
  void AddData(channelz::DataSink sink) override;
337
346
 
347
+ void PopulateGaugeData(GaugeSink<ResourceQuotaDomain>& sink) override;
348
+
349
+ InstrumentStorage<ResourceQuotaDomain>* telemetry_storage() const {
350
+ return telemetry_storage_.get();
351
+ }
352
+
338
353
  private:
339
354
  friend class ReclamationSweep;
340
355
  class WaitForSweepPromise;
@@ -387,6 +402,7 @@ class BasicMemoryQuota final
387
402
  std::atomic<uint64_t> reclamation_counter_{0};
388
403
  // Memory pressure smoothing
389
404
  memory_quota_detail::PressureTracker pressure_tracker_;
405
+ const InstrumentStorageRefPtr<ResourceQuotaDomain> telemetry_storage_;
390
406
  };
391
407
 
392
408
  // MemoryAllocatorImpl grants the owner the ability to allocate memory from an
@@ -440,7 +456,7 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl {
440
456
  template <typename F>
441
457
  void PostReclaimer(ReclamationPass pass, F fn) {
442
458
  MutexLock lock(&reclaimer_mu_);
443
- CHECK(!shutdown_);
459
+ GRPC_CHECK(!shutdown_);
444
460
  InsertReclaimer(static_cast<size_t>(pass), std::move(fn));
445
461
  }
446
462
 
@@ -462,6 +478,10 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl {
462
478
 
463
479
  void FillChannelzProperties(channelz::PropertyList& list);
464
480
 
481
+ InstrumentStorage<ResourceQuotaDomain>* telemetry_storage() const {
482
+ return memory_quota_->telemetry_storage();
483
+ }
484
+
465
485
  private:
466
486
  static constexpr size_t kMaxQuotaBufferSize = 1024 * 1024;
467
487
 
@@ -537,12 +557,23 @@ class MemoryOwner final : public MemoryAllocator {
537
557
  // Is this object valid (ie has not been moved out of or reset)
538
558
  bool is_valid() const { return impl() != nullptr; }
539
559
 
540
- static double memory_pressure_high_threshold() { return 0.99; }
560
+ static double memory_pressure_high_threshold_reject_new_streams() {
561
+ return 0.99;
562
+ }
563
+
564
+ static double memory_pressure_high_threshold_reject_new_connections() {
565
+ return 0.99;
566
+ }
541
567
 
542
- // Return true if the controlled memory pressure is high.
543
- bool IsMemoryPressureHigh() const {
568
+ // Return true if the controlled memory pressure is high enough to reject new
569
+ // streams.
570
+ bool RejectNewStreamsUnderHighMemoryPressure() const {
544
571
  return GetPressureInfo().pressure_control_value >
545
- memory_pressure_high_threshold();
572
+ memory_pressure_high_threshold_reject_new_streams();
573
+ }
574
+
575
+ InstrumentStorage<ResourceQuotaDomain>* telemetry_storage() const {
576
+ return impl()->telemetry_storage();
546
577
  }
547
578
 
548
579
  private:
@@ -560,8 +591,9 @@ class MemoryQuota final
560
591
  : public grpc_event_engine::experimental::MemoryAllocatorFactory {
561
592
  public:
562
593
  explicit MemoryQuota(RefCountedPtr<channelz::ResourceQuotaNode> channelz_node)
563
- : memory_quota_(
564
- std::make_shared<BasicMemoryQuota>(std::move(channelz_node))) {
594
+ : memory_quota_(std::make_shared<BasicMemoryQuota>(
595
+ std::move(channelz_node),
596
+ ResourceQuotaDomain::GetStorage(channelz_node->name()))) {
565
597
  memory_quota_->Start();
566
598
  }
567
599
  ~MemoryQuota() override {
@@ -579,9 +611,11 @@ class MemoryQuota final
579
611
  // Resize the quota to new_size.
580
612
  void SetSize(size_t new_size) { memory_quota_->SetSize(new_size); }
581
613
 
582
- bool IsMemoryPressureHigh() const {
614
+ // Return true if the controlled memory pressure is high enough to reject new
615
+ // connections.
616
+ bool RejectNewConnectionsUnderHighMemoryPressure() const {
583
617
  return memory_quota_->GetPressureInfo().pressure_control_value >
584
- MemoryOwner::memory_pressure_high_threshold();
618
+ MemoryOwner::memory_pressure_high_threshold_reject_new_connections();
585
619
  }
586
620
 
587
621
  private:
@@ -597,8 +631,6 @@ inline MemoryQuotaRefPtr MakeMemoryQuota(
597
631
 
598
632
  std::vector<std::shared_ptr<BasicMemoryQuota>> AllMemoryQuotas();
599
633
 
600
- void SetContainerMemoryPressure(double pressure);
601
-
602
634
  double ContainerMemoryPressure();
603
635
 
604
636
  } // namespace grpc_core
@@ -0,0 +1,54 @@
1
+ // Copyright 2025 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_SRC_CORE_LIB_RESOURCE_QUOTA_TELEMETRY_H
16
+ #define GRPC_SRC_CORE_LIB_RESOURCE_QUOTA_TELEMETRY_H
17
+
18
+ #include "src/core/telemetry/instrument.h"
19
+
20
+ namespace grpc_core {
21
+
22
+ class ResourceQuotaDomain final : public InstrumentDomain<ResourceQuotaDomain> {
23
+ public:
24
+ using Backend = HighContentionBackend;
25
+ static constexpr auto kLabels = Labels("grpc.resource_quota");
26
+
27
+ static inline const auto kCallsDropped = RegisterCounter(
28
+ "grpc.resource_quota.calls_dropped",
29
+ "EXPERIMENTAL. Number of calls dropped due to resource quota "
30
+ "exceeded",
31
+ "calls");
32
+ static inline const auto kCallsRejected = RegisterCounter(
33
+ "grpc.resource_quota.calls_rejected",
34
+ "EXPERIMENTAL. Number of calls rejected due to resource quota "
35
+ "exceeded",
36
+ "calls");
37
+ static inline const auto kConnectionsDropped = RegisterCounter(
38
+ "grpc.resource_quota.connections_dropped",
39
+ "EXPERIMENTAL. Number of connections dropped due to resource quota "
40
+ "exceeded",
41
+ "connections");
42
+ static inline const auto kInstantaneousMemoryPressure = RegisterDoubleGauge(
43
+ "grpc.resource_quota.instantaneous_memory_pressure",
44
+ "The current instantaneously measured memory pressure.", "ratio");
45
+ static inline const auto kMemoryPressureControlValue = RegisterDoubleGauge(
46
+ "grpc.resource_quota.memory_pressure_control_value",
47
+ "A control value that can be used to scale buffer sizes up or down to "
48
+ "adjust memory pressure to our target set point.",
49
+ "ratio");
50
+ };
51
+
52
+ } // namespace grpc_core
53
+
54
+ #endif // GRPC_SRC_CORE_LIB_RESOURCE_QUOTA_TELEMETRY_H
@@ -16,7 +16,7 @@
16
16
 
17
17
  #include <grpc/support/port_platform.h>
18
18
 
19
- #include "absl/log/check.h"
19
+ #include "src/core/util/grpc_check.h"
20
20
 
21
21
  namespace grpc_core {
22
22
 
@@ -38,7 +38,7 @@ bool ThreadQuota::Reserve(size_t num_threads) {
38
38
 
39
39
  void ThreadQuota::Release(size_t num_threads) {
40
40
  MutexLock lock(&mu_);
41
- CHECK(num_threads <= allocated_);
41
+ GRPC_CHECK(num_threads <= allocated_);
42
42
  allocated_ -= num_threads;
43
43
  }
44
44
 
@@ -0,0 +1,33 @@
1
+ // Copyright 2025 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #include "src/core/lib/resource_tracker/resource_tracker.h"
16
+
17
+ #include <atomic>
18
+
19
+ namespace grpc_core {
20
+
21
+ namespace {
22
+ std::atomic<ResourceTracker*> g_resource_tracker(nullptr);
23
+ } // namespace
24
+
25
+ ResourceTracker* ResourceTracker::Get() {
26
+ return g_resource_tracker.load(std::memory_order_acquire);
27
+ }
28
+
29
+ void ResourceTracker::Set(ResourceTracker* tracker) {
30
+ g_resource_tracker.store(tracker, std::memory_order_release);
31
+ }
32
+
33
+ } // namespace grpc_core
@@ -0,0 +1,46 @@
1
+ // Copyright 2025 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_SRC_CORE_LIB_RESOURCE_TRACKER_RESOURCE_TRACKER_H
16
+ #define GRPC_SRC_CORE_LIB_RESOURCE_TRACKER_RESOURCE_TRACKER_H
17
+
18
+ #include <grpc/support/port_platform.h>
19
+
20
+ #include <string>
21
+ #include <vector>
22
+
23
+ #include "absl/status/statusor.h"
24
+
25
+ namespace grpc_core {
26
+
27
+ // Interface for tracking and retrieving resource usage metrics.
28
+ class ResourceTracker {
29
+ public:
30
+ virtual ~ResourceTracker() = default;
31
+
32
+ static ResourceTracker* Get();
33
+ static void Set(ResourceTracker* tracker);
34
+
35
+ // Returns a list of metric names that this tracker can provide.
36
+ virtual std::vector<std::string> GetMetrics() const = 0;
37
+
38
+ // Retrieves the current value of a specific metric.
39
+ // Returns NotFoundError if the metric_name is not supported.
40
+ virtual absl::StatusOr<double> GetMetricValue(
41
+ const std::string& metric_name) const = 0;
42
+ };
43
+
44
+ } // namespace grpc_core
45
+
46
+ #endif // GRPC_SRC_CORE_LIB_RESOURCE_TRACKER_RESOURCE_TRACKER_H
@@ -26,12 +26,12 @@
26
26
  #include <memory>
27
27
  #include <utility>
28
28
 
29
- #include "absl/log/check.h"
30
29
  #include "absl/status/status.h"
31
30
  #include "absl/status/statusor.h"
32
31
  #include "absl/strings/str_format.h"
33
32
  #include "absl/strings/string_view.h"
34
33
  #include "src/core/lib/security/authorization/stdout_logger.h"
34
+ #include "src/core/util/grpc_check.h"
35
35
  #include "src/core/util/sync.h"
36
36
 
37
37
  namespace grpc_core {
@@ -44,15 +44,15 @@ AuditLoggerRegistry* AuditLoggerRegistry::registry = new AuditLoggerRegistry();
44
44
  AuditLoggerRegistry::AuditLoggerRegistry() {
45
45
  auto factory = std::make_unique<StdoutAuditLoggerFactory>();
46
46
  absl::string_view name = factory->name();
47
- CHECK(logger_factories_map_.emplace(name, std::move(factory)).second);
47
+ GRPC_CHECK(logger_factories_map_.emplace(name, std::move(factory)).second);
48
48
  }
49
49
 
50
50
  void AuditLoggerRegistry::RegisterFactory(
51
51
  std::unique_ptr<AuditLoggerFactory> factory) {
52
- CHECK(factory != nullptr);
52
+ GRPC_CHECK(factory != nullptr);
53
53
  MutexLock lock(mu);
54
54
  absl::string_view name = factory->name();
55
- CHECK(
55
+ GRPC_CHECK(
56
56
  registry->logger_factories_map_.emplace(name, std::move(factory)).second);
57
57
  }
58
58
 
@@ -77,7 +77,7 @@ std::unique_ptr<AuditLogger> AuditLoggerRegistry::CreateAuditLogger(
77
77
  std::unique_ptr<AuditLoggerFactory::Config> config) {
78
78
  MutexLock lock(mu);
79
79
  auto it = registry->logger_factories_map_.find(config->name());
80
- CHECK(it != registry->logger_factories_map_.end());
80
+ GRPC_CHECK(it != registry->logger_factories_map_.end());
81
81
  return it->second->CreateAuditLogger(std::move(config));
82
82
  }
83
83
 
@@ -20,9 +20,9 @@
20
20
  #include <map>
21
21
  #include <utility>
22
22
 
23
- #include "absl/log/check.h"
24
23
  #include "src/core/lib/security/authorization/audit_logging.h"
25
24
  #include "src/core/lib/security/authorization/authorization_engine.h"
25
+ #include "src/core/util/grpc_check.h"
26
26
 
27
27
  namespace grpc_core {
28
28
 
@@ -58,7 +58,7 @@ GrpcAuthorizationEngine::GrpcAuthorizationEngine(Rbac policy)
58
58
  for (auto& logger_config : policy.logger_configs) {
59
59
  auto logger =
60
60
  AuditLoggerRegistry::CreateAuditLogger(std::move(logger_config));
61
- CHECK(logger != nullptr);
61
+ GRPC_CHECK(logger != nullptr);
62
62
  audit_loggers_.push_back(std::move(logger));
63
63
  }
64
64
  }
@@ -22,12 +22,12 @@
22
22
  #include <memory>
23
23
  #include <string>
24
24
 
25
- #include "absl/log/check.h"
26
25
  #include "absl/status/statusor.h"
27
26
  #include "absl/strings/str_format.h"
28
27
  #include "absl/strings/string_view.h"
29
28
  #include "absl/time/clock.h"
30
29
  #include "absl/time/time.h"
30
+ #include "src/core/util/grpc_check.h"
31
31
 
32
32
  namespace grpc_core {
33
33
  namespace experimental {
@@ -65,8 +65,8 @@ StdoutAuditLoggerFactory::ParseAuditLoggerConfig(const Json&) {
65
65
  std::unique_ptr<AuditLogger> StdoutAuditLoggerFactory::CreateAuditLogger(
66
66
  std::unique_ptr<AuditLoggerFactory::Config> config) {
67
67
  // Sanity check.
68
- CHECK(config != nullptr);
69
- CHECK(config->name() == name());
68
+ GRPC_CHECK(config != nullptr);
69
+ GRPC_CHECK_EQ(config->name(), name());
70
70
  return std::make_unique<StdoutAuditLogger>();
71
71
  }
72
72
 
@@ -24,9 +24,9 @@
24
24
  #include <stdint.h>
25
25
  #include <string.h>
26
26
 
27
- #include "absl/log/check.h"
28
27
  #include "src/core/lib/iomgr/exec_ctx.h"
29
28
  #include "src/core/lib/slice/slice.h"
29
+ #include "src/core/util/grpc_check.h"
30
30
 
31
31
  int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
32
32
  grpc_byte_buffer* buffer) {
@@ -92,7 +92,7 @@ grpc_slice grpc_byte_buffer_reader_readall(grpc_byte_buffer_reader* reader) {
92
92
  memcpy(&(outbuf[bytes_read]), GRPC_SLICE_START_PTR(in_slice), slice_length);
93
93
  bytes_read += slice_length;
94
94
  grpc_core::CSliceUnref(in_slice);
95
- CHECK(bytes_read <= input_size);
95
+ GRPC_CHECK(bytes_read <= input_size);
96
96
  }
97
97
 
98
98
  return out_slice;
@@ -48,7 +48,6 @@
48
48
  #include <vector>
49
49
 
50
50
  #include "absl/base/thread_annotations.h"
51
- #include "absl/log/check.h"
52
51
  #include "absl/log/log.h"
53
52
  #include "absl/status/status.h"
54
53
  #include "absl/strings/str_cat.h"
@@ -98,6 +97,7 @@
98
97
  #include "src/core/util/cpp_impl_of.h"
99
98
  #include "src/core/util/crash.h"
100
99
  #include "src/core/util/debug_location.h"
100
+ #include "src/core/util/grpc_check.h"
101
101
  #include "src/core/util/match.h"
102
102
  #include "src/core/util/ref_counted.h"
103
103
  #include "src/core/util/ref_counted_ptr.h"
@@ -119,9 +119,10 @@ Call::Call(bool is_client, Timestamp send_deadline, RefCountedPtr<Arena> arena)
119
119
  : arena_(std::move(arena)),
120
120
  send_deadline_(send_deadline),
121
121
  is_client_(is_client) {
122
- DCHECK_NE(arena_.get(), nullptr);
123
- DCHECK_NE(arena_->GetContext<grpc_event_engine::experimental::EventEngine>(),
124
- nullptr);
122
+ GRPC_DCHECK_NE(arena_.get(), nullptr);
123
+ GRPC_DCHECK_NE(
124
+ arena_->GetContext<grpc_event_engine::experimental::EventEngine>(),
125
+ nullptr);
125
126
  arena_->SetContext<Call>(this);
126
127
  }
127
128
 
@@ -148,8 +149,8 @@ absl::Status Call::InitParent(Call* parent, uint32_t propagation_mask) {
148
149
  child_ = arena()->New<ChildCall>(parent);
149
150
 
150
151
  parent->InternalRef("child");
151
- CHECK(is_client_);
152
- CHECK(!parent->is_client_);
152
+ GRPC_CHECK(is_client_);
153
+ GRPC_CHECK(!parent->is_client_);
153
154
 
154
155
  if (propagation_mask & GRPC_PROPAGATE_DEADLINE) {
155
156
  send_deadline_ = std::min(send_deadline_, parent->send_deadline_);
@@ -307,7 +308,7 @@ void Call::ProcessIncomingInitialMetadata(grpc_metadata_batch& md) {
307
308
  HandleCompressionAlgorithmDisabled(compression_algorithm);
308
309
  }
309
310
  // GRPC_COMPRESS_NONE is always set.
310
- DCHECK(encodings_accepted_by_peer_.IsSet(GRPC_COMPRESS_NONE));
311
+ GRPC_DCHECK(encodings_accepted_by_peer_.IsSet(GRPC_COMPRESS_NONE));
311
312
  if (GPR_UNLIKELY(!encodings_accepted_by_peer_.IsSet(compression_algorithm))) {
312
313
  if (GRPC_TRACE_FLAG_ENABLED(compression)) {
313
314
  HandleCompressionAlgorithmNotAccepted(compression_algorithm);
@@ -413,7 +414,7 @@ char* grpc_call_get_peer(grpc_call* call) {
413
414
  grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
414
415
  GRPC_TRACE_LOG(api, INFO)
415
416
  << "grpc_call_cancel(call=" << call << ", reserved=" << reserved << ")";
416
- CHECK_EQ(reserved, nullptr);
417
+ GRPC_CHECK_EQ(reserved, nullptr);
417
418
  if (call == nullptr) {
418
419
  return GRPC_CALL_ERROR;
419
420
  }
@@ -430,7 +431,7 @@ grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
430
431
  GRPC_TRACE_LOG(api, INFO)
431
432
  << "grpc_call_cancel_with_status(c=" << c << ", status=" << (int)status
432
433
  << ", description=" << description << ", reserved=" << reserved << ")";
433
- CHECK_EQ(reserved, nullptr);
434
+ GRPC_CHECK_EQ(reserved, nullptr);
434
435
  if (c == nullptr) {
435
436
  return GRPC_CALL_ERROR;
436
437
  }
@@ -491,21 +492,22 @@ grpc_call_error grpc_call_start_batch_and_execute(grpc_call* call,
491
492
 
492
493
  void grpc_call_tracer_set(grpc_call* call,
493
494
  grpc_core::ClientCallTracerInterface* tracer) {
494
- grpc_call_get_arena(call)
495
- ->SetContext<grpc_core::CallTracerAnnotationInterface>(tracer);
495
+ auto* arena = grpc_call_get_arena(call);
496
+ arena->SetContext<grpc_core::CallSpan>(
497
+ grpc_core::WrapClientCallTracer(tracer, arena));
496
498
  }
497
499
 
498
500
  void grpc_call_tracer_set_and_manage(
499
501
  grpc_call* call, grpc_core::ClientCallTracerInterface* tracer) {
500
502
  grpc_core::Arena* arena = grpc_call_get_arena(call);
501
503
  arena->ManagedNew<ClientCallTracerWrapper>(tracer);
502
- return arena->SetContext<grpc_core::CallTracerAnnotationInterface>(tracer);
504
+ arena->SetContext<grpc_core::CallSpan>(
505
+ grpc_core::WrapClientCallTracer(tracer, arena));
503
506
  }
504
507
 
505
508
  void* grpc_call_tracer_get(grpc_call* call) {
506
509
  grpc_core::Arena* arena = grpc_call_get_arena(call);
507
- auto* call_tracer =
508
- arena->GetContext<grpc_core::CallTracerAnnotationInterface>();
510
+ auto* call_tracer = arena->GetContext<grpc_core::CallSpan>();
509
511
  return call_tracer;
510
512
  }
511
513
 
@@ -30,7 +30,6 @@
30
30
 
31
31
  #include "absl/functional/any_invocable.h"
32
32
  #include "absl/functional/function_ref.h"
33
- #include "absl/log/check.h"
34
33
  #include "absl/strings/string_view.h"
35
34
  #include "src/core/lib/channel/channel_fwd.h"
36
35
  #include "src/core/lib/channel/channel_stack.h"
@@ -45,6 +44,7 @@
45
44
  #include "src/core/lib/surface/channel.h"
46
45
  #include "src/core/lib/transport/transport.h"
47
46
  #include "src/core/server/server_interface.h"
47
+ #include "src/core/util/grpc_check.h"
48
48
  #include "src/core/util/ref_counted_ptr.h"
49
49
  #include "src/core/util/time.h"
50
50
  #include "src/core/util/time_precise.h"
@@ -40,7 +40,6 @@
40
40
  #include <type_traits>
41
41
  #include <utility>
42
42
 
43
- #include "absl/log/check.h"
44
43
  #include "absl/log/log.h"
45
44
  #include "absl/status/status.h"
46
45
  #include "absl/strings/str_cat.h"
@@ -60,6 +59,7 @@
60
59
  #include "src/core/lib/surface/validate_metadata.h"
61
60
  #include "src/core/util/crash.h"
62
61
  #include "src/core/util/debug_location.h"
62
+ #include "src/core/util/grpc_check.h"
63
63
  #include "src/core/util/match.h"
64
64
 
65
65
  namespace grpc_core {
@@ -215,7 +215,7 @@ bool ValidateMetadata(size_t count, grpc_metadata* metadata) {
215
215
  void EndOpImmediately(grpc_completion_queue* cq, void* notify_tag,
216
216
  bool is_notify_tag_closure) {
217
217
  if (!is_notify_tag_closure) {
218
- CHECK(grpc_cq_begin_op(cq, notify_tag));
218
+ GRPC_CHECK(grpc_cq_begin_op(cq, notify_tag));
219
219
  grpc_cq_end_op(
220
220
  cq, notify_tag, absl::OkStatus(),
221
221
  [](void*, grpc_cq_completion* completion) { gpr_free(completion); },
@@ -40,7 +40,6 @@
40
40
  #include <type_traits>
41
41
  #include <utility>
42
42
 
43
- #include "absl/log/check.h"
44
43
  #include "absl/status/status.h"
45
44
  #include "absl/strings/str_cat.h"
46
45
  #include "absl/strings/string_view.h"
@@ -55,6 +54,7 @@
55
54
  #include "src/core/lib/promise/status_flag.h"
56
55
  #include "src/core/lib/surface/completion_queue.h"
57
56
  #include "src/core/util/crash.h"
57
+ #include "src/core/util/grpc_check.h"
58
58
 
59
59
  namespace grpc_core {
60
60
 
@@ -428,7 +428,7 @@ class MessageReceiver {
428
428
 
429
429
  template <typename Puller>
430
430
  auto MakeBatchOp(const grpc_op& op, Puller* puller) {
431
- CHECK_EQ(recv_message_, nullptr);
431
+ GRPC_CHECK_EQ(recv_message_, nullptr);
432
432
  recv_message_ = op.data.recv_message.recv_message;
433
433
  return [this, puller]() mutable {
434
434
  return Map(puller->PullMessage(),
@@ -22,7 +22,6 @@
22
22
  #include <grpc/support/alloc.h>
23
23
  #include <grpc/support/port_platform.h>
24
24
 
25
- #include "absl/log/check.h"
26
25
  #include "src/core/channelz/channel_trace.h"
27
26
  #include "src/core/channelz/channelz.h"
28
27
  #include "src/core/lib/channel/channel_args.h"
@@ -31,6 +30,7 @@
31
30
  #include "src/core/lib/iomgr/exec_ctx.h"
32
31
  #include "src/core/telemetry/stats.h"
33
32
  #include "src/core/telemetry/stats_data.h"
33
+ #include "src/core/util/grpc_check.h"
34
34
 
35
35
  namespace grpc_core {
36
36
 
@@ -102,7 +102,7 @@ grpc_call* grpc_channel_create_call(grpc_channel* channel,
102
102
  grpc_completion_queue* completion_queue,
103
103
  grpc_slice method, const grpc_slice* host,
104
104
  gpr_timespec deadline, void* reserved) {
105
- CHECK(!reserved);
105
+ GRPC_CHECK(!reserved);
106
106
  grpc_core::ExecCtx exec_ctx;
107
107
  return grpc_core::Channel::FromC(channel)->CreateCall(
108
108
  parent_call, propagation_mask, completion_queue, nullptr,
@@ -119,7 +119,7 @@ void* grpc_channel_register_call(grpc_channel* channel, const char* method,
119
119
  GRPC_TRACE_LOG(api, INFO) << "grpc_channel_register_call(channel=" << channel
120
120
  << ", method=" << method << ", host=" << host
121
121
  << ", reserved=" << reserved << ")";
122
- CHECK(!reserved);
122
+ GRPC_CHECK(!reserved);
123
123
  grpc_core::ExecCtx exec_ctx;
124
124
  return grpc_core::Channel::FromC(channel)->RegisterCall(method, host);
125
125
  }
@@ -208,6 +208,6 @@ void grpc_channel_ping(grpc_channel* channel, grpc_completion_queue* cq,
208
208
  GRPC_TRACE_LOG(api, INFO)
209
209
  << "grpc_channel_ping(channel=" << channel << ", cq=" << cq
210
210
  << ", tag=" << tag << ", reserved=" << reserved << ")";
211
- CHECK_EQ(reserved, nullptr);
211
+ GRPC_CHECK_EQ(reserved, nullptr);
212
212
  grpc_core::Channel::FromC(channel)->Ping(cq, tag);
213
213
  }
@@ -21,7 +21,6 @@
21
21
  #include <grpc/impl/channel_arg_names.h>
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include "absl/log/check.h"
25
24
  #include "absl/strings/str_cat.h"
26
25
  #include "absl/strings/str_split.h"
27
26
  #include "src/core/channelz/channelz.h"
@@ -47,6 +46,7 @@
47
46
  #include "src/core/telemetry/stats.h"
48
47
  #include "src/core/telemetry/stats_data.h"
49
48
  #include "src/core/transport/endpoint_transport.h"
49
+ #include "src/core/util/grpc_check.h"
50
50
 
51
51
  namespace grpc_core {
52
52
 
@@ -199,10 +199,14 @@ grpc_channel* CreateChannelFromFd(int fd, grpc_channel_credentials* creds,
199
199
  GRPC_STATUS_INTERNAL,
200
200
  "Failed to create client channel");
201
201
  }
202
- std::unique_ptr<EventEngine::Endpoint> endpoint =
203
- supports_fd->CreateEndpointFromFd(
204
- fd, ChannelArgsEndpointConfig(channel_args));
205
- return CreateChannelFromEndpoint(std::move(endpoint), creds,
202
+ auto endpoint = supports_fd->CreateEndpointFromFd(
203
+ fd, ChannelArgsEndpointConfig(channel_args));
204
+ if (!endpoint.ok()) {
205
+ return grpc_lame_client_channel_create(
206
+ "fake:created-from-endpoint", GRPC_STATUS_INTERNAL,
207
+ std::string(endpoint.status().message()).c_str());
208
+ }
209
+ return CreateChannelFromEndpoint(std::move(endpoint).value(), creds,
206
210
  channel_args.ToC().get());
207
211
  }
208
212
  } // namespace experimental
@@ -230,7 +234,7 @@ grpc_channel* grpc_lame_client_channel_create(const char* target,
230
234
  auto channel =
231
235
  grpc_core::ChannelCreate(target == nullptr ? "" : target, std::move(args),
232
236
  GRPC_CLIENT_LAME_CHANNEL, nullptr);
233
- CHECK(channel.ok());
237
+ GRPC_CHECK(channel.ok());
234
238
  return channel->release()->c_ptr();
235
239
  }
236
240