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
@@ -76,6 +76,9 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
76
76
  static_cast<uint8_t>(
77
77
  grpc_core::kExperimentIdEventEngineDnsNonClientChannel),
78
78
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
79
+ const char* const description_event_engine_poller_for_python =
80
+ "Enable event engine poller in gRPC Python";
81
+ const char* const additional_constraints_event_engine_poller_for_python = "{}";
79
82
  const char* const description_event_engine_secure_endpoint =
80
83
  "Use EventEngine secure endpoint wrapper instead of iomgr when available";
81
84
  const char* const additional_constraints_event_engine_secure_endpoint = "{}";
@@ -93,6 +96,9 @@ const char* const description_local_connector_secure =
93
96
  "Local security connector uses TSI_SECURITY_NONE for LOCAL_TCP "
94
97
  "connections.";
95
98
  const char* const additional_constraints_local_connector_secure = "{}";
99
+ const char* const description_max_age_filter_float_to_top =
100
+ "If set, the max age filter is placed at the top of the stack.";
101
+ const char* const additional_constraints_max_age_filter_float_to_top = "{}";
96
102
  const char* const description_max_inflight_pings_strict_limit =
97
103
  "If set, the max inflight pings limit is strictly enforced.";
98
104
  const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
@@ -170,12 +176,17 @@ const char* const description_server_global_callbacks_ownership =
170
176
  "gRPC.";
171
177
  const char* const additional_constraints_server_global_callbacks_ownership =
172
178
  "{}";
173
- const char* const description_shard_global_connection_pool =
174
- "If set, shard the global connection pool to improve parallelism.";
175
- const char* const additional_constraints_shard_global_connection_pool = "{}";
176
179
  const char* const description_sleep_promise_exec_ctx_removal =
177
180
  "If set, polling the sleep promise does not rely on the ExecCtx.";
178
181
  const char* const additional_constraints_sleep_promise_exec_ctx_removal = "{}";
182
+ const char* const description_sleep_use_non_owning_waker =
183
+ "If set, the sleep promise uses a non-owning waker.";
184
+ const char* const additional_constraints_sleep_use_non_owning_waker = "{}";
185
+ const char* const description_subchannel_wrapper_cleanup_on_orphan =
186
+ "Fixes the subchannel wrapper to drop any non-cancelled watchers when it "
187
+ "gets orphaned.";
188
+ const char* const additional_constraints_subchannel_wrapper_cleanup_on_orphan =
189
+ "{}";
179
190
  const char* const description_tcp_frame_size_tuning =
180
191
  "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
181
192
  "would not indicate completion of a read operation until a specified "
@@ -185,6 +196,9 @@ const char* const additional_constraints_tcp_frame_size_tuning = "{}";
185
196
  const char* const description_tcp_rcv_lowat =
186
197
  "Use SO_RCVLOWAT to avoid wakeups on the read path.";
187
198
  const char* const additional_constraints_tcp_rcv_lowat = "{}";
199
+ const char* const description_track_writes_in_resource_quota =
200
+ "Track the Write memory in Resource Quota.";
201
+ const char* const additional_constraints_track_writes_in_resource_quota = "{}";
188
202
  const char* const description_tsi_frame_protector_without_locks =
189
203
  "Do not hold locks while using the tsi_frame_protector.";
190
204
  const char* const additional_constraints_tsi_frame_protector_without_locks =
@@ -233,6 +247,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
233
247
  description_event_engine_for_all_other_endpoints,
234
248
  additional_constraints_event_engine_for_all_other_endpoints,
235
249
  required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
250
+ {"event_engine_poller_for_python",
251
+ description_event_engine_poller_for_python,
252
+ additional_constraints_event_engine_poller_for_python, nullptr, 0, false,
253
+ true},
236
254
  {"event_engine_secure_endpoint", description_event_engine_secure_endpoint,
237
255
  additional_constraints_event_engine_secure_endpoint, nullptr, 0, true,
238
256
  false},
@@ -245,6 +263,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
245
263
  true},
246
264
  {"local_connector_secure", description_local_connector_secure,
247
265
  additional_constraints_local_connector_secure, nullptr, 0, false, true},
