grpc 1.76.0 → 1.78.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 (763) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +11 -5
  3. data/include/grpc/credentials.h +6 -1
  4. data/include/grpc/event_engine/memory_allocator.h +2 -0
  5. data/include/grpc/impl/channel_arg_names.h +5 -0
  6. data/include/grpc/support/metrics.h +7 -1
  7. data/src/core/call/call_filters.cc +1 -1
  8. data/src/core/call/call_filters.h +175 -1
  9. data/src/core/call/call_spine.cc +1 -1
  10. data/src/core/call/call_spine.h +27 -5
  11. data/src/core/call/channelz_context.h +30 -0
  12. data/src/core/call/client_call.cc +43 -5
  13. data/src/core/call/client_call.h +6 -3
  14. data/src/core/call/filter_fusion.h +4 -4
  15. data/src/core/call/interception_chain.h +7 -6
  16. data/src/core/call/metadata_batch.cc +49 -55
  17. data/src/core/call/metadata_batch.h +7 -6
  18. data/src/core/call/metadata_info.cc +1 -1
  19. data/src/core/call/parsed_metadata.h +2 -2
  20. data/src/core/call/request_buffer.cc +1 -1
  21. data/src/core/call/security_context.cc +1 -1
  22. data/src/core/call/security_context.h +1 -1
  23. data/src/core/call/server_call.cc +1 -1
  24. data/src/core/call/server_call.h +5 -3
  25. data/src/core/call/simple_slice_based_metadata.h +1 -1
  26. data/src/core/call/status_util.cc +1 -1
  27. data/src/core/channelz/channel_trace.cc +1 -1
  28. data/src/core/channelz/channel_trace.h +3 -3
  29. data/src/core/channelz/channelz.cc +13 -11
  30. data/src/core/channelz/channelz.h +41 -6
  31. data/src/core/channelz/channelz_registry.cc +2 -2
  32. data/src/core/channelz/channelz_registry.h +42 -2
  33. data/src/core/channelz/property_list.h +6 -4
  34. data/src/core/channelz/v2tov1/convert.cc +6 -6
  35. data/src/core/channelz/v2tov1/legacy_api.cc +4 -5
  36. data/src/core/channelz/v2tov1/property_list.cc +1 -1
  37. data/src/core/channelz/ztrace_collector.h +14 -2
  38. data/src/core/client_channel/backup_poller.cc +2 -2
  39. data/src/core/client_channel/buffered_call.cc +140 -0
  40. data/src/core/client_channel/buffered_call.h +104 -0
  41. data/src/core/client_channel/client_channel.cc +124 -71
  42. data/src/core/client_channel/client_channel.h +8 -11
  43. data/src/core/client_channel/client_channel_factory.h +1 -1
  44. data/src/core/client_channel/client_channel_filter.cc +393 -663
  45. data/src/core/client_channel/client_channel_filter.h +57 -150
  46. data/src/core/client_channel/client_channel_internal.h +5 -1
  47. data/src/core/client_channel/client_channel_service_config.cc +43 -3
  48. data/src/core/client_channel/client_channel_service_config.h +12 -1
  49. data/src/core/client_channel/config_selector.h +2 -2
  50. data/src/core/client_channel/connector.h +2 -0
  51. data/src/core/client_channel/dynamic_filters.cc +2 -2
  52. data/src/core/client_channel/global_subchannel_pool.h +1 -1
  53. data/src/core/client_channel/lb_metadata.h +1 -1
  54. data/src/core/client_channel/load_balanced_call_destination.cc +3 -5
  55. data/src/core/client_channel/load_balanced_call_destination.h +1 -1
  56. data/src/core/client_channel/retry_filter.cc +2 -2
  57. data/src/core/client_channel/retry_filter_legacy_call_data.cc +6 -7
  58. data/src/core/client_channel/retry_filter_legacy_call_data.h +6 -8
  59. data/src/core/client_channel/retry_service_config.cc +3 -3
  60. data/src/core/client_channel/retry_service_config.h +1 -1
  61. data/src/core/client_channel/subchannel.cc +106 -17
  62. data/src/core/client_channel/subchannel.h +24 -8
  63. data/src/core/client_channel/subchannel_pool_interface.cc +2 -2
  64. data/src/core/client_channel/subchannel_pool_interface.h +1 -1
  65. data/src/core/client_channel/subchannel_stream_client.cc +1 -1
  66. data/src/core/client_channel/subchannel_stream_client.h +3 -3
  67. data/src/core/config/config_vars.cc +8 -2
  68. data/src/core/config/config_vars.h +5 -0
  69. data/src/core/config/core_configuration.h +1 -1
  70. data/src/core/config/load_config.cc +1 -1
  71. data/src/core/credentials/call/call_credentials.h +2 -2
  72. data/src/core/credentials/call/call_creds_registry.h +1 -1
  73. data/src/core/credentials/call/call_creds_registry_init.cc +2 -2
  74. data/src/core/credentials/call/call_creds_util.cc +3 -3
  75. data/src/core/credentials/call/composite/composite_call_credentials.cc +2 -2
  76. data/src/core/credentials/call/composite/composite_call_credentials.h +1 -1
  77. data/src/core/credentials/call/external/aws_external_account_credentials.cc +6 -6
  78. data/src/core/credentials/call/external/aws_external_account_credentials.h +1 -1
  79. data/src/core/credentials/call/external/external_account_credentials.cc +12 -12
  80. data/src/core/credentials/call/external/external_account_credentials.h +1 -1
  81. data/src/core/credentials/call/external/file_external_account_credentials.cc +3 -3
  82. data/src/core/credentials/call/external/file_external_account_credentials.h +1 -1
  83. data/src/core/credentials/call/external/url_external_account_credentials.cc +6 -6
  84. data/src/core/credentials/call/external/url_external_account_credentials.h +1 -1
  85. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +24 -71
  86. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +1 -8
  87. data/src/core/credentials/call/iam/iam_credentials.cc +2 -2
  88. data/src/core/credentials/call/iam/iam_credentials.h +1 -1
  89. data/src/core/credentials/call/json_util.cc +1 -1
  90. data/src/core/credentials/call/jwt/json_token.cc +4 -4
  91. data/src/core/credentials/call/jwt/jwt_credentials.cc +3 -3
  92. data/src/core/credentials/call/jwt/jwt_credentials.h +4 -4
  93. data/src/core/credentials/call/jwt/jwt_verifier.cc +5 -5
  94. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +2 -2
  95. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +3 -3
  96. data/src/core/credentials/call/jwt_util.cc +3 -3
  97. data/src/core/credentials/call/jwt_util.h +1 -1
  98. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +29 -60
  99. data/src/core/credentials/call/oauth2/oauth2_credentials.h +3 -9
  100. data/src/core/credentials/call/plugin/plugin_credentials.cc +4 -4
  101. data/src/core/credentials/call/plugin/plugin_credentials.h +2 -2
  102. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +46 -0
  103. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +32 -3
  104. data/src/core/credentials/transport/alts/alts_credentials.cc +3 -3
  105. data/src/core/credentials/transport/alts/alts_security_connector.cc +3 -3
  106. data/src/core/credentials/transport/alts/check_gcp_environment_no_op.cc +1 -1
  107. data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +1 -1
  108. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +1 -1
  109. data/src/core/credentials/transport/channel_creds_registry.h +1 -1
  110. data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
  111. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +2 -2
  112. data/src/core/credentials/transport/composite/composite_channel_credentials.h +1 -1
  113. data/src/core/credentials/transport/fake/fake_credentials.cc +1 -1
  114. data/src/core/credentials/transport/fake/fake_credentials.h +1 -1
  115. data/src/core/credentials/transport/fake/fake_security_connector.cc +5 -5
  116. data/src/core/credentials/transport/google_default/credentials_generic.cc +2 -2
  117. data/src/core/credentials/transport/google_default/google_default_credentials.cc +5 -11
  118. data/src/core/credentials/transport/google_default/google_default_credentials.h +0 -2
  119. data/src/core/credentials/transport/insecure/insecure_security_connector.h +2 -2
  120. data/src/core/credentials/transport/local/local_security_connector.cc +5 -5
  121. data/src/core/credentials/transport/security_connector.cc +1 -1
  122. data/src/core/credentials/transport/security_connector.h +2 -2
  123. data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -1
  124. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +5 -5
  125. data/src/core/credentials/transport/tls/certificate_provider_factory.h +1 -1
  126. data/src/core/credentials/transport/tls/certificate_provider_registry.cc +1 -1
  127. data/src/core/credentials/transport/tls/certificate_provider_registry.h +1 -1
  128. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +1 -1
  129. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +2 -2
  130. data/src/core/credentials/transport/tls/grpc_tls_certificate_match.cc +1 -1
  131. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +3 -3
  132. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +3 -3
  133. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +1 -1
  134. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +2 -2
  135. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +1 -1
  136. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +5 -5
  137. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.h +3 -3
  138. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -1
  139. data/src/core/credentials/transport/tls/spiffe_utils.cc +10 -8
  140. data/src/core/credentials/transport/tls/spiffe_utils.h +2 -2
  141. data/src/core/credentials/transport/tls/ssl_utils.cc +4 -4
  142. data/src/core/credentials/transport/tls/ssl_utils.h +2 -2
  143. data/src/core/credentials/transport/tls/tls_credentials.cc +1 -1
  144. data/src/core/credentials/transport/tls/tls_security_connector.cc +4 -4
  145. data/src/core/credentials/transport/tls/tls_security_connector.h +3 -3
  146. data/src/core/credentials/transport/transport_credentials.cc +1 -1
  147. data/src/core/credentials/transport/transport_credentials.h +2 -2
  148. data/src/core/credentials/transport/xds/xds_credentials.h +1 -1
  149. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +2 -2
  150. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +4 -1
  151. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +5 -5
  152. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -2
  153. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +7 -7
  154. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +6 -3
  155. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +1 -1
  156. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +1 -1
  157. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +6 -3
  158. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +1 -1
  159. data/src/core/ext/filters/http/client/http_client_filter.cc +6 -6
  160. data/src/core/ext/filters/http/client/http_client_filter.h +4 -1
  161. data/src/core/ext/filters/http/client_authority_filter.cc +2 -2
  162. data/src/core/ext/filters/http/client_authority_filter.h +4 -1
  163. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -1
  164. data/src/core/ext/filters/http/message_compress/compression_filter.cc +3 -3
  165. data/src/core/ext/filters/http/message_compress/compression_filter.h +21 -2
  166. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  167. data/src/core/ext/filters/http/server/http_server_filter.h +4 -1
  168. data/src/core/ext/filters/message_size/message_size_filter.cc +2 -2
  169. data/src/core/ext/filters/message_size/message_size_filter.h +8 -2
  170. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
  171. data/src/core/ext/filters/rbac/rbac_filter.h +4 -1
  172. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +3 -3
  173. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  174. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -7
  175. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +13 -2
  176. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +1 -1
  177. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +50 -37
  178. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -3
  179. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -17
  180. data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -2
  181. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +2 -2
  182. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +210 -60
  183. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -2
  184. data/src/core/ext/transport/chttp2/transport/flow_control.cc +39 -4
  185. data/src/core/ext/transport/chttp2/transport/flow_control.h +213 -78
  186. data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +46 -1
  187. data/src/core/ext/transport/chttp2/transport/frame.cc +147 -21
  188. data/src/core/ext/transport/chttp2/transport/frame.h +44 -10
  189. data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -2
  190. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  191. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -2
  192. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -4
  193. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -5
  194. data/src/core/ext/transport/chttp2/transport/frame_security.cc +1 -1
  195. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -15
  196. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +3 -3
  197. data/src/core/ext/transport/chttp2/transport/goaway.cc +129 -0
  198. data/src/core/ext/transport/chttp2/transport/goaway.h +350 -0
  199. data/src/core/ext/transport/chttp2/transport/header_assembler.h +175 -51
  200. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
  201. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -4
  202. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +1 -1
  203. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +3 -3
  204. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -7
  205. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -4
  206. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
  207. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -1
  208. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1177 -511
  209. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +264 -174
  210. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  211. data/src/core/ext/transport/chttp2/transport/http2_settings.h +6 -4
  212. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +4 -6
  213. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +6 -16
  214. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +320 -82
  215. data/src/core/ext/transport/chttp2/transport/http2_status.h +7 -1
  216. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +286 -7
  217. data/src/core/ext/transport/chttp2/transport/http2_transport.h +187 -19
  218. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +57 -1
  219. data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +128 -0
  220. data/src/core/ext/transport/chttp2/transport/internal.h +25 -5
  221. data/src/core/ext/transport/chttp2/transport/keepalive.cc +12 -5
  222. data/src/core/ext/transport/chttp2/transport/keepalive.h +14 -10
  223. data/src/core/ext/transport/chttp2/transport/message_assembler.h +24 -15
  224. data/src/core/ext/transport/chttp2/transport/parsing.cc +8 -8
  225. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +1 -1
  226. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +3 -3
  227. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +11 -5
  228. data/src/core/ext/transport/chttp2/transport/ping_promise.h +7 -3
  229. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +1 -1
  230. data/src/core/ext/transport/chttp2/transport/security_frame.cc +31 -0
  231. data/src/core/ext/transport/chttp2/transport/security_frame.h +32 -0
  232. data/src/core/ext/transport/chttp2/transport/stream.h +139 -59
  233. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +225 -98
  234. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +1 -1
  235. data/src/core/ext/transport/chttp2/transport/transport_common.cc +1 -1
  236. data/src/core/ext/transport/chttp2/transport/transport_common.h +5 -0
  237. data/src/core/ext/transport/chttp2/transport/writable_streams.h +27 -11
  238. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -3
  239. data/src/core/ext/transport/inproc/inproc_transport.cc +8 -2
  240. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +8 -5
  241. data/src/core/filter/auth/auth_filters.h +7 -1
  242. data/src/core/filter/auth/client_auth_filter.cc +2 -2
  243. data/src/core/filter/auth/server_auth_filter.cc +3 -3
  244. data/src/core/filter/blackboard.h +2 -2
  245. data/src/core/filter/filter_args.h +40 -2
  246. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +2 -2
  247. data/src/core/handshaker/handshaker.cc +5 -5
  248. data/src/core/handshaker/handshaker.h +2 -2
  249. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +5 -5
  250. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +11 -11
  251. data/src/core/handshaker/http_connect/http_proxy_mapper.h +1 -1
  252. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +1 -1
  253. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +1 -1
  254. data/src/core/handshaker/proxy_mapper.h +1 -1
  255. data/src/core/handshaker/proxy_mapper_registry.h +1 -1
  256. data/src/core/handshaker/security/legacy_secure_endpoint.cc +4 -4
  257. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +7 -7
  258. data/src/core/handshaker/security/secure_endpoint.cc +15 -5
  259. data/src/core/handshaker/security/security_handshaker.cc +8 -5
  260. data/src/core/handshaker/security/security_handshaker.h +1 -1
  261. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
  262. data/src/core/lib/address_utils/parse_address.cc +5 -5
  263. data/src/core/lib/address_utils/parse_address.h +2 -2
  264. data/src/core/lib/address_utils/sockaddr_utils.cc +4 -4
  265. data/src/core/lib/address_utils/sockaddr_utils.h +1 -1
  266. data/src/core/lib/channel/channel_args.cc +1 -1
  267. data/src/core/lib/channel/channel_args.h +2 -2
  268. data/src/core/lib/channel/channel_stack.cc +22 -21
  269. data/src/core/lib/channel/channel_stack.h +5 -3
  270. data/src/core/lib/channel/channel_stack_builder.cc +8 -4
  271. data/src/core/lib/channel/channel_stack_builder.h +10 -9
  272. data/src/core/lib/channel/channel_stack_builder_impl.cc +7 -13
  273. data/src/core/lib/channel/channel_stack_builder_impl.h +1 -1
  274. data/src/core/lib/channel/connected_channel.cc +2 -2
  275. data/src/core/lib/channel/promise_based_filter.cc +63 -8
  276. data/src/core/lib/channel/promise_based_filter.h +23 -8
  277. data/src/core/lib/compression/compression_internal.cc +4 -4
  278. data/src/core/lib/compression/compression_internal.h +1 -1
  279. data/src/core/lib/compression/message_compress.cc +1 -1
  280. data/src/core/lib/debug/trace.cc +2 -5
  281. data/src/core/lib/debug/trace.h +10 -0
  282. data/src/core/lib/debug/trace_flags.cc +2 -2
  283. data/src/core/lib/debug/trace_flags.h +1 -1
  284. data/src/core/lib/event_engine/ares_resolver.cc +8 -8
  285. data/src/core/lib/event_engine/ares_resolver.h +4 -4
  286. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
  287. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +2 -2
  288. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +1 -1
  289. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +2 -2
  290. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +1 -1
  291. data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -1
  292. data/src/core/lib/event_engine/default_event_engine.cc +1 -1
  293. data/src/core/lib/event_engine/event_engine.cc +1 -1
  294. data/src/core/lib/event_engine/extensions/channelz.h +1 -1
  295. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +1 -1
  296. data/src/core/lib/event_engine/extensions/tcp_trace.h +8 -1
  297. data/src/core/lib/event_engine/grpc_polled_fd.h +1 -1
  298. data/src/core/lib/event_engine/memory_allocator_factory.h +1 -1
  299. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +4 -4
  300. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +5 -5
  301. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +5 -5
  302. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
  303. data/src/core/lib/event_engine/posix_engine/event_poller.h +2 -2
  304. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
  305. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +1 -1
  306. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +1 -1
  307. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +4 -4
  308. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +1 -1
  309. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +1 -1
  310. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +1 -1
  311. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +3 -3
  312. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +1 -1
  313. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +5 -5
  314. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +6 -6
  315. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +7 -7
  316. data/src/core/lib/event_engine/posix_engine/posix_engine.h +7 -7
  317. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +7 -4
  318. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +4 -4
  319. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +4 -4
  320. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -1
  321. data/src/core/lib/event_engine/posix_engine/posix_interface.h +1 -1
  322. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +5 -5
  323. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +1 -1
  324. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
  325. data/src/core/lib/event_engine/posix_engine/timer.h +1 -1
  326. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +2 -2
  327. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  328. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -2
  329. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +2 -2
  330. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +1 -1
  331. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
  332. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +1 -1
  333. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
  334. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +1 -1
  335. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -2
  336. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +1 -1
  337. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +1 -1
  338. data/src/core/lib/event_engine/tcp_socket_utils.cc +4 -4
  339. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  340. data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
  341. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -4
  342. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -3
  343. data/src/core/lib/event_engine/utils.cc +3 -3
  344. data/src/core/lib/event_engine/utils.h +1 -1
  345. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +1 -1
  346. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +2 -2
  347. data/src/core/lib/event_engine/windows/iocp.cc +1 -1
  348. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  349. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +5 -2
  350. data/src/core/lib/event_engine/windows/win_socket.cc +1 -1
  351. data/src/core/lib/event_engine/windows/win_socket.h +2 -2
  352. data/src/core/lib/event_engine/windows/windows_endpoint.cc +5 -5
  353. data/src/core/lib/event_engine/windows/windows_engine.cc +4 -4
  354. data/src/core/lib/event_engine/windows/windows_engine.h +3 -3
  355. data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
  356. data/src/core/lib/event_engine/windows/windows_listener.h +2 -2
  357. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -2
  358. data/src/core/lib/experiments/config.cc +4 -4
  359. data/src/core/lib/experiments/experiments.cc +174 -48
  360. data/src/core/lib/experiments/experiments.h +76 -24
  361. data/src/core/lib/iomgr/buffer_list.cc +1 -1
  362. data/src/core/lib/iomgr/call_combiner.cc +1 -1
  363. data/src/core/lib/iomgr/call_combiner.h +2 -2
  364. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  365. data/src/core/lib/iomgr/closure.h +2 -2
  366. data/src/core/lib/iomgr/combiner.cc +2 -2
  367. data/src/core/lib/iomgr/endpoint.h +1 -1
  368. data/src/core/lib/iomgr/endpoint_cfstream.cc +1 -1
  369. data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
  370. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  371. data/src/core/lib/iomgr/error.cc +1 -1
  372. data/src/core/lib/iomgr/error.h +2 -2
  373. data/src/core/lib/iomgr/error_cfstream.cc +1 -1
  374. data/src/core/lib/iomgr/ev_apple.cc +1 -1
  375. data/src/core/lib/iomgr/ev_epoll1_linux.cc +4 -4
  376. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
  377. data/src/core/lib/iomgr/ev_posix.cc +3 -3
  378. data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -3
  379. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -1
  380. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +5 -5
  381. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +2 -2
  382. data/src/core/lib/iomgr/exec_ctx.cc +3 -3
  383. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  384. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  385. data/src/core/lib/iomgr/internal_errqueue.cc +1 -1
  386. data/src/core/lib/iomgr/iocp_windows.cc +1 -1
  387. data/src/core/lib/iomgr/iomgr.cc +1 -1
  388. data/src/core/lib/iomgr/lockfree_event.cc +1 -1
  389. data/src/core/lib/iomgr/polling_entity.cc +1 -1
  390. data/src/core/lib/iomgr/resolve_address.cc +1 -1
  391. data/src/core/lib/iomgr/resolve_address.h +2 -2
  392. data/src/core/lib/iomgr/resolve_address_posix.cc +4 -4
  393. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  394. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +1 -1
  395. data/src/core/lib/iomgr/socket_utils_common_posix.cc +2 -2
  396. data/src/core/lib/iomgr/socket_windows.cc +2 -2
  397. data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -1
  398. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  399. data/src/core/lib/iomgr/tcp_posix.cc +5 -5
  400. data/src/core/lib/iomgr/tcp_server_posix.cc +20 -9
  401. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  402. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -2
  403. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
  404. data/src/core/lib/iomgr/tcp_server_windows.cc +2 -2
  405. data/src/core/lib/iomgr/tcp_windows.cc +1 -1
  406. data/src/core/lib/iomgr/timer_generic.cc +3 -3
  407. data/src/core/lib/iomgr/timer_manager.cc +1 -1
  408. data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
  409. data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
  410. data/src/core/lib/iomgr/vsock.cc +1 -1
  411. data/src/core/lib/iomgr/vsock.h +1 -1
  412. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +1 -1
  413. data/src/core/lib/promise/activity.cc +2 -2
  414. data/src/core/lib/promise/activity.h +5 -4
  415. data/src/core/lib/promise/all_ok.h +3 -3
  416. data/src/core/lib/promise/arena_promise.h +47 -6
  417. data/src/core/lib/promise/context.h +1 -1
  418. data/src/core/lib/promise/detail/join_state.h +1 -1
  419. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  420. data/src/core/lib/promise/detail/promise_like.h +1 -1
  421. data/src/core/lib/promise/detail/seq_state.h +3 -3
  422. data/src/core/lib/promise/detail/status.h +1 -1
  423. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +1 -1
  424. data/src/core/lib/promise/for_each.h +3 -3
  425. data/src/core/lib/promise/if.h +1 -1
  426. data/src/core/lib/promise/inter_activity_latch.h +3 -3
  427. data/src/core/lib/promise/inter_activity_mutex.h +1 -1
  428. data/src/core/lib/promise/interceptor_list.h +3 -3
  429. data/src/core/lib/promise/latch.h +2 -2
  430. data/src/core/lib/promise/loop.h +2 -2
  431. data/src/core/lib/promise/map.h +2 -2
  432. data/src/core/lib/promise/mpsc.cc +5 -4
  433. data/src/core/lib/promise/observable.h +2 -2
  434. data/src/core/lib/promise/party.cc +14 -8
  435. data/src/core/lib/promise/party.h +11 -4
  436. data/src/core/lib/promise/pipe.h +16 -2
  437. data/src/core/lib/promise/poll.h +2 -2
  438. data/src/core/lib/promise/promise.h +2 -2
  439. data/src/core/lib/promise/sleep.h +1 -1
  440. data/src/core/lib/promise/status_flag.h +2 -2
  441. data/src/core/lib/promise/try_join.h +3 -3
  442. data/src/core/lib/promise/try_seq.h +3 -3
  443. data/src/core/lib/promise/wait_set.h +2 -2
  444. data/src/core/lib/resource_quota/api.cc +1 -1
  445. data/src/core/lib/resource_quota/arena.cc +1 -1
  446. data/src/core/lib/resource_quota/connection_quota.h +1 -1
  447. data/src/core/lib/resource_quota/memory_quota.cc +3 -3
  448. data/src/core/lib/resource_quota/memory_quota.h +9 -5
  449. data/src/core/lib/resource_quota/periodic_update.h +1 -1
  450. data/src/core/lib/resource_quota/resource_quota.cc +8 -0
  451. data/src/core/lib/resource_quota/resource_quota.h +2 -1
  452. data/src/core/lib/resource_quota/stream_quota.cc +22 -0
  453. data/src/core/lib/resource_quota/stream_quota.h +31 -0
  454. data/src/core/lib/resource_quota/telemetry.h +1 -0
  455. data/src/core/lib/resource_quota/thread_quota.h +1 -1
  456. data/src/core/lib/security/authorization/audit_logging.cc +3 -3
  457. data/src/core/lib/security/authorization/audit_logging.h +1 -1
  458. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  459. data/src/core/lib/security/authorization/evaluate_args.cc +5 -5
  460. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  461. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -3
  462. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +4 -1
  463. data/src/core/lib/security/authorization/matchers.cc +2 -2
  464. data/src/core/lib/security/authorization/stdout_logger.cc +1 -1
  465. data/src/core/lib/slice/percent_encoding.cc +1 -1
  466. data/src/core/lib/slice/slice.cc +1 -1
  467. data/src/core/lib/slice/slice.h +2 -2
  468. data/src/core/lib/slice/slice_buffer.cc +1 -1
  469. data/src/core/lib/slice/slice_internal.h +1 -1
  470. data/src/core/lib/surface/call.cc +42 -14
  471. data/src/core/lib/surface/call.h +12 -5
  472. data/src/core/lib/surface/call_log_batch.cc +2 -2
  473. data/src/core/lib/surface/call_utils.cc +5 -5
  474. data/src/core/lib/surface/call_utils.h +83 -18
  475. data/src/core/lib/surface/channel.cc +2 -1
  476. data/src/core/lib/surface/channel.h +13 -3
  477. data/src/core/lib/surface/channel_create.cc +2 -2
  478. data/src/core/lib/surface/channel_create.h +1 -1
  479. data/src/core/lib/surface/channel_init.cc +5 -5
  480. data/src/core/lib/surface/channel_init.h +4 -2
  481. data/src/core/lib/surface/completion_queue.cc +4 -4
  482. data/src/core/lib/surface/filter_stack_call.cc +13 -8
  483. data/src/core/lib/surface/filter_stack_call.h +3 -3
  484. data/src/core/lib/surface/init.cc +4 -4
  485. data/src/core/lib/surface/lame_client.cc +2 -2
  486. data/src/core/lib/surface/lame_client.h +3 -3
  487. data/src/core/lib/surface/legacy_channel.cc +3 -3
  488. data/src/core/lib/surface/legacy_channel.h +1 -1
  489. data/src/core/lib/surface/validate_metadata.cc +2 -2
  490. data/src/core/lib/surface/validate_metadata.h +1 -1
  491. data/src/core/lib/surface/version.cc +2 -2
  492. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  493. data/src/core/lib/transport/bdp_estimator.h +2 -2
  494. data/src/core/lib/transport/connectivity_state.cc +1 -1
  495. data/src/core/lib/transport/connectivity_state.h +2 -2
  496. data/src/core/lib/transport/error_utils.h +1 -1
  497. data/src/core/lib/transport/promise_endpoint.cc +1 -1
  498. data/src/core/lib/transport/promise_endpoint.h +3 -3
  499. data/src/core/lib/transport/timeout_encoding.cc +1 -1
  500. data/src/core/lib/transport/transport.cc +3 -3
  501. data/src/core/lib/transport/transport.h +62 -4
  502. data/src/core/lib/transport/transport_framing_endpoint_extension.h +1 -1
  503. data/src/core/lib/transport/transport_op_string.cc +2 -2
  504. data/src/core/load_balancing/address_filtering.cc +1 -1
  505. data/src/core/load_balancing/address_filtering.h +2 -2
  506. data/src/core/load_balancing/backend_metric_parser.cc +1 -1
  507. data/src/core/load_balancing/backend_metric_parser.h +1 -1
  508. data/src/core/load_balancing/child_policy_handler.cc +4 -4
  509. data/src/core/load_balancing/child_policy_handler.h +2 -2
  510. data/src/core/load_balancing/delegating_helper.h +2 -2
  511. data/src/core/load_balancing/endpoint_list.cc +4 -4
  512. data/src/core/load_balancing/endpoint_list.h +2 -2
  513. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +7 -5
  514. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +5 -1
  515. data/src/core/load_balancing/grpclb/grpclb.cc +13 -24
  516. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +2 -2
  517. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  518. data/src/core/load_balancing/grpclb/load_balancer_api.h +1 -1
  519. data/src/core/load_balancing/health_check_client.cc +9 -5
  520. data/src/core/load_balancing/health_check_client_internal.h +3 -3
  521. data/src/core/load_balancing/lb_policy.h +11 -8
  522. data/src/core/load_balancing/lb_policy_factory.h +2 -2
  523. data/src/core/load_balancing/lb_policy_registry.cc +2 -2
  524. data/src/core/load_balancing/lb_policy_registry.h +2 -2
  525. data/src/core/load_balancing/oob_backend_metric.cc +7 -3
  526. data/src/core/load_balancing/oob_backend_metric_internal.h +2 -2
  527. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +7 -15
  528. data/src/core/load_balancing/pick_first/pick_first.cc +48 -18
  529. data/src/core/load_balancing/priority/priority.cc +6 -6
  530. data/src/core/load_balancing/ring_hash/ring_hash.cc +8 -8
  531. data/src/core/load_balancing/rls/rls.cc +10 -10
  532. data/src/core/load_balancing/round_robin/round_robin.cc +7 -7
  533. data/src/core/load_balancing/subchannel_interface.h +2 -2
  534. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +1 -1
  535. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +9 -15
  536. data/src/core/load_balancing/weighted_target/weighted_target.cc +9 -9
  537. data/src/core/load_balancing/xds/cds.cc +5 -5
  538. data/src/core/load_balancing/xds/xds_cluster_impl.cc +22 -39
  539. data/src/core/load_balancing/xds/xds_cluster_manager.cc +6 -6
  540. data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
  541. data/src/core/load_balancing/xds/xds_override_host.h +1 -1
  542. data/src/core/load_balancing/xds/xds_wrr_locality.cc +5 -5
  543. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +8 -8
  544. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +1 -1
  545. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  546. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  547. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -2
  548. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +6 -6
  549. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -2
  550. data/src/core/resolver/dns/dns_resolver_plugin.cc +2 -2
  551. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +8 -8
  552. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +1 -1
  553. data/src/core/resolver/dns/event_engine/service_config_helper.cc +2 -2
  554. data/src/core/resolver/dns/native/dns_resolver.cc +7 -7
  555. data/src/core/resolver/endpoint_addresses.cc +4 -4
  556. data/src/core/resolver/endpoint_addresses.h +1 -1
  557. data/src/core/resolver/fake/fake_resolver.cc +1 -1
  558. data/src/core/resolver/fake/fake_resolver.h +3 -3
  559. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +5 -5
  560. data/src/core/resolver/polling_resolver.cc +5 -5
  561. data/src/core/resolver/polling_resolver.h +1 -1
  562. data/src/core/resolver/resolver.h +2 -2
  563. data/src/core/resolver/resolver_factory.h +2 -2
  564. data/src/core/resolver/resolver_registry.cc +1 -1
  565. data/src/core/resolver/resolver_registry.h +1 -1
  566. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +4 -4
  567. data/src/core/resolver/xds/xds_config.cc +1 -1
  568. data/src/core/resolver/xds/xds_config.h +3 -3
  569. data/src/core/resolver/xds/xds_dependency_manager.cc +2 -2
  570. data/src/core/resolver/xds/xds_dependency_manager.h +3 -3
  571. data/src/core/resolver/xds/xds_resolver.cc +16 -13
  572. data/src/core/resolver/xds/xds_resolver_attributes.h +1 -1
  573. data/src/core/server/add_port.cc +2 -2
  574. data/src/core/server/server.cc +9 -5
  575. data/src/core/server/server.h +8 -7
  576. data/src/core/server/server_call_tracer_filter.cc +1 -1
  577. data/src/core/server/server_call_tracer_filter.h +5 -1
  578. data/src/core/server/server_config_selector.h +2 -2
  579. data/src/core/server/server_config_selector_filter.cc +3 -3
  580. data/src/core/server/xds_channel_stack_modifier.cc +3 -2
  581. data/src/core/server/xds_channel_stack_modifier.h +1 -1
  582. data/src/core/server/xds_server_config_fetcher.cc +10 -10
  583. data/src/core/service_config/service_config.h +1 -1
  584. data/src/core/service_config/service_config_channel_arg_filter.h +4 -1
  585. data/src/core/service_config/service_config_impl.cc +3 -3
  586. data/src/core/service_config/service_config_impl.h +2 -2
  587. data/src/core/service_config/service_config_parser.h +1 -1
  588. data/src/core/telemetry/call_tracer.h +2 -2
  589. data/src/core/telemetry/default_tcp_tracer.h +3 -3
  590. data/src/core/telemetry/histogram.h +1 -1
  591. data/src/core/telemetry/instrument.cc +550 -270
  592. data/src/core/telemetry/instrument.h +301 -128
  593. data/src/core/telemetry/metrics.cc +2 -0
  594. data/src/core/telemetry/metrics.h +33 -4
  595. data/src/core/telemetry/stats.h +2 -2
  596. data/src/core/telemetry/stats_data.cc +1 -1
  597. data/src/core/telemetry/stats_data.h +2 -2
  598. data/src/core/transport/auth_context.cc +1 -1
  599. data/src/core/transport/auth_context.h +2 -1
  600. data/src/core/transport/auth_context_comparator_registry.h +1 -1
  601. data/src/core/tsi/alts/crypt/aes_gcm.cc +1 -1
  602. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +2 -2
  603. data/src/core/tsi/alts/frame_protector/frame_handler.cc +1 -1
  604. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
  605. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
  606. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +9 -7
  607. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +1 -1
  608. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
  609. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +1 -1
  610. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +11 -3
  611. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +10 -0
  612. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +9 -1
  613. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +3 -0
  614. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +15 -2
  615. data/src/core/tsi/fake_transport_security.cc +2 -1
  616. data/src/core/tsi/local_transport_security.cc +1 -1
  617. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +1 -1
  618. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -1
  619. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +1 -1
  620. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
  621. data/src/core/tsi/ssl_transport_security.cc +6 -6
  622. data/src/core/tsi/ssl_transport_security.h +1 -1
  623. data/src/core/tsi/ssl_transport_security_utils.cc +2 -2
  624. data/src/core/tsi/ssl_transport_security_utils.h +2 -2
  625. data/src/core/tsi/transport_security_grpc.cc +8 -0
  626. data/src/core/tsi/transport_security_grpc.h +15 -0
  627. data/src/core/util/alloc.cc +1 -1
  628. data/src/core/util/backoff.h +1 -1
  629. data/src/core/util/crash.h +1 -1
  630. data/src/core/util/dual_ref_counted.h +2 -2
  631. data/src/core/util/event_log.cc +1 -1
  632. data/src/core/util/event_log.h +3 -3
  633. data/src/core/util/gcp_metadata_query.cc +5 -5
  634. data/src/core/util/gcp_metadata_query.h +2 -2
  635. data/src/core/util/grpc_check.cc +2 -0
  636. data/src/core/util/grpc_check.h +1 -1
  637. data/src/core/util/grpc_if_nametoindex_posix.cc +1 -1
  638. data/src/core/util/grpc_if_nametoindex_unsupported.cc +1 -1
  639. data/src/core/util/http_client/format_request.cc +1 -1
  640. data/src/core/util/http_client/httpcli.cc +3 -3
  641. data/src/core/util/http_client/httpcli.h +4 -4
  642. data/src/core/util/http_client/httpcli_security_connector.cc +4 -4
  643. data/src/core/util/http_client/parser.cc +1 -1
  644. data/src/core/util/json/json_channel_args.h +1 -1
  645. data/src/core/util/json/json_object_loader.h +6 -6
  646. data/src/core/util/json/json_reader.cc +2 -2
  647. data/src/core/util/json/json_reader.h +1 -1
  648. data/src/core/util/json/json_util.h +3 -3
  649. data/src/core/util/json/json_writer.cc +1 -1
  650. data/src/core/util/latent_see.cc +45 -24
  651. data/src/core/util/latent_see.h +192 -24
  652. data/src/core/util/linux/cpu.cc +1 -1
  653. data/src/core/util/load_file.cc +1 -1
  654. data/src/core/util/load_file.h +1 -1
  655. data/src/core/util/log.cc +3 -3
  656. data/src/core/util/lru_cache.h +1 -1
  657. data/src/core/util/matchers.h +1 -1
  658. data/src/core/util/memory_usage.h +3 -3
  659. data/src/core/util/mpscq.h +1 -1
  660. data/src/core/util/notification.h +1 -1
  661. data/src/core/util/posix/cpu.cc +1 -1
  662. data/src/core/util/posix/stat.cc +2 -2
  663. data/src/core/util/posix/thd.cc +2 -2
  664. data/src/core/util/posix/tmpfile.cc +2 -2
  665. data/src/core/util/ref_counted.h +2 -2
  666. data/src/core/util/ref_counted_ptr.h +1 -1
  667. data/src/core/util/ref_counted_string.h +1 -1
  668. data/src/core/util/single_set_ptr.h +3 -1
  669. data/src/core/util/status_helper.cc +8 -8
  670. data/src/core/util/status_helper.h +1 -1
  671. data/src/core/util/string.cc +2 -2
  672. data/src/core/util/sync_abseil.cc +1 -1
  673. data/src/core/util/table.h +1 -1
  674. data/src/core/util/time.cc +1 -1
  675. data/src/core/util/time_precise.cc +1 -1
  676. data/src/core/util/unique_ptr_with_bitset.h +1 -1
  677. data/src/core/util/unique_type_name.h +1 -1
  678. data/src/core/util/upb_utils.h +6 -1
  679. data/src/core/util/validation_errors.cc +2 -2
  680. data/src/core/util/validation_errors.h +2 -3
  681. data/src/core/util/wait_for_single_owner.h +2 -2
  682. data/src/core/util/windows/directory_reader.cc +1 -1
  683. data/src/core/util/windows/stat.cc +2 -2
  684. data/src/core/util/windows/thd.cc +2 -2
  685. data/src/core/util/windows/time.cc +1 -1
  686. data/src/core/util/work_serializer.cc +3 -3
  687. data/src/core/util/work_serializer.h +2 -2
  688. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  689. data/src/core/xds/grpc/certificate_provider_store.h +2 -2
  690. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  691. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
  692. data/src/core/xds/grpc/xds_audit_logger_registry.cc +3 -3
  693. data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
  694. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +7 -7
  695. data/src/core/xds/grpc/xds_bootstrap_grpc.h +2 -2
  696. data/src/core/xds/grpc/xds_certificate_provider.cc +1 -1
  697. data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
  698. data/src/core/xds/grpc/xds_client_grpc.cc +5 -5
  699. data/src/core/xds/grpc/xds_client_grpc.h +2 -2
  700. data/src/core/xds/grpc/xds_cluster.cc +2 -2
  701. data/src/core/xds/grpc/xds_cluster.h +1 -1
  702. data/src/core/xds/grpc/xds_cluster_parser.cc +5 -5
  703. data/src/core/xds/grpc/xds_cluster_parser.h +1 -1
  704. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  705. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
  706. data/src/core/xds/grpc/xds_common_types.cc +1 -1
  707. data/src/core/xds/grpc/xds_common_types.h +1 -1
  708. data/src/core/xds/grpc/xds_common_types_parser.cc +5 -5
  709. data/src/core/xds/grpc/xds_endpoint.h +2 -2
  710. data/src/core/xds/grpc/xds_endpoint_parser.cc +5 -5
  711. data/src/core/xds/grpc/xds_endpoint_parser.h +1 -1
  712. data/src/core/xds/grpc/xds_health_status.cc +1 -1
  713. data/src/core/xds/grpc/xds_health_status.h +1 -1
  714. data/src/core/xds/grpc/xds_http_fault_filter.cc +4 -4
  715. data/src/core/xds/grpc/xds_http_fault_filter.h +2 -2
  716. data/src/core/xds/grpc/xds_http_filter.h +3 -3
  717. data/src/core/xds/grpc/xds_http_filter_registry.h +2 -2
  718. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +3 -3
  719. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +2 -2
  720. data/src/core/xds/grpc/xds_http_rbac_filter.cc +4 -4
  721. data/src/core/xds/grpc/xds_http_rbac_filter.h +2 -2
  722. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +3 -3
  723. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +2 -2
  724. data/src/core/xds/grpc/xds_lb_policy_registry.cc +1 -1
  725. data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
  726. data/src/core/xds/grpc/xds_listener.cc +2 -2
  727. data/src/core/xds/grpc/xds_listener_parser.cc +6 -6
  728. data/src/core/xds/grpc/xds_listener_parser.h +1 -1
  729. data/src/core/xds/grpc/xds_matcher.cc +1 -1
  730. data/src/core/xds/grpc/xds_matcher.h +3 -3
  731. data/src/core/xds/grpc/xds_matcher_input.h +1 -1
  732. data/src/core/xds/grpc/xds_metadata.cc +1 -1
  733. data/src/core/xds/grpc/xds_metadata.h +3 -3
  734. data/src/core/xds/grpc/xds_metadata_parser.cc +2 -2
  735. data/src/core/xds/grpc/xds_route_config.cc +3 -3
  736. data/src/core/xds/grpc/xds_route_config_parser.cc +8 -8
  737. data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
  738. data/src/core/xds/grpc/xds_routing.cc +4 -4
  739. data/src/core/xds/grpc/xds_routing.h +2 -2
  740. data/src/core/xds/grpc/xds_server_grpc.cc +2 -2
  741. data/src/core/xds/grpc/xds_transport_grpc.cc +1 -1
  742. data/src/core/xds/grpc/xds_transport_grpc.h +2 -2
  743. data/src/core/xds/xds_client/lrs_client.cc +3 -3
  744. data/src/core/xds/xds_client/lrs_client.h +4 -4
  745. data/src/core/xds/xds_client/xds_api.h +1 -1
  746. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +1 -1
  747. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +1 -1
  748. data/src/core/xds/xds_client/xds_client.cc +8 -8
  749. data/src/core/xds/xds_client/xds_client.h +5 -5
  750. data/src/core/xds/xds_client/xds_locality.h +2 -2
  751. data/src/core/xds/xds_client/xds_resource_type.h +2 -2
  752. data/src/core/xds/xds_client/xds_resource_type_impl.h +1 -1
  753. data/src/core/xds/xds_client/xds_transport.h +2 -2
  754. data/src/ruby/ext/grpc/extconf.rb +14 -12
  755. data/src/ruby/ext/grpc/rb_call.c +0 -1
  756. data/src/ruby/ext/grpc/rb_channel_args.c +0 -1
  757. data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
  758. data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
  759. data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
  760. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
  761. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
  762. data/src/ruby/lib/grpc/version.rb +1 -1
  763. metadata +16 -6
