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
@@ -41,7 +41,6 @@
41
41
 
42
42
  #include "absl/cleanup/cleanup.h"
43
43
  #include "absl/container/flat_hash_map.h"
44
- #include "absl/log/check.h"
45
44
  #include "absl/log/log.h"
46
45
  #include "absl/status/status.h"
47
46
  #include "src/core/call/interception_chain.h"
@@ -80,6 +79,7 @@
80
79
  #include "src/core/telemetry/stats.h"
81
80
  #include "src/core/util/crash.h"
82
81
  #include "src/core/util/debug_location.h"
82
+ #include "src/core/util/grpc_check.h"
83
83
  #include "src/core/util/mpscq.h"
84
84
  #include "src/core/util/orphanable.h"
85
85
  #include "src/core/util/shared_bit_gen.h"
@@ -180,7 +180,7 @@ void Server::ListenerState::Stop() {
180
180
  is_serving_ = false;
181
181
  }
182
182
  if (config_fetcher_watcher_ != nullptr) {
183
- CHECK_NE(server_->config_fetcher(), nullptr);
183
+ GRPC_CHECK_NE(server_->config_fetcher(), nullptr);
184
184
  server_->config_fetcher()->CancelWatch(config_fetcher_watcher_);
185
185
  }
186
186
  GRPC_CLOSURE_INIT(&destroy_done_, ListenerDestroyDone, server_.get(),
@@ -524,7 +524,7 @@ struct Server::RequestedCall {
524
524
  md.get(GrpcTimeoutMetadata()).value_or(Timestamp::InfFuture());
525
525
  switch (type) {
526
526
  case RequestedCall::Type::BATCH_CALL:
527
- CHECK(!payload.has_value());
527
+ GRPC_CHECK(!payload.has_value());
528
528
  data.batch.details->host =
529
529
  CSliceRef(md.get_pointer(HttpAuthorityMetadata())->c_slice());
530
530
  data.batch.details->method =
@@ -581,10 +581,10 @@ class Server::RealRequestMatcher : public RequestMatcherInterface {
581
581
 
582
582
  ~RealRequestMatcher() override {
583
583
  for (LockedMultiProducerSingleConsumerQueue& queue : requests_per_cq_) {
584
- CHECK_EQ(queue.Pop(), nullptr);
584
+ GRPC_CHECK_EQ(queue.Pop(), nullptr);
585
585
  }
586
- CHECK(pending_filter_stack_.empty());
587
- CHECK(pending_promises_.empty());
586
+ GRPC_CHECK(pending_filter_stack_.empty());
587
+ GRPC_CHECK(pending_promises_.empty());
588
588
  }
589
589
 
590
590
  void ZombifyPending() override {
@@ -808,7 +808,7 @@ class Server::RealRequestMatcher : public RequestMatcherInterface {
808
808
  if (!result.compare_exchange_strong(expected, new_value,
809
809
  std::memory_order_acq_rel,
810
810
  std::memory_order_acquire)) {
811
- CHECK(new_value->value().TakeCall() == requested_call);
811
+ GRPC_CHECK(new_value->value().TakeCall() == requested_call);
812
812
  delete new_value;
813
813
  return false;
814
814
  }
@@ -843,7 +843,7 @@ class Server::AllocatingRequestMatcherBase : public RequestMatcherInterface {
843
843
  break;
844
844
  }
845
845
  }
846
- CHECK(idx < server->cqs_.size());
846
+ GRPC_CHECK(idx < server->cqs_.size());
847
847
  cq_idx_ = idx;
848
848
  }
849
849
 
@@ -889,9 +889,9 @@ class Server::AllocatingRequestMatcherBatch
889
889
  absl::MakeCleanup([this] { server()->ShutdownUnrefOnRequest(); });
890
890
  if (still_running) {
891
891
  BatchCallAllocation call_info = allocator_();
892
- CHECK(server()->ValidateServerRequest(cq(),
893
- static_cast<void*>(call_info.tag),
894
- nullptr, nullptr) == GRPC_CALL_OK);
892
+ GRPC_CHECK(server()->ValidateServerRequest(
893
+ cq(), static_cast<void*>(call_info.tag), nullptr,
894
+ nullptr) == GRPC_CALL_OK);
895
895
  RequestedCall* rc = new RequestedCall(
896
896
  static_cast<void*>(call_info.tag), call_info.cq, call_info.call,
897
897
  call_info.initial_metadata, call_info.details);
@@ -905,9 +905,9 @@ class Server::AllocatingRequestMatcherBatch
905
905
  ArenaPromise<absl::StatusOr<MatchResult>> MatchRequest(
906
906
  size_t /*start_request_queue_index*/) override {
907
907
  BatchCallAllocation call_info = allocator_();
908
- CHECK(server()->ValidateServerRequest(cq(),
909
- static_cast<void*>(call_info.tag),
910
- nullptr, nullptr) == GRPC_CALL_OK);
908
+ GRPC_CHECK(server()->ValidateServerRequest(
909
+ cq(), static_cast<void*>(call_info.tag), nullptr, nullptr) ==
910
+ GRPC_CALL_OK);
911
911
  RequestedCall* rc = new RequestedCall(
912
912
  static_cast<void*>(call_info.tag), call_info.cq, call_info.call,
913
913
  call_info.initial_metadata, call_info.details);
@@ -935,9 +935,9 @@ class Server::AllocatingRequestMatcherRegistered
935
935
  absl::MakeCleanup([this] { server()->ShutdownUnrefOnRequest(); });
936
936
  if (server()->ShutdownRefOnRequest()) {
937
937
  RegisteredCallAllocation call_info = allocator_();
938
- CHECK(server()->ValidateServerRequest(
939
- cq(), call_info.tag, call_info.optional_payload,
940
- registered_method_) == GRPC_CALL_OK);
938
+ GRPC_CHECK(server()->ValidateServerRequest(
939
+ cq(), call_info.tag, call_info.optional_payload,
940
+ registered_method_) == GRPC_CALL_OK);
941
941
  RequestedCall* rc =
942
942
  new RequestedCall(call_info.tag, call_info.cq, call_info.call,
943
943
  call_info.initial_metadata, registered_method_,
@@ -952,9 +952,9 @@ class Server::AllocatingRequestMatcherRegistered
952
952
  ArenaPromise<absl::StatusOr<MatchResult>> MatchRequest(
953
953
  size_t /*start_request_queue_index*/) override {
954
954
  RegisteredCallAllocation call_info = allocator_();
955
- CHECK(server()->ValidateServerRequest(cq(), call_info.tag,
956
- call_info.optional_payload,
957
- registered_method_) == GRPC_CALL_OK);
955
+ GRPC_CHECK(server()->ValidateServerRequest(
956
+ cq(), call_info.tag, call_info.optional_payload,
957
+ registered_method_) == GRPC_CALL_OK);
958
958
  RequestedCall* rc = new RequestedCall(
959
959
  call_info.tag, call_info.cq, call_info.call, call_info.initial_metadata,
960
960
  registered_method_, call_info.deadline, call_info.optional_payload);
@@ -979,7 +979,7 @@ class ChannelBroadcaster {
979
979
 
980
980
  // Copies over the channels from the locked server.
981
981
  void FillChannelsLocked(std::vector<RefCountedPtr<Channel>> channels) {
982
- DCHECK(channels_.empty());
982
+ GRPC_DCHECK(channels_.empty());
983
983
  channels_ = std::move(channels);
984
984
  }
985
985
 
@@ -1341,7 +1341,7 @@ grpc_error_handle Server::SetupTransport(Transport* transport,
1341
1341
  connections_.emplace(std::move(t));
1342
1342
  ++connections_open_;
1343
1343
  } else {
1344
- CHECK(transport->filter_stack_transport() != nullptr);
1344
+ GRPC_CHECK(transport->filter_stack_transport() != nullptr);
1345
1345
  absl::StatusOr<RefCountedPtr<Channel>> channel = LegacyChannel::Create(
1346
1346
  "",
1347
1347
  args.SetObject(transport).SetObject<channelz::BaseNode>(
@@ -1350,9 +1350,9 @@ grpc_error_handle Server::SetupTransport(Transport* transport,
1350
1350
  if (!channel.ok()) {
1351
1351
  return absl_status_to_grpc_error(channel.status());
1352
1352
  }
1353
- CHECK(*channel != nullptr);
1353
+ GRPC_CHECK(*channel != nullptr);
1354
1354
  auto* channel_stack = (*channel)->channel_stack();
1355
- CHECK(channel_stack != nullptr);
1355
+ GRPC_CHECK(channel_stack != nullptr);
1356
1356
  ChannelData* chand = static_cast<ChannelData*>(
1357
1357
  grpc_channel_stack_element(channel_stack, 0)->channel_data);
1358
1358
  // Set up CQs.
@@ -1391,7 +1391,7 @@ void Server::SetRegisteredMethodAllocator(
1391
1391
 
1392
1392
  void Server::SetBatchMethodAllocator(
1393
1393
  grpc_completion_queue* cq, std::function<BatchCallAllocation()> allocator) {
1394
- DCHECK(unregistered_request_matcher_ == nullptr);
1394
+ GRPC_DCHECK(unregistered_request_matcher_ == nullptr);
1395
1395
  unregistered_request_matcher_ =
1396
1396
  std::make_unique<AllocatingRequestMatcherBatch>(this, cq,
1397
1397
  std::move(allocator));
@@ -1442,7 +1442,7 @@ void Server::FailCall(size_t cq_idx, RequestedCall* rc,
1442
1442
  grpc_error_handle error) {
1443
1443
  *rc->call = nullptr;
1444
1444
  rc->initial_metadata->count = 0;
1445
- CHECK(!error.ok());
1445
+ GRPC_CHECK(!error.ok());
1446
1446
  grpc_cq_end_op(cqs_[cq_idx], rc->tag, error, DoneRequestEvent, rc,
1447
1447
  &rc->completion);
1448
1448
  }
@@ -1538,7 +1538,7 @@ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
1538
1538
  starting_cv_.Wait(&mu_global_);
1539
1539
  }
1540
1540
  // Stay locked, and gather up some stuff to do.
1541
- CHECK(grpc_cq_begin_op(cq, tag));
1541
+ GRPC_CHECK(grpc_cq_begin_op(cq, tag));
1542
1542
  if (shutdown_published_) {
1543
1543
  grpc_cq_end_op(cq, tag, absl::OkStatus(), DonePublishedShutdown, nullptr,
1544
1544
  new grpc_cq_completion);
@@ -1596,8 +1596,8 @@ void Server::SendGoaways() {
1596
1596
  void Server::Orphan() {
1597
1597
  {
1598
1598
  MutexLock lock(&mu_global_);
1599
- CHECK(ShutdownCalled() || listener_states_.empty());
1600
- CHECK(listeners_destroyed_ == listener_states_.size());
1599
+ GRPC_CHECK(ShutdownCalled() || listener_states_.empty());
1600
+ GRPC_CHECK(listeners_destroyed_ == listener_states_.size());
1601
1601
  }
1602
1602
  listener_states_.clear();
1603
1603
  Unref();
@@ -1745,7 +1745,7 @@ void Server::ChannelData::InitTransport(RefCountedPtr<Server> server,
1745
1745
  }
1746
1746
  // Start accept_stream transport op.
1747
1747
  grpc_transport_op* op = grpc_make_transport_op(nullptr);
1748
- CHECK(transport->filter_stack_transport() != nullptr);
1748
+ GRPC_CHECK(transport->filter_stack_transport() != nullptr);
1749
1749
  op->set_accept_stream = true;
1750
1750
  op->set_accept_stream_fn = AcceptStream;
1751
1751
  op->set_registered_method_matcher_fn = [](void* arg,
@@ -1813,7 +1813,7 @@ void Server::ChannelData::AcceptStream(void* arg, Transport* /*transport*/,
1813
1813
  grpc_call* call;
1814
1814
  grpc_error_handle error = grpc_call_create(&args, &call);
1815
1815
  grpc_call_stack* call_stack = grpc_call_get_call_stack(call);
1816
- CHECK_NE(call_stack, nullptr);
1816
+ GRPC_CHECK_NE(call_stack, nullptr);
1817
1817
  grpc_call_element* elem = grpc_call_stack_element(call_stack, 0);
1818
1818
  auto* calld = static_cast<Server::CallData*>(elem->call_data);
1819
1819
  if (!error.ok()) {
@@ -1835,7 +1835,7 @@ void Server::ChannelData::FinishDestroy(void* arg,
1835
1835
 
1836
1836
  void Server::ChannelData::Destroy() {
1837
1837
  if (!list_position_.has_value()) return;
1838
- CHECK(server_ != nullptr);
1838
+ GRPC_CHECK(server_ != nullptr);
1839
1839
  server_->channels_.erase(*list_position_);
1840
1840
  list_position_.reset();
1841
1841
  server_->Ref().release();
@@ -1855,8 +1855,8 @@ void Server::ChannelData::Destroy() {
1855
1855
 
1856
1856
  grpc_error_handle Server::ChannelData::InitChannelElement(
1857
1857
  grpc_channel_element* elem, grpc_channel_element_args* args) {
1858
- CHECK(args->is_first);
1859
- CHECK(!args->is_last);
1858
+ GRPC_CHECK(args->is_first);
1859
+ GRPC_CHECK(!args->is_last);
1860
1860
  new (elem->channel_data) ChannelData();
1861
1861
  return absl::OkStatus();
1862
1862
  }
@@ -1883,7 +1883,7 @@ Server::CallData::CallData(grpc_call_element* elem,
1883
1883
  }
1884
1884
 
1885
1885
  Server::CallData::~CallData() {
1886
- CHECK(state_.load(std::memory_order_relaxed) != CallState::PENDING);
1886
+ GRPC_CHECK(state_.load(std::memory_order_relaxed) != CallState::PENDING);
1887
1887
  grpc_metadata_array_destroy(&initial_metadata_);
1888
1888
  grpc_byte_buffer_destroy(payload_);
1889
1889
  }
@@ -1934,8 +1934,8 @@ void Server::CallData::Publish(size_t cq_idx, RequestedCall* rc) {
1934
1934
  std::swap(*rc->initial_metadata, initial_metadata_);
1935
1935
  switch (rc->type) {
1936
1936
  case RequestedCall::Type::BATCH_CALL:
1937
- CHECK(host_.has_value());
1938
- CHECK(path_.has_value());
1937
+ GRPC_CHECK(host_.has_value());
1938
+ GRPC_CHECK(path_.has_value());
1939
1939
  rc->data.batch.details->host = CSliceRef(host_->c_slice());
1940
1940
  rc->data.batch.details->method = CSliceRef(path_->c_slice());
1941
1941
  rc->data.batch.details->deadline =
@@ -2149,7 +2149,7 @@ void grpc_server_register_completion_queue(grpc_server* server,
2149
2149
  GRPC_TRACE_LOG(api, INFO)
2150
2150
  << "grpc_server_register_completion_queue(server=" << server
2151
2151
  << ", cq=" << cq << ", reserved=" << reserved << ")";
2152
- CHECK(!reserved);
2152
+ GRPC_CHECK(!reserved);
2153
2153
  auto cq_type = grpc_get_cq_completion_type(cq);
2154
2154
  if (cq_type != GRPC_CQ_NEXT && cq_type != GRPC_CQ_CALLBACK) {
2155
2155
  VLOG(2) << "Completion queue of type " << static_cast<int>(cq_type)
@@ -51,7 +51,7 @@ class ServerCallTracerFilter
51
51
  void OnClientInitialMetadata(ClientMetadata& client_initial_metadata) {
52
52
  GRPC_LATENT_SEE_SCOPE(
53
53
  "ServerCallTracerFilter::Call::OnClientInitialMetadata");
54
- auto* call_tracer = MaybeGetContext<ServerCallTracerInterface>();
54
+ auto* call_tracer = MaybeGetContext<ServerCallTracer>();
55
55
  if (call_tracer == nullptr) return;
56
56
  call_tracer->RecordReceivedInitialMetadata(&client_initial_metadata);
57
57
  }
@@ -59,14 +59,14 @@ class ServerCallTracerFilter
59
59
  void OnServerInitialMetadata(ServerMetadata& server_initial_metadata) {
60
60
  GRPC_LATENT_SEE_SCOPE(
61
61
  "ServerCallTracerFilter::Call::OnServerInitialMetadata");
62
- auto* call_tracer = MaybeGetContext<ServerCallTracerInterface>();
62
+ auto* call_tracer = MaybeGetContext<ServerCallTracer>();
63
63
  if (call_tracer == nullptr) return;
64
64
  call_tracer->RecordSendInitialMetadata(&server_initial_metadata);
65
65
  }
66
66
 
67
67
  void OnFinalize(const grpc_call_final_info* final_info) {
68
68
  GRPC_LATENT_SEE_SCOPE("ServerCallTracerFilter::Call::OnFinalize");
69
- auto* call_tracer = MaybeGetContext<ServerCallTracerInterface>();
69
+ auto* call_tracer = MaybeGetContext<ServerCallTracer>();
70
70
  if (call_tracer == nullptr) return;
71
71
  call_tracer->RecordEnd(final_info);
72
72
  }
@@ -74,7 +74,7 @@ class ServerCallTracerFilter
74
74
  void OnServerTrailingMetadata(ServerMetadata& server_trailing_metadata) {
75
75
  GRPC_LATENT_SEE_SCOPE(
76
76
  "ServerCallTracerFilter::Call::OnServerTrailingMetadata");
77
- auto* call_tracer = MaybeGetContext<ServerCallTracerInterface>();
77
+ auto* call_tracer = MaybeGetContext<ServerCallTracer>();
78
78
  if (call_tracer == nullptr) return;
79
79
  call_tracer->RecordSendTrailingMetadata(&server_trailing_metadata);
80
80
  }
@@ -22,7 +22,6 @@
22
22
  #include <utility>
23
23
 
24
24
  #include "absl/base/thread_annotations.h"
25
- #include "absl/log/check.h"
26
25
  #include "absl/status/status.h"
27
26
  #include "absl/status/statusor.h"
28
27
  #include "src/core/call/metadata_batch.h"
@@ -37,6 +36,7 @@
37
36
  #include "src/core/server/server_config_selector.h"
38
37
  #include "src/core/service_config/service_config.h"
39
38
  #include "src/core/service_config/service_config_call_data.h"
39
+ #include "src/core/util/grpc_check.h"
40
40
  #include "src/core/util/latent_see.h"
41
41
  #include "src/core/util/ref_counted_ptr.h"
42
42
  #include "src/core/util/status_helper.h"
@@ -123,7 +123,7 @@ ServerConfigSelectorFilter::ServerConfigSelectorFilter(
123
123
  RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider)
124
124
  : server_config_selector_provider_(
125
125
  std::move(server_config_selector_provider)) {
126
- CHECK(server_config_selector_provider_ != nullptr);
126
+ GRPC_CHECK(server_config_selector_provider_ != nullptr);
127
127
  auto server_config_selector_watcher =
128
128
  std::make_unique<ServerConfigSelectorWatcher>(Ref());
129
129
  auto config_selector = server_config_selector_provider_->Watch(
@@ -35,7 +35,6 @@
35
35
  #include <vector>
36
36
 
37
37
  #include "absl/base/thread_annotations.h"
38
- #include "absl/log/check.h"
39
38
  #include "absl/log/log.h"
40
39
  #include "absl/status/status.h"
41
40
  #include "absl/status/statusor.h"
@@ -71,6 +70,7 @@
71
70
  #include "src/core/service_config/service_config_impl.h"
72
71
  #include "src/core/util/debug_location.h"
73
72
  #include "src/core/util/down_cast.h"
73
+ #include "src/core/util/grpc_check.h"
74
74
  #include "src/core/util/host_port.h"
75
75
  #include "src/core/util/match.h"
76
76
  #include "src/core/util/ref_counted_ptr.h"
@@ -404,7 +404,7 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
404
404
  absl::StatusOr<RefCountedPtr<ServerConfigSelector>> Watch(
405
405
  std::unique_ptr<ServerConfigSelectorProvider::ServerConfigSelectorWatcher>
406
406
  watcher) override {
407
- CHECK(watcher_ == nullptr);
407
+ GRPC_CHECK(watcher_ == nullptr);
408
408
  watcher_ = std::move(watcher);
409
409
  if (!static_resource_.ok()) {
410
410
  return static_resource_.status();
@@ -512,7 +512,7 @@ XdsServerConfigFetcher::XdsServerConfigFetcher(
512
512
  RefCountedPtr<GrpcXdsClient> xds_client,
513
513
  grpc_server_xds_status_notifier notifier)
514
514
  : xds_client_(std::move(xds_client)), serving_status_notifier_(notifier) {
515
- CHECK(xds_client_ != nullptr);
515
+ GRPC_CHECK(xds_client_ != nullptr);
516
516
  }
517
517
 
518
518
  std::string ListenerResourceName(absl::string_view resource_name_template,
@@ -1053,7 +1053,7 @@ absl::StatusOr<ChannelArgs> XdsServerConfigFetcher::ListenerWatcher::
1053
1053
  const XdsHttpFilterImpl* filter_impl =
1054
1054
  http_filter_registry.GetFilterForType(
1055
1055
  http_filter.config.config_proto_type_name);
1056
- CHECK_NE(filter_impl, nullptr);
1056
+ GRPC_CHECK_NE(filter_impl, nullptr);
1057
1057
  // Some filters like the router filter are no-op filters and do not have
1058
1058
  // an implementation.
1059
1059
  if (filter_impl->channel_filter() != nullptr) {
@@ -1102,7 +1102,7 @@ absl::StatusOr<ChannelArgs> XdsServerConfigFetcher::ListenerWatcher::
1102
1102
  return result.status();
1103
1103
  }
1104
1104
  xds_certificate_provider = std::move(*result);
1105
- CHECK(xds_certificate_provider != nullptr);
1105
+ GRPC_CHECK(xds_certificate_provider != nullptr);
1106
1106
  args = args.SetObject(xds_certificate_provider);
1107
1107
  }
1108
1108
  return args;
@@ -1121,7 +1121,8 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1121
1121
  const XdsHttpFilterImpl* filter_impl =
1122
1122
  http_filter_registry.GetFilterForType(
1123
1123
  http_filter.config.config_proto_type_name);
1124
- CHECK_NE(filter_impl, nullptr); // Enforced in config validation.
1124
+ GRPC_CHECK_NE(filter_impl,
1125
+ nullptr); // Enforced in config validation.
1125
1126
  filter_impl->UpdateBlackboard(http_filter.config, old_blackboard,
1126
1127
  new_blackboard);
1127
1128
  }
@@ -1240,7 +1241,7 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1240
1241
  resource_name_(std::move(resource_name)),
1241
1242
  http_filters_(std::move(http_filters)),
1242
1243
  resource_(std::move(initial_resource)) {
1243
- CHECK(!resource_name_.empty());
1244
+ GRPC_CHECK(!resource_name_.empty());
1244
1245
  // RouteConfigWatcher is being created here instead of in Watch() to avoid
1245
1246
  // deadlocks from invoking XdsRouteConfigResourceType::StartWatch whilst in a
1246
1247
  // critical region.
@@ -1267,7 +1268,7 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1267
1268
  absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>> resource;
1268
1269
  {
1269
1270
  MutexLock lock(&mu_);
1270
- CHECK(watcher_ == nullptr);
1271
+ GRPC_CHECK(watcher_ == nullptr);
1271
1272
  watcher_ = std::move(watcher);
1272
1273
  resource = resource_;
1273
1274
  }
@@ -26,13 +26,13 @@
26
26
  #include <unordered_map>
27
27
  #include <vector>
28
28
 
29
- #include "absl/log/check.h"
30
29
  #include "absl/status/statusor.h"
31
30
  #include "absl/strings/string_view.h"
32
31
  #include "src/core/lib/channel/channel_args.h"
33
32
  #include "src/core/lib/slice/slice_internal.h"
34
33
  #include "src/core/service_config/service_config.h"
35
34
  #include "src/core/service_config/service_config_parser.h"
35
+ #include "src/core/util/grpc_check.h"
36
36
  #include "src/core/util/json/json.h"
37
37
  #include "src/core/util/ref_counted_ptr.h"
38
38
  #include "src/core/util/validation_errors.h"
@@ -87,7 +87,7 @@ class ServiceConfigImpl final : public ServiceConfig {
87
87
  /// ServiceConfig object.
88
88
  ServiceConfigParser::ParsedConfig* GetGlobalParsedConfig(
89
89
  size_t index) const override {
90
- DCHECK(index < parsed_global_configs_.size());
90
+ GRPC_DCHECK(index < parsed_global_configs_.size());
91
91
  return parsed_global_configs_[index].get();
92
92
  }
93
93
 
@@ -24,9 +24,9 @@
24
24
  #include <utility>
25
25
  #include <vector>
26
26
 
27
- #include "absl/log/check.h"
28
27
  #include "src/core/lib/promise/context.h"
29
28
  #include "src/core/telemetry/tcp_tracer.h"
29
+ #include "src/core/util/grpc_check.h"
30
30
 
31
31
  namespace grpc_core {
32
32
 
@@ -86,7 +86,7 @@ class DelegatingClientCallTracer : public ClientCallTracerInterface {
86
86
  explicit DelegatingClientCallAttemptTracer(
87
87
  std::vector<CallAttemptTracer*> tracers)
88
88
  : tracers_(std::move(tracers)) {
89
- DCHECK(!tracers_.empty());
89
+ GRPC_DCHECK(!tracers_.empty());
90
90
  }
91
91
  ~DelegatingClientCallAttemptTracer() override {}
92
92
  void RecordSendInitialMetadata(
@@ -192,13 +192,16 @@ class DelegatingClientCallTracer : public ClientCallTracerInterface {
192
192
  };
193
193
  explicit DelegatingClientCallTracer(ClientCallTracerInterface* tracer)
194
194
  : tracers_{tracer} {}
195
+ explicit DelegatingClientCallTracer(
196
+ absl::Span<ClientCallTracerInterface* const> tracers)
197
+ : tracers_(tracers.begin(), tracers.end()) {}
195
198
  ~DelegatingClientCallTracer() override {}
196
199
  CallAttemptTracer* StartNewAttempt(bool is_transparent_retry) override {
197
200
  std::vector<CallAttemptTracer*> attempt_tracers;
198
201
  attempt_tracers.reserve(tracers_.size());
199
202
  for (auto* tracer : tracers_) {
200
203
  auto* attempt_tracer = tracer->StartNewAttempt(is_transparent_retry);
201
- DCHECK_NE(attempt_tracer, nullptr);
204
+ GRPC_DCHECK_NE(attempt_tracer, nullptr);
202
205
  attempt_tracers.push_back(attempt_tracer);
203
206
  }
204
207
  return GetContext<Arena>()->ManagedNew<DelegatingClientCallAttemptTracer>(
@@ -236,6 +239,9 @@ class DelegatingServerCallTracer : public ServerCallTracerInterface {
236
239
  public:
237
240
  explicit DelegatingServerCallTracer(ServerCallTracerInterface* tracer)
238
241
  : tracers_{tracer} {}
242
+ explicit DelegatingServerCallTracer(
243
+ absl::Span<ServerCallTracerInterface* const> tracers)
244
+ : tracers_(tracers.begin(), tracers.end()) {}
239
245
  ~DelegatingServerCallTracer() override {}
240
246
  void RecordSendInitialMetadata(
241
247
  grpc_metadata_batch* send_initial_metadata) override {
@@ -333,57 +339,41 @@ class DelegatingServerCallTracer : public ServerCallTracerInterface {
333
339
  std::vector<ServerCallTracerInterface*> tracers_;
334
340
  };
335
341
 
336
- void AddClientCallTracerToContext(Arena* arena,
337
- ClientCallTracerInterface* tracer) {
338
- if (arena->GetContext<CallTracerAnnotationInterface>() == nullptr) {
339
- // This is the first call tracer. Set it directly.
340
- arena->SetContext<CallTracerAnnotationInterface>(tracer);
341
- } else {
342
- // There was already a call tracer present.
343
- auto* orig_tracer = DownCast<ClientCallTracerInterface*>(
344
- arena->GetContext<CallTracerAnnotationInterface>());
345
- if (orig_tracer->IsDelegatingTracer()) {
346
- // We already created a delegating tracer. Just add the new tracer to the
347
- // list.
348
- DownCast<DelegatingClientCallTracer*>(orig_tracer)->AddTracer(tracer);
349
- } else {
350
- // Create a new delegating tracer and add the first tracer and the new
351
- // tracer to the list.
342
+ void SetClientCallTracer(Arena* arena,
343
+ absl::Span<ClientCallTracerInterface* const> tracer) {
344
+ GRPC_DCHECK_EQ(arena->GetContext<CallSpan>(), nullptr);
345
+ switch (tracer.size()) {
346
+ case 0:
347
+ return;
348
+ case 1:
349
+ arena->SetContext<CallSpan>(WrapClientCallTracer(tracer[0], arena));
350
+ return;
351
+ default:
352
352
  auto* delegating_tracer =
353
- GetContext<Arena>()->ManagedNew<DelegatingClientCallTracer>(
354
- orig_tracer);
355
- arena->SetContext<CallTracerAnnotationInterface>(delegating_tracer);
356
- delegating_tracer->AddTracer(tracer);
357
- }
353
+ GetContext<Arena>()->ManagedNew<DelegatingClientCallTracer>(tracer);
354
+ arena->SetContext<CallSpan>(
355
+ WrapClientCallTracer(delegating_tracer, arena));
356
+ break;
358
357
  }
359
358
  }
360
359
 
361
- void AddServerCallTracerToContext(Arena* arena,
362
- ServerCallTracerInterface* tracer) {
363
- DCHECK_EQ(arena->GetContext<CallTracerInterface>(),
364
- arena->GetContext<CallTracerAnnotationInterface>());
365
- if (arena->GetContext<CallTracerAnnotationInterface>() == nullptr) {
366
- // This is the first call tracer. Set it directly.
367
- arena->SetContext<CallTracerAnnotationInterface>(tracer);
368
- arena->SetContext<CallTracerInterface>(tracer);
369
- } else {
370
- // There was already a call tracer present.
371
- auto* orig_tracer = DownCast<ServerCallTracerInterface*>(
372
- arena->GetContext<CallTracerAnnotationInterface>());
373
- if (orig_tracer->IsDelegatingTracer()) {
374
- // We already created a delegating tracer. Just add the new tracer to the
375
- // list.
376
- DownCast<DelegatingServerCallTracer*>(orig_tracer)->AddTracer(tracer);
377
- } else {
378
- // Create a new delegating tracer and add the first tracer and the new
379
- // tracer to the list.
360
+ void SetServerCallTracer(Arena* arena,
361
+ absl::Span<ServerCallTracerInterface* const> tracer) {
362
+ GRPC_DCHECK_EQ(arena->GetContext<CallSpan>(), nullptr);
363
+ switch (tracer.size()) {
364
+ case 0:
365
+ return;
366
+ case 1:
367
+ arena->SetContext<CallSpan>(WrapServerCallTracer(tracer[0], arena));
368
+ arena->SetContext<CallTracer>(WrapServerCallTracer(tracer[0], arena));
369
+ return;
370
+ default:
380
371
  auto* delegating_tracer =
381
- GetContext<Arena>()->ManagedNew<DelegatingServerCallTracer>(
382
- orig_tracer);
383
- arena->SetContext<CallTracerAnnotationInterface>(delegating_tracer);
384
- arena->SetContext<CallTracerInterface>(delegating_tracer);
385
- delegating_tracer->AddTracer(tracer);
386
- }
372
+ GetContext<Arena>()->ManagedNew<DelegatingServerCallTracer>(tracer);
373
+ auto* wrapper = WrapServerCallTracer(delegating_tracer, arena);
374
+ arena->SetContext<CallSpan>(wrapper);
375
+ arena->SetContext<CallTracer>(wrapper);
376
+ break;
387
377
  }
388
378
  }
389
379