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
@@ -38,7 +38,6 @@
38
38
  #include <vector>
39
39
 
40
40
  #include "absl/base/thread_annotations.h"
41
- #include "absl/log/check.h"
42
41
  #include "absl/log/log.h"
43
42
  #include "absl/status/status.h"
44
43
  #include "absl/strings/string_view.h"
@@ -59,6 +58,7 @@
59
58
  #include "src/core/tsi/transport_security_grpc.h"
60
59
  #include "src/core/tsi/transport_security_interface.h"
61
60
  #include "src/core/util/debug_location.h"
61
+ #include "src/core/util/grpc_check.h"
62
62
  #include "src/core/util/orphanable.h"
63
63
  #include "src/core/util/ref_counted_ptr.h"
64
64
  #include "src/core/util/string.h"
@@ -102,6 +102,7 @@ class FrameProtector : public RefCounted<FrameProtector> {
102
102
  write_staging_buffer_ =
103
103
  memory_owner_.MakeSlice(MemoryRequest(STAGING_BUFFER_SIZE));
104
104
  }
105
+ is_zero_copy_protector_ = (zero_copy_protector_ != nullptr);
105
106
  }
106
107
 
107
108
  ~FrameProtector() override {
@@ -289,6 +290,8 @@ class FrameProtector : public RefCounted<FrameProtector> {
289
290
  grpc_slice_buffer_reset_and_unref(read_buffer_);
290
291
  }
291
292
 
293
+ bool IsZeroCopyProtector() const { return is_zero_copy_protector_; }
294
+
292
295
  bool MaybeCompleteReadImmediately() {
293
296
  GRPC_TRACE_LOG(secure_endpoint, INFO)
294
297
  << "MaybeCompleteReadImmediately: " << this
@@ -456,6 +459,7 @@ class FrameProtector : public RefCounted<FrameProtector> {
456
459
  int min_progress_size_ = 1;
457
460
  SliceBuffer protector_staging_buffer_;
458
461
  bool shutdown_ = false;
462
+ bool is_zero_copy_protector_ = false;
459
463
  };
460
464
  } // namespace
461
465
  } // namespace grpc_core
