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
@@ -25,7 +25,6 @@
25
25
 
26
26
  #include "absl/base/attributes.h"
27
27
  #include "absl/functional/function_ref.h"
28
- #include "absl/log/check.h"
29
28
  #include "absl/log/log.h"
30
29
  #include "absl/status/status.h"
31
30
  #include "absl/strings/str_cat.h"
@@ -37,6 +36,7 @@
37
36
  #include "src/core/lib/promise/seq.h"
38
37
  #include "src/core/lib/slice/slice.h"
39
38
  #include "src/core/util/crash.h"
39
+ #include "src/core/util/grpc_check.h"
40
40
  #include "src/core/util/latent_see.h"
41
41
  #include "src/core/util/manual_constructor.h"
42
42
  #include "src/core/util/status_helper.h"
@@ -172,7 +172,7 @@ BaseCallData::CapturedBatch::~CapturedBatch() {
172
172
  uintptr_t& refcnt = *RefCountField(batch_);
173
173
  if (refcnt == 0) return; // refcnt==0 ==> cancelled
174
174
  --refcnt;
175
- CHECK_NE(refcnt, 0u);
175
+ GRPC_CHECK_NE(refcnt, 0u);
176
176
  }
177
177
 
178
178
  BaseCallData::CapturedBatch::CapturedBatch(const CapturedBatch& rhs)