266
+ {"max_age_filter_float_to_top", description_max_age_filter_float_to_top,
267
+ additional_constraints_max_age_filter_float_to_top, nullptr, 0, true,
268
+ true},
248
269
  {"max_inflight_pings_strict_limit",
249
270
  description_max_inflight_pings_strict_limit,
250
271
  additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
@@ -301,17 +322,25 @@ const ExperimentMetadata g_experiment_metadata[] = {
301
322
  description_server_global_callbacks_ownership,
302
323
  additional_constraints_server_global_callbacks_ownership, nullptr, 0, true,
303
324
  true},
304
- {"shard_global_connection_pool", description_shard_global_connection_pool,
305
- additional_constraints_shard_global_connection_pool, nullptr, 0, true,
306
- true},
307
325
  {"sleep_promise_exec_ctx_removal",
308
326
  description_sleep_promise_exec_ctx_removal,
309
327
  additional_constraints_sleep_promise_exec_ctx_removal, nullptr, 0, false,
310
328
  true},
329
+ {"sleep_use_non_owning_waker", description_sleep_use_non_owning_waker,
330
+ additional_constraints_sleep_use_non_owning_waker, nullptr, 0, false,
331
+ true},
332
+ {"subchannel_wrapper_cleanup_on_orphan",
333
+ description_subchannel_wrapper_cleanup_on_orphan,
334
+ additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0,
335
+ false, true},
311
336
  {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
312
337
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
313
338
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
314
339
  additional_constraints_tcp_rcv_lowat, nullptr, 0, false, true},
340
+ {"track_writes_in_resource_quota",
341
+ description_track_writes_in_resource_quota,
342
+ additional_constraints_track_writes_in_resource_quota, nullptr, 0, false,
343
+ true},
315
344
  {"tsi_frame_protector_without_locks",
316
345
  description_tsi_frame_protector_without_locks,
317
346
  additional_constraints_tsi_frame_protector_without_locks, nullptr, 0,
@@ -379,6 +408,9 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
379
408
  static_cast<uint8_t>(
380
409
  grpc_core::kExperimentIdEventEngineDnsNonClientChannel),
381
410
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
411
+ const char* const description_event_engine_poller_for_python =
412
+ "Enable event engine poller in gRPC Python";
413
+ const char* const additional_constraints_event_engine_poller_for_python = "{}";
382
414
  const char* const description_event_engine_secure_endpoint =
383
415
  "Use EventEngine secure endpoint wrapper instead of iomgr when available";
384
416
  const char* const additional_constraints_event_engine_secure_endpoint = "{}";
@@ -396,6 +428,9 @@ const char* const description_local_connector_secure =
396
428
  "Local security connector uses TSI_SECURITY_NONE for LOCAL_TCP "
397
429
  "connections.";
398
430
  const char* const additional_constraints_local_connector_secure = "{}";
431
+ const char* const description_max_age_filter_float_to_top =
432
+ "If set, the max age filter is placed at the top of the stack.";
433
+ const char* const additional_constraints_max_age_filter_float_to_top = "{}";
399
434
  const char* const description_max_inflight_pings_strict_limit =
400
435
  "If set, the max inflight pings limit is strictly enforced.";
401
436
  const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
@@ -473,12 +508,17 @@ const char* const description_server_global_callbacks_ownership =
473
508
  "gRPC.";
474
509
  const char* const additional_constraints_server_global_callbacks_ownership =
475
510
  "{}";
476
- const char* const description_shard_global_connection_pool =
477
- "If set, shard the global connection pool to improve parallelism.";
478
- const char* const additional_constraints_shard_global_connection_pool = "{}";
479
511
  const char* const description_sleep_promise_exec_ctx_removal =
480
512
  "If set, polling the sleep promise does not rely on the ExecCtx.";
481
513
  const char* const additional_constraints_sleep_promise_exec_ctx_removal = "{}";
514
+ const char* const description_sleep_use_non_owning_waker =
515
+ "If set, the sleep promise uses a non-owning waker.";
516
+ const char* const additional_constraints_sleep_use_non_owning_waker = "{}";
517
+ const char* const description_subchannel_wrapper_cleanup_on_orphan =
518
+ "Fixes the subchannel wrapper to drop any non-cancelled watchers when it "
519
+ "gets orphaned.";
520
+ const char* const additional_constraints_subchannel_wrapper_cleanup_on_orphan =
521
+ "{}";
482
522
  const char* const description_tcp_frame_size_tuning =
483
523
  "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
484
524
  "would not indicate completion of a read operation until a specified "
@@ -488,6 +528,9 @@ const char* const additional_constraints_tcp_frame_size_tuning = "{}";
488
528
  const char* const description_tcp_rcv_lowat =
489
529
  "Use SO_RCVLOWAT to avoid wakeups on the read path.";
490
530
  const char* const additional_constraints_tcp_rcv_lowat = "{}";
531
+ const char* const description_track_writes_in_resource_quota =
532
+ "Track the Write memory in Resource Quota.";
533
+ const char* const additional_constraints_track_writes_in_resource_quota = "{}";
491
534
  const char* const description_tsi_frame_protector_without_locks =
492
535
  "Do not hold locks while using the tsi_frame_protector.";
493
536
  const char* const additional_constraints_tsi_frame_protector_without_locks =
@@ -536,6 +579,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
536
579
  description_event_engine_for_all_other_endpoints,
537
580
  additional_constraints_event_engine_for_all_other_endpoints,
538
581
  required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
582
+ {"event_engine_poller_for_python",
583
+ description_event_engine_poller_for_python,
584
+ additional_constraints_event_engine_poller_for_python, nullptr, 0, false,
585
+ true},
539
586
  {"event_engine_secure_endpoint", description_event_engine_secure_endpoint,
540
587
  additional_constraints_event_engine_secure_endpoint, nullptr, 0, true,
541
588
  false},
@@ -548,6 +595,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
548
595
  true},
549
596
  {"local_connector_secure", description_local_connector_secure,
550
597
  additional_constraints_local_connector_secure, nullptr, 0, false, true},
598
+ {"max_age_filter_float_to_top", description_max_age_filter_float_to_top,
599
+ additional_constraints_max_age_filter_float_to_top, nullptr, 0, true,
600
+ true},
551
601
  {"max_inflight_pings_strict_limit",
552
602
  description_max_inflight_pings_strict_limit,
553
603
  additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
@@ -604,17 +654,25 @@ const ExperimentMetadata g_experiment_metadata[] = {
604
654
  description_server_global_callbacks_ownership,
605
655
  additional_constraints_server_global_callbacks_ownership, nullptr, 0, true,
606
656
  true},
607
- {"shard_global_connection_pool", description_shard_global_connection_pool,
608
- additional_constraints_shard_global_connection_pool, nullptr, 0, true,
609
- true},
610
657
  {"sleep_promise_exec_ctx_removal",
611
658
  description_sleep_promise_exec_ctx_removal,
612
659
  additional_constraints_sleep_promise_exec_ctx_removal, nullptr, 0, false,
613
660
  true},
661
+ {"sleep_use_non_owning_waker", description_sleep_use_non_owning_waker,
662
+ additional_constraints_sleep_use_non_owning_waker, nullptr, 0, false,
663
+ true},
664
+ {"subchannel_wrapper_cleanup_on_orphan",
665
+ description_subchannel_wrapper_cleanup_on_orphan,
666
+ additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0,
667
+ false, true},
614
668
  {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
615
669
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
616
670
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
617
671
  additional_constraints_tcp_rcv_lowat, nullptr, 0, false, true},
672
+ {"track_writes_in_resource_quota",
673
+ description_track_writes_in_resource_quota,
674
+ additional_constraints_track_writes_in_resource_quota, nullptr, 0, false,
675
+ true},
618
676
  {"tsi_frame_protector_without_locks",
619
677
  description_tsi_frame_protector_without_locks,
620
678
  additional_constraints_tsi_frame_protector_without_locks, nullptr, 0,
@@ -682,6 +740,9 @@ const uint8_t required_experiments_event_engine_for_all_other_endpoints[] = {
682
740
  static_cast<uint8_t>(
683
741
  grpc_core::kExperimentIdEventEngineDnsNonClientChannel),
684
742
  static_cast<uint8_t>(grpc_core::kExperimentIdEventEngineListener)};
743
+ const char* const description_event_engine_poller_for_python =
744
+ "Enable event engine poller in gRPC Python";
745
+ const char* const additional_constraints_event_engine_poller_for_python = "{}";
685
746
  const char* const description_event_engine_secure_endpoint =
686
747
  "Use EventEngine secure endpoint wrapper instead of iomgr when available";
687
748
  const char* const additional_constraints_event_engine_secure_endpoint = "{}";
@@ -699,6 +760,9 @@ const char* const description_local_connector_secure =
699
760
  "Local security connector uses TSI_SECURITY_NONE for LOCAL_TCP "
700
761
  "connections.";
701
762
  const char* const additional_constraints_local_connector_secure = "{}";
763
+ const char* const description_max_age_filter_float_to_top =
764
+ "If set, the max age filter is placed at the top of the stack.";
765
+ const char* const additional_constraints_max_age_filter_float_to_top = "{}";
702
766
  const char* const description_max_inflight_pings_strict_limit =
703
767
  "If set, the max inflight pings limit is strictly enforced.";
704
768
  const char* const additional_constraints_max_inflight_pings_strict_limit = "{}";
@@ -776,12 +840,17 @@ const char* const description_server_global_callbacks_ownership =
776
840
  "gRPC.";
777
841
  const char* const additional_constraints_server_global_callbacks_ownership =
778
842
  "{}";
779
- const char* const description_shard_global_connection_pool =
780
- "If set, shard the global connection pool to improve parallelism.";
781
- const char* const additional_constraints_shard_global_connection_pool = "{}";
782
843
  const char* const description_sleep_promise_exec_ctx_removal =
783
844
  "If set, polling the sleep promise does not rely on the ExecCtx.";
784
845
  const char* const additional_constraints_sleep_promise_exec_ctx_removal = "{}";
846
+ const char* const description_sleep_use_non_owning_waker =
847
+ "If set, the sleep promise uses a non-owning waker.";
848
+ const char* const additional_constraints_sleep_use_non_owning_waker = "{}";
849
+ const char* const description_subchannel_wrapper_cleanup_on_orphan =
850
+ "Fixes the subchannel wrapper to drop any non-cancelled watchers when it "
851
+ "gets orphaned.";
852
+ const char* const additional_constraints_subchannel_wrapper_cleanup_on_orphan =
853
+ "{}";
785
854
  const char* const description_tcp_frame_size_tuning =
786
855
  "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
787
856
  "would not indicate completion of a read operation until a specified "
@@ -791,6 +860,9 @@ const char* const additional_constraints_tcp_frame_size_tuning = "{}";
791
860
  const char* const description_tcp_rcv_lowat =
792
861
  "Use SO_RCVLOWAT to avoid wakeups on the read path.";
793
862
  const char* const additional_constraints_tcp_rcv_lowat = "{}";
863
+ const char* const description_track_writes_in_resource_quota =
864
+ "Track the Write memory in Resource Quota.";
865
+ const char* const additional_constraints_track_writes_in_resource_quota = "{}";
794
866
  const char* const description_tsi_frame_protector_without_locks =
795
867
  "Do not hold locks while using the tsi_frame_protector.";
796
868
  const char* const additional_constraints_tsi_frame_protector_without_locks =
@@ -839,6 +911,10 @@ const ExperimentMetadata g_experiment_metadata[] = {
839
911
  description_event_engine_for_all_other_endpoints,
840
912
  additional_constraints_event_engine_for_all_other_endpoints,
841
913
  required_experiments_event_engine_for_all_other_endpoints, 4, true, false},
914
+ {"event_engine_poller_for_python",
915
+ description_event_engine_poller_for_python,
916
+ additional_constraints_event_engine_poller_for_python, nullptr, 0, false,
917
+ true},
842
918
  {"event_engine_secure_endpoint", description_event_engine_secure_endpoint,
843
919
  additional_constraints_event_engine_secure_endpoint, nullptr, 0, true,
844
920
  false},
@@ -851,6 +927,9 @@ const ExperimentMetadata g_experiment_metadata[] = {
851
927
  true},
852
928
  {"local_connector_secure", description_local_connector_secure,
853
929
  additional_constraints_local_connector_secure, nullptr, 0, false, true},
930
+ {"max_age_filter_float_to_top", description_max_age_filter_float_to_top,
931
+ additional_constraints_max_age_filter_float_to_top, nullptr, 0, true,
932
+ true},
854
933
  {"max_inflight_pings_strict_limit",
855
934
  description_max_inflight_pings_strict_limit,
856
935
  additional_constraints_max_inflight_pings_strict_limit, nullptr, 0, true,
@@ -907,17 +986,25 @@ const ExperimentMetadata g_experiment_metadata[] = {
907
986
  description_server_global_callbacks_ownership,
908
987
  additional_constraints_server_global_callbacks_ownership, nullptr, 0, true,
909
988
  true},
910
- {"shard_global_connection_pool", description_shard_global_connection_pool,
911
- additional_constraints_shard_global_connection_pool, nullptr, 0, true,
912
- true},
913
989
  {"sleep_promise_exec_ctx_removal",
914
990
  description_sleep_promise_exec_ctx_removal,
915
991
  additional_constraints_sleep_promise_exec_ctx_removal, nullptr, 0, false,
916
992
  true},
993
+ {"sleep_use_non_owning_waker", description_sleep_use_non_owning_waker,
994
+ additional_constraints_sleep_use_non_owning_waker, nullptr, 0, false,
995
+ true},
996
+ {"subchannel_wrapper_cleanup_on_orphan",
997
+ description_subchannel_wrapper_cleanup_on_orphan,
998
+ additional_constraints_subchannel_wrapper_cleanup_on_orphan, nullptr, 0,
999
+ false, true},
917
1000
  {"tcp_frame_size_tuning", description_tcp_frame_size_tuning,
918
1001
  additional_constraints_tcp_frame_size_tuning, nullptr, 0, false, true},
919
1002
  {"tcp_rcv_lowat", description_tcp_rcv_lowat,
920
1003
  additional_constraints_tcp_rcv_lowat, nullptr, 0, false, true},
1004
+ {"track_writes_in_resource_quota",
1005
+ description_track_writes_in_resource_quota,
1006
+ additional_constraints_track_writes_in_resource_quota, nullptr, 0, false,
1007
+ true},
921
1008
  {"tsi_frame_protector_without_locks",
922
1009
  description_tsi_frame_protector_without_locks,
923
1010
  additional_constraints_tsi_frame_protector_without_locks, nullptr, 0,
@@ -78,12 +78,15 @@ inline bool IsEventEngineListenerEnabled() { return true; }
78
78
  inline bool IsEventEngineCallbackCqEnabled() { return true; }
79
79
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FOR_ALL_OTHER_ENDPOINTS
80
80
  inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
81
+ inline bool IsEventEnginePollerForPythonEnabled() { return false; }
81
82
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
82
83
  inline bool IsEventEngineSecureEndpointEnabled() { return true; }
83
84
  inline bool IsFreeLargeAllocatorEnabled() { return false; }
84
85
  inline bool IsFuseFiltersEnabled() { return false; }
85
86
  inline bool IsKeepAlivePingTimerBatchEnabled() { return false; }
86
87
  inline bool IsLocalConnectorSecureEnabled() { return false; }
88
+ #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_AGE_FILTER_FLOAT_TO_TOP
89
+ inline bool IsMaxAgeFilterFloatToTopEnabled() { return true; }
87
90
  #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
88
91
  inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; }
89
92
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
@@ -103,11 +106,12 @@ inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
103
106
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
104
107
  #define GRPC_EXPERIMENT_IS_INCLUDED_SERVER_GLOBAL_CALLBACKS_OWNERSHIP
105
108
  inline bool IsServerGlobalCallbacksOwnershipEnabled() { return true; }
106
- #define GRPC_EXPERIMENT_IS_INCLUDED_SHARD_GLOBAL_CONNECTION_POOL
107
- inline bool IsShardGlobalConnectionPoolEnabled() { return true; }
108
109
  inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; }
110
+ inline bool IsSleepUseNonOwningWakerEnabled() { return false; }
111
+ inline bool IsSubchannelWrapperCleanupOnOrphanEnabled() { return false; }
109
112
  inline bool IsTcpFrameSizeTuningEnabled() { return false; }
110
113
  inline bool IsTcpRcvLowatEnabled() { return false; }
114
+ inline bool IsTrackWritesInResourceQuotaEnabled() { return false; }
111
115
  inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return false; }
112
116
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
113
117
 
@@ -133,12 +137,15 @@ inline bool IsEventEngineListenerEnabled() { return true; }
133
137
  inline bool IsEventEngineCallbackCqEnabled() { return true; }
134
138
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FOR_ALL_OTHER_ENDPOINTS
135
139
  inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
140
+ inline bool IsEventEnginePollerForPythonEnabled() { return false; }
136
141
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
137
142
  inline bool IsEventEngineSecureEndpointEnabled() { return true; }
138
143
  inline bool IsFreeLargeAllocatorEnabled() { return false; }
139
144
  inline bool IsFuseFiltersEnabled() { return false; }
140
145
  inline bool IsKeepAlivePingTimerBatchEnabled() { return false; }
141
146
  inline bool IsLocalConnectorSecureEnabled() { return false; }
147
+ #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_AGE_FILTER_FLOAT_TO_TOP
148
+ inline bool IsMaxAgeFilterFloatToTopEnabled() { return true; }
142
149
  #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
143
150
  inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; }
144
151
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
@@ -158,11 +165,12 @@ inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
158
165
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
159
166
  #define GRPC_EXPERIMENT_IS_INCLUDED_SERVER_GLOBAL_CALLBACKS_OWNERSHIP
160
167
  inline bool IsServerGlobalCallbacksOwnershipEnabled() { return true; }
161
- #define GRPC_EXPERIMENT_IS_INCLUDED_SHARD_GLOBAL_CONNECTION_POOL
162
- inline bool IsShardGlobalConnectionPoolEnabled() { return true; }
163
168
  inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; }