@@ -795,9 +799,12 @@ class SecureEndpoint final : public EventEngine::Endpoint {
795
799
  if (frame_protector_.MaybeCompleteReadImmediately()) {
796
800
  return MaybeFinishReadImmediately();
797
801
  }
798
- args.set_read_hint_bytes(frame_protector_.min_progress_size());
802
+ if (frame_protector_.IsZeroCopyProtector()) {
803
+ args.set_read_hint_bytes(frame_protector_.min_progress_size());
804
+ }
799
805
  bool read_completed_immediately = wrapped_ep_->Read(
800
806
  [impl = Ref()](absl::Status status) mutable {
807
+ grpc_core::ExecCtx exec_ctx;
801
808
  FinishAsyncRead(std::move(impl), std::move(status));
802
809
  },
803
810
  frame_protector_.source_buffer(), std::move(args));
@@ -832,7 +839,7 @@ class SecureEndpoint final : public EventEngine::Endpoint {
832
839
  // in the FinishAsyncWrites path, and EventEngine insists that one
833
840
  // write finishes before a second begins, we should never see a Write
834
841
  // call here with a non-null pending_writes_.
835
- CHECK(pending_writes_ == nullptr);
842
+ GRPC_CHECK(pending_writes_ == nullptr);
836
843
  pending_writes_ = std::make_unique<SliceBuffer>(std::move(*data));
837
844
  frame_protector_.TraceOp("Pending",
838
845
  pending_writes_->c_slice_buffer());
@@ -844,6 +851,7 @@ class SecureEndpoint final : public EventEngine::Endpoint {
844
851
  if (!*writing_) {
845
852
  writing_ = true;
846
853
  event_engine_->Run([impl = Ref()]() mutable {
854
+ grpc_core::ExecCtx exec_ctx;
847
855
  FinishAsyncWrite(std::move(impl));
848
856
  });
849
857
  }
@@ -917,6 +925,7 @@ class SecureEndpoint final : public EventEngine::Endpoint {
917
925
  if (grpc_core::IsSecureEndpointOffloadLargeReadsEnabled() &&
918
926
  frame_protector_.source_buffer()->Length() > large_read_threshold_) {
919
927
  event_engine_->Run([impl = Ref()]() mutable {
928
+ grpc_core::ExecCtx exec_ctx;
920
929
  FinishAsyncRead(std::move(impl), absl::OkStatus());
921
930
  });
922
931
  return false;
@@ -982,7 +991,7 @@ class SecureEndpoint final : public EventEngine::Endpoint {
982
991
  grpc_core::ReleasableMutexLock lock(&impl->write_queue_mu_);
983
992
  if (impl->pending_writes_ == nullptr) {
984
993
  impl->writing_ = false;
985
- DCHECK(impl->on_write_ == nullptr);
994
+ GRPC_DCHECK(impl->on_write_ == nullptr);
986
995
  lock.Release();
987
996
  return;
988
997
  }
@@ -990,7 +999,7 @@ class SecureEndpoint final : public EventEngine::Endpoint {
990
999
  data = std::move(impl->pending_writes_);
991
1000
  impl->frame_protector_.TraceOp("data", data->c_slice_buffer());
992
1001
  args = std::move(impl->last_write_args_);
993
- DCHECK(impl->on_write_ != nullptr);
1002
+ GRPC_DCHECK(impl->on_write_ != nullptr);
994
1003
  }
995
1004
  impl->event_engine_->Run(
996
1005
  [on_write = std::move(impl->on_write_)]() mutable {
@@ -1022,6 +1031,7 @@ class SecureEndpoint final : public EventEngine::Endpoint {
1022
1031
  // immediately, in which case we'll loop.
1023
1032
  const bool write_finished_immediately = impl->wrapped_ep_->Write(
1024
1033
  [impl](absl::Status status) mutable {
1034
+ grpc_core::ExecCtx exec_ctx;
1025
1035
  // Async completion path: if we completed successfully then loop
1026
1036
  // back into FinishAsyncWrite to see if there's more writing to
1027
1037
  // do.
@@ -1075,7 +1085,7 @@ grpc_core::OrphanablePtr<grpc_endpoint> grpc_secure_endpoint_create(
1075
1085
  std::unique_ptr<grpc_event_engine::experimental::EventEngine::Endpoint>
1076
1086
  event_engine_endpoint = grpc_event_engine::experimental::
1077
1087
  grpc_take_wrapped_event_engine_endpoint(to_wrap.release());
1078
- CHECK(event_engine_endpoint != nullptr);
1088
+ GRPC_CHECK(event_engine_endpoint != nullptr);
1079
1089
  if (grpc_core::IsPipelinedReadSecureEndpointEnabled()) {
1080
1090
  return grpc_pipelined_secure_endpoint_create(
1081
1091
  protector, zero_copy_protector, std::move(event_engine_endpoint),
@@ -37,7 +37,6 @@
37
37
 
38
38
  #include "absl/base/attributes.h"
39
39
  #include "absl/functional/any_invocable.h"
40
- #include "absl/log/check.h"
41
40
  #include "absl/status/status.h"
42
41
  #include "absl/strings/str_cat.h"
43
42
  #include "absl/strings/string_view.h"
@@ -61,6 +60,7 @@
61
60
  #include "src/core/transport/auth_context.h"
62
61
  #include "src/core/tsi/transport_security_grpc.h"
63
62
  #include "src/core/util/debug_location.h"
63
+ #include "src/core/util/grpc_check.h"
64
64
  #include "src/core/util/ref_counted_ptr.h"
65
65
  #include "src/core/util/sync.h"
66
66
  #include "src/core/util/unique_type_name.h"
@@ -345,7 +345,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
345
345
  }
346
346
  // Read more if we need to.
347
347
  if (result == TSI_INCOMPLETE_DATA) {
348
- CHECK_EQ(bytes_to_send_size, 0u);
348
+ GRPC_CHECK_EQ(bytes_to_send_size, 0u);
349
349
  grpc_endpoint_read(
350
350
  args_->endpoint.get(), args_->read_buffer.c_slice_buffer(),
351
351
  NewClosure([self = RefAsSubclass<SecurityHandshaker>()](
@@ -365,7 +365,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
365
365
  }
366
366
  // Update handshaker result.
367
367
  if (handshaker_result != nullptr) {
368
- CHECK_EQ(handshaker_result_, nullptr);
368
+ GRPC_CHECK_EQ(handshaker_result_, nullptr);
369
369
  handshaker_result_ = handshaker_result;
370
370
  }
371
371
  if (bytes_to_send_size > 0) {
@@ -29,7 +29,6 @@
29
29
 
30
30
  #include "absl/base/thread_annotations.h"
31
31
  #include "absl/functional/any_invocable.h"
32
- #include "absl/log/check.h"
33
32
  #include "absl/status/status.h"
34
33
  #include "absl/status/statusor.h"
35
34
  #include "src/core/config/core_configuration.h"
@@ -50,6 +49,7 @@
50
49
  #include "src/core/lib/iomgr/tcp_client.h"
51
50
  #include "src/core/lib/iomgr/tcp_server.h"
52
51
  #include "src/core/util/debug_location.h"
52
+ #include "src/core/util/grpc_check.h"
53
53
  #include "src/core/util/ref_counted_ptr.h"
54
54
  #include "src/core/util/sync.h"
55
55
  #include "src/core/util/uri.h"
@@ -185,7 +185,7 @@ void TCPConnectHandshaker::Connected(void* arg, grpc_error_handle error) {
185
185
  }
186
186
  return;
187
187
  }
188
- CHECK_NE(self->endpoint_to_destroy_, nullptr);
188
+ GRPC_CHECK_NE(self->endpoint_to_destroy_, nullptr);
189
189
  self->args_->endpoint.reset(self->endpoint_to_destroy_);
190
190
  self->endpoint_to_destroy_ = nullptr;
191
191
  if (self->bind_endpoint_to_pollset_) {
@@ -24,13 +24,14 @@
24
24
  #include <memory>
25
25
  #include <utility>
26
26
 
27
- #include "absl/log/check.h"
28
27
  #include "absl/log/log.h"
29
28
  #include "src/core/channelz/property_list.h"
29
+ #include "src/core/config/core_configuration.h"
30
30
  #include "src/core/lib/channel/channel_args.h"
31
31
  #include "src/core/lib/channel/channel_fwd.h"
32
32
  #include "src/core/lib/surface/channel_init.h"
33
33
  #include "src/core/util/alloc.h"
34
+ #include "src/core/util/grpc_check.h"
34
35
 
35
36
  using grpc_event_engine::experimental::EventEngine;
36
37
 
@@ -65,7 +66,7 @@ size_t grpc_channel_stack_size(const grpc_channel_filter** filters,
65
66
  sizeof(grpc_channel_element));
66
67
  size_t i;
67
68
 
68
- CHECK((GPR_MAX_ALIGNMENT & (GPR_MAX_ALIGNMENT - 1)) == 0)
69
+ GRPC_CHECK((GPR_MAX_ALIGNMENT & (GPR_MAX_ALIGNMENT - 1)) == 0)
69
70
  << "GPR_MAX_ALIGNMENT must be a power of two";
70
71
 
71
72
  // add the size for each filter
@@ -165,9 +166,9 @@ grpc_error_handle grpc_channel_stack_init(
165
166
  call_size += GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filters[i]->sizeof_call_data);
166
167
  }
167
168
 
168
- CHECK(user_data > (char*)stack);
169
- CHECK((uintptr_t)(user_data - (char*)stack) ==
170
- grpc_channel_stack_size(filters, filter_count));
169
+ GRPC_CHECK(user_data > (char*)stack);
170
+ GRPC_CHECK((uintptr_t)(user_data - (char*)stack) ==
171
+ grpc_channel_stack_size(filters, filter_count));
171
172
 
172
173
  stack->call_stack_size = call_size;
173
174
  stack->channelz_data_source.Init(
@@ -180,6 +181,8 @@ void grpc_channel_stack::ChannelStackDataSource::AddData(
180
181
  grpc_channel_stack* channel_stack = reinterpret_cast<grpc_channel_stack*>(
181
182
  reinterpret_cast<char*>(this) -
182
183
  offsetof(grpc_channel_stack, channelz_data_source));
184
+ grpc_core::CoreConfiguration::Get().channel_init().AddData(
185
+ sink, channel_stack->type);
183
186
  sink.AddData(
184
187
  "channel_stack",
185
188
  grpc_core::channelz::PropertyList()
@@ -57,6 +57,7 @@
57
57
  #include "src/core/lib/iomgr/polling_entity.h"
58
58
  #include "src/core/lib/promise/arena_promise.h"
59
59
  #include "src/core/lib/resource_quota/arena.h"
60
+ #include "src/core/lib/surface/channel_stack_type.h"
60
61
  #include "src/core/lib/transport/call_final_info.h"
61
62
  #include "src/core/lib/transport/transport.h"
62
63
  #include "src/core/telemetry/metrics.h"
@@ -187,6 +188,8 @@ struct grpc_channel_stack {
187
188
  // should look like and this can go.
188
189
  grpc_core::ManualConstructor<std::function<void()>> on_destroy;
189
190
 
191
+ grpc_channel_stack_type type;
192
+
190
193
  class ChannelStackDataSource final : public grpc_core::channelz::DataSource {
191
194
  public:
192
195
  explicit ChannelStackDataSource(
@@ -65,6 +65,7 @@ ChannelStackBuilderImpl::Build() {
65
65
  // allocate memory
66
66
  auto* channel_stack =
67
67
  static_cast<grpc_channel_stack*>(gpr_zalloc(channel_stack_size));
68
+ channel_stack->type = this->channel_stack_type();
68
69
 
69
70
  // and initialize it
70
71
  grpc_error_handle error = grpc_channel_stack_init(
@@ -31,7 +31,6 @@
31
31
  #include <type_traits>
32
32
  #include <utility>
33
33
 
34
- #include "absl/log/check.h"
35
34
  #include "absl/status/status.h"
36
35
  #include "absl/status/statusor.h"
37
36
  #include "src/core/call/call_finalization.h"
@@ -71,6 +70,7 @@
71
70
  #include "src/core/lib/transport/transport.h"
72
71
  #include "src/core/util/alloc.h"
73
72
  #include "src/core/util/debug_location.h"
73
+ #include "src/core/util/grpc_check.h"
74
74
  #include "src/core/util/orphanable.h"
75
75
  #include "src/core/util/ref_counted_ptr.h"
76
76
  #include "src/core/util/time.h"
@@ -220,7 +220,7 @@ static void connected_channel_destroy_call_elem(
220
220
  static grpc_error_handle connected_channel_init_channel_elem(
221
221
  grpc_channel_element* elem, grpc_channel_element_args* args) {
222
222
  channel_data* cd = static_cast<channel_data*>(elem->channel_data);
223
- CHECK(args->is_last);
223
+ GRPC_CHECK(args->is_last);
224
224
  cd->transport = args->channel_args.GetObject<grpc_core::Transport>();
225
225
  return absl::OkStatus();
226
226
  }