@@ -203,7 +203,7 @@ BaseCallData::CapturedBatch& BaseCallData::CapturedBatch::operator=(
203
203
 
204
204
  void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) {
205
205
  auto* batch = std::exchange(batch_, nullptr);
206
- CHECK_NE(batch, nullptr);
206
+ GRPC_CHECK_NE(batch, nullptr);
207
207
  uintptr_t& refcnt = *RefCountField(batch);
208
208
  if (refcnt == 0) {
209
209
  // refcnt==0 ==> cancelled
@@ -218,7 +218,7 @@ void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) {
218
218
 
219
219
  void BaseCallData::CapturedBatch::CompleteWith(Flusher* releaser) {
220
220
  auto* batch = std::exchange(batch_, nullptr);
221
- CHECK_NE(batch, nullptr);
221
+ GRPC_CHECK_NE(batch, nullptr);
222
222
  uintptr_t& refcnt = *RefCountField(batch);
223
223
  if (refcnt == 0) return; // refcnt==0 ==> cancelled
224
224
  if (--refcnt == 0) {
@@ -229,7 +229,7 @@ void BaseCallData::CapturedBatch::CompleteWith(Flusher* releaser) {
229
229
  void BaseCallData::CapturedBatch::CancelWith(grpc_error_handle error,
230
230
  Flusher* releaser) {
231
231
  auto* batch = std::exchange(batch_, nullptr);
232
- CHECK_NE(batch, nullptr);
232
+ GRPC_CHECK_NE(batch, nullptr);
233
233
  uintptr_t& refcnt = *RefCountField(batch);
234
234
  if (refcnt == 0) {
235
235
  // refcnt==0 ==> cancelled
@@ -351,7 +351,7 @@ template <typename T>
351
351
  void BaseCallData::SendMessage::GotPipe(T* pipe_end) {
352
352
  GRPC_TRACE_LOG(channel, INFO)
353
353
  << base_->LogTag() << " SendMessage.GotPipe st=" << StateString(state_);
354
- CHECK_NE(pipe_end, nullptr);
354
+ GRPC_CHECK_NE(pipe_end, nullptr);
355
355
  switch (state_) {
356
356
  case State::kInitial:
357
357
  state_ = State::kIdle;
@@ -495,7 +495,7 @@ void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher,
495
495
  }
496
496
  [[fallthrough]];
497
497
  case State::kPushedToPipe: {
498
- CHECK(push_.has_value());
498
+ GRPC_CHECK(push_.has_value());
499
499
  auto r_push = (*push_)();
500
500
  if (auto* p = r_push.value_if_ready()) {
501
501
  GRPC_TRACE_LOG(channel, INFO)
@@ -504,12 +504,12 @@ void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher,
504
504
  "result="
505
505
  << (*p ? "true" : "false");
506
506
  // We haven't pulled through yet, so this certainly shouldn't succeed.
507
- CHECK(!*p);
507
+ GRPC_CHECK(!*p);
508
508
  state_ = State::kCancelled;
509
509
  batch_.CancelWith(absl::CancelledError(), flusher);
510
510
  break;
511
511
  }
512
- CHECK(next_.has_value());
512
+ GRPC_CHECK(next_.has_value());
513
513
  auto r_next = (*next_)();
514
514
  if (auto* p = r_next.value_if_ready()) {
515
515
  GRPC_TRACE_LOG(channel, INFO)
@@ -820,12 +820,12 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
820
820
  completed_status_, "recv_message");
821
821
  break;
822
822
  }
823
- CHECK(state_ == State::kPushedToPipe ||
824
- state_ == State::kCompletedWhilePushedToPipe);
823
+ GRPC_CHECK(state_ == State::kPushedToPipe ||
824
+ state_ == State::kCompletedWhilePushedToPipe);
825
825
  [[fallthrough]];
826
826
  case State::kCompletedWhilePushedToPipe:
827
827
  case State::kPushedToPipe: {
828
- CHECK(push_.has_value());
828
+ GRPC_CHECK(push_.has_value());
829
829
  auto r_push = (*push_)();
830
830
  if (auto* p = r_push.value_if_ready()) {
831
831
  GRPC_TRACE_LOG(channel, INFO)
@@ -833,11 +833,11 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
833
833
  << " ReceiveMessage.WakeInsideCombiner push complete: "
834
834
  << (*p ? "true" : "false");
835
835
  // We haven't pulled through yet, so this certainly shouldn't succeed.
836
- CHECK(!*p);
836
+ GRPC_CHECK(!*p);
837
837
  state_ = State::kCancelled;
838
838
  break;
839
839
  }
840
- CHECK(next_.has_value());
840
+ GRPC_CHECK(next_.has_value());
841
841
  auto r_next = (*next_)();
842
842
  if (auto* p = r_next.value_if_ready()) {
843
843
  next_.reset();
@@ -872,7 +872,7 @@ void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
872
872
  [[fallthrough]];
873
873
  case State::kCompletedWhilePulledFromPipe:
874
874
  case State::kPulledFromPipe: {
875
- CHECK(push_.has_value());
875
+ GRPC_CHECK(push_.has_value());
876
876
  if ((*push_)().ready()) {
877
877
  GRPC_TRACE_LOG(channel, INFO)
878
878
  << base_->LogTag()
@@ -976,7 +976,7 @@ class ClientCallData::PollContext {
976
976
  public:
977
977
  explicit PollContext(ClientCallData* self, Flusher* flusher)
978
978
  : self_(self), flusher_(flusher) {
979
- CHECK_EQ(self_->poll_ctx_, nullptr);
979
+ GRPC_CHECK_EQ(self_->poll_ctx_, nullptr);
980
980
 
981
981
  self_->poll_ctx_ = this;
982
982
  scoped_activity_.Init(self_);
@@ -987,11 +987,11 @@ class ClientCallData::PollContext {
987
987
  PollContext& operator=(const PollContext&) = delete;
988
988
 
989
989
  void Run() {
990
- DCHECK(HasContext<Arena>());
990
+ GRPC_DCHECK(HasContext<Arena>());
991
991
  GRPC_TRACE_LOG(channel, INFO)
992
992
  << self_->LogTag() << " ClientCallData.PollContext.Run "
993
993
  << self_->DebugString();
994
- CHECK(have_scoped_activity_);
994
+ GRPC_CHECK(have_scoped_activity_);
995
995
  repoll_ = false;
996
996
  if (self_->send_message() != nullptr) {
997
997
  self_->send_message()->WakeInsideCombiner(flusher_, true);
@@ -1026,8 +1026,10 @@ class ClientCallData::PollContext {
1026
1026
  case RecvInitialMetadata::kCompleteAndGotPipe:
1027
1027
  self_->recv_initial_metadata_->state =
1028
1028
  RecvInitialMetadata::kCompleteAndPushedToPipe;
1029
- CHECK(!self_->recv_initial_metadata_->metadata_push_.has_value());
1030
- CHECK(!self_->recv_initial_metadata_->metadata_next_.has_value());
1029
+ GRPC_CHECK(
1030
+ !self_->recv_initial_metadata_->metadata_push_.has_value());
1031
+ GRPC_CHECK(
1032
+ !self_->recv_initial_metadata_->metadata_next_.has_value());
1031
1033
  self_->recv_initial_metadata_->metadata_push_.emplace(
1032
1034
  self_->recv_initial_metadata_->server_initial_metadata_publisher
1033
1035
  ->Push(ServerMetadataHandle(
@@ -1038,7 +1040,7 @@ class ClientCallData::PollContext {
1038
1040
  self_->server_initial_metadata_pipe()->receiver.Next());
1039
1041
  [[fallthrough]];
1040
1042
  case RecvInitialMetadata::kCompleteAndPushedToPipe: {
1041
- CHECK(self_->recv_initial_metadata_->metadata_next_.has_value());
1043
+ GRPC_CHECK(self_->recv_initial_metadata_->metadata_next_.has_value());
1042
1044
  Poll<NextResult<ServerMetadataHandle>> p =
1043
1045
  (*self_->recv_initial_metadata_->metadata_next_)();
1044
1046
  if (NextResult<ServerMetadataHandle>* nr = p.value_if_ready()) {
@@ -1130,7 +1132,7 @@ class ClientCallData::PollContext {
1130
1132
  }
1131
1133
  } else {
1132
1134
  self_->cancelled_error_ = StatusFromMetadata(*md);
1133
- CHECK(!self_->cancelled_error_.ok());
1135
+ GRPC_CHECK(!self_->cancelled_error_.ok());
1134
1136
  if (self_->recv_initial_metadata_ != nullptr) {
1135
1137
  switch (self_->recv_initial_metadata_->state) {
1136
1138
  case RecvInitialMetadata::kInitial:
@@ -1168,7 +1170,7 @@ class ClientCallData::PollContext {
1168
1170
  self_->send_initial_metadata_batch_.CancelWith(
1169
1171
  self_->cancelled_error_, flusher_);
1170
1172
  } else {
1171
- CHECK(
1173
+ GRPC_CHECK(
1172
1174
  self_->recv_trailing_state_ == RecvTrailingState::kInitial ||
1173
1175
  self_->recv_trailing_state_ == RecvTrailingState::kForwarded);
1174
1176
  self_->call_combiner()->Cancel(self_->cancelled_error_);
@@ -1272,7 +1274,7 @@ ClientCallData::ClientCallData(grpc_call_element* elem,
1272
1274
 
1273
1275
  ClientCallData::~ClientCallData() {
1274
1276
  ScopedActivity scoped_activity(this);
1275
- CHECK_EQ(poll_ctx_, nullptr);
1277
+ GRPC_CHECK_EQ(poll_ctx_, nullptr);
1276
1278
  if (recv_initial_metadata_ != nullptr) {
1277
1279
  recv_initial_metadata_->~RecvInitialMetadata();
1278
1280
  }
@@ -1286,7 +1288,7 @@ std::string ClientCallData::DebugTag() const {
1286
1288
 
1287
1289
  // Activity implementation.
1288
1290
  void ClientCallData::ForceImmediateRepoll(WakeupMask) {
1289
- CHECK_NE(poll_ctx_, nullptr);
1291
+ GRPC_CHECK_NE(poll_ctx_, nullptr);
1290
1292
  poll_ctx_->Repoll();
1291
1293
  }
1292
1294
 
@@ -1354,9 +1356,10 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
1354
1356
  // If this is a cancel stream, cancel anything we have pending and propagate
1355
1357
  // the cancellation.
1356
1358
  if (batch->cancel_stream) {
1357
- CHECK(!batch->send_initial_metadata && !batch->send_trailing_metadata &&
1358
- !batch->send_message && !batch->recv_initial_metadata &&
1359
- !batch->recv_message && !batch->recv_trailing_metadata);
1359
+ GRPC_CHECK(!batch->send_initial_metadata &&
1360
+ !batch->send_trailing_metadata && !batch->send_message &&
1361
+ !batch->recv_initial_metadata && !batch->recv_message &&
1362
+ !batch->recv_trailing_metadata);
1360
1363
  PollContext poll_ctx(this, &flusher);
1361
1364
  Cancel(batch->payload->cancel_stream.cancel_error, &flusher);
1362
1365
  poll_ctx.Run();
@@ -1427,12 +1430,12 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
1427
1430
  batch.CancelWith(cancelled_error_, &flusher);
1428
1431
  } else {
1429
1432
  // Otherwise, we should not have seen a send_initial_metadata op yet.
1430
- CHECK(send_initial_state_ == SendInitialState::kInitial);
1433
+ GRPC_CHECK(send_initial_state_ == SendInitialState::kInitial);
1431
1434
  // Mark ourselves as queued.
1432
1435
  send_initial_state_ = SendInitialState::kQueued;
1433
1436
  if (batch->recv_trailing_metadata) {
1434
1437
  // If there's a recv_trailing_metadata op, we queue that too.
1435
- CHECK(recv_trailing_state_ == RecvTrailingState::kInitial);
1438
+ GRPC_CHECK(recv_trailing_state_ == RecvTrailingState::kInitial);
1436
1439
  recv_trailing_state_ = RecvTrailingState::kQueued;
1437
1440
  }
1438
1441
  // This is the queuing!
@@ -1447,7 +1450,7 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
1447
1450
  if (recv_trailing_state_ == RecvTrailingState::kCancelled) {
1448
1451
  batch.CancelWith(cancelled_error_, &flusher);
1449
1452
  } else {
1450
- CHECK(recv_trailing_state_ == RecvTrailingState::kInitial);
1453
+ GRPC_CHECK(recv_trailing_state_ == RecvTrailingState::kInitial);
1451
1454
  recv_trailing_state_ = RecvTrailingState::kForwarded;
1452
1455
  HookRecvTrailingMetadata(batch);
1453
1456
  }
@@ -1523,7 +1526,7 @@ void ClientCallData::Cancel(grpc_error_handle error, Flusher* flusher) {
1523
1526
  // Begin running the promise - which will ultimately take some initial
1524
1527
  // metadata and return some trailing metadata.
1525
1528
  void ClientCallData::StartPromise(Flusher* flusher) {
1526
- CHECK(send_initial_state_ == SendInitialState::kQueued);
1529
+ GRPC_CHECK(send_initial_state_ == SendInitialState::kQueued);
1527
1530
  ChannelFilter* filter = promise_filter_detail::ChannelFilterFromElem(elem());
1528
1531
 
1529
1532
  // Construct the promise.
@@ -1632,8 +1635,8 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
1632
1635
  CallArgs call_args) {
1633
1636
  GRPC_TRACE_LOG(channel, INFO)
1634
1637
  << LogTag() << " ClientCallData.MakeNextPromise " << DebugString();
1635
- CHECK_NE(poll_ctx_, nullptr);
1636
- CHECK(send_initial_state_ == SendInitialState::kQueued);
1638
+ GRPC_CHECK_NE(poll_ctx_, nullptr);
1639
+ GRPC_CHECK(send_initial_state_ == SendInitialState::kQueued);
1637
1640
  send_initial_metadata_batch_->payload->send_initial_metadata
1638
1641
  .send_initial_metadata = call_args.client_initial_metadata.get();
1639
1642
  if (recv_initial_metadata_ != nullptr) {
@@ -1641,7 +1644,7 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
1641
1644
  // It might be the one we passed in - in which case we know this filter
1642
1645
  // only wants to examine the metadata, or it might be a new instance, in
1643
1646
  // which case we know the filter wants to mutate.
1644
- CHECK_NE(call_args.server_initial_metadata, nullptr);
1647
+ GRPC_CHECK_NE(call_args.server_initial_metadata, nullptr);
1645
1648
  recv_initial_metadata_->server_initial_metadata_publisher =
1646
1649
  call_args.server_initial_metadata;
1647
1650
  switch (recv_initial_metadata_->state) {
@@ -1670,17 +1673,17 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
1670
1673
  recv_initial_metadata_->state))); // unreachable
1671
1674
  }
1672
1675
  } else {
1673
- CHECK_EQ(call_args.server_initial_metadata, nullptr);
1676
+ GRPC_CHECK_EQ(call_args.server_initial_metadata, nullptr);
1674
1677
  }
1675
1678
  if (send_message() != nullptr) {
1676
1679
  send_message()->GotPipe(call_args.client_to_server_messages);
1677
1680
  } else {
1678
- CHECK_EQ(call_args.client_to_server_messages, nullptr);
1681
+ GRPC_CHECK_EQ(call_args.client_to_server_messages, nullptr);
1679
1682
  }
1680
1683
  if (receive_message() != nullptr) {
1681
1684
  receive_message()->GotPipe(call_args.server_to_client_messages);
1682
1685
  } else {
1683
- CHECK_EQ(call_args.server_to_client_messages, nullptr);
1686
+ GRPC_CHECK_EQ(call_args.server_to_client_messages, nullptr);
1684
1687
  }
1685
1688
  return ArenaPromise<ServerMetadataHandle>(
1686
1689
  [this]() { return PollTrailingMetadata(); });
@@ -1693,10 +1696,10 @@ ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
1693
1696
  Poll<ServerMetadataHandle> ClientCallData::PollTrailingMetadata() {
1694
1697
  GRPC_TRACE_LOG(channel, INFO)
1695
1698
  << LogTag() << " ClientCallData.PollTrailingMetadata " << DebugString();
1696
- CHECK_NE(poll_ctx_, nullptr);
1699
+ GRPC_CHECK_NE(poll_ctx_, nullptr);
1697
1700
  if (send_initial_state_ == SendInitialState::kQueued) {
1698
1701
  // First poll: pass the send_initial_metadata op down the stack.
1699
- CHECK(send_initial_metadata_batch_.is_captured());
1702
+ GRPC_CHECK(send_initial_metadata_batch_.is_captured());
1700
1703
  send_initial_state_ = SendInitialState::kForwarded;
1701
1704
  if (recv_trailing_state_ == RecvTrailingState::kQueued) {
1702
1705
  // (and the recv_trailing_metadata op if it's part of the queuing)
@@ -1762,7 +1765,7 @@ void ClientCallData::RecvTrailingMetadataReady(grpc_error_handle error) {
1762
1765
  SetStatusFromError(recv_trailing_metadata_, error);
1763
1766
  }
1764
1767
  // Record that we've got the callback.
1765
- CHECK(recv_trailing_state_ == RecvTrailingState::kForwarded);
1768
+ GRPC_CHECK(recv_trailing_state_ == RecvTrailingState::kForwarded);
1766
1769
  recv_trailing_state_ = RecvTrailingState::kComplete;
1767
1770
  if (receive_message() != nullptr) {
1768
1771
  receive_message()->Done(*recv_trailing_metadata_, &flusher);
@@ -1851,7 +1854,7 @@ class ServerCallData::PollContext {
1851
1854
  created_.line(), "; Old: ", self_->poll_ctx_->created_.file(), ":",
1852
1855
  self_->poll_ctx_->created_.line()));
1853
1856
  }
1854
- CHECK_EQ(self_->poll_ctx_, nullptr);
1857
+ GRPC_CHECK_EQ(self_->poll_ctx_, nullptr);
1855
1858
  self_->poll_ctx_ = this;
1856
1859
  scoped_activity_.Init(self_);
1857
1860
  have_scoped_activity_ = true;
@@ -1957,7 +1960,7 @@ ServerCallData::~ServerCallData() {
1957
1960
  if (send_initial_metadata_ != nullptr) {
1958
1961
  send_initial_metadata_->~SendInitialMetadata();
1959
1962
  }
1960
- CHECK_EQ(poll_ctx_, nullptr);
1963
+ GRPC_CHECK_EQ(poll_ctx_, nullptr);
1961
1964
  }
1962
1965
 
1963
1966
  std::string ServerCallData::DebugTag() const {
@@ -1966,7 +1969,7 @@ std::string ServerCallData::DebugTag() const {
1966
1969
 
1967
1970
  // Activity implementation.
1968
1971
  void ServerCallData::ForceImmediateRepoll(WakeupMask) {
1969
- CHECK_NE(poll_ctx_, nullptr);
1972
+ GRPC_CHECK_NE(poll_ctx_, nullptr);
1970
1973
  poll_ctx_->Repoll();
1971
1974
  }
1972
1975
 
@@ -1983,9 +1986,10 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) {
1983
1986
  // If this is a cancel stream, cancel anything we have pending and
1984
1987
  // propagate the cancellation.
1985
1988
  if (batch->cancel_stream) {
1986
- CHECK(!batch->send_initial_metadata && !batch->send_trailing_metadata &&
1987
- !batch->send_message && !batch->recv_initial_metadata &&
1988
- !batch->recv_message && !batch->recv_trailing_metadata);
1989
+ GRPC_CHECK(!batch->send_initial_metadata &&
1990
+ !batch->send_trailing_metadata && !batch->send_message &&
1991
+ !batch->recv_initial_metadata && !batch->recv_message &&
1992
+ !batch->recv_trailing_metadata);
1989
1993
  PollContext poll_ctx(this, &flusher);
1990
1994
  Completed(batch->payload->cancel_stream.cancel_error,
1991
1995
  batch->payload->cancel_stream.tarpit, &flusher);
@@ -2000,11 +2004,11 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) {
2000
2004
  // recv_initial_metadata: we hook the response of this so we can start the
2001
2005
  // promise at an appropriate time.
2002
2006
  if (batch->recv_initial_metadata) {
2003
- CHECK(!batch->send_initial_metadata && !batch->send_trailing_metadata &&
2004
- !batch->send_message && !batch->recv_message &&
2005
- !batch->recv_trailing_metadata);
2007
+ GRPC_CHECK(!batch->send_initial_metadata &&
2008
+ !batch->send_trailing_metadata && !batch->send_message &&
2009
+ !batch->recv_message && !batch->recv_trailing_metadata);
2006
2010
  // Otherwise, we should not have seen a send_initial_metadata op yet.
2007
- CHECK(recv_initial_state_ == RecvInitialState::kInitial);
2011
+ GRPC_CHECK(recv_initial_state_ == RecvInitialState::kInitial);
2008
2012
  // Hook the callback so we know when to start the promise.
2009
2013
  recv_initial_metadata_ =
2010
2014
  batch->payload->recv_initial_metadata.recv_initial_metadata;
@@ -2182,13 +2186,14 @@ void ServerCallData::Completed(grpc_error_handle error,
2182
2186
  // - return a wrapper around PollTrailingMetadata as the promise.
2183
2187
  ArenaPromise<ServerMetadataHandle> ServerCallData::MakeNextPromise(
2184
2188
  CallArgs call_args) {
2185
- CHECK(recv_initial_state_ == RecvInitialState::kComplete);
2186
- CHECK(std::move(call_args.client_initial_metadata).get() ==
2187
- recv_initial_metadata_);
2189
+ GRPC_CHECK(recv_initial_state_ == RecvInitialState::kComplete);
2190
+ GRPC_CHECK(std::move(call_args.client_initial_metadata).get() ==
2191
+ recv_initial_metadata_);
2188
2192
  forward_recv_initial_metadata_callback_ = true;
2189
2193
  if (send_initial_metadata_ != nullptr) {
2190
- CHECK(send_initial_metadata_->server_initial_metadata_publisher == nullptr);
2191
- CHECK_NE(call_args.server_initial_metadata, nullptr);
2194
+ GRPC_CHECK(send_initial_metadata_->server_initial_metadata_publisher ==
2195
+ nullptr);
2196
+ GRPC_CHECK_NE(call_args.server_initial_metadata, nullptr);
2192
2197
  send_initial_metadata_->server_initial_metadata_publisher =
2193
2198
  call_args.server_initial_metadata;
2194
2199
  switch (send_initial_metadata_->state) {
@@ -2211,17 +2216,17 @@ ArenaPromise<ServerMetadataHandle> ServerCallData::MakeNextPromise(
2211
2216
  break;
2212
2217
  }
2213
2218
  } else {
2214
- CHECK_EQ(call_args.server_initial_metadata, nullptr);
2219
+ GRPC_CHECK_EQ(call_args.server_initial_metadata, nullptr);
2215
2220
  }
2216
2221
  if (send_message() != nullptr) {
2217
2222
  send_message()->GotPipe(call_args.server_to_client_messages);
2218
2223
  } else {
2219
- CHECK_EQ(call_args.server_to_client_messages, nullptr);
2224
+ GRPC_CHECK_EQ(call_args.server_to_client_messages, nullptr);
2220
2225
  }
2221
2226
  if (receive_message() != nullptr) {
2222
2227
  receive_message()->GotPipe(call_args.client_to_server_messages);
2223
2228
  } else {
2224
- CHECK_EQ(call_args.client_to_server_messages, nullptr);
2229
+ GRPC_CHECK_EQ(call_args.client_to_server_messages, nullptr);
2225
2230
  }
2226
2231
  return ArenaPromise<ServerMetadataHandle>(
2227
2232
  [this]() { return PollTrailingMetadata(); });
@@ -2281,7 +2286,7 @@ void ServerCallData::RecvInitialMetadataReady(grpc_error_handle error) {
2281
2286
  Flusher flusher(this);
2282
2287
  GRPC_TRACE_LOG(channel, INFO)
2283
2288
  << LogTag() << ": RecvInitialMetadataReady " << error;
2284
- CHECK(recv_initial_state_ == RecvInitialState::kForwarded);
2289
+ GRPC_CHECK(recv_initial_state_ == RecvInitialState::kForwarded);
2285
2290
  // If there was an error we just propagate that through
2286
2291
  if (!error.ok()) {
2287
2292
  recv_initial_state_ = RecvInitialState::kResponded;
@@ -2351,8 +2356,8 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
2351
2356
  SendInitialMetadata::kQueuedAndGotPipe) {
2352
2357
  send_initial_metadata_->state =
2353
2358
  SendInitialMetadata::kQueuedAndPushedToPipe;
2354
- CHECK(!send_initial_metadata_->metadata_push_.has_value());
2355
- CHECK(!send_initial_metadata_->metadata_next_.has_value());
2359
+ GRPC_CHECK(!send_initial_metadata_->metadata_push_.has_value());
2360
+ GRPC_CHECK(!send_initial_metadata_->metadata_next_.has_value());
2356
2361
  send_initial_metadata_->metadata_push_.emplace(
2357
2362
  send_initial_metadata_->server_initial_metadata_publisher->Push(
2358
2363
  ServerMetadataHandle(
@@ -2426,7 +2431,7 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
2426
2431
  if (send_initial_metadata_ != nullptr &&
2427
2432
  send_initial_metadata_->state ==
2428
2433
  SendInitialMetadata::kQueuedAndPushedToPipe) {
2429
- CHECK(send_initial_metadata_->metadata_next_.has_value());
2434
+ GRPC_CHECK(send_initial_metadata_->metadata_next_.has_value());
2430
2435
  auto p = (*send_initial_metadata_->metadata_next_)();
2431
2436
  GRPC_TRACE_LOG(channel, INFO)
2432
2437
  << LogTag() << ": WakeInsideCombiner send_initial_metadata poll="
@@ -2473,7 +2478,7 @@ void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
2473
2478
  StateString(send_trailing_state_))); // unreachable
2474
2479
  break;
2475
2480
  case SendTrailingState::kInitial: {
2476
- CHECK(*md->get_pointer(GrpcStatusMetadata()) != GRPC_STATUS_OK);
2481
+ GRPC_CHECK(*md->get_pointer(GrpcStatusMetadata()) != GRPC_STATUS_OK);
2477
2482
  Completed(StatusFromMetadata(*md), md->get(GrpcTarPit()).has_value(),
2478
2483
  flusher);
2479
2484
  } break;
@@ -35,7 +35,6 @@
35
35
 
36
36
  #include "absl/container/inlined_vector.h"
37
37
  #include "absl/functional/function_ref.h"
38
- #include "absl/log/check.h"
39
38
  #include "absl/log/log.h"
40
39
  #include "absl/meta/type_traits.h"
41
40
  #include "absl/status/status.h"
@@ -73,6 +72,7 @@
73
72
  #include "src/core/lib/transport/error_utils.h"
74
73
  #include "src/core/lib/transport/transport.h"
75
74
  #include "src/core/util/debug_location.h"
75
+ #include "src/core/util/grpc_check.h"
76
76
  #include "src/core/util/match.h"
77
77
  #include "src/core/util/time.h"
78
78
 
@@ -287,7 +287,7 @@ auto MapResult(const NoInterceptor*, Promise x, void*) {
287
287
  template <typename Promise, typename Derived>
288
288
  auto MapResult(absl::Status (Derived::Call::*fn)(ServerMetadata&), Promise x,
289
289
  FilterCallData<Derived>* call_data) {
290
- DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
290
+ GRPC_DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
291
291
  return OnCancel(Map(std::move(x),
292
292
  [call_data](ServerMetadataHandle md) {
293
293
  auto status =
@@ -308,7 +308,7 @@ auto MapResult(absl::Status (Derived::Call::*fn)(ServerMetadata&), Promise x,
308
308
  template <typename Promise, typename Derived>
309
309
  auto MapResult(void (Derived::Call::*fn)(ServerMetadata&), Promise x,
310
310
  FilterCallData<Derived>* call_data) {
311
- DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
311
+ GRPC_DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
312
312
  return OnCancel(Map(std::move(x),
313
313
  [call_data](ServerMetadataHandle md) {
314
314
  call_data->call.OnServerTrailingMetadata(*md);
@@ -325,7 +325,7 @@ auto MapResult(void (Derived::Call::*fn)(ServerMetadata&), Promise x,
325
325
  template <typename Promise, typename Derived>
326
326
  auto MapResult(void (Derived::Call::*fn)(ServerMetadata&, Derived*), Promise x,
327
327
  FilterCallData<Derived>* call_data) {
328
- DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
328
+ GRPC_DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
329
329
  return OnCancel(
330
330
  Map(std::move(x),
331
331
  [call_data](ServerMetadataHandle md) {
@@ -346,7 +346,7 @@ template <typename P, typename Call, typename Derived,
346
346
  typename = std::enable_if_t<IsFusedFilter<Derived>::value>>
347
347
  auto MapResult(void (Call::*fn)(ServerMetadata&, Derived*), P x,
348
348
  FilterCallData<Derived>* call_data) {
349
- DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
349
+ GRPC_DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
350
350
  return OnCancel(
351
351
  Map(std::move(x),
352
352
  [call_data](ServerMetadataHandle md) {
@@ -367,7 +367,7 @@ template <typename P, typename Call, typename Derived,
367
367
  typename = std::enable_if_t<IsFusedFilter<Derived>::value>>
368
368
  auto MapResult(void (Call::*fn)(ServerMetadata&), P x,
369
369
  FilterCallData<Derived>* call_data) {
370
- DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
370
+ GRPC_DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
371
371
  return OnCancel(Map(std::move(x),
372
372
  [call_data](ServerMetadataHandle md) {
373
373
  call_data->call.OnServerTrailingMetadata(*md);
@@ -552,7 +552,7 @@ template <typename Interceptor, typename Derived>
552
552
  auto RunCall(Interceptor interceptor, CallArgs call_args,
553
553
  NextPromiseFactory next_promise_factory,
554
554
  FilterCallData<Derived>* call_data) {
555
- DCHECK(interceptor == &Derived::Call::OnClientInitialMetadata);
555
+ GRPC_DCHECK(interceptor == &Derived::Call::OnClientInitialMetadata);
556
556
  return RunCallImpl<Interceptor, Derived>::Run(
557
557
  std::move(call_args), std::move(next_promise_factory), call_data);
558
558
  }
@@ -1273,7 +1273,8 @@ class BaseCallData : public Activity, private Wakeable {
1273
1273
  ~BaseCallData() override;
1274
1274
 
1275
1275
  void set_pollent(grpc_polling_entity* pollent) {
1276
- CHECK(nullptr == pollent_.exchange(pollent, std::memory_order_release));
1276
+ GRPC_CHECK(nullptr ==
1277
+ pollent_.exchange(pollent, std::memory_order_release));
1277
1278
  }
1278
1279
 
1279
1280
  // Activity implementation (partial).
@@ -1314,7 +1315,7 @@ class BaseCallData : public Activity, private Wakeable {
1314
1315
  ~Flusher();
1315
1316
 
1316
1317
  void Resume(grpc_transport_stream_op_batch* batch) {
1317
- CHECK(!call_->is_last());
1318
+ GRPC_CHECK(!call_->is_last());
1318
1319
  if (batch->HasOp()) {
1319
1320
  release_.push_back(batch);
1320
1321
  } else if (batch->on_complete != nullptr) {
@@ -1393,7 +1394,7 @@ class BaseCallData : public Activity, private Wakeable {
1393
1394
  PipeSender<MessageHandle>* original_sender() override { abort(); }
1394
1395
 
1395
1396
  void GotPipe(PipeReceiver<MessageHandle>* receiver) override {
1396
- CHECK_EQ(receiver_, nullptr);
1397
+ GRPC_CHECK_EQ(receiver_, nullptr);
1397
1398
  receiver_ = receiver;
1398
1399
  }
1399
1400
 
@@ -1401,7 +1402,7 @@ class BaseCallData : public Activity, private Wakeable {
1401
1402
 
1402
1403
  PipeSender<MessageHandle>* Push() override { return &pipe_.sender; }
1403
1404
  PipeReceiver<MessageHandle>* Pull() override {
1404
- CHECK_NE(receiver_, nullptr);
1405
+ GRPC_CHECK_NE(receiver_, nullptr);
1405
1406
  return receiver_;
1406
1407
  }
1407
1408
 
@@ -1422,12 +1423,12 @@ class BaseCallData : public Activity, private Wakeable {
1422
1423
  void GotPipe(PipeReceiver<MessageHandle>*) override { abort(); }
1423
1424
 
1424
1425
  void GotPipe(PipeSender<MessageHandle>* sender) override {
1425
- CHECK_EQ(sender_, nullptr);
1426
+ GRPC_CHECK_EQ(sender_, nullptr);
1426
1427
  sender_ = sender;
1427
1428
  }
1428
1429
 
1429
1430
  PipeSender<MessageHandle>* Push() override {
1430
- CHECK_NE(sender_, nullptr);
1431
+ GRPC_CHECK_NE(sender_, nullptr);
1431
1432
  return sender_;
1432
1433
  }
1433
1434
  PipeReceiver<MessageHandle>* Pull() override { return &pipe_.receiver; }
@@ -1942,7 +1943,7 @@ struct CallDataFilterWithFlagsMethods {
1942
1943
  if ((kFlags & kFilterIsLast) != 0) {
1943
1944
  ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
1944
1945
  } else {
1945
- CHECK_EQ(then_schedule_closure, nullptr);
1946
+ GRPC_CHECK_EQ(then_schedule_closure, nullptr);
1946
1947
  }
1947
1948
  }
1948
1949
  };
@@ -1979,7 +1980,7 @@ template <typename F, uint8_t kFlags>
1979
1980
  struct ChannelFilterWithFlagsMethods {
1980
1981
  static absl::Status InitChannelElem(grpc_channel_element* elem,
1981
1982
  grpc_channel_element_args* args) {
1982
- CHECK(args->is_last == ((kFlags & kFilterIsLast) != 0));
1983
+ GRPC_CHECK(args->is_last == ((kFlags & kFilterIsLast) != 0));
1983
1984
  auto status =
1984
1985
  F::Create(args->channel_args,
1985
1986
  ChannelFilter::Args(args->channel_stack, elem,
@@ -25,13 +25,13 @@
25
25
  #include <string>
26
26
 
27
27
  #include "absl/container/inlined_vector.h"
28
- #include "absl/log/check.h"
29
28
  #include "absl/strings/ascii.h"
30
29
  #include "absl/strings/str_format.h"
31
30
  #include "absl/strings/str_split.h"
32
31
  #include "src/core/lib/channel/channel_args.h"
33
32
  #include "src/core/lib/debug/trace.h"
34
33
  #include "src/core/util/crash.h"
34
+ #include "src/core/util/grpc_check.h"
35
35
  #include "src/core/util/ref_counted_ptr.h"
36
36
  #include "src/core/util/ref_counted_string.h"
37
37
 
@@ -118,7 +118,7 @@ CompressionAlgorithmSet::CompressionAlgorithmForLevel(
118
118
  return GRPC_COMPRESS_NONE;
119
119
  }
120
120
 
121
- CHECK_GT(level, 0);
121
+ GRPC_CHECK_GT(level, 0);
122
122
 
123
123
  // Establish a "ranking" or compression algorithms in increasing order of
124
124
  // compression.
@@ -25,9 +25,9 @@
25
25
  #include <zconf.h>
26
26
  #include <zlib.h>
27
27
 
28
- #include "absl/log/check.h"
29
28
  #include "absl/log/log.h"
30
29
  #include "src/core/lib/slice/slice.h"
30
+ #include "src/core/util/grpc_check.h"
31
31
 
32
32
  #define OUTPUT_BLOCK_SIZE 1024
33
33
 
@@ -40,20 +40,20 @@ static int zlib_body(z_stream* zs, grpc_slice_buffer* input,
40
40
  grpc_slice outbuf = GRPC_SLICE_MALLOC(OUTPUT_BLOCK_SIZE);
41
41
  const uInt uint_max = ~uInt{0};
42
42
 
43
- CHECK(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
43
+ GRPC_CHECK(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
44
44
  zs->avail_out = static_cast<uInt> GRPC_SLICE_LENGTH(outbuf);
45
45
  zs->next_out = GRPC_SLICE_START_PTR(outbuf);
46
46
  flush = Z_NO_FLUSH;
47
47
  for (i = 0; i < input->count; i++) {
48
48
  if (i == input->count - 1) flush = Z_FINISH;
49
- CHECK(GRPC_SLICE_LENGTH(input->slices[i]) <= uint_max);
49
+ GRPC_CHECK(GRPC_SLICE_LENGTH(input->slices[i]) <= uint_max);
50
50
  zs->avail_in = static_cast<uInt> GRPC_SLICE_LENGTH(input->slices[i]);
51
51
  zs->next_in = GRPC_SLICE_START_PTR(input->slices[i]);
52
52
  do {
53
53
  if (zs->avail_out == 0) {
54
54
  grpc_slice_buffer_add_indexed(output, outbuf);
55
55
  outbuf = GRPC_SLICE_MALLOC(OUTPUT_BLOCK_SIZE);
56
- CHECK(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
56
+ GRPC_CHECK(GRPC_SLICE_LENGTH(outbuf) <= uint_max);
57
57
  zs->avail_out = static_cast<uInt> GRPC_SLICE_LENGTH(outbuf);
58
58
  zs->next_out = GRPC_SLICE_START_PTR(outbuf);
59
59
  }
@@ -73,7 +73,7 @@ static int zlib_body(z_stream* zs, grpc_slice_buffer* input,
73
73
  goto error;
74
74
  }
75
75
 
76
- CHECK(outbuf.refcount);
76
+ GRPC_CHECK(outbuf.refcount);
77
77
  outbuf.data.refcounted.length -= zs->avail_out;
78
78
  grpc_slice_buffer_add_indexed(output, outbuf);
79
79
 
@@ -103,7 +103,7 @@ static int zlib_compress(grpc_slice_buffer* input, grpc_slice_buffer* output,
103
103
  zs.zfree = zfree_gpr;
104
104
  r = deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 15 | (gzip ? 16 : 0),
105
105
  8, Z_DEFAULT_STRATEGY);
106
- CHECK(r == Z_OK);
106
+ GRPC_CHECK(r == Z_OK);
107
107
  r = zlib_body(&zs, input, output, deflate) && output->length < input->length;
108
108
  if (!r) {
109
109
  for (i = count_before; i < output->count; i++) {
@@ -127,7 +127,7 @@ static int zlib_decompress(grpc_slice_buffer* input, grpc_slice_buffer* output,
127
127
  zs.zalloc = zalloc_gpr;
128
128
  zs.zfree = zfree_gpr;
129
129
  r = inflateInit2(&zs, 15 | (gzip ? 16 : 0));
130
- CHECK(r == Z_OK);
130
+ GRPC_CHECK(r == Z_OK);
131
131
  r = zlib_body(&zs, input, output, inflate);
132
132
  if (!r) {
133
133
  for (i = count_before; i < output->count; i++) {