169
+ inline bool IsSleepUseNonOwningWakerEnabled() { return false; }
170
+ inline bool IsSubchannelWrapperCleanupOnOrphanEnabled() { return false; }
164
171
  inline bool IsTcpFrameSizeTuningEnabled() { return false; }
165
172
  inline bool IsTcpRcvLowatEnabled() { return false; }
173
+ inline bool IsTrackWritesInResourceQuotaEnabled() { return false; }
166
174
  inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return false; }
167
175
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
168
176
 
@@ -188,12 +196,15 @@ inline bool IsEventEngineListenerEnabled() { return true; }
188
196
  inline bool IsEventEngineCallbackCqEnabled() { return true; }
189
197
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_FOR_ALL_OTHER_ENDPOINTS
190
198
  inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
199
+ inline bool IsEventEnginePollerForPythonEnabled() { return false; }
191
200
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
192
201
  inline bool IsEventEngineSecureEndpointEnabled() { return true; }
193
202
  inline bool IsFreeLargeAllocatorEnabled() { return false; }
194
203
  inline bool IsFuseFiltersEnabled() { return false; }
195
204
  inline bool IsKeepAlivePingTimerBatchEnabled() { return false; }
196
205
  inline bool IsLocalConnectorSecureEnabled() { return false; }
206
+ #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_AGE_FILTER_FLOAT_TO_TOP
207
+ inline bool IsMaxAgeFilterFloatToTopEnabled() { return true; }
197
208
  #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
198
209
  inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; }
199
210
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
@@ -213,11 +224,12 @@ inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
213
224
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
214
225
  #define GRPC_EXPERIMENT_IS_INCLUDED_SERVER_GLOBAL_CALLBACKS_OWNERSHIP
215
226
  inline bool IsServerGlobalCallbacksOwnershipEnabled() { return true; }
216
- #define GRPC_EXPERIMENT_IS_INCLUDED_SHARD_GLOBAL_CONNECTION_POOL
217
- inline bool IsShardGlobalConnectionPoolEnabled() { return true; }
218
227
  inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; }
228
+ inline bool IsSleepUseNonOwningWakerEnabled() { return false; }
229
+ inline bool IsSubchannelWrapperCleanupOnOrphanEnabled() { return false; }
219
230
  inline bool IsTcpFrameSizeTuningEnabled() { return false; }
220
231
  inline bool IsTcpRcvLowatEnabled() { return false; }
232
+ inline bool IsTrackWritesInResourceQuotaEnabled() { return false; }
221
233
  inline bool IsTsiFrameProtectorWithoutLocksEnabled() { return false; }
222
234
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
223
235
  #endif
@@ -237,11 +249,13 @@ enum ExperimentIds {
237
249
  kExperimentIdEventEngineListener,
238
250
  kExperimentIdEventEngineCallbackCq,
239
251
  kExperimentIdEventEngineForAllOtherEndpoints,
252
+ kExperimentIdEventEnginePollerForPython,
240
253
  kExperimentIdEventEngineSecureEndpoint,
241
254
  kExperimentIdFreeLargeAllocator,
242
255
  kExperimentIdFuseFilters,
243
256
  kExperimentIdKeepAlivePingTimerBatch,
244
257
  kExperimentIdLocalConnectorSecure,
258
+ kExperimentIdMaxAgeFilterFloatToTop,
245
259
  kExperimentIdMaxInflightPingsStrictLimit,
246
260
  kExperimentIdMonitoringExperiment,
247
261
  kExperimentIdMultiping,
@@ -258,10 +272,12 @@ enum ExperimentIds {
258
272
  kExperimentIdSecureEndpointOffloadLargeReads,
259
273
  kExperimentIdSecureEndpointOffloadLargeWrites,
260
274
  kExperimentIdServerGlobalCallbacksOwnership,
261
- kExperimentIdShardGlobalConnectionPool,
262
275
  kExperimentIdSleepPromiseExecCtxRemoval,
276
+ kExperimentIdSleepUseNonOwningWaker,
277
+ kExperimentIdSubchannelWrapperCleanupOnOrphan,
263
278
  kExperimentIdTcpFrameSizeTuning,
264
279
  kExperimentIdTcpRcvLowat,
280
+ kExperimentIdTrackWritesInResourceQuota,
265
281
  kExperimentIdTsiFrameProtectorWithoutLocks,
266
282
  kExperimentIdUnconstrainedMaxQuotaBufferSize,
267
283
  kNumExperiments
@@ -318,6 +334,10 @@ inline bool IsEventEngineCallbackCqEnabled() {
318
334
  inline bool IsEventEngineForAllOtherEndpointsEnabled() {
319
335
  return IsExperimentEnabled<kExperimentIdEventEngineForAllOtherEndpoints>();
320
336
  }
337
+ #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_POLLER_FOR_PYTHON
338
+ inline bool IsEventEnginePollerForPythonEnabled() {
339
+ return IsExperimentEnabled<kExperimentIdEventEnginePollerForPython>();
340
+ }
321
341
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
322
342
  inline bool IsEventEngineSecureEndpointEnabled() {
323
343
  return IsExperimentEnabled<kExperimentIdEventEngineSecureEndpoint>();
@@ -338,6 +358,10 @@ inline bool IsKeepAlivePingTimerBatchEnabled() {
338
358
  inline bool IsLocalConnectorSecureEnabled() {
339
359
  return IsExperimentEnabled<kExperimentIdLocalConnectorSecure>();
340
360
  }
361
+ #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_AGE_FILTER_FLOAT_TO_TOP
362
+ inline bool IsMaxAgeFilterFloatToTopEnabled() {
363
+ return IsExperimentEnabled<kExperimentIdMaxAgeFilterFloatToTop>();
364
+ }
341
365
  #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
342
366
  inline bool IsMaxInflightPingsStrictLimitEnabled() {
343
367
  return IsExperimentEnabled<kExperimentIdMaxInflightPingsStrictLimit>();
@@ -402,14 +426,18 @@ inline bool IsSecureEndpointOffloadLargeWritesEnabled() {
402
426
  inline bool IsServerGlobalCallbacksOwnershipEnabled() {
403
427
  return IsExperimentEnabled<kExperimentIdServerGlobalCallbacksOwnership>();
404
428
  }
405
- #define GRPC_EXPERIMENT_IS_INCLUDED_SHARD_GLOBAL_CONNECTION_POOL
406
- inline bool IsShardGlobalConnectionPoolEnabled() {
407
- return IsExperimentEnabled<kExperimentIdShardGlobalConnectionPool>();
408
- }
409
429
  #define GRPC_EXPERIMENT_IS_INCLUDED_SLEEP_PROMISE_EXEC_CTX_REMOVAL
410
430
  inline bool IsSleepPromiseExecCtxRemovalEnabled() {
411
431
  return IsExperimentEnabled<kExperimentIdSleepPromiseExecCtxRemoval>();
412
432
  }
433
+ #define GRPC_EXPERIMENT_IS_INCLUDED_SLEEP_USE_NON_OWNING_WAKER
434
+ inline bool IsSleepUseNonOwningWakerEnabled() {
435
+ return IsExperimentEnabled<kExperimentIdSleepUseNonOwningWaker>();
436
+ }
437
+ #define GRPC_EXPERIMENT_IS_INCLUDED_SUBCHANNEL_WRAPPER_CLEANUP_ON_ORPHAN
438
+ inline bool IsSubchannelWrapperCleanupOnOrphanEnabled() {
439
+ return IsExperimentEnabled<kExperimentIdSubchannelWrapperCleanupOnOrphan>();
440
+ }
413
441
  #define GRPC_EXPERIMENT_IS_INCLUDED_TCP_FRAME_SIZE_TUNING
414
442
  inline bool IsTcpFrameSizeTuningEnabled() {
415
443
  return IsExperimentEnabled<kExperimentIdTcpFrameSizeTuning>();
@@ -418,6 +446,10 @@ inline bool IsTcpFrameSizeTuningEnabled() {
418
446
  inline bool IsTcpRcvLowatEnabled() {
419
447
  return IsExperimentEnabled<kExperimentIdTcpRcvLowat>();
420
448
  }
449
+ #define GRPC_EXPERIMENT_IS_INCLUDED_TRACK_WRITES_IN_RESOURCE_QUOTA
450
+ inline bool IsTrackWritesInResourceQuotaEnabled() {
451
+ return IsExperimentEnabled<kExperimentIdTrackWritesInResourceQuota>();
452
+ }
421
453
  #define GRPC_EXPERIMENT_IS_INCLUDED_TSI_FRAME_PROTECTOR_WITHOUT_LOCKS
422
454
  inline bool IsTsiFrameProtectorWithoutLocksEnabled() {
423
455
  return IsExperimentEnabled<kExperimentIdTsiFrameProtectorWithoutLocks>();
@@ -21,11 +21,11 @@
21
21
  #include <grpc/support/port_platform.h>
22
22
  #include <inttypes.h>
23
23
 
24
- #include "absl/log/check.h"
25
24
  #include "absl/log/log.h"
26
25
  #include "src/core/telemetry/stats.h"
27
26
  #include "src/core/telemetry/stats_data.h"
28
27
  #include "src/core/util/crash.h"
28
+ #include "src/core/util/grpc_check.h"
29
29
 
30
30
  namespace grpc_core {
31
31
 
@@ -84,7 +84,7 @@ void CallCombiner::TsanClosure(void* arg, grpc_error_handle error) {
84
84
  if (lock != nullptr) {
85
85
  TSAN_ANNOTATE_RWLOCK_RELEASED(&lock->taken, true);
86
86
  bool prev = true;
87
- CHECK(lock->taken.compare_exchange_strong(prev, false));
87
+ GRPC_CHECK(lock->taken.compare_exchange_strong(prev, false));
88
88
  }
89
89
  }
90
90
  #endif
@@ -141,7 +141,7 @@ void CallCombiner::Stop(DEBUG_ARGS const char* reason) {
141
141
  static_cast<size_t>(gpr_atm_full_fetch_add(&size_, (gpr_atm)-1));
142
142
  GRPC_TRACE_LOG(call_combiner, INFO)
143
143
  << " size: " << prev_size << " -> " << prev_size - 1;
144
- CHECK_GE(prev_size, 1u);
144
+ GRPC_CHECK_GE(prev_size, 1u);
145
145
  if (prev_size > 1) {
146
146
  while (true) {
147
147
  GRPC_TRACE_LOG(call_combiner, INFO) << " checking queue";
@@ -27,7 +27,6 @@
27
27
  #include <grpc/support/alloc.h>
28
28
  #include <grpc/support/string_util.h>
29
29
 
30
- #include "absl/log/check.h"
31
30
  #include "absl/log/log.h"
32
31
  #include "src/core/lib/address_utils/sockaddr_utils.h"
33
32
  #include "src/core/lib/iomgr/cfstream_handle.h"
@@ -39,6 +38,7 @@
39
38
  #include "src/core/lib/slice/slice.h"
40
39
  #include "src/core/lib/slice/slice_internal.h"
41
40
  #include "src/core/lib/slice/slice_string_helpers.h"
41
+ #include "src/core/util/grpc_check.h"
42
42
  #include "src/core/util/string.h"
43
43
 
44
44
  struct CFStreamEndpoint {
@@ -139,7 +139,7 @@ static void CallWriteCb(CFStreamEndpoint* ep, grpc_error_handle error) {
139
139
 
140
140
  static void ReadAction(void* arg, grpc_error_handle error) {
141
141
  CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
142
- CHECK_NE(ep->read_cb, nullptr);
142
+ GRPC_CHECK_NE(ep->read_cb, nullptr);
143
143
  if (!error.ok()) {
144
144
  grpc_slice_buffer_reset_and_unref(ep->read_slices);
145
145
  CallReadCb(ep, error);
@@ -147,7 +147,7 @@ static void ReadAction(void* arg, grpc_error_handle error) {
147
147
  return;
148
148
  }
149
149
 
150
- CHECK_EQ(ep->read_slices->count, 1);
150
+ GRPC_CHECK_EQ(ep->read_slices->count, 1);
151
151
  grpc_slice slice = ep->read_slices->slices[0];
152
152
  size_t len = GRPC_SLICE_LENGTH(slice);
153
153
  CFIndex read_size =
@@ -179,7 +179,7 @@ static void ReadAction(void* arg, grpc_error_handle error) {
179
179
 
180
180
  static void WriteAction(void* arg, grpc_error_handle error) {
181
181
  CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
182
- CHECK_NE(ep->write_cb, nullptr);
182
+ GRPC_CHECK_NE(ep->write_cb, nullptr);
183
183
  if (!error.ok()) {
184
184
  grpc_slice_buffer_reset_and_unref(ep->write_slices);
185
185
  CallWriteCb(ep, error);
@@ -233,7 +233,7 @@ static void CFStreamRead(grpc_endpoint* ep, grpc_slice_buffer* slices,
233
233
  GRPC_TRACE_VLOG(tcp, 2) << "CFStream endpoint:" << ep_impl << " read ("
234
234
  << slices << ", " << cb
235
235
  << ") length:" << slices->length;
236
- CHECK_EQ(ep_impl->read_cb, nullptr);
236
+ GRPC_CHECK_EQ(ep_impl->read_cb, nullptr);
237
237
  ep_impl->read_cb = cb;
238
238
  ep_impl->read_slices = slices;
239
239
  grpc_slice_buffer_reset_and_unref(slices);
@@ -251,7 +251,7 @@ static void CFStreamWrite(grpc_endpoint* ep, grpc_slice_buffer* slices,
251
251
  GRPC_TRACE_VLOG(tcp, 2) << "CFStream endpoint:" << ep_impl << " write ("
252
252
  << slices << ", " << cb
253
253
  << ") length:" << slices->length;
254
- CHECK_EQ(ep_impl->write_cb, nullptr);
254
+ GRPC_CHECK_EQ(ep_impl->write_cb, nullptr);
255
255
  ep_impl->write_cb = cb;
256
256
  ep_impl->write_slices = slices;
257
257
  EP_REF(ep_impl, "write");
@@ -30,7 +30,6 @@
30
30
 
31
31
  #include <string>
32
32
 
33
- #include "absl/log/check.h"
34
33
  #include "absl/strings/str_cat.h"
35
34
  #include "src/core/config/core_configuration.h"
36
35
  #include "src/core/lib/event_engine/channel_args_endpoint_config.h"
@@ -44,6 +43,7 @@
44
43
  #include "src/core/lib/iomgr/tcp_posix.h"
45
44
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
46
45
  #include "src/core/util/crash.h"
46
+ #include "src/core/util/grpc_check.h"
47
47
 
48
48
  namespace {
49
49
  using grpc_event_engine::experimental::ChannelArgsEndpointConfig;
@@ -56,11 +56,11 @@ void create_sockets(int sv[2]) {
56
56
  int flags;
57
57
  grpc_create_socketpair_if_unix(sv);
58
58
  flags = fcntl(sv[0], F_GETFL, 0);
59
- CHECK_EQ(fcntl(sv[0], F_SETFL, flags | O_NONBLOCK), 0);
59
+ GRPC_CHECK_EQ(fcntl(sv[0], F_SETFL, flags | O_NONBLOCK), 0);
60
60
  flags = fcntl(sv[1], F_GETFL, 0);
61
- CHECK_EQ(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK), 0);
62
- CHECK(grpc_set_socket_no_sigpipe_if_possible(sv[0]) == absl::OkStatus());
63
- CHECK(grpc_set_socket_no_sigpipe_if_possible(sv[1]) == absl::OkStatus());
61
+ GRPC_CHECK_EQ(fcntl(sv[1], F_SETFL, flags | O_NONBLOCK), 0);
62
+ GRPC_CHECK(grpc_set_socket_no_sigpipe_if_possible(sv[0]) == absl::OkStatus());
63
+ GRPC_CHECK(grpc_set_socket_no_sigpipe_if_possible(sv[1]) == absl::OkStatus());
64
64
  }
65
65
 
66
66
  } // namespace