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
@@ -31,7 +31,6 @@
31
31
  #include <variant>
32
32
 
33
33
  #include "absl/base/attributes.h"
34
- #include "absl/log/check.h"
35
34
  #include "absl/log/log.h"
36
35
  #include "absl/status/status.h"
37
36
  #include "absl/strings/match.h"
@@ -51,6 +50,7 @@
51
50
  #include "src/core/telemetry/call_tracer.h"
52
51
  #include "src/core/telemetry/stats.h"
53
52
  #include "src/core/telemetry/stats_data.h"
53
+ #include "src/core/util/grpc_check.h"
54
54
  #include "src/core/util/match.h"
55
55
 
56
56
  // IWYU pragma: no_include <type_traits>
@@ -193,7 +193,7 @@ class HPackParser::Input {
193
193
  std::optional<StringPrefix> ParseStringPrefix() {
194
194
  auto cur = Next();
195
195
  if (!cur.has_value()) {
196
- DCHECK(eof_error());
196
+ GRPC_DCHECK(eof_error());
197
197
  return {};
198
198
  }
199
199
  // Huffman if the top bit is 1
@@ -204,7 +204,7 @@ class HPackParser::Input {
204
204
  // all ones ==> varint string length
205
205
  auto v = ParseVarint(0x7f);
206
206
  if (!v.has_value()) {
207
- DCHECK(eof_error());
207
+ GRPC_DCHECK(eof_error());
208
208
  return {};
209
209
  }
210
210
  strlen = *v;
@@ -231,7 +231,7 @@ class HPackParser::Input {
231
231
  // Intended for errors that are specific to a stream and recoverable.
232
232
  // Callers should ensure that any hpack table updates happen.
233
233
  void SetErrorAndContinueParsing(HpackParseResult error) {
234
- DCHECK(error.stream_error());
234
+ GRPC_DCHECK(error.stream_error());
235
235
  SetError(std::move(error));
236
236
  }
237
237
 
@@ -239,7 +239,7 @@ class HPackParser::Input {
239
239
  // Intended for unrecoverable errors, with the expectation that they will
240
240
  // close the connection on return to chttp2.
241
241
  void SetErrorAndStopParsing(HpackParseResult error) {
242
- DCHECK(error.connection_error());
242
+ GRPC_DCHECK(error.connection_error());
243
243
  SetError(std::move(error));
244
244
  begin_ = end_;
245
245
  }
@@ -248,17 +248,17 @@ class HPackParser::Input {
248
248
  // min_progress_size: how many bytes beyond the current frontier do we need to
249
249
  // read prior to being able to get further in this parse.
250
250
  void UnexpectedEOF(size_t min_progress_size) {
251
- CHECK_GT(min_progress_size, 0u);
251
+ GRPC_CHECK_GT(min_progress_size, 0u);
252
252
  if (eof_error()) return;
253
253
  // Set min progress size, taking into account bytes parsed already but not
254
254
  // consumed.
255
255
  min_progress_size_ = min_progress_size + (begin_ - frontier_);
256
- DCHECK(eof_error());
256
+ GRPC_DCHECK(eof_error());
257
257
  }
258
258
 
259
259
  // Update the frontier - signifies we've successfully parsed another element
260
260
  void UpdateFrontier() {
261
- DCHECK_EQ(skip_bytes_, 0u);
261
+ GRPC_DCHECK_EQ(skip_bytes_, 0u);
262
262
  frontier_ = begin_;
263
263
  }
264
264
 
@@ -381,7 +381,7 @@ HPackParser::String::StringResult HPackParser::String::ParseUncompressed(
381
381
  // Check there's enough bytes
382
382
  if (input->remaining() < length) {
383
383
  input->UnexpectedEOF(/*min_progress_size=*/length);
384
- DCHECK(input->eof_error());
384
+ GRPC_DCHECK(input->eof_error());
385
385
  return StringResult{HpackParseStatus::kEof, wire_size, String{}};
386
386
  }
387
387
  auto* refcount = input->slice_refcount();
@@ -601,7 +601,7 @@ class HPackParser::Parser {
601
601
 
602
602
  private:
603
603
  bool ParseTop() {
604
- DCHECK(state_.parse_state == ParseState::kTop);
604
+ GRPC_DCHECK(state_.parse_state == ParseState::kTop);
605
605
  auto cur = *input_->Next();
606
606
  input_->ClearFieldError();
607
607
  switch (cur >> 4) {
@@ -773,7 +773,7 @@ class HPackParser::Parser {
773
773
 
774
774
  // Parse an index encoded key and a string encoded value
775
775
  bool StartIdxKey(uint32_t index, bool add_to_table) {
776
- DCHECK(state_.parse_state == ParseState::kTop);
776
+ GRPC_DCHECK(state_.parse_state == ParseState::kTop);
777
777
  input_->UpdateFrontier();
778
778
  const auto* elem = state_.hpack_table.Lookup(index);
779
779
  if (GPR_UNLIKELY(elem == nullptr)) {
@@ -789,14 +789,14 @@ class HPackParser::Parser {
789
789
 
790
790
  // Parse a varint index encoded key and a string encoded value
791
791
  bool StartVarIdxKey(uint32_t offset, bool add_to_table) {
792
- DCHECK(state_.parse_state == ParseState::kTop);
792
+ GRPC_DCHECK(state_.parse_state == ParseState::kTop);
793
793
  auto index = input_->ParseVarint(offset);
794
794
  if (GPR_UNLIKELY(!index.has_value())) return false;
795
795
  return StartIdxKey(*index, add_to_table);
796
796
  }
797
797
 
798
798
  bool StartParseLiteralKey(bool add_to_table) {
799
- DCHECK(state_.parse_state == ParseState::kTop);
799
+ GRPC_DCHECK(state_.parse_state == ParseState::kTop);
800
800
  state_.add_to_table = add_to_table;
801
801
  state_.parse_state = ParseState::kParsingKeyLength;
802
802
  input_->UpdateFrontier();
@@ -831,7 +831,7 @@ class HPackParser::Parser {
831
831
  }
832
832
 
833
833
  bool ParseKeyLength() {
834
- DCHECK(state_.parse_state == ParseState::kParsingKeyLength);
834
+ GRPC_DCHECK(state_.parse_state == ParseState::kParsingKeyLength);
835
835
  auto pfx = input_->ParseStringPrefix();
836
836
  if (!pfx.has_value()) return false;
837
837
  state_.is_string_huff_compressed = pfx->huff;
@@ -852,14 +852,14 @@ class HPackParser::Parser {
852
852
  }
853
853
 
854
854
  bool ParseKeyBody() {
855
- DCHECK(state_.parse_state == ParseState::kParsingKeyBody);
855
+ GRPC_DCHECK(state_.parse_state == ParseState::kParsingKeyBody);
856
856
  auto key = String::Parse(input_, state_.is_string_huff_compressed,
857
857
  state_.string_length);
858
858
  switch (key.status) {
859
859
  case HpackParseStatus::kOk:
860
860
  break;
861
861
  case HpackParseStatus::kEof:
862
- DCHECK(input_->eof_error());
862
+ GRPC_DCHECK(input_->eof_error());
863
863
  return false;
864
864
  default:
865
865
  input_->SetErrorAndStopParsing(
@@ -899,7 +899,7 @@ class HPackParser::Parser {
899
899
  }
900
900
 
901
901
  bool SkipKeyBody() {
902
- DCHECK(state_.parse_state == ParseState::kSkippingKeyBody);
902
+ GRPC_DCHECK(state_.parse_state == ParseState::kSkippingKeyBody);
903
903
  if (!SkipStringBody()) return false;
904
904
  input_->UpdateFrontier();
905
905
  state_.parse_state = ParseState::kSkippingValueLength;
@@ -907,7 +907,7 @@ class HPackParser::Parser {
907
907
  }
908
908
 
909
909
  bool SkipValueLength() {
910
- DCHECK(state_.parse_state == ParseState::kSkippingValueLength);
910
+ GRPC_DCHECK(state_.parse_state == ParseState::kSkippingValueLength);
911
911
  auto pfx = input_->ParseStringPrefix();
912
912
  if (!pfx.has_value()) return false;
913
913
  state_.string_length = pfx->length;
@@ -917,7 +917,7 @@ class HPackParser::Parser {
917
917
  }
918
918
 
919
919
  bool SkipValueBody() {
920
- DCHECK(state_.parse_state == ParseState::kSkippingValueBody);
920
+ GRPC_DCHECK(state_.parse_state == ParseState::kSkippingValueBody);
921
921
  if (!SkipStringBody()) return false;
922
922
  input_->UpdateFrontier();
923
923
  state_.parse_state = ParseState::kTop;
@@ -928,7 +928,7 @@ class HPackParser::Parser {
928
928
  }
929
929
 
930
930
  bool ParseValueLength() {
931
- DCHECK(state_.parse_state == ParseState::kParsingValueLength);
931
+ GRPC_DCHECK(state_.parse_state == ParseState::kParsingValueLength);
932
932
  auto pfx = input_->ParseStringPrefix();
933
933
  if (!pfx.has_value()) return false;
934
934
  state_.is_string_huff_compressed = pfx->huff;
@@ -952,7 +952,7 @@ class HPackParser::Parser {
952
952
  }
953
953
 
954
954
  bool ParseValueBody() {
955
- DCHECK(state_.parse_state == ParseState::kParsingValueBody);
955
+ GRPC_DCHECK(state_.parse_state == ParseState::kParsingValueBody);
956
956
  auto value =
957
957
  state_.is_binary_header
958
958
  ? String::ParseBinary(input_, state_.is_string_huff_compressed,
@@ -980,7 +980,7 @@ class HPackParser::Parser {
980
980
  case HpackParseStatus::kOk:
981
981
  break;
982
982
  case HpackParseStatus::kEof:
983
- DCHECK(input_->eof_error());
983
+ GRPC_DCHECK(input_->eof_error());
984
984
  return false;
985
985
  default: {
986
986
  auto result =
@@ -1106,9 +1106,9 @@ void HPackParser::BeginFrame(grpc_metadata_batch* metadata_buffer,
1106
1106
  log_info_ = log_info;
1107
1107
  }
1108
1108
 
1109
- grpc_error_handle HPackParser::Parse(
1110
- const grpc_slice& slice, bool is_last, absl::BitGenRef bitsrc,
1111
- CallTracerAnnotationInterface* call_tracer) {
1109
+ grpc_error_handle HPackParser::Parse(const grpc_slice& slice, bool is_last,
1110
+ absl::BitGenRef bitsrc,
1111
+ CallSpan* call_tracer) {
1112
1112
  if (GPR_UNLIKELY(!unparsed_bytes_.empty())) {
1113
1113
  unparsed_bytes_.insert(unparsed_bytes_.end(), GRPC_SLICE_START_PTR(slice),
1114
1114
  GRPC_SLICE_END_PTR(slice));
@@ -1129,8 +1129,8 @@ grpc_error_handle HPackParser::Parse(
1129
1129
  is_last, call_tracer);
1130
1130
  }
1131
1131
 
1132
- grpc_error_handle HPackParser::ParseInput(
1133
- Input input, bool is_last, CallTracerAnnotationInterface* call_tracer) {
1132
+ grpc_error_handle HPackParser::ParseInput(Input input, bool is_last,
1133
+ CallSpan* call_tracer) {
1134
1134
  ParseInputInner(&input);
1135
1135
  if (is_last && is_boundary()) {
1136
1136
  if (state_.metadata_early_detection.Reject(state_.frame_length,
@@ -104,8 +104,7 @@ class HPackParser {
104
104
  void StopBufferingFrame() { metadata_buffer_ = nullptr; }
105
105
  // Parse one slice worth of data
106
106
  grpc_error_handle Parse(const grpc_slice& slice, bool is_last,
107
- absl::BitGenRef bitsrc,
108
- CallTracerAnnotationInterface* call_tracer);
107
+ absl::BitGenRef bitsrc, CallSpan* call_tracer);
109
108
  // Reset state ready for the next BeginFrame
110
109
  void FinishFrame();
111
110
 
@@ -257,7 +256,7 @@ class HPackParser {
257
256
  };
258
257
 
259
258
  grpc_error_handle ParseInput(Input input, bool is_last,
260
- CallTracerAnnotationInterface* call_tracer);
259
+ CallSpan* call_tracer);
261
260
  void ParseInputInner(Input* input);
262
261
  GPR_ATTRIBUTE_NOINLINE
263
262
  void HandleMetadataSoftSizeLimitExceeded(Input* input);
@@ -26,7 +26,6 @@
26
26
  #include <cstring>
27
27
  #include <utility>
28
28
 
29
- #include "absl/log/check.h"
30
29
  #include "absl/log/log.h"
31
30
  #include "absl/status/status.h"
32
31
  #include "absl/strings/str_cat.h"
@@ -37,11 +36,12 @@
37
36
  #include "src/core/lib/debug/trace.h"
38
37
  #include "src/core/lib/slice/slice.h"
39
38
  #include "src/core/telemetry/stats.h"
39
+ #include "src/core/util/grpc_check.h"
40
40
 
41
41
  namespace grpc_core {
42
42
 
43
43
  void HPackTable::MementoRingBuffer::Put(Memento m) {
44
- CHECK_LT(num_entries_, max_entries_);
44
+ GRPC_CHECK_LT(num_entries_, max_entries_);
45
45
  if (entries_.size() < max_entries_) {
46
46
  ++num_entries_;
47
47
  return entries_.push_back(std::move(m));
@@ -56,7 +56,7 @@ void HPackTable::MementoRingBuffer::Put(Memento m) {
56
56
  }
57
57
 
58
58
  auto HPackTable::MementoRingBuffer::PopOne() -> Memento {
59
- CHECK_GT(num_entries_, 0u);
59
+ GRPC_CHECK_GT(num_entries_, 0u);
60
60
  size_t index = first_entry_ % max_entries_;
61
61
  if (index == timestamp_index_) {
62
62
  http2_stats_collector_->IncrementHttp2HpackEntryLifetime(
@@ -121,7 +121,7 @@ HPackTable::MementoRingBuffer::~MementoRingBuffer() {
121
121
  // Evict one element from the table
122
122
  void HPackTable::EvictOne() {
123
123
  auto first_entry = entries_.PopOne();
124
- CHECK(first_entry.md.transport_size() <= mem_used_);
124
+ GRPC_CHECK(first_entry.md.transport_size() <= mem_used_);
125
125
  mem_used_ -= first_entry.md.transport_size();
126
126
  }
127
127