@@ -25,8 +25,6 @@
25
25
  #include <optional>
26
26
  #include <utility>
27
27
 
28
- #include "absl/container/inlined_vector.h"
29
- #include "absl/functional/any_invocable.h"
30
28
  #include "src/core/call/metadata_batch.h"
31
29
  #include "src/core/client_channel/client_channel_filter.h"
32
30
  #include "src/core/client_channel/retry_filter.h"
@@ -47,6 +45,8 @@
47
45
  #include "src/core/util/ref_counted.h"
48
46
  #include "src/core/util/ref_counted_ptr.h"
49
47
  #include "src/core/util/time.h"
48
+ #include "absl/container/inlined_vector.h"
49
+ #include "absl/functional/any_invocable.h"
50
50
 
51
51
  namespace grpc_core {
52
52
 
@@ -252,7 +252,7 @@ class RetryFilter::LegacyCallData final {
252
252
  void MaybeCancelPerAttemptRecvTimer();
253
253
 
254
254
  LegacyCallData* calld_;
255
- OrphanablePtr<ClientChannelFilter::FilterBasedLoadBalancedCall> lb_call_;
255
+ OrphanablePtr<ClientChannelFilter::LoadBalancedCall> lb_call_;
256
256
  bool lb_call_committed_ = false;
257
257
 
258
258
  grpc_closure on_per_attempt_recv_timer_;
@@ -362,9 +362,8 @@ class RetryFilter::LegacyCallData final {
362
362
  void AddClosureToStartTransparentRetry(CallCombinerClosureList* closures);
363
363
  static void StartTransparentRetry(void* arg, grpc_error_handle error);
364
364
 
365
- OrphanablePtr<ClientChannelFilter::FilterBasedLoadBalancedCall>
366
- CreateLoadBalancedCall(absl::AnyInvocable<void()> on_commit,
367
- bool is_transparent_retry);
365
+ OrphanablePtr<ClientChannelFilter::LoadBalancedCall> CreateLoadBalancedCall(
366
+ absl::AnyInvocable<void()> on_commit, bool is_transparent_retry);
368
367
 
369
368
  void CreateCallAttempt(bool is_transparent_retry);
370
369
 
@@ -391,8 +390,7 @@ class RetryFilter::LegacyCallData final {
391
390
  // LB call used when we've committed to a call attempt and the retry
392
391
  // state for that attempt is no longer needed. This provides a fast
393
392
  // path for long-running streaming calls that minimizes overhead.
394
- OrphanablePtr<ClientChannelFilter::FilterBasedLoadBalancedCall>
395
- committed_call_;
393
+ OrphanablePtr<ClientChannelFilter::LoadBalancedCall> committed_call_;
396
394
 
397
395
  // When are are not yet fully committed to a particular call (i.e.,
398
396
  // either we might still retry or we have committed to the call but
@@ -27,13 +27,13 @@
27
27
  #include <utility>
28
28
  #include <vector>
29
29
 
30
- #include "absl/log/log.h"
31
- #include "absl/strings/numbers.h"
32
- #include "absl/strings/str_cat.h"
33
30
  #include "src/core/call/status_util.h"
34
31
  #include "src/core/config/core_configuration.h"
35
32
  #include "src/core/lib/channel/channel_args.h"
36
33
  #include "src/core/util/json/json_channel_args.h"
34
+ #include "absl/log/log.h"
35
+ #include "absl/strings/numbers.h"
36
+ #include "absl/strings/str_cat.h"
37
37
 
38
38
  // As per the retry design, we do not allow more than 5 retry attempts.
39
39
  #define MAX_MAX_RETRY_ATTEMPTS 5
@@ -24,7 +24,6 @@
24
24
  #include <memory>
25
25
  #include <optional>
26
26
 
27
- #include "absl/strings/string_view.h"
28
27
  #include "src/core/call/status_util.h"
29
28
  #include "src/core/config/core_configuration.h"
30
29
  #include "src/core/lib/channel/channel_args.h"
@@ -34,6 +33,7 @@
34
33
  #include "src/core/util/json/json_object_loader.h"
35
34
  #include "src/core/util/time.h"
36
35
  #include "src/core/util/validation_errors.h"
36
+ #include "absl/strings/string_view.h"
37
37
 
38
38
  namespace grpc_core {
39
39
  namespace internal {
@@ -29,11 +29,6 @@
29
29
  #include <optional>
30
30
  #include <utility>
31
31
 
32
- #include "absl/log/log.h"
33
- #include "absl/status/statusor.h"
34
- #include "absl/strings/cord.h"
35
- #include "absl/strings/str_cat.h"
36
- #include "absl/strings/string_view.h"
37
32
  #include "src/core/call/interception_chain.h"
38
33
  #include "src/core/channelz/channel_trace.h"
39
34
  #include "src/core/channelz/channelz.h"
@@ -70,6 +65,11 @@
70
65
  #include "src/core/util/status_helper.h"
71
66
  #include "src/core/util/sync.h"
72
67
  #include "src/core/util/useful.h"
68
+ #include "absl/log/log.h"
69
+ #include "absl/status/statusor.h"
70
+ #include "absl/strings/cord.h"
71
+ #include "absl/strings/str_cat.h"
72
+ #include "absl/strings/string_view.h"
73
73
 
74
74
  // Backoff parameters.
75
75
  #define GRPC_SUBCHANNEL_INITIAL_CONNECT_BACKOFF_SECONDS 1
@@ -422,12 +422,6 @@ class Subchannel::ConnectedSubchannelStateWatcher final
422
422
  << ": Connected subchannel " << connected_subchannel.get()
423
423
  << " reports " << ConnectivityStateName(new_state) << ": "
424
424
  << status;
425
- if (c->channelz_node() != nullptr) {
426
- if (connected_subchannel->channelz_node() != nullptr) {
427
- connected_subchannel->channelz_node()->RemoveParent(
428
- c->channelz_node());
429
- }
430
- }
431
425
  // If the subchannel was created from an endpoint, then we report
432
426
  // TRANSIENT_FAILURE here instead of IDLE. The subchannel will never
433
427
  // leave TRANSIENT_FAILURE state, because there is no way for us to
@@ -451,6 +445,68 @@ class Subchannel::ConnectedSubchannelStateWatcher final
451
445
  WeakRefCountedPtr<Subchannel> subchannel_;
452
446
  };
453
447
 
448
+ //
449
+ // Subchannel::ConnectionStateWatcher
450
+ //
451
+
452
+ class Subchannel::ConnectionStateWatcher final
453
+ : public Transport::StateWatcher {
454
+ public:
455
+ explicit ConnectionStateWatcher(WeakRefCountedPtr<Subchannel> subchannel)
456
+ : subchannel_(std::move(subchannel)) {}
457
+
458
+ ~ConnectionStateWatcher() override {
459
+ subchannel_.reset(DEBUG_LOCATION, "state_watcher");
460
+ }
461
+
462
+ void OnDisconnect(absl::Status status,
463
+ DisconnectInfo disconnect_info) override {
464
+ MutexLock lock(&subchannel_->mu_);
465
+ // Handle keepalive update.
466
+ if (disconnect_info.keepalive_time.has_value()) {
467
+ subchannel_->ThrottleKeepaliveTimeLocked(*disconnect_info.keepalive_time);
468
+ subchannel_->watcher_list_.NotifyOnKeepaliveUpdateLocked(
469
+ *disconnect_info.keepalive_time);
470
+ }
471
+ // We shouldn't ever see OnDisconnect() more than once for a given
472
+ // connection, but we'll be defensive just in case: if the connected
473
+ // subchannel has already been cleared, then this becomes a no-op.
474
+ RefCountedPtr<ConnectedSubchannel> connected_subchannel =
475
+ std::move(subchannel_->connected_subchannel_);
476
+ if (connected_subchannel == nullptr) return;
477
+ GRPC_TRACE_LOG(subchannel, INFO)
478
+ << "subchannel " << subchannel_.get() << " "
479
+ << subchannel_->key_.ToString() << ": connected subchannel "
480
+ << connected_subchannel.get() << " reports disconnection: " << status;
481
+ // If the subchannel was created from an endpoint, then we report
482
+ // TRANSIENT_FAILURE here instead of IDLE. The subchannel will never
483
+ // leave TRANSIENT_FAILURE state, because there is no way for us to
484
+ // establish a new connection. Otherwise, we report IDLE here.
485
+ if (subchannel_->created_from_endpoint_) {
486
+ subchannel_->SetConnectivityStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE,
487
+ status);
488
+ } else {
489
+ subchannel_->SetConnectivityStateLocked(GRPC_CHANNEL_IDLE,
490
+ absl::OkStatus());
491
+ }
492
+ subchannel_->backoff_.Reset();
493
+ }
494
+
495
+ void OnPeerMaxConcurrentStreamsUpdate(
496
+ uint32_t /*max_concurrent_streams*/,
497
+ std::unique_ptr<MaxConcurrentStreamsUpdateDoneHandle> /*on_done*/)
498
+ override {
499
+ // TODO(roth): Implement this as part of adding connection scaling.
500
+ }
501
+
502
+ grpc_pollset_set* interested_parties() const override {
503
+ return subchannel_->pollset_set_;
504
+ }
505
+
506
+ private:
507
+ WeakRefCountedPtr<Subchannel> subchannel_;
508
+ };
509
+
454
510
  //
455
511
  // Subchannel::ConnectivityStateWatcherList
456
512
  //
@@ -474,6 +530,27 @@ void Subchannel::ConnectivityStateWatcherList::NotifyLocked(
474
530
  }
475
531
  }
476
532
 
533
+ void Subchannel::ConnectivityStateWatcherList::NotifyOnKeepaliveUpdateLocked(
534
+ Duration new_keepalive_time) {
535
+ for (const auto& watcher : watchers_) {
536
+ subchannel_->work_serializer_.Run([watcher, new_keepalive_time]() {
537
+ watcher->OnKeepaliveUpdate(new_keepalive_time);
538
+ });
539
+ }
540
+ }
541
+
542
+ uint32_t
543
+ Subchannel::ConnectivityStateWatcherList::GetMaxConnectionsPerSubchannel()
544
+ const {
545
+ uint32_t max_connections_per_subchannel = 1;
546
+ for (const auto& watcher : watchers_) {
547
+ max_connections_per_subchannel =
548
+ std::max(max_connections_per_subchannel,
549
+ watcher->max_connections_per_subchannel());
550
+ }
551
+ return max_connections_per_subchannel;
552
+ }
553
+
477
554
  //
478
555
  // Subchannel
479
556
  //
@@ -610,15 +687,19 @@ RefCountedPtr<Subchannel> Subchannel::Create(
610
687
  return registered;
611
688
  }
612
689
 
613
- void Subchannel::ThrottleKeepaliveTime(int new_keepalive_time) {
690
+ void Subchannel::ThrottleKeepaliveTime(Duration new_keepalive_time) {
614
691
  MutexLock lock(&mu_);
692
+ ThrottleKeepaliveTimeLocked(new_keepalive_time);
693
+ }
694
+
695
+ void Subchannel::ThrottleKeepaliveTimeLocked(Duration new_keepalive_time) {
615
696
  // Only update the value if the new keepalive time is larger.
616
697
  if (new_keepalive_time > keepalive_time_) {
617
698
  keepalive_time_ = new_keepalive_time;
618
699
  GRPC_TRACE_LOG(subchannel, INFO)
619
700
  << "subchannel " << this << " " << key_.ToString()
620
701
  << ": throttling keepalive time to " << new_keepalive_time;
621
- args_ = args_.Set(GRPC_ARG_KEEPALIVE_TIME_MS, new_keepalive_time);
702
+ args_ = args_.Set(GRPC_ARG_KEEPALIVE_TIME_MS, new_keepalive_time.millis());
622
703
  }
623
704
  }
624
705
 
@@ -821,6 +902,11 @@ void Subchannel::OnConnectingFinishedLocked(grpc_error_handle error) {
821
902
 
822
903
  bool Subchannel::PublishTransportLocked() {
823
904
  auto socket_node = connecting_result_.transport->GetSocketNode();
905
+ if (IsTransportStateWatcherEnabled()) {
906
+ connecting_result_.transport->StartWatch(
907
+ MakeRefCounted<ConnectionStateWatcher>(
908
+ WeakRef(DEBUG_LOCATION, "state_watcher")));
909
+ }
824
910
  if (connecting_result_.transport->filter_stack_transport() != nullptr) {
825
911
  // Construct channel stack.
826
912
  // Builder takes ownership of transport.
@@ -890,10 +976,11 @@ bool Subchannel::PublishTransportLocked() {
890
976
  socket_node->AddParent(channelz_node_.get());
891
977
  }
892
978
  }
893
- // Start watching connected subchannel.
894
- connected_subchannel_->StartWatch(
895
- pollset_set_, MakeOrphanable<ConnectedSubchannelStateWatcher>(
896
- WeakRef(DEBUG_LOCATION, "state_watcher")));
979
+ if (!IsTransportStateWatcherEnabled()) {
980
+ connected_subchannel_->StartWatch(
981
+ pollset_set_, MakeOrphanable<ConnectedSubchannelStateWatcher>(
982
+ WeakRef(DEBUG_LOCATION, "state_watcher")));
983
+ }
897
984
  // Report initial state.
898
985
  SetConnectivityStateLocked(GRPC_CHANNEL_READY, absl::Status());
899
986
  return true;
@@ -919,6 +1006,8 @@ ChannelArgs Subchannel::MakeSubchannelArgs(
919
1006
  // uniqueness.
920
1007
  .Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
921
1008
  .Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
1009
+ .Remove(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL)
1010
+ .Remove(GRPC_ARG_MAX_CONNECTIONS_PER_SUBCHANNEL_CAP)
922
1011
  .Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE)
923
1012
  // Remove all keys with the no-subchannel prefix.
924
1013
  .RemoveAllKeysWithPrefix(GRPC_ARG_NO_SUBCHANNEL_PREFIX);
@@ -26,9 +26,6 @@
26
26
  #include <map>
27
27
  #include <memory>
28
28
 
29
- #include "absl/base/thread_annotations.h"
30
- #include "absl/container/flat_hash_set.h"
31
- #include "absl/status/status.h"
32
29
  #include "src/core/call/metadata_batch.h"
33
30
  #include "src/core/client_channel/connector.h"
34
31
  #include "src/core/client_channel/subchannel_pool_interface.h"
@@ -57,6 +54,9 @@
57
54
  #include "src/core/util/time_precise.h"
58
55
  #include "src/core/util/unique_type_name.h"
59
56
  #include "src/core/util/work_serializer.h"
57
+ #include "absl/base/thread_annotations.h"
58
+ #include "absl/container/flat_hash_set.h"
59
+ #include "absl/status/status.h"
60
60
 
61
61
  /** This arg is intended for internal use only, primarily
62
62
  * for passing endpoint information during subchannel creation or connection.
@@ -71,6 +71,7 @@ class ConnectedSubchannel : public RefCounted<ConnectedSubchannel> {
71
71
  public:
72
72
  const ChannelArgs& args() const { return args_; }
73
73
 
74
+ // TODO(roth): Remove this when transport_state_watcher experiment is removed.
74
75
  virtual void StartWatch(
75
76
  grpc_pollset_set* interested_parties,
76
77
  OrphanablePtr<ConnectivityStateWatcherInterface> watcher) = 0;
@@ -167,8 +168,6 @@ class SubchannelCall final {
167
168
  // (SubchannelWrapper) that "converts" between the two.
168
169
  class Subchannel final : public DualRefCounted<Subchannel> {
169
170
  public:
170
- // TODO(roth): Once we remove pollset_set, consider whether this can
171
- // just use the normal AsyncConnectivityStateWatcherInterface API.
172
171
  class ConnectivityStateWatcherInterface
173
172
  : public RefCounted<ConnectivityStateWatcherInterface> {
174
173
  public:
@@ -178,6 +177,11 @@ class Subchannel final : public DualRefCounted<Subchannel> {
178
177
  virtual void OnConnectivityStateChange(grpc_connectivity_state state,
179
178
  const absl::Status& status) = 0;
180
179
 
180
+ // Invoked to report updated keepalive time.
181
+ virtual void OnKeepaliveUpdate(Duration keepalive_time) = 0;
182
+
183
+ virtual uint32_t max_connections_per_subchannel() const = 0;
184
+
181
185
  virtual grpc_pollset_set* interested_parties() = 0;
182
186
  };
183
187
 
@@ -208,7 +212,8 @@ class Subchannel final : public DualRefCounted<Subchannel> {
208
212
  // Throttles keepalive time to \a new_keepalive_time iff \a new_keepalive_time
209
213
  // is larger than the subchannel's current keepalive time. The updated value
210
214
  // will have an affect when the subchannel creates a new ConnectedSubchannel.
211
- void ThrottleKeepaliveTime(int new_keepalive_time) ABSL_LOCKS_EXCLUDED(mu_);
215
+ void ThrottleKeepaliveTime(Duration new_keepalive_time)
216
+ ABSL_LOCKS_EXCLUDED(mu_);
212
217
 
213
218
  grpc_pollset_set* pollset_set() const { return pollset_set_; }
214
219
 
@@ -302,10 +307,15 @@ class Subchannel final : public DualRefCounted<Subchannel> {
302
307
  void NotifyLocked(grpc_connectivity_state state,
303
308
  const absl::Status& status);
304
309
 
310
+ // Notifies all watchers about a keepalive update.
311
+ void NotifyOnKeepaliveUpdateLocked(Duration new_keepalive_time);
312
+
305
313
  void Clear() { watchers_.clear(); }
306
314
 
307
315
  bool empty() const { return watchers_.empty(); }
308
316
 
317
+ uint32_t GetMaxConnectionsPerSubchannel() const;
318
+
309
319
  private:
310
320
  Subchannel* subchannel_;
311
321
  absl::flat_hash_set<RefCountedPtr<ConnectivityStateWatcherInterface>,
@@ -314,13 +324,19 @@ class Subchannel final : public DualRefCounted<Subchannel> {
314
324
  watchers_;
315
325
  };
316
326
 
327
+ // TODO(roth): Remove this when transport_state_watcher experiment is removed.
317
328
  class ConnectedSubchannelStateWatcher;
318
329
 
330
+ class ConnectionStateWatcher;
331
+
319
332
  // Sets the subchannel's connectivity state to \a state.
320
333
  void SetConnectivityStateLocked(grpc_connectivity_state state,
321
334
  const absl::Status& status)
322
335
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
323
336
 
337
+ void ThrottleKeepaliveTimeLocked(Duration new_keepalive_time)
338
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
339
+
324
340
  // Methods for connection.
325
341
  void OnRetryTimer() ABSL_LOCKS_EXCLUDED(mu_);
326
342
  void OnRetryTimerLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
@@ -383,8 +399,8 @@ class Subchannel final : public DualRefCounted<Subchannel> {
383
399
  grpc_event_engine::experimental::EventEngine::TaskHandle retry_timer_handle_
384
400
  ABSL_GUARDED_BY(mu_);
385
401
 
386
- // Keepalive time period (-1 for unset)
387
- int keepalive_time_ ABSL_GUARDED_BY(mu_) = -1;
402
+ // Keepalive time period
403
+ Duration keepalive_time_ ABSL_GUARDED_BY(mu_);
388
404
 
389
405
  // Data producer map.
390
406
  std::map<UniqueTypeName, DataProducerInterface*> data_producer_map_
@@ -21,11 +21,11 @@
21
21
  #include <grpc/support/port_platform.h>
22
22
  #include <string.h>
23
23
 
24
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
25
+ #include "src/core/lib/channel/channel_args.h"
24
26
  #include "absl/status/status.h"
25
27
  #include "absl/status/statusor.h"
26
28
  #include "absl/strings/str_cat.h"
27
- #include "src/core/lib/address_utils/sockaddr_utils.h"
28
- #include "src/core/lib/channel/channel_args.h"
29
29
 
30
30
  // The subchannel pool to reuse subchannels.
31
31
  #define GRPC_ARG_SUBCHANNEL_POOL "grpc.internal.subchannel_pool"
@@ -23,13 +23,13 @@
23
23
 
24
24
  #include <string>
25
25
 
26
- #include "absl/strings/string_view.h"
27
26
  #include "src/core/lib/channel/channel_args.h"
28
27
  #include "src/core/lib/debug/trace.h"
29
28
  #include "src/core/lib/iomgr/resolved_address.h"
30
29
  #include "src/core/util/ref_counted.h"
31
30
  #include "src/core/util/ref_counted_ptr.h"
32
31
  #include "src/core/util/useful.h"
32
+ #include "absl/strings/string_view.h"
33
33
 
34
34
  namespace grpc_core {
35
35
 
@@ -23,7 +23,6 @@
23
23
 
24
24
  #include <utility>
25
25
 
26
- #include "absl/log/log.h"
27
26
  #include "src/core/lib/channel/channel_args.h"
28
27
  #include "src/core/lib/iomgr/exec_ctx.h"
29
28
  #include "src/core/lib/resource_quota/resource_quota.h"
@@ -34,6 +33,7 @@
34
33
  #include "src/core/util/sync.h"
35
34
  #include "src/core/util/time.h"
36
35
  #include "src/core/util/time_precise.h"
36
+ #include "absl/log/log.h"
37
37
 
38
38
  #define SUBCHANNEL_STREAM_INITIAL_CONNECT_BACKOFF_SECONDS 1
39
39
  #define SUBCHANNEL_STREAM_RECONNECT_BACKOFF_MULTIPLIER 1.6
@@ -27,9 +27,6 @@
27
27
  #include <memory>
28
28
  #include <optional>
29
29
 
30
- #include "absl/base/thread_annotations.h"
31
- #include "absl/status/status.h"
32
- #include "absl/strings/string_view.h"
33
30
  #include "src/core/call/metadata_batch.h"
34
31
  #include "src/core/client_channel/subchannel.h"
35
32
  #include "src/core/lib/iomgr/call_combiner.h"
@@ -46,6 +43,9 @@
46
43
  #include "src/core/util/orphanable.h"
47
44
  #include "src/core/util/ref_counted_ptr.h"
48
45
  #include "src/core/util/sync.h"
46
+ #include "absl/base/thread_annotations.h"
47
+ #include "absl/status/status.h"
48
+ #include "absl/strings/string_view.h"
49
49
 
50
50
  namespace grpc_core {
51
51
 
@@ -20,10 +20,10 @@
20
20
 
21
21
  #include <grpc/support/port_platform.h>
22
22
 
23
+ #include "src/core/config/load_config.h"
23
24
  #include "absl/flags/flag.h"
24
25
  #include "absl/strings/escaping.h"
25
26
  #include "absl/types/optional.h"
26
- #include "src/core/config/load_config.h"
27
27
 
28
28
  #ifndef GPR_DEFAULT_LOG_VERBOSITY_STRING
29
29
  #define GPR_DEFAULT_LOG_VERBOSITY_STRING ""
@@ -86,6 +86,9 @@ ABSL_FLAG(
86
86
  "EXPERIMENTAL: If non-zero, extend the lifetime of channelz nodes past the "
87
87
  "underlying object lifetime, up to this many nodes. The value may be "
88
88
  "adjusted slightly to account for implementation limits.");
89
+ ABSL_FLAG(absl::optional<bool>, grpc_channelz_call_tracer, {},
90
+ "EXPERIMENTAL: If true, channelz will allow inspecting calls as well "
91
+ "as channels.");
89
92
  ABSL_FLAG(absl::optional<double>, grpc_experimental_target_memory_pressure, {},
90
93
  "EXPERIMENTAL: The target pressure for the memory quota pressure "
91
94
  "controller. This is a value between 0 and 1.");
@@ -131,6 +134,9 @@ ConfigVars::ConfigVars(const Overrides& overrides)
131
134
  LoadConfig(FLAGS_grpc_cpp_experimental_disable_reflection,
132
135
  "GRPC_CPP_EXPERIMENTAL_DISABLE_REFLECTION",
133
136
  overrides.cpp_experimental_disable_reflection, false)),
137
+ channelz_call_tracer_(LoadConfig(FLAGS_grpc_channelz_call_tracer,
138
+ "GRPC_CHANNELZ_CALL_TRACER",
139
+ overrides.channelz_call_tracer, false)),
134
140
  dns_resolver_(LoadConfig(FLAGS_grpc_dns_resolver, "GRPC_DNS_RESOLVER",
135
141
  overrides.dns_resolver, "")),
136
142
  verbosity_(LoadConfig(FLAGS_grpc_verbosity, "GRPC_VERBOSITY",
@@ -184,10 +190,10 @@ std::string ConfigVars::ToString() const {
184
190
  ", cpp_experimental_disable_reflection: ",
185
191
  CppExperimentalDisableReflection() ? "true" : "false",
186
192
  ", channelz_max_orphaned_nodes: ", ChannelzMaxOrphanedNodes(),
193
+ ", channelz_call_tracer: ", ChannelzCallTracer() ? "true" : "false",
187
194
  ", experimental_target_memory_pressure: ",
188
195
  ExperimentalTargetMemoryPressure(),
189
196
  ", experimental_memory_pressure_threshold: ",
190
197
  ExperimentalMemoryPressureThreshold());
191
198
  }
192
-
193
199
  } // namespace grpc_core
@@ -43,6 +43,7 @@ class GPR_DLL ConfigVars {
43
43
  absl::optional<bool> use_system_roots_over_language_callback;
44
44
  absl::optional<bool> not_use_system_ssl_roots;
45
45
  absl::optional<bool> cpp_experimental_disable_reflection;
46
+ absl::optional<bool> channelz_call_tracer;
46
47
  absl::optional<std::string> dns_resolver;
47
48
  absl::optional<std::string> verbosity;
48
49
  absl::optional<std::string> poll_strategy;
@@ -118,6 +119,9 @@ class GPR_DLL ConfigVars {
118
119
  int32_t ChannelzMaxOrphanedNodes() const {
119
120
  return channelz_max_orphaned_nodes_;
120
121
  }
122
+ // EXPERIMENTAL: If true, channelz will allow inspecting calls as well as
123
+ // channels.
124
+ bool ChannelzCallTracer() const { return channelz_call_tracer_; }
121
125
  // EXPERIMENTAL: The target pressure for the memory quota pressure controller.
122
126
  // This is a value between 0 and 1.
123
127
  double ExperimentalTargetMemoryPressure() const {
@@ -143,6 +147,7 @@ class GPR_DLL ConfigVars {
143
147
  bool use_system_roots_over_language_callback_;
144
148
  bool not_use_system_ssl_roots_;
145
149
  bool cpp_experimental_disable_reflection_;
150
+ bool channelz_call_tracer_;
146
151
  std::string dns_resolver_;
147
152
  std::string verbosity_;
148
153
  std::string poll_strategy_;
@@ -20,7 +20,6 @@
20
20
 
21
21
  #include <atomic>
22
22
 
23
- #include "absl/functional/any_invocable.h"
24
23
  #include "src/core/credentials/call/call_creds_registry.h"
25
24
  #include "src/core/credentials/transport/channel_creds_registry.h"
26
25
  #include "src/core/credentials/transport/tls/certificate_provider_registry.h"
@@ -35,6 +34,7 @@
35
34
  #include "src/core/transport/endpoint_transport.h"
36
35
  #include "src/core/util/debug_location.h"
37
36
  #include "src/core/util/grpc_check.h"
37
+ #include "absl/functional/any_invocable.h"
38
38
 
39
39
  namespace grpc_core {
40
40
 
@@ -19,11 +19,11 @@
19
19
 
20
20
  #include <optional>
21
21
 
22
+ #include "src/core/util/env.h"
22
23
  #include "absl/flags/marshalling.h"
23
24
  #include "absl/log/check.h"
24
25
  #include "absl/strings/numbers.h"
25
26
  #include "absl/strings/str_join.h"
26
- #include "src/core/util/env.h"
27
27
 
28
28
  namespace grpc_core {
29
29
 
@@ -28,8 +28,6 @@
28
28
  #include <utility>
29
29
  #include <vector>
30
30
 
31
- #include "absl/status/statusor.h"
32
- #include "absl/strings/string_view.h"
33
31
  #include "src/core/credentials/transport/security_connector.h"
34
32
  #include "src/core/lib/channel/channel_args.h"
35
33
  #include "src/core/lib/promise/arena_promise.h"
@@ -41,6 +39,8 @@
41
39
  #include "src/core/util/ref_counted.h"
42
40
  #include "src/core/util/ref_counted_ptr.h"
43
41
  #include "src/core/util/unique_type_name.h"
42
+ #include "absl/status/statusor.h"
43
+ #include "absl/strings/string_view.h"
44
44
 
45
45
  // --- Constants. ---
46
46
 
@@ -22,12 +22,12 @@
22
22
  #include <type_traits>
23
23
  #include <utility>
24
24
 
25
- #include "absl/strings/string_view.h"
26
25
  #include "src/core/util/json/json.h"
27
26
  #include "src/core/util/json/json_args.h"
28
27
  #include "src/core/util/ref_counted.h"
29
28
  #include "src/core/util/ref_counted_ptr.h"
30
29
  #include "src/core/util/validation_errors.h"
30
+ #include "absl/strings/string_view.h"
31
31
 
32
32
  struct grpc_call_credentials;
33
33
 
@@ -22,8 +22,6 @@
22
22
  #include <memory>
23
23
  #include <string>
24
24
 
25
- #include "absl/strings/str_cat.h"
26
- #include "absl/strings/string_view.h"
27
25
  #include "src/core/config/core_configuration.h"
28
26
  #include "src/core/credentials/call/call_credentials.h"
29
27
  #include "src/core/credentials/call/call_creds_registry.h"
@@ -34,6 +32,8 @@
34
32
  #include "src/core/util/json/json_object_loader.h"
35
33
  #include "src/core/util/ref_counted_ptr.h"
36
34
  #include "src/core/util/validation_errors.h"
35
+ #include "absl/strings/str_cat.h"
36
+ #include "absl/strings/string_view.h"
37
37
 
38
38
  namespace grpc_core {
39
39
 
@@ -20,14 +20,14 @@
20
20
  #include <grpc/support/string_util.h>
21
21
  #include <string.h>
22
22
 
23
- #include "absl/log/log.h"
24
- #include "absl/strings/str_cat.h"
25
- #include "absl/strings/string_view.h"
26
23
  #include "src/core/call/metadata_batch.h"
27
24
  #include "src/core/credentials/transport/security_connector.h"
28
25
  #include "src/core/transport/auth_context.h"
29
26
  #include "src/core/util/grpc_check.h"
30
27
  #include "src/core/util/ref_counted_ptr.h"
28
+ #include "absl/log/log.h"
29
+ #include "absl/strings/str_cat.h"
30
+ #include "absl/strings/string_view.h"
31
31
 
32
32
  namespace grpc_core {
33
33
 
@@ -22,13 +22,13 @@
22
22
  #include <memory>
23
23
  #include <vector>
24
24
 
25
- #include "absl/strings/str_cat.h"
26
- #include "absl/strings/str_join.h"
27
25
  #include "src/core/call/metadata_batch.h"
28
26
  #include "src/core/lib/debug/trace.h"
29
27
  #include "src/core/lib/promise/try_seq.h"
30
28
  #include "src/core/util/grpc_check.h"
31
29
  #include "src/core/util/ref_counted_ptr.h"
30
+ #include "absl/strings/str_cat.h"
31
+ #include "absl/strings/str_join.h"
32
32
 
33
33
  grpc_core::ArenaPromise<absl::StatusOr<grpc_core::ClientMetadataHandle>>
34
34
  grpc_composite_call_credentials::GetRequestMetadata(
@@ -29,7 +29,6 @@
29
29
  #include <utility>
30
30
  #include <vector>
31
31
 
32
- #include "absl/status/statusor.h"
33
32
  #include "src/core/credentials/call/call_credentials.h"
34
33
  #include "src/core/credentials/transport/security_connector.h"
35
34
  #include "src/core/lib/channel/channel_args.h"
@@ -38,6 +37,7 @@
38
37
  #include "src/core/util/ref_counted_ptr.h"
39
38
  #include "src/core/util/unique_type_name.h"
40
39
  #include "src/core/util/useful.h"
40
+ #include "absl/status/statusor.h"
41
41
 
42
42
  class grpc_composite_call_credentials : public grpc_call_credentials {
43
43
  public: