grpc 1.60.0 → 1.61.0

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 (277) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +208 -165
  3. data/include/grpc/event_engine/event_engine.h +59 -12
  4. data/include/grpc/event_engine/internal/memory_allocator_impl.h +6 -0
  5. data/include/grpc/event_engine/internal/slice_cast.h +12 -0
  6. data/include/grpc/event_engine/memory_allocator.h +3 -1
  7. data/include/grpc/event_engine/slice.h +5 -0
  8. data/include/grpc/grpc_security.h +22 -1
  9. data/include/grpc/impl/call.h +29 -0
  10. data/include/grpc/impl/channel_arg_names.h +12 -1
  11. data/include/grpc/impl/slice_type.h +1 -1
  12. data/include/grpc/module.modulemap +1 -0
  13. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +54 -7
  14. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +20 -6
  15. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +10 -13
  16. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -10
  17. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +326 -0
  18. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +143 -0
  19. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -2
  20. data/src/core/ext/filters/client_channel/client_channel.cc +32 -6
  21. data/src/core/ext/filters/client_channel/client_channel_internal.h +2 -0
  22. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +1 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +54 -21
  24. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +3 -2
  25. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +2 -1
  26. data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.cc +12 -15
  27. data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h +8 -5
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +139 -92
  29. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +9 -4
  30. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +9 -4
  31. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +10 -11
  32. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +94 -93
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +5 -3
  34. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +12 -15
  35. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +38 -16
  36. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +25 -28
  37. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +10 -10
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +37 -35
  39. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -9
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +504 -461
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +232 -122
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -6
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +642 -251
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +2 -6
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +7 -8
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +2 -1
  47. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +3 -1
  48. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
  49. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -2
  50. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +6 -8
  51. data/src/core/ext/filters/client_channel/resolver/xds/xds_dependency_manager.cc +1031 -0
  52. data/src/core/ext/filters/client_channel/resolver/xds/xds_dependency_manager.h +277 -0
  53. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +128 -270
  54. data/src/core/ext/filters/client_channel/resolver/xds/{xds_resolver.h → xds_resolver_attributes.h} +5 -4
  55. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_trace.cc +25 -0
  56. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_trace.h +30 -0
  57. data/src/core/ext/filters/client_channel/retry_filter.cc +1 -0
  58. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +35 -17
  59. data/src/core/ext/filters/deadline/deadline_filter.cc +12 -0
  60. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +17 -13
  61. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +13 -4
  62. data/src/core/ext/filters/http/client/http_client_filter.cc +23 -32
  63. data/src/core/ext/filters/http/client/http_client_filter.h +10 -5
  64. data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
  65. data/src/core/ext/filters/http/client_authority_filter.h +12 -4
  66. data/src/core/ext/filters/http/http_filters_plugin.cc +42 -20
  67. data/src/core/ext/filters/http/message_compress/compression_filter.cc +55 -80
  68. data/src/core/ext/filters/http/message_compress/compression_filter.h +54 -12
  69. data/src/core/ext/filters/http/message_compress/legacy_compression_filter.cc +325 -0
  70. data/src/core/ext/filters/http/message_compress/legacy_compression_filter.h +139 -0
  71. data/src/core/ext/filters/http/server/http_server_filter.cc +41 -41
  72. data/src/core/ext/filters/http/server/http_server_filter.h +11 -4
  73. data/src/core/ext/filters/message_size/message_size_filter.cc +56 -76
  74. data/src/core/ext/filters/message_size/message_size_filter.h +35 -23
  75. data/src/core/ext/filters/rbac/rbac_filter.cc +15 -11
  76. data/src/core/ext/filters/rbac/rbac_filter.h +11 -4
  77. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +25 -13
  78. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +47 -50
  79. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +21 -4
  80. data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
  81. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -2
  82. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +11 -2
  83. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +67 -145
  84. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -3
  85. data/src/core/ext/transport/chttp2/transport/flow_control.cc +21 -82
  86. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -8
  87. data/src/core/ext/transport/chttp2/transport/frame.cc +506 -0
  88. data/src/core/ext/transport/chttp2/transport/frame.h +214 -0
  89. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -1
  90. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +33 -79
  91. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -7
  92. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +122 -32
  93. data/src/core/ext/transport/chttp2/transport/http2_settings.h +142 -37
  94. data/src/core/ext/transport/chttp2/transport/internal.h +1 -22
  95. data/src/core/ext/transport/chttp2/transport/parsing.cc +23 -37
  96. data/src/core/ext/transport/chttp2/transport/writing.cc +26 -58
  97. data/src/core/ext/transport/inproc/inproc_transport.cc +172 -13
  98. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +712 -0
  99. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +151 -0
  100. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +33 -0
  101. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +133 -0
  102. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +50 -0
  103. data/src/core/ext/xds/certificate_provider_store.cc +2 -1
  104. data/src/core/ext/xds/certificate_provider_store.h +0 -5
  105. data/src/core/ext/xds/xds_api.cc +31 -18
  106. data/src/core/ext/xds/xds_api.h +2 -2
  107. data/src/core/ext/xds/xds_bootstrap.h +3 -0
  108. data/src/core/ext/xds/xds_certificate_provider.cc +88 -287
  109. data/src/core/ext/xds/xds_certificate_provider.h +44 -111
  110. data/src/core/ext/xds/xds_client.cc +420 -414
  111. data/src/core/ext/xds/xds_client.h +31 -22
  112. data/src/core/ext/xds/xds_client_grpc.cc +3 -1
  113. data/src/core/ext/xds/xds_cluster.cc +104 -11
  114. data/src/core/ext/xds/xds_cluster.h +9 -1
  115. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +9 -5
  116. data/src/core/ext/xds/xds_common_types.cc +14 -10
  117. data/src/core/ext/xds/xds_endpoint.cc +9 -4
  118. data/src/core/ext/xds/xds_endpoint.h +5 -1
  119. data/src/core/ext/xds/xds_health_status.cc +12 -2
  120. data/src/core/ext/xds/xds_health_status.h +4 -2
  121. data/src/core/ext/xds/xds_http_rbac_filter.cc +5 -3
  122. data/src/core/ext/xds/xds_listener.cc +14 -8
  123. data/src/core/ext/xds/xds_resource_type_impl.h +6 -4
  124. data/src/core/ext/xds/xds_route_config.cc +34 -22
  125. data/src/core/ext/xds/xds_route_config.h +1 -0
  126. data/src/core/ext/xds/xds_server_config_fetcher.cc +61 -57
  127. data/src/core/ext/xds/xds_transport.h +3 -0
  128. data/src/core/ext/xds/xds_transport_grpc.cc +47 -50
  129. data/src/core/ext/xds/xds_transport_grpc.h +4 -0
  130. data/src/core/lib/channel/call_tracer.cc +12 -0
  131. data/src/core/lib/channel/call_tracer.h +17 -3
  132. data/src/core/lib/channel/channel_args.cc +24 -14
  133. data/src/core/lib/channel/channel_args.h +74 -13
  134. data/src/core/lib/channel/channel_stack.cc +27 -0
  135. data/src/core/lib/channel/channel_stack.h +10 -10
  136. data/src/core/lib/channel/connected_channel.cc +64 -18
  137. data/src/core/lib/channel/promise_based_filter.h +1041 -1
  138. data/src/core/lib/channel/server_call_tracer_filter.cc +43 -35
  139. data/src/core/lib/compression/compression_internal.cc +0 -3
  140. data/src/core/lib/event_engine/ares_resolver.cc +35 -14
  141. data/src/core/lib/event_engine/ares_resolver.h +9 -10
  142. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +8 -1
  143. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +132 -0
  144. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +61 -0
  145. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +52 -36
  146. data/src/core/lib/event_engine/posix_engine/posix_engine.h +4 -9
  147. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +11 -3
  148. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +9 -2
  149. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +7 -0
  150. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +17 -27
  151. data/src/core/lib/event_engine/posix_engine/timer_manager.h +0 -3
  152. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +55 -0
  153. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +114 -0
  154. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +51 -0
  155. data/src/core/lib/event_engine/windows/windows_engine.cc +7 -7
  156. data/src/core/lib/experiments/config.cc +13 -0
  157. data/src/core/lib/experiments/config.h +3 -0
  158. data/src/core/lib/experiments/experiments.cc +245 -366
  159. data/src/core/lib/experiments/experiments.h +50 -156
  160. data/src/core/lib/gprpp/debug_location.h +13 -0
  161. data/src/core/lib/gprpp/dual_ref_counted.h +36 -7
  162. data/src/core/lib/gprpp/orphanable.h +27 -0
  163. data/src/core/lib/gprpp/ref_counted.h +63 -22
  164. data/src/core/lib/gprpp/ref_counted_ptr.h +70 -27
  165. data/src/core/lib/gprpp/ref_counted_string.h +13 -0
  166. data/src/core/lib/gprpp/status_helper.cc +1 -2
  167. data/src/core/lib/iomgr/combiner.cc +15 -51
  168. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +31 -0
  169. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +16 -0
  170. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -3
  171. data/src/core/lib/load_balancing/lb_policy.h +1 -1
  172. data/src/core/lib/promise/activity.cc +17 -2
  173. data/src/core/lib/promise/activity.h +5 -4
  174. data/src/core/lib/promise/all_ok.h +80 -0
  175. data/src/core/lib/promise/detail/join_state.h +2077 -0
  176. data/src/core/lib/promise/detail/promise_factory.h +1 -0
  177. data/src/core/lib/promise/detail/promise_like.h +8 -1
  178. data/src/core/lib/promise/detail/seq_state.h +3458 -150
  179. data/src/core/lib/promise/detail/status.h +42 -5
  180. data/src/core/lib/promise/for_each.h +13 -1
  181. data/src/core/lib/promise/if.h +4 -0
  182. data/src/core/lib/promise/latch.h +6 -3
  183. data/src/core/lib/promise/party.cc +33 -31
  184. data/src/core/lib/promise/party.h +142 -6
  185. data/src/core/lib/promise/poll.h +39 -13
  186. data/src/core/lib/promise/promise.h +4 -0
  187. data/src/core/lib/promise/seq.h +107 -7
  188. data/src/core/lib/promise/status_flag.h +196 -0
  189. data/src/core/lib/promise/try_join.h +132 -0
  190. data/src/core/lib/promise/try_seq.h +132 -10
  191. data/src/core/lib/resolver/endpoint_addresses.cc +0 -1
  192. data/src/core/lib/resolver/endpoint_addresses.h +48 -0
  193. data/src/core/lib/resource_quota/arena.h +2 -2
  194. data/src/core/lib/resource_quota/memory_quota.cc +57 -8
  195. data/src/core/lib/resource_quota/memory_quota.h +6 -0
  196. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +14 -11
  197. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +14 -5
  198. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -0
  199. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -0
  200. data/src/core/lib/security/credentials/external/external_account_credentials.cc +28 -20
  201. data/src/core/lib/security/credentials/external/external_account_credentials.h +4 -0
  202. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +4 -0
  203. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -0
  204. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -0
  205. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +4 -0
  206. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -1
  207. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +0 -3
  208. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +12 -0
  209. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +22 -5
  210. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +1 -5
  211. data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -0
  212. data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -28
  213. data/src/core/lib/security/credentials/xds/xds_credentials.h +2 -4
  214. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -3
  215. data/src/core/lib/security/transport/auth_filters.h +71 -4
  216. data/src/core/lib/security/transport/client_auth_filter.cc +2 -4
  217. data/src/core/lib/security/transport/legacy_server_auth_filter.cc +244 -0
  218. data/src/core/lib/security/transport/server_auth_filter.cc +70 -90
  219. data/src/core/lib/slice/slice_buffer.h +3 -0
  220. data/src/core/lib/surface/builtins.cc +1 -1
  221. data/src/core/lib/surface/call.cc +683 -196
  222. data/src/core/lib/surface/call.h +26 -13
  223. data/src/core/lib/surface/call_trace.cc +42 -1
  224. data/src/core/lib/surface/channel.cc +0 -1
  225. data/src/core/lib/surface/channel.h +0 -6
  226. data/src/core/lib/surface/channel_init.h +26 -0
  227. data/src/core/lib/surface/init.cc +14 -8
  228. data/src/core/lib/surface/server.cc +256 -237
  229. data/src/core/lib/surface/server.h +26 -54
  230. data/src/core/lib/surface/version.cc +2 -2
  231. data/src/core/lib/surface/wait_for_cq_end_op.h +94 -0
  232. data/src/core/lib/transport/call_final_info.cc +38 -0
  233. data/src/core/lib/transport/call_final_info.h +54 -0
  234. data/src/core/lib/transport/connectivity_state.cc +3 -2
  235. data/src/core/lib/transport/connectivity_state.h +4 -0
  236. data/src/core/lib/transport/metadata_batch.h +4 -4
  237. data/src/core/lib/transport/transport.cc +70 -19
  238. data/src/core/lib/transport/transport.h +395 -25
  239. data/src/core/plugin_registry/grpc_plugin_registry.cc +3 -0
  240. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -3
  241. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  242. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  243. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
  244. data/src/core/tsi/ssl_transport_security.cc +65 -43
  245. data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
  246. data/src/ruby/ext/grpc/rb_grpc.c +0 -1
  247. data/src/ruby/ext/grpc/rb_grpc.h +0 -2
  248. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  249. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  250. data/src/ruby/lib/grpc/version.rb +1 -1
  251. data/third_party/upb/upb/reflection/def_pool.h +2 -2
  252. data/third_party/zlib/adler32.c +5 -27
  253. data/third_party/zlib/compress.c +5 -16
  254. data/third_party/zlib/crc32.c +86 -162
  255. data/third_party/zlib/deflate.c +233 -336
  256. data/third_party/zlib/deflate.h +8 -8
  257. data/third_party/zlib/gzguts.h +11 -12
  258. data/third_party/zlib/infback.c +7 -23
  259. data/third_party/zlib/inffast.c +1 -4
  260. data/third_party/zlib/inffast.h +1 -1
  261. data/third_party/zlib/inflate.c +30 -99
  262. data/third_party/zlib/inftrees.c +6 -11
  263. data/third_party/zlib/inftrees.h +3 -3
  264. data/third_party/zlib/trees.c +224 -302
  265. data/third_party/zlib/uncompr.c +4 -12
  266. data/third_party/zlib/zconf.h +6 -2
  267. data/third_party/zlib/zlib.h +191 -188
  268. data/third_party/zlib/zutil.c +16 -44
  269. data/third_party/zlib/zutil.h +10 -10
  270. metadata +35 -13
  271. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +0 -1173
  272. data/src/core/lib/event_engine/memory_allocator.cc +0 -74
  273. data/src/core/lib/transport/pid_controller.cc +0 -51
  274. data/src/core/lib/transport/pid_controller.h +0 -116
  275. data/third_party/upb/upb/collections/array.h +0 -17
  276. data/third_party/upb/upb/collections/map.h +0 -17
  277. data/third_party/upb/upb/upb.hpp +0 -18
@@ -113,14 +113,14 @@ class HttpAnnotation : public CallTracerAnnotationInterface::Annotation {
113
113
  };
114
114
 
115
115
  HttpAnnotation(
116
- Type type, Timestamp time,
116
+ Type type, gpr_timespec time,
117
117
  absl::optional<chttp2::TransportFlowControl::Stats> transport_stats,
118
118
  absl::optional<chttp2::StreamFlowControl::Stats> stream_stats);
119
119
 
120
120
  std::string ToString() const override;
121
121
 
122
122
  Type http_type() const { return type_; }
123
- Timestamp time() const { return time_; }
123
+ gpr_timespec time() const { return time_; }
124
124
  absl::optional<chttp2::TransportFlowControl::Stats> transport_stats() const {
125
125
  return transport_stats_;
126
126
  }
@@ -130,7 +130,7 @@ class HttpAnnotation : public CallTracerAnnotationInterface::Annotation {
130
130
 
131
131
  private:
132
132
  const Type type_;
133
- const Timestamp time_;
133
+ const gpr_timespec time_;
134
134
  absl::optional<chttp2::TransportFlowControl::Stats> transport_stats_;
135
135
  absl::optional<chttp2::StreamFlowControl::Stats> stream_stats_;
136
136
  };
@@ -104,16 +104,7 @@ TransportFlowControl::TransportFlowControl(absl::string_view name,
104
104
  MemoryOwner* memory_owner)
105
105
  : memory_owner_(memory_owner),
106
106
  enable_bdp_probe_(enable_bdp_probe),
107
- bdp_estimator_(name),
108
- pid_controller_(PidController::Args()
109
- .set_gain_p(4)
110
- .set_gain_i(8)
111
- .set_gain_d(0)
112
- .set_initial_control_value(TargetLogBdp())
113
- .set_min_control_value(-1)
114
- .set_max_control_value(25)
115
- .set_integral_range(10)),
116
- last_pid_update_(Timestamp::Now()) {}
107
+ bdp_estimator_(name) {}
117
108
 
118
109
  uint32_t TransportFlowControl::DesiredAnnounceSize(bool writing_anyway) const {
119
110
  const uint32_t target_announced_window =
@@ -184,41 +175,6 @@ FlowControlAction TransportFlowControl::UpdateAction(FlowControlAction action) {
184
175
  return action;
185
176
  }
186
177
 
187
- // Take in a target and modifies it based on the memory pressure of the system
188
- static double AdjustForMemoryPressure(double memory_pressure, double target) {
189
- // do not increase window under heavy memory pressure.
190
- static const double kLowMemPressure = 0.1;
191
- static const double kZeroTarget = 22;
192
- static const double kHighMemPressure = 0.8;
193
- static const double kMaxMemPressure = 0.9;
194
- if (memory_pressure < kLowMemPressure && target < kZeroTarget) {
195
- target = (target - kZeroTarget) * memory_pressure / kLowMemPressure +
196
- kZeroTarget;
197
- } else if (memory_pressure > kHighMemPressure) {
198
- target *= 1 - std::min(1.0, (memory_pressure - kHighMemPressure) /
199
- (kMaxMemPressure - kHighMemPressure));
200
- }
201
- return target;
202
- }
203
-
204
- double TransportFlowControl::TargetLogBdp() {
205
- return AdjustForMemoryPressure(
206
- memory_owner_->is_valid()
207
- ? memory_owner_->GetPressureInfo().pressure_control_value
208
- : 0.0,
209
- 1 + log2(bdp_estimator_.EstimateBdp()));
210
- }
211
-
212
- double TransportFlowControl::SmoothLogBdp(double value) {
213
- Timestamp now = Timestamp::Now();
214
- double bdp_error = value - pid_controller_.last_control_value();
215
- const double dt = (now - last_pid_update_).seconds();
216
- last_pid_update_ = now;
217
- // Limit dt to 100ms
218
- const double kMaxDt = 0.1;
219
- return pid_controller_.Update(bdp_error, dt > kMaxDt ? kMaxDt : dt);
220
- }
221
-
222
178
  double
223
179
  TransportFlowControl::TargetInitialWindowSizeBasedOnMemoryPressureAndBdp()
224
180
  const {
@@ -274,18 +230,14 @@ TransportFlowControl::TargetInitialWindowSizeBasedOnMemoryPressureAndBdp()
274
230
  }
275
231
 
276
232
  void TransportFlowControl::UpdateSetting(
277
- grpc_chttp2_setting_id id, int64_t* desired_value,
278
- uint32_t new_desired_value, FlowControlAction* action,
233
+ absl::string_view name, int64_t* desired_value, uint32_t new_desired_value,
234
+ FlowControlAction* action,
279
235
  FlowControlAction& (FlowControlAction::*set)(FlowControlAction::Urgency,
280
236
  uint32_t)) {
281
- new_desired_value =
282
- Clamp(new_desired_value, grpc_chttp2_settings_parameters[id].min_value,
283
- grpc_chttp2_settings_parameters[id].max_value);
284
237
  if (new_desired_value != *desired_value) {
285
238
  if (grpc_flowctl_trace.enabled()) {
286
239
  gpr_log(GPR_INFO, "[flowctl] UPDATE SETTING %s from %" PRId64 " to %d",
287
- grpc_chttp2_settings_parameters[id].name, *desired_value,
288
- new_desired_value);
240
+ std::string(name).c_str(), *desired_value, new_desired_value);
289
241
  }
290
242
  // Reaching zero can only happen for initial window size, and if it occurs
291
243
  // we really want to wake up writes and ensure all the queued stream
@@ -323,10 +275,8 @@ FlowControlAction TransportFlowControl::PeriodicUpdate() {
323
275
  // TODO(ncteisen): experiment with setting target to be huge under low
324
276
  // memory pressure.
325
277
  uint32_t target = static_cast<uint32_t>(RoundUpToPowerOf2(
326
- Clamp(IsMemoryPressureControllerEnabled()
327
- ? TargetInitialWindowSizeBasedOnMemoryPressureAndBdp()
328
- : pow(2, SmoothLogBdp(TargetLogBdp())),
329
- 0.0, static_cast<double>(kMaxInitialWindowSize))));
278
+ Clamp(TargetInitialWindowSizeBasedOnMemoryPressureAndBdp(), 0.0,
279
+ static_cast<double>(kMaxInitialWindowSize))));
330
280
  if (target < kMinPositiveInitialWindowSize) target = 0;
331
281
  if (g_test_only_transport_target_window_estimates_mocker != nullptr) {
332
282
  // Hook for simulating unusual flow control situations in tests.
@@ -336,13 +286,15 @@ FlowControlAction TransportFlowControl::PeriodicUpdate() {
336
286
  }
337
287
  // Though initial window 'could' drop to 0, we keep the floor at
338
288
  // kMinInitialWindowSize
339
- UpdateSetting(GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
340
- &target_initial_window_size_, target, &action,
341
- &FlowControlAction::set_send_initial_window_update);
289
+ UpdateSetting(Http2Settings::initial_window_size_name(),
290
+ &target_initial_window_size_,
291
+ std::min(target, Http2Settings::max_initial_window_size()),
292
+ &action, &FlowControlAction::set_send_initial_window_update);
342
293
  // we target the max of BDP or bandwidth in microseconds.
343
- UpdateSetting(GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE, &target_frame_size_,
344
- target, &action,
345
- &FlowControlAction::set_send_max_frame_size_update);
294
+ UpdateSetting(Http2Settings::max_frame_size_name(), &target_frame_size_,
295
+ Clamp(target, Http2Settings::min_max_frame_size(),
296
+ Http2Settings::max_max_frame_size()),
297
+ &action, &FlowControlAction::set_send_max_frame_size_update);
346
298
 
347
299
  if (IsTcpFrameSizeTuningEnabled()) {
348
300
  // Advertise PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE to peer. By advertising
@@ -352,10 +304,11 @@ FlowControlAction TransportFlowControl::PeriodicUpdate() {
352
304
  // Clamp(target_frame_size_ * 2, 16384, 0x7fffffff). In the future, this
353
305
  // maybe updated to a different function of the memory pressure.
354
306
  UpdateSetting(
355
- GRPC_CHTTP2_SETTINGS_GRPC_PREFERRED_RECEIVE_CRYPTO_FRAME_SIZE,
307
+ Http2Settings::preferred_receive_crypto_message_size_name(),
356
308
  &target_preferred_rx_crypto_frame_size_,
357
- Clamp(static_cast<unsigned int>(target_frame_size_ * 2), 16384u,
358
- 0x7ffffffu),
309
+ Clamp(static_cast<unsigned int>(target_frame_size_ * 2),
310
+ Http2Settings::min_preferred_receive_crypto_message_size(),
311
+ Http2Settings::max_preferred_receive_crypto_message_size()),
359
312
  &action,
360
313
  &FlowControlAction::set_preferred_rx_crypto_frame_size_update);
361
314
  }
@@ -422,23 +375,9 @@ FlowControlAction StreamFlowControl::UpdateAction(FlowControlAction action) {
422
375
  }
423
376
  // min_progress_size_ > 0 means we have a reader ready to read.
424
377
  if (min_progress_size_ > 0) {
425
- if (IsLazierStreamUpdatesEnabled()) {
426
- if (announced_window_delta_ <=
427
- -static_cast<int64_t>(tfc_->sent_init_window()) / 2) {
428
- urgency = FlowControlAction::Urgency::UPDATE_IMMEDIATELY;
429
- }
430
- } else {
431
- // If we're into initial window to receive that data we should wake up
432
- // and send an update.
433
- if (announced_window_delta_ < 0) {
434
- urgency = FlowControlAction::Urgency::UPDATE_IMMEDIATELY;
435
- } else if (announced_window_delta_ == 0 &&
436
- tfc_->queued_init_window() == 0) {
437
- // Special case when initial window size is zero, meaning that
438
- // announced_window_delta cannot become negative (it may already be so
439
- // however).
440
- urgency = FlowControlAction::Urgency::UPDATE_IMMEDIATELY;
441
- }
378
+ if (announced_window_delta_ <=
379
+ -static_cast<int64_t>(tfc_->sent_init_window()) / 2) {
380
+ urgency = FlowControlAction::Urgency::UPDATE_IMMEDIATELY;
442
381
  }
443
382
  }
444
383
  action.set_send_stream_update(urgency);
@@ -40,7 +40,6 @@
40
40
  #include "src/core/lib/gprpp/time.h"
41
41
  #include "src/core/lib/resource_quota/memory_quota.h"
42
42
  #include "src/core/lib/transport/bdp_estimator.h"
43
- #include "src/core/lib/transport/pid_controller.h"
44
43
 
45
44
  extern grpc_core::TraceFlag grpc_flowctl_trace;
46
45
 
@@ -330,10 +329,8 @@ class TransportFlowControl final {
330
329
  }
331
330
 
332
331
  private:
333
- double TargetLogBdp();
334
- double SmoothLogBdp(double value);
335
332
  double TargetInitialWindowSizeBasedOnMemoryPressureAndBdp() const;
336
- static void UpdateSetting(grpc_chttp2_setting_id id, int64_t* desired_value,
333
+ static void UpdateSetting(absl::string_view name, int64_t* desired_value,
337
334
  uint32_t new_desired_value,
338
335
  FlowControlAction* action,
339
336
  FlowControlAction& (FlowControlAction::*set)(
@@ -359,10 +356,6 @@ class TransportFlowControl final {
359
356
  // bdp estimation
360
357
  BdpEstimator bdp_estimator_;
361
358
 
362
- // pid controller
363
- PidController pid_controller_;
364
- Timestamp last_pid_update_;
365
-
366
359
  int64_t remote_window_ = kDefaultWindow;
367
360
  int64_t target_initial_window_size_ = kDefaultWindow;
368
361
  int64_t target_frame_size_ = kDefaultFrameSize;