grpc 1.58.0 → 1.59.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (551) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +48 -33
  3. data/include/grpc/event_engine/event_engine.h +6 -10
  4. data/include/grpc/impl/channel_arg_names.h +4 -0
  5. data/include/grpc/support/port_platform.h +74 -1
  6. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +22 -9
  7. data/src/core/ext/filters/client_channel/client_channel.cc +422 -56
  8. data/src/core/ext/filters/client_channel/client_channel.h +52 -8
  9. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +15 -1
  10. data/src/core/ext/filters/client_channel/dynamic_filters.h +2 -0
  11. data/src/core/ext/filters/client_channel/{http_proxy.cc → http_proxy_mapper.cc} +1 -1
  12. data/src/core/ext/filters/client_channel/{http_proxy.h → http_proxy_mapper.h} +3 -3
  13. data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.cc +188 -0
  14. data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h +214 -0
  15. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -4
  16. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +41 -6
  17. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +5 -3
  18. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +32 -103
  19. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +0 -7
  20. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +416 -139
  21. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h +16 -0
  22. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +434 -459
  23. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +410 -26
  24. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +14 -46
  25. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +851 -57
  26. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +16 -10
  27. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +47 -32
  28. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +55 -3
  29. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +105 -175
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +14 -7
  31. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +24 -6
  32. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +36 -2
  33. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +54 -44
  34. data/src/core/ext/filters/client_channel/subchannel.cc +33 -0
  35. data/src/core/ext/filters/client_channel/subchannel.h +9 -0
  36. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +1 -1
  37. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +11 -6
  38. data/src/core/ext/transport/chttp2/transport/flow_control.cc +28 -22
  39. data/src/core/ext/transport/chttp2/transport/flow_control.h +27 -4
  40. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  41. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -1
  42. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +9 -0
  43. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -1
  44. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -1
  45. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -1
  46. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +1 -1
  47. data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -1
  48. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -1
  49. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
  50. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +19 -10
  51. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +3 -1
  52. data/src/core/ext/transport/chttp2/transport/internal.h +66 -47
  53. data/src/core/ext/transport/chttp2/transport/{frame.h → legacy_frame.h} +3 -3
  54. data/src/core/ext/transport/chttp2/transport/parsing.cc +4 -2
  55. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +10 -0
  56. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +4 -0
  57. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +1 -1
  58. data/src/core/ext/transport/chttp2/transport/writing.cc +2 -1
  59. data/src/core/ext/transport/inproc/inproc_transport.cc +9 -0
  60. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +16 -18
  61. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +75 -83
  62. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +27 -29
  63. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +102 -110
  64. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +16 -18
  65. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +73 -81
  66. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +65 -67
  67. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +294 -302
  68. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +4 -6
  69. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +20 -28
  70. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -7
  71. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +24 -32
  72. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -9
  73. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +19 -27
  74. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -6
  75. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +10 -18
  76. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -6
  77. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +10 -18
  78. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +42 -44
  79. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +141 -149
  80. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -5
  81. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +8 -16
  82. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +5 -7
  83. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -9
  84. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +3 -5
  85. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +4 -12
  86. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +36 -38
  87. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +157 -165
  88. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +87 -89
  89. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +372 -380
  90. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +13 -15
  91. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +55 -63
  92. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +111 -113
  93. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +441 -449
  94. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -5
  95. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +8 -16
  96. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +23 -25
  97. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +88 -96
  98. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +40 -42
  99. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +180 -188
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +26 -28
  101. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +108 -116
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +3 -5
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +9 -17
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +65 -67
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +245 -253
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +27 -29
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +119 -127
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -4
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -14
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +3 -5
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +8 -16
  112. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +4 -6
  113. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +20 -28
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +49 -51
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +184 -192
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +49 -51
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +225 -233
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -6
  119. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +13 -21
  120. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +63 -65
  121. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +246 -254
  122. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +5 -7
  123. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +19 -27
  124. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +5 -7
  125. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +19 -27
  126. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +8 -10
  127. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +30 -38
  128. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +7 -9
  129. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +28 -36
  130. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +3 -5
  131. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +9 -17
  132. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +12 -14
  133. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +48 -56
  134. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +23 -25
  135. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +92 -100
  136. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +27 -29
  137. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +108 -116
  138. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -4
  139. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +5 -13
  140. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +38 -40
  141. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +167 -175
  142. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +34 -36
  143. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +162 -170
  144. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +10 -12
  145. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +37 -45
  146. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -6
  147. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +13 -21
  148. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +6 -8
  149. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +18 -26
  150. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +22 -24
  151. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +97 -105
  152. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +24 -26
  153. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +111 -119
  154. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +43 -45
  155. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +183 -191
  156. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +20 -22
  157. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +102 -110
  158. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +253 -255
  159. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +1108 -1116
  160. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +8 -10
  161. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +31 -39
  162. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +35 -37
  163. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +150 -158
  164. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +4 -6
  165. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +10 -18
  166. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -5
  167. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +8 -16
  168. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +4 -6
  169. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +13 -21
  170. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -7
  171. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +19 -27
  172. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +14 -16
  173. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +53 -61
  174. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +3 -5
  175. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +8 -16
  176. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -4
  177. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +5 -13
  178. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +7 -9
  179. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +24 -32
  180. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -3
  181. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -9
  182. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +7 -9
  183. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +23 -31
  184. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +8 -10
  185. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +23 -31
  186. data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.c +114 -116
  187. data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.h +372 -380
  188. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -4
  189. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +9 -17
  190. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +8 -10
  191. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -38
  192. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +21 -23
  193. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +81 -89
  194. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +7 -9
  195. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +24 -32
  196. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +12 -14
  197. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +52 -60
  198. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +4 -6
  199. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +14 -22
  200. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +114 -116
  201. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +468 -476
  202. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +2 -4
  203. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +5 -13
  204. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +7 -9
  205. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +25 -33
  206. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +11 -13
  207. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +40 -48
  208. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.c +2 -4
  209. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +4 -12
  210. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +8 -10
  211. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +27 -35
  212. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +2 -4
  213. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +5 -13
  214. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +1 -3
  215. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -9
  216. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +35 -37
  217. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +165 -173
  218. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +9 -11
  219. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +32 -40
  220. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +39 -41
  221. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +169 -177
  222. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +4 -6
  223. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +16 -24
  224. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -3
  225. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +1 -9
  226. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +55 -57
  227. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +241 -249
  228. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +7 -9
  229. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +31 -39
  230. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +23 -25
  231. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +98 -106
  232. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -6
  233. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +11 -19
  234. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -6
  235. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +18 -26
  236. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +3 -5
  237. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +9 -17
  238. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +6 -8
  239. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +16 -24
  240. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +6 -8
  241. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +24 -32
  242. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -5
  243. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +13 -21
  244. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -5
  245. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +10 -18
  246. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -4
  247. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -14
  248. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +6 -8
  249. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +20 -28
  250. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +1 -3
  251. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +1 -9
  252. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +8 -10
  253. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +33 -41
  254. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +4 -6
  255. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +18 -26
  256. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +8 -10
  257. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +31 -39
  258. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +8 -10
  259. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +34 -42
  260. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +14 -16
  261. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +47 -55
  262. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +4 -6
  263. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +13 -21
  264. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +1 -3
  265. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -9
  266. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -4
  267. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +4 -12
  268. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +4 -6
  269. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +10 -18
  270. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +7 -9
  271. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +19 -27
  272. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +6 -8
  273. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +20 -28
  274. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +1 -3
  275. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +1 -9
  276. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -6
  277. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +10 -18
  278. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +4 -6
  279. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +12 -20
  280. data/src/core/ext/upb-generated/google/api/annotations.upb.c +2 -4
  281. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -9
  282. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +45 -47
  283. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +190 -198
  284. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +54 -56
  285. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +210 -218
  286. data/src/core/ext/upb-generated/google/api/http.upb.c +15 -17
  287. data/src/core/ext/upb-generated/google/api/http.upb.h +60 -68
  288. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -6
  289. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +15 -23
  290. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -5
  291. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -15
  292. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +359 -204
  293. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1340 -760
  294. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -5
  295. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -15
  296. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -3
  297. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -9
  298. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +11 -13
  299. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +43 -51
  300. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -5
  301. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -15
  302. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +10 -12
  303. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +28 -36
  304. data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -6
  305. data/src/core/ext/upb-generated/google/rpc/status.upb.h +15 -23
  306. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +11 -13
  307. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +35 -43
  308. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +10 -12
  309. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +28 -36
  310. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +48 -50
  311. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +190 -198
  312. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -7
  313. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +15 -23
  314. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +3 -5
  315. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +7 -15
  316. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +21 -23
  317. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +80 -88
  318. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +9 -11
  319. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +29 -37
  320. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +32 -34
  321. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +147 -155
  322. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +10 -12
  323. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +13 -21
  324. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +4 -6
  325. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -15
  326. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +2 -4
  327. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -9
  328. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +4 -6
  329. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -15
  330. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +3 -5
  331. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +4 -12
  332. data/src/core/ext/upb-generated/validate/validate.upb.c +201 -203
  333. data/src/core/ext/upb-generated/validate/validate.upb.h +924 -932
  334. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +10 -12
  335. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +13 -21
  336. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +4 -6
  337. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -15
  338. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +2 -4
  339. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +1 -9
  340. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +9 -11
  341. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +16 -24
  342. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +3 -5
  343. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +4 -12
  344. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -4
  345. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +4 -12
  346. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +3 -5
  347. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +8 -16
  348. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +6 -8
  349. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +20 -28
  350. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +4 -6
  351. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +9 -17
  352. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -5
  353. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +8 -16
  354. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +4 -6
  355. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +12 -20
  356. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +9 -11
  357. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +35 -43
  358. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -7
  359. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +14 -22
  360. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +16 -18
  361. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +43 -51
  362. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +3 -5
  363. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +13 -21
  364. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +2 -4
  365. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +5 -13
  366. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +4 -6
  367. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +21 -29
  368. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +1 -3
  369. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +1 -9
  370. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +5 -7
  371. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +24 -32
  372. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +24 -26
  373. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +103 -111
  374. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +10 -12
  375. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +61 -69
  376. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +3 -5
  377. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +9 -17
  378. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +8 -10
  379. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +33 -41
  380. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +5 -7
  381. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +18 -26
  382. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +7 -9
  383. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +19 -27
  384. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -5
  385. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +8 -16
  386. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +367 -290
  387. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +10 -0
  388. data/src/core/ext/xds/xds_client.cc +6 -9
  389. data/src/core/ext/xds/xds_client.h +2 -2
  390. data/src/core/ext/xds/xds_cluster.cc +30 -42
  391. data/src/core/ext/xds/xds_cluster.h +0 -4
  392. data/src/core/ext/xds/xds_endpoint.cc +12 -19
  393. data/src/core/ext/xds/xds_endpoint.h +0 -1
  394. data/src/core/ext/xds/xds_http_filters.cc +1 -4
  395. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +1 -4
  396. data/src/core/ext/xds/xds_listener.cc +14 -14
  397. data/src/core/ext/xds/xds_listener.h +13 -3
  398. data/src/core/ext/xds/xds_resource_type.h +1 -7
  399. data/src/core/ext/xds/xds_resource_type_impl.h +9 -11
  400. data/src/core/ext/xds/xds_route_config.cc +10 -11
  401. data/src/core/ext/xds/xds_route_config.h +1 -1
  402. data/src/core/ext/xds/xds_server_config_fetcher.cc +53 -28
  403. data/src/core/ext/xds/xds_transport_grpc.cc +11 -1
  404. data/src/core/lib/backoff/random_early_detection.cc +4 -2
  405. data/src/core/lib/backoff/random_early_detection.h +2 -4
  406. data/src/core/lib/channel/call_tracer.cc +7 -1
  407. data/src/core/lib/channel/call_tracer.h +4 -1
  408. data/src/core/lib/channel/channelz_registry.h +4 -2
  409. data/src/core/lib/channel/connected_channel.cc +1 -1
  410. data/src/core/lib/config/config_vars.h +1 -1
  411. data/src/core/lib/config/core_configuration.cc +2 -1
  412. data/src/core/lib/config/core_configuration.h +5 -4
  413. data/src/core/lib/debug/stats_data.cc +146 -51
  414. data/src/core/lib/debug/stats_data.h +81 -20
  415. data/src/core/lib/event_engine/ares_resolver.cc +9 -0
  416. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -0
  417. data/src/core/lib/event_engine/cf_engine/cf_engine.h +3 -0
  418. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +3 -0
  419. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +3 -0
  420. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +3 -0
  421. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +15 -3
  422. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +3 -0
  423. data/src/core/lib/event_engine/nameser.h +102 -0
  424. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1 -1
  425. data/src/core/lib/event_engine/thread_pool/thread_count.h +15 -0
  426. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +3 -15
  427. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +10 -4
  428. data/src/core/lib/experiments/config.cc +9 -1
  429. data/src/core/lib/experiments/experiments.cc +409 -144
  430. data/src/core/lib/experiments/experiments.h +153 -39
  431. data/src/core/lib/gprpp/fork.h +1 -1
  432. data/src/core/lib/gprpp/manual_constructor.h +1 -2
  433. data/src/core/lib/gprpp/no_destruct.h +1 -1
  434. data/src/core/lib/gprpp/per_cpu.cc +2 -0
  435. data/src/core/lib/gprpp/per_cpu.h +36 -7
  436. data/src/core/lib/gprpp/ref_counted_ptr.h +63 -0
  437. data/src/core/lib/gprpp/work_serializer.cc +297 -25
  438. data/src/core/lib/gprpp/work_serializer.h +25 -9
  439. data/src/core/lib/iomgr/combiner.cc +54 -15
  440. data/src/core/lib/iomgr/combiner.h +8 -3
  441. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -4
  442. data/src/core/lib/iomgr/exec_ctx.cc +12 -0
  443. data/src/core/lib/iomgr/exec_ctx.h +55 -19
  444. data/src/core/lib/iomgr/polling_entity.cc +10 -0
  445. data/src/core/lib/iomgr/polling_entity.h +2 -0
  446. data/src/core/lib/iomgr/port.h +14 -0
  447. data/src/core/lib/iomgr/tcp_posix.cc +17 -14
  448. data/src/core/lib/load_balancing/lb_policy.h +10 -9
  449. data/src/core/lib/promise/arena_promise.h +5 -1
  450. data/src/core/lib/promise/detail/seq_state.h +418 -0
  451. data/src/core/lib/promise/latch.h +1 -0
  452. data/src/core/lib/promise/loop.h +8 -5
  453. data/src/core/lib/promise/pipe.h +24 -24
  454. data/src/core/lib/promise/poll.h +4 -6
  455. data/src/core/lib/resolver/server_address.h +1 -0
  456. data/src/core/lib/resource_quota/memory_quota.cc +58 -2
  457. data/src/core/lib/resource_quota/memory_quota.h +4 -1
  458. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +115 -9
  459. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -0
  460. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +86 -0
  461. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +0 -59
  462. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +2 -0
  463. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +7 -57
  464. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -1
  465. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +2 -14
  466. data/src/core/lib/slice/slice.h +6 -0
  467. data/src/core/lib/slice/slice_buffer.cc +15 -0
  468. data/src/core/lib/slice/slice_buffer.h +16 -4
  469. data/src/core/lib/slice/slice_refcount.h +1 -1
  470. data/src/core/lib/surface/call.cc +92 -34
  471. data/src/core/lib/surface/call.h +4 -0
  472. data/src/core/lib/surface/channel.cc +7 -4
  473. data/src/core/lib/surface/channel_init.h +3 -2
  474. data/src/core/lib/surface/server.cc +45 -5
  475. data/src/core/lib/surface/server.h +18 -6
  476. data/src/core/lib/surface/version.cc +2 -2
  477. data/src/core/lib/transport/batch_builder.cc +3 -5
  478. data/src/core/lib/transport/metadata_batch.cc +6 -0
  479. data/src/core/lib/transport/metadata_batch.h +20 -1
  480. data/src/core/lib/transport/parsed_metadata.h +2 -4
  481. data/src/core/lib/transport/simple_slice_based_metadata.h +1 -2
  482. data/src/core/lib/transport/transport.h +21 -11
  483. data/src/core/tsi/ssl_transport_security.cc +7 -0
  484. data/src/core/tsi/ssl_transport_security.h +4 -0
  485. data/src/ruby/ext/grpc/extconf.rb +1 -1
  486. data/src/ruby/ext/grpc/rb_channel_args.c +6 -4
  487. data/src/ruby/lib/grpc/version.rb +1 -1
  488. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -1
  489. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +185 -0
  490. data/third_party/upb/upb/collections/array.c +6 -0
  491. data/third_party/upb/upb/collections/array.h +6 -0
  492. data/third_party/upb/upb/collections/map.c +7 -0
  493. data/third_party/upb/upb/collections/map.h +5 -0
  494. data/third_party/upb/upb/collections/map_sorter_internal.h +1 -1
  495. data/third_party/upb/upb/collections/message_value.h +8 -1
  496. data/third_party/upb/upb/generated_code_support.h +54 -0
  497. data/third_party/upb/upb/hash/common.c +5 -0
  498. data/third_party/upb/upb/hash/common.h +1 -0
  499. data/third_party/upb/upb/hash/str_table.h +1 -0
  500. data/third_party/upb/upb/message/accessors.c +25 -1
  501. data/third_party/upb/upb/message/accessors.h +46 -25
  502. data/third_party/upb/upb/message/accessors_internal.h +69 -3
  503. data/third_party/upb/upb/message/extension_internal.h +1 -1
  504. data/third_party/upb/upb/message/internal/map_entry.h +64 -0
  505. data/third_party/upb/upb/message/internal.h +2 -6
  506. data/third_party/upb/upb/message/message.c +0 -6
  507. data/third_party/upb/upb/message/message.h +1 -1
  508. data/third_party/upb/upb/message/tagged_ptr.h +89 -0
  509. data/third_party/upb/upb/mini_descriptor/build_enum.c +150 -0
  510. data/third_party/upb/upb/mini_descriptor/build_enum.h +63 -0
  511. data/third_party/upb/upb/{mini_table → mini_descriptor}/decode.c +122 -374
  512. data/third_party/upb/upb/{mini_table → mini_descriptor}/decode.h +11 -50
  513. data/third_party/upb/upb/mini_descriptor/internal/base92.c +46 -0
  514. data/third_party/upb/upb/mini_descriptor/internal/base92.h +81 -0
  515. data/third_party/upb/upb/mini_descriptor/internal/decoder.h +73 -0
  516. data/third_party/upb/upb/{mini_table → mini_descriptor/internal}/encode.c +58 -32
  517. data/third_party/upb/upb/{mini_table/encode_internal.h → mini_descriptor/internal/encode.h} +3 -4
  518. data/third_party/upb/upb/{mini_table/encode_internal.hpp → mini_descriptor/internal/encode.hpp} +1 -1
  519. data/third_party/upb/upb/mini_descriptor/internal/modifiers.h +50 -0
  520. data/third_party/upb/upb/{mini_table/common_internal.h → mini_descriptor/internal/wire_constants.h} +3 -23
  521. data/third_party/upb/upb/mini_descriptor/link.c +142 -0
  522. data/third_party/upb/upb/mini_descriptor/link.h +104 -0
  523. data/third_party/upb/upb/mini_table/{types.h → enum.h} +19 -9
  524. data/third_party/upb/upb/mini_table/extension.h +40 -0
  525. data/third_party/upb/upb/mini_table/extension_registry.c +1 -1
  526. data/third_party/upb/upb/mini_table/extension_registry.h +2 -1
  527. data/third_party/upb/upb/mini_table/field.h +118 -0
  528. data/third_party/upb/upb/{json_decode.h → mini_table/file.h} +5 -6
  529. data/third_party/upb/upb/mini_table/{enum_internal.h → internal/enum.h} +7 -19
  530. data/third_party/upb/upb/mini_table/{extension_internal.h → internal/extension.h} +8 -8
  531. data/third_party/upb/upb/mini_table/{field_internal.h → internal/field.h} +10 -66
  532. data/third_party/upb/upb/mini_table/{file_internal.h → internal/file.h} +6 -4
  533. data/third_party/upb/upb/mini_table/internal/message.c +39 -0
  534. data/third_party/upb/upb/mini_table/{message_internal.h → internal/message.h} +14 -37
  535. data/third_party/upb/upb/mini_table/{sub_internal.h → internal/sub.h} +7 -6
  536. data/third_party/upb/upb/mini_table/{common.c → message.c} +2 -33
  537. data/third_party/upb/upb/mini_table/{common.h → message.h} +12 -77
  538. data/third_party/upb/upb/{json_encode.h → mini_table/sub.h} +5 -6
  539. data/third_party/upb/upb/reflection/def.hpp +16 -4
  540. data/third_party/upb/upb/reflection/def_pool_internal.h +1 -1
  541. data/third_party/upb/upb/reflection/desc_state_internal.h +1 -1
  542. data/third_party/upb/upb/reflection/enum_def.c +1 -1
  543. data/third_party/upb/upb/reflection/field_def.c +2 -1
  544. data/third_party/upb/upb/reflection/message.c +2 -2
  545. data/third_party/upb/upb/reflection/message_def.c +3 -1
  546. data/third_party/upb/upb/wire/decode.c +68 -29
  547. data/third_party/upb/upb/wire/decode.h +40 -0
  548. data/third_party/upb/upb/wire/encode.c +23 -13
  549. metadata +44 -27
  550. data/src/core/lib/event_engine/thread_pool/original_thread_pool.cc +0 -256
  551. data/src/core/lib/event_engine/thread_pool/original_thread_pool.h +0 -137
@@ -26,8 +26,8 @@
26
26
 
27
27
  #include <grpc/slice.h>
28
28
 
29
- #include "src/core/ext/transport/chttp2/transport/frame.h"
30
29
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
30
+ #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
31
31
  #include "src/core/lib/iomgr/error.h"
32
32
 
33
33
  typedef enum {
@@ -25,7 +25,7 @@
25
25
 
26
26
  #include <grpc/slice.h>
27
27
 
28
- #include "src/core/ext/transport/chttp2/transport/frame.h"
28
+ #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
29
29
  #include "src/core/lib/iomgr/error.h"
30
30
  #include "src/core/lib/transport/transport.h"
31
31
 
@@ -28,10 +28,10 @@
28
28
  #include <grpc/support/log.h>
29
29
 
30
30
  #include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
31
- #include "src/core/ext/transport/chttp2/transport/frame.h"
32
31
  #include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
33
32
  #include "src/core/ext/transport/chttp2/transport/hpack_encoder_table.h"
34
33
  #include "src/core/ext/transport/chttp2/transport/http_trace.h"
34
+ #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
35
35
  #include "src/core/ext/transport/chttp2/transport/varint.h"
36
36
  #include "src/core/lib/debug/trace.h"
37
37
  #include "src/core/lib/gprpp/crash.h"
@@ -91,12 +91,13 @@ constexpr Base64InverseTable kBase64InverseTable;
91
91
  class HPackParser::Input {
92
92
  public:
93
93
  Input(grpc_slice_refcount* current_slice_refcount, const uint8_t* begin,
94
- const uint8_t* end, HpackParseResult& error)
94
+ const uint8_t* end, absl::BitGenRef bitsrc, HpackParseResult& error)
95
95
  : current_slice_refcount_(current_slice_refcount),
96
96
  begin_(begin),
97
97
  end_(end),
98
98
  frontier_(begin),
99
- error_(error) {}
99
+ error_(error),
100
+ bitsrc_(bitsrc) {}
100
101
 
101
102
  // If input is backed by a slice, retrieve its refcount. If not, return
102
103
  // nullptr.
@@ -279,6 +280,9 @@ class HPackParser::Input {
279
280
  // Get the frontier - for buffering should we fail due to eof
280
281
  const uint8_t* frontier() const { return frontier_; }
281
282
 
283
+ // Access the rng
284
+ absl::BitGenRef bitsrc() { return bitsrc_; }
285
+
282
286
  private:
283
287
  // Helper to set the error to out of range for ParseVarint
284
288
  absl::optional<uint32_t> ParseVarintOutOfRange(uint32_t value,
@@ -324,6 +328,8 @@ class HPackParser::Input {
324
328
  // (We've failed parsing a request for whatever reason, but we're still
325
329
  // continuing the connection so we need to see future opcodes after this bit).
326
330
  size_t skip_bytes_ = 0;
331
+ // Random number generator
332
+ absl::BitGenRef bitsrc_;
327
333
  };
328
334
 
329
335
  absl::string_view HPackParser::String::string_view() const {
@@ -1144,7 +1150,7 @@ void HPackParser::BeginFrame(grpc_metadata_batch* metadata_buffer,
1144
1150
  }
1145
1151
 
1146
1152
  grpc_error_handle HPackParser::Parse(
1147
- const grpc_slice& slice, bool is_last,
1153
+ const grpc_slice& slice, bool is_last, absl::BitGenRef bitsrc,
1148
1154
  CallTracerAnnotationInterface* call_tracer) {
1149
1155
  if (GPR_UNLIKELY(!unparsed_bytes_.empty())) {
1150
1156
  unparsed_bytes_.insert(unparsed_bytes_.end(), GRPC_SLICE_START_PTR(slice),
@@ -1155,20 +1161,23 @@ grpc_error_handle HPackParser::Parse(
1155
1161
  return absl::OkStatus();
1156
1162
  }
1157
1163
  std::vector<uint8_t> buffer = std::move(unparsed_bytes_);
1158
- return ParseInput(Input(nullptr, buffer.data(),
1159
- buffer.data() + buffer.size(), state_.frame_error),
1160
- is_last, call_tracer);
1164
+ return ParseInput(
1165
+ Input(nullptr, buffer.data(), buffer.data() + buffer.size(), bitsrc,
1166
+ state_.frame_error),
1167
+ is_last, call_tracer);
1161
1168
  }
1162
- return ParseInput(Input(slice.refcount, GRPC_SLICE_START_PTR(slice),
1163
- GRPC_SLICE_END_PTR(slice), state_.frame_error),
1164
- is_last, call_tracer);
1169
+ return ParseInput(
1170
+ Input(slice.refcount, GRPC_SLICE_START_PTR(slice),
1171
+ GRPC_SLICE_END_PTR(slice), bitsrc, state_.frame_error),
1172
+ is_last, call_tracer);
1165
1173
  }
1166
1174
 
1167
1175
  grpc_error_handle HPackParser::ParseInput(
1168
1176
  Input input, bool is_last, CallTracerAnnotationInterface* call_tracer) {
1169
1177
  ParseInputInner(&input);
1170
1178
  if (is_last && is_boundary()) {
1171
- if (state_.metadata_early_detection.Reject(state_.frame_length)) {
1179
+ if (state_.metadata_early_detection.Reject(state_.frame_length,
1180
+ input.bitsrc())) {
1172
1181
  HandleMetadataSoftSizeLimitExceeded(&input);
1173
1182
  }
1174
1183
  global_stats().IncrementHttp2MetadataSize(state_.frame_length);
@@ -28,6 +28,7 @@
28
28
  #include <utility>
29
29
  #include <vector>
30
30
 
31
+ #include "absl/random/bit_gen_ref.h"
31
32
  #include "absl/strings/str_cat.h"
32
33
  #include "absl/strings/string_view.h"
33
34
  #include "absl/types/optional.h"
@@ -36,9 +37,9 @@
36
37
 
37
38
  #include <grpc/slice.h>
38
39
 
39
- #include "src/core/ext/transport/chttp2/transport/frame.h"
40
40
  #include "src/core/ext/transport/chttp2/transport/hpack_parse_result.h"
41
41
  #include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h"
42
+ #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
42
43
  #include "src/core/lib/backoff/random_early_detection.h"
43
44
  #include "src/core/lib/channel/call_tracer.h"
44
45
  #include "src/core/lib/iomgr/error.h"
@@ -101,6 +102,7 @@ class HPackParser {
101
102
  void StopBufferingFrame() { metadata_buffer_ = nullptr; }
102
103
  // Parse one slice worth of data
103
104
  grpc_error_handle Parse(const grpc_slice& slice, bool is_last,
105
+ absl::BitGenRef bitsrc,
104
106
  CallTracerAnnotationInterface* call_tracer);
105
107
  // Reset state ready for the next BeginFrame
106
108
  void FinishFrame();
@@ -28,6 +28,7 @@
28
28
 
29
29
  #include "absl/container/flat_hash_map.h"
30
30
  #include "absl/meta/type_traits.h"
31
+ #include "absl/random/random.h"
31
32
  #include "absl/strings/string_view.h"
32
33
  #include "absl/types/optional.h"
33
34
 
@@ -39,7 +40,6 @@
39
40
 
40
41
  #include "src/core/ext/transport/chttp2/transport/context_list_entry.h"
41
42
  #include "src/core/ext/transport/chttp2/transport/flow_control.h"
42
- #include "src/core/ext/transport/chttp2/transport/frame.h"
43
43
  #include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
44
44
  #include "src/core/ext/transport/chttp2/transport/frame_ping.h"
45
45
  #include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
@@ -48,6 +48,7 @@
48
48
  #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
49
49
  #include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
50
50
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
51
+ #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
51
52
  #include "src/core/ext/transport/chttp2/transport/ping_abuse_policy.h"
52
53
  #include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h"
53
54
  #include "src/core/lib/channel/channel_args.h"
@@ -267,22 +268,16 @@ struct grpc_chttp2_transport : public grpc_core::KeepsGrpcInitialized {
267
268
  const grpc_core::MemoryAllocator::Reservation self_reservation;
268
269
  grpc_core::ReclamationSweep active_reclamation;
269
270
 
271
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine> event_engine;
270
272
  grpc_core::Combiner* combiner;
273
+ absl::BitGen bitgen;
271
274
 
272
275
  grpc_closure* notify_on_receive_settings = nullptr;
273
276
  grpc_closure* notify_on_close = nullptr;
274
277
 
275
- /// write execution state of the transport
276
- grpc_chttp2_write_state write_state = GRPC_CHTTP2_WRITE_STATE_IDLE;
277
-
278
- /// is the transport destroying itself?
279
- uint8_t destroying = false;
280
278
  /// has the upper layer closed the transport?
281
279
  grpc_error_handle closed_with_error;
282
280
 
283
- /// is there a read request to the endpoint outstanding?
284
- uint8_t endpoint_reading = 1;
285
-
286
281
  /// various lists of streams
287
282
  grpc_chttp2_stream_list lists[STREAM_LIST_COUNT] = {};
288
283
 
@@ -306,6 +301,10 @@ struct grpc_chttp2_transport : public grpc_core::KeepsGrpcInitialized {
306
301
  // accept stream callback
307
302
  void (*accept_stream_cb)(void* user_data, grpc_transport* transport,
308
303
  const void* server_data);
304
+ // registered_method_matcher_cb is called before invoking the recv initial
305
+ // metadata callback.
306
+ void (*registered_method_matcher_cb)(
307
+ void* user_data, grpc_core::ServerMetadata* metadata) = nullptr;
309
308
  void* accept_stream_cb_user_data;
310
309
 
311
310
  /// connectivity tracking
@@ -315,26 +314,16 @@ struct grpc_chttp2_transport : public grpc_core::KeepsGrpcInitialized {
315
314
  grpc_slice_buffer outbuf;
316
315
  /// hpack encoding
317
316
  grpc_core::HPackCompressor hpack_compressor;
318
- /// is this a client?
319
- bool is_client;
320
317
 
321
318
  /// data to write next write
322
319
  grpc_slice_buffer qbuf;
323
320
 
324
- /// how much data are we willing to buffer when the WRITE_BUFFER_HINT is set?
325
- ///
326
- uint32_t write_buffer_size = grpc_core::chttp2::kDefaultWindow;
327
-
328
321
  /// Set to a grpc_error object if a goaway frame is received. By default, set
329
322
  /// to absl::OkStatus()
330
323
  grpc_error_handle goaway_error;
331
324
 
332
325
  grpc_chttp2_sent_goaway_state sent_goaway_state = GRPC_CHTTP2_NO_GOAWAY_SEND;
333
326
 
334
- /// are the local settings dirty and need to be sent?
335
- bool dirtied_local_settings = true;
336
- /// have local settings been sent?
337
- bool sent_local_settings = false;
338
327
  /// bitmask of setting indexes to send out
339
328
  /// Hack: it's common for implementations to assume 65536 bytes initial send
340
329
  /// window -- this should by rights be 0
@@ -389,7 +378,6 @@ struct grpc_chttp2_transport : public grpc_core::KeepsGrpcInitialized {
389
378
  bool is_first_frame = true;
390
379
  uint32_t expect_continuation_stream_id = 0;
391
380
  uint32_t incoming_frame_size = 0;
392
- uint32_t incoming_stream_id = 0;
393
381
 
394
382
  grpc_chttp2_stream* incoming_stream = nullptr;
395
383
  // active parser
@@ -405,8 +393,6 @@ struct grpc_chttp2_transport : public grpc_core::KeepsGrpcInitialized {
405
393
  grpc_chttp2_write_cb* write_cb_pool = nullptr;
406
394
 
407
395
  // bdp estimator
408
- bool bdp_ping_blocked =
409
- false; // Is the BDP blocked due to not receiving any data?
410
396
  grpc_closure next_bdp_ping_timer_expired_locked;
411
397
  grpc_closure start_bdp_ping_locked;
412
398
  grpc_closure finish_bdp_ping_locked;
@@ -418,19 +404,11 @@ struct grpc_chttp2_transport : public grpc_core::KeepsGrpcInitialized {
418
404
  grpc_closure_list run_after_write = GRPC_CLOSURE_LIST_INIT;
419
405
 
420
406
  // buffer pool state
421
- /// have we scheduled a benign cleanup?
422
- bool benign_reclaimer_registered = false;
423
- /// have we scheduled a destructive cleanup?
424
- bool destructive_reclaimer_registered = false;
425
407
  /// benign cleanup closure
426
408
  grpc_closure benign_reclaimer_locked;
427
409
  /// destructive cleanup closure
428
410
  grpc_closure destructive_reclaimer_locked;
429
411
 
430
- /// If start_bdp_ping_locked has been called
431
- bool bdp_ping_started = false;
432
- // True if pings should be acked
433
- bool ack_pings = true;
434
412
  // next bdp ping timer handle
435
413
  absl::optional<grpc_event_engine::experimental::EventEngine::TaskHandle>
436
414
  next_bdp_ping_timer_handle;
@@ -454,10 +432,6 @@ struct grpc_chttp2_transport : public grpc_core::KeepsGrpcInitialized {
454
432
  grpc_core::Duration keepalive_time;
455
433
  /// grace period for a ping to complete before watchdog kicks in
456
434
  grpc_core::Duration keepalive_timeout;
457
- /// if keepalive pings are allowed when there's no outstanding streams
458
- bool keepalive_permit_without_calls = false;
459
- /// If start_keepalive_ping_locked has been called
460
- bool keepalive_ping_started = false;
461
435
  /// keep-alive state machine state
462
436
  grpc_chttp2_keepalive_state keepalive_state;
463
437
  // Soft limit on max header size.
@@ -471,6 +445,12 @@ struct grpc_chttp2_transport : public grpc_core::KeepsGrpcInitialized {
471
445
  /// only continue reading when we are able to write to the socket again,
472
446
  /// thereby reducing the number of induced frames.
473
447
  uint32_t num_pending_induced_frames = 0;
448
+ uint32_t incoming_stream_id = 0;
449
+
450
+ /// how much data are we willing to buffer when the WRITE_BUFFER_HINT is set?
451
+ ///
452
+ uint32_t write_buffer_size = grpc_core::chttp2::kDefaultWindow;
453
+
474
454
  bool reading_paused_on_pending_induced_frames = false;
475
455
  /// Based on channel args, preferred_rx_crypto_frame_sizes are advertised to
476
456
  /// the peer
@@ -480,7 +460,41 @@ struct grpc_chttp2_transport : public grpc_core::KeepsGrpcInitialized {
480
460
  /// we can prove that the write got scheduled.
481
461
  uint8_t closure_barrier_may_cover_write = CLOSURE_BARRIER_MAY_COVER_WRITE;
482
462
 
483
- std::shared_ptr<grpc_event_engine::experimental::EventEngine> event_engine;
463
+ /// have we scheduled a benign cleanup?
464
+ bool benign_reclaimer_registered = false;
465
+ /// have we scheduled a destructive cleanup?
466
+ bool destructive_reclaimer_registered = false;
467
+
468
+ /// if keepalive pings are allowed when there's no outstanding streams
469
+ bool keepalive_permit_without_calls = false;
470
+ /// If start_keepalive_ping_locked has been called
471
+ bool keepalive_ping_started = false;
472
+
473
+ // bdp estimator
474
+ bool bdp_ping_blocked =
475
+ false; // Is the BDP blocked due to not receiving any data?
476
+
477
+ /// is the transport destroying itself?
478
+ uint8_t destroying = false;
479
+
480
+ /// is there a read request to the endpoint outstanding?
481
+ uint8_t endpoint_reading = 1;
482
+
483
+ /// is this a client?
484
+ bool is_client;
485
+
486
+ /// are the local settings dirty and need to be sent?
487
+ bool dirtied_local_settings = true;
488
+ /// have local settings been sent?
489
+ bool sent_local_settings = false;
490
+
491
+ /// If start_bdp_ping_locked has been called
492
+ bool bdp_ping_started = false;
493
+ // True if pings should be acked
494
+ bool ack_pings = true;
495
+
496
+ /// write execution state of the transport
497
+ grpc_chttp2_write_state write_state = GRPC_CHTTP2_WRITE_STATE_IDLE;
484
498
  };
485
499
 
486
500
  typedef enum {
@@ -503,7 +517,6 @@ struct grpc_chttp2_stream {
503
517
  grpc_closure* destroy_stream_arg;
504
518
 
505
519
  grpc_chttp2_stream_link links[STREAM_LIST_COUNT];
506
- grpc_core::BitSet<STREAM_LIST_COUNT> included;
507
520
 
508
521
  /// HTTP2 stream id for this stream, or zero if one has not been assigned
509
522
  uint32_t id = 0;
@@ -529,7 +542,6 @@ struct grpc_chttp2_stream {
529
542
  grpc_metadata_batch* recv_initial_metadata;
530
543
  grpc_closure* recv_initial_metadata_ready = nullptr;
531
544
  bool* trailing_metadata_available = nullptr;
532
- bool parsed_trailers_only = false;
533
545
  absl::optional<grpc_core::SliceBuffer>* recv_message = nullptr;
534
546
  uint32_t* recv_message_flags = nullptr;
535
547
  bool* call_failed_before_recv_message = nullptr;
@@ -557,30 +569,25 @@ struct grpc_chttp2_stream {
557
569
  bool eos_received = false;
558
570
  bool eos_sent = false;
559
571
 
572
+ grpc_core::BitSet<STREAM_LIST_COUNT> included;
573
+
560
574
  /// the error that resulted in this stream being read-closed
561
575
  grpc_error_handle read_closed_error;
562
576
  /// the error that resulted in this stream being write-closed
563
577
  grpc_error_handle write_closed_error;
564
578
 
565
579
  grpc_published_metadata_method published_metadata[2] = {};
566
- bool final_metadata_requested = false;
567
580
 
568
581
  grpc_metadata_batch initial_metadata_buffer;
569
582
  grpc_metadata_batch trailing_metadata_buffer;
570
583
 
571
- grpc_slice_buffer frame_storage; // protected by t combiner
572
- bool received_last_frame = false; // protected by t combiner
584
+ grpc_slice_buffer frame_storage; // protected by t combiner
573
585
 
574
586
  grpc_core::Timestamp deadline = grpc_core::Timestamp::InfFuture();
575
587
 
576
- /// how many header frames have we received?
577
- uint8_t header_frames_received = 0;
578
588
  /// number of bytes received - reset at end of parse thread execution
579
589
  int64_t received_bytes = 0;
580
590
 
581
- bool sent_initial_metadata = false;
582
- bool sent_trailing_metadata = false;
583
-
584
591
  grpc_core::chttp2::StreamFlowControl flow_control;
585
592
 
586
593
  grpc_slice_buffer flow_controlled_buffer;
@@ -590,13 +597,25 @@ struct grpc_chttp2_stream {
590
597
  grpc_chttp2_write_cb* finish_after_write = nullptr;
591
598
  size_t sending_bytes = 0;
592
599
 
593
- /// Whether the bytes needs to be traced using Fathom
594
- bool traced = false;
595
600
  /// Byte counter for number of bytes written
596
601
  size_t byte_counter = 0;
597
602
 
598
603
  // time this stream was created
599
604
  gpr_timespec creation_time = gpr_now(GPR_CLOCK_MONOTONIC);
605
+
606
+ bool parsed_trailers_only = false;
607
+
608
+ bool final_metadata_requested = false;
609
+ bool received_last_frame = false; // protected by t combiner
610
+
611
+ /// how many header frames have we received?
612
+ uint8_t header_frames_received = 0;
613
+
614
+ bool sent_initial_metadata = false;
615
+ bool sent_trailing_metadata = false;
616
+
617
+ /// Whether the bytes needs to be traced using Fathom
618
+ bool traced = false;
600
619
  };
601
620
 
602
621
  /// Transport writing call flow:
@@ -16,8 +16,8 @@
16
16
  //
17
17
  //
18
18
 
19
- #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_H
20
- #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_H
19
+ #ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_LEGACY_FRAME_H
20
+ #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_LEGACY_FRAME_H
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
@@ -40,4 +40,4 @@ typedef struct grpc_chttp2_transport grpc_chttp2_transport;
40
40
  #define GRPC_CHTTP2_DATA_FLAG_PADDED 8
41
41
  #define GRPC_CHTTP2_FLAG_HAS_PRIORITY 0x20
42
42
 
43
- #endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_H
43
+ #endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_LEGACY_FRAME_H
@@ -26,6 +26,7 @@
26
26
 
27
27
  #include "absl/base/attributes.h"
28
28
  #include "absl/container/flat_hash_map.h"
29
+ #include "absl/random/bit_gen_ref.h"
29
30
  #include "absl/status/status.h"
30
31
  #include "absl/strings/str_cat.h"
31
32
  #include "absl/strings/str_format.h"
@@ -35,7 +36,6 @@
35
36
  #include <grpc/support/log.h>
36
37
 
37
38
  #include "src/core/ext/transport/chttp2/transport/flow_control.h"
38
- #include "src/core/ext/transport/chttp2/transport/frame.h"
39
39
  #include "src/core/ext/transport/chttp2/transport/frame_data.h"
40
40
  #include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
41
41
  #include "src/core/ext/transport/chttp2/transport/frame_ping.h"
@@ -47,6 +47,7 @@
47
47
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
48
48
  #include "src/core/ext/transport/chttp2/transport/http_trace.h"
49
49
  #include "src/core/ext/transport/chttp2/transport/internal.h"
50
+ #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
50
51
  #include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h"
51
52
  #include "src/core/lib/channel/call_tracer.h"
52
53
  #include "src/core/lib/channel/channelz.h"
@@ -869,7 +870,8 @@ grpc_error_handle grpc_chttp2_header_parser_parse(void* hpack_parser,
869
870
  .value);
870
871
  }
871
872
  }
872
- grpc_error_handle error = parser->Parse(slice, is_last != 0, call_tracer);
873
+ grpc_error_handle error = parser->Parse(
874
+ slice, is_last != 0, absl::BitGenRef(t->bitgen), call_tracer);
873
875
  if (!error.ok()) {
874
876
  return error;
875
877
  }
@@ -18,6 +18,7 @@
18
18
 
19
19
  #include <algorithm>
20
20
 
21
+ #include "absl/strings/str_cat.h"
21
22
  #include "absl/types/optional.h"
22
23
 
23
24
  #include <grpc/impl/channel_arg_names.h>
@@ -61,6 +62,15 @@ bool Chttp2PingAbusePolicy::ReceivedOnePing(bool transport_idle) {
61
62
  return ping_strikes_ > max_ping_strikes_ && max_ping_strikes_ != 0;
62
63
  }
63
64
 
65
+ std::string Chttp2PingAbusePolicy::GetDebugString(bool transport_idle) const {
66
+ return absl::StrCat(
67
+ "now=", Timestamp::Now().ToString(), " transport_idle=", transport_idle,
68
+ " next_allowed_ping=",
69
+ (last_ping_recv_time_ + RecvPingIntervalWithoutData(transport_idle))
70
+ .ToString(),
71
+ " ping_strikes=", ping_strikes_);
72
+ }
73
+
64
74
  Duration Chttp2PingAbusePolicy::RecvPingIntervalWithoutData(
65
75
  bool transport_idle) const {
66
76
  if (transport_idle) {
@@ -17,6 +17,8 @@
17
17
 
18
18
  #include <grpc/support/port_platform.h>
19
19
 
20
+ #include <string>
21
+
20
22
  #include "src/core/lib/channel/channel_args.h"
21
23
  #include "src/core/lib/gprpp/time.h"
22
24
 
@@ -41,6 +43,8 @@ class Chttp2PingAbusePolicy {
41
43
  return min_recv_ping_interval_without_data_;
42
44
  }
43
45
 
46
+ std::string GetDebugString(bool transport_idle) const;
47
+
44
48
  private:
45
49
  Duration RecvPingIntervalWithoutData(bool transport_idle) const;
46
50
 
@@ -20,8 +20,8 @@
20
20
 
21
21
  #include <grpc/support/log.h>
22
22
 
23
- #include "src/core/ext/transport/chttp2/transport/frame.h"
24
23
  #include "src/core/ext/transport/chttp2/transport/internal.h"
24
+ #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
25
25
  #include "src/core/lib/debug/trace.h"
26
26
  #include "src/core/lib/gprpp/bitset.h"
27
27
 
@@ -39,7 +39,6 @@
39
39
  #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
40
40
  #include "src/core/ext/transport/chttp2/transport/context_list_entry.h"
41
41
  #include "src/core/ext/transport/chttp2/transport/flow_control.h"
42
- #include "src/core/ext/transport/chttp2/transport/frame.h"
43
42
  #include "src/core/ext/transport/chttp2/transport/frame_data.h"
44
43
  #include "src/core/ext/transport/chttp2/transport/frame_ping.h"
45
44
  #include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
@@ -49,6 +48,7 @@
49
48
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
50
49
  #include "src/core/ext/transport/chttp2/transport/http_trace.h"
51
50
  #include "src/core/ext/transport/chttp2/transport/internal.h"
51
+ #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
52
52
  #include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h"
53
53
  #include "src/core/lib/channel/channelz.h"
54
54
  #include "src/core/lib/debug/stats.h"
@@ -277,6 +277,7 @@ class WriteContext {
277
277
  t_->force_send_settings = false;
278
278
  t_->dirtied_local_settings = false;
279
279
  t_->sent_local_settings = true;
280
+ t_->flow_control.FlushedSettings();
280
281
  grpc_core::global_stats().IncrementHttp2SettingsWrites();
281
282
  }
282
283
  }
@@ -144,6 +144,8 @@ struct inproc_transport {
144
144
  grpc_core::ConnectivityStateTracker state_tracker;
145
145
  void (*accept_stream_cb)(void* user_data, grpc_transport* transport,
146
146
  const void* server_data);
147
+ void (*registered_method_matcher_cb)(
148
+ void* user_data, grpc_core::ServerMetadata* metadata) = nullptr;
147
149
  void* accept_stream_data;
148
150
  bool is_closed = false;
149
151
  struct inproc_transport* other_side;
@@ -696,6 +698,12 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
696
698
  }
697
699
  s->to_read_initial_md.Clear();
698
700
  s->to_read_initial_md_filled = false;
701
+ if (s->t->registered_method_matcher_cb != nullptr) {
702
+ s->t->registered_method_matcher_cb(
703
+ s->t->accept_stream_data,
704
+ s->recv_initial_md_op->payload->recv_initial_metadata
705
+ .recv_initial_metadata);
706
+ }
699
707
  grpc_core::ExecCtx::Run(
700
708
  DEBUG_LOCATION,
701
709
  std::exchange(s->recv_initial_md_op->payload->recv_initial_metadata
@@ -1120,6 +1128,7 @@ void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1120
1128
  }
1121
1129
  if (op->set_accept_stream) {
1122
1130
  t->accept_stream_cb = op->set_accept_stream_fn;
1131
+ t->registered_method_matcher_cb = op->set_registered_method_matcher_fn;
1123
1132
  t->accept_stream_data = op->set_accept_stream_user_data;
1124
1133
  }
1125
1134
  if (op->on_consumed) {
@@ -7,9 +7,7 @@
7
7
  * regenerated. */
8
8
 
9
9
  #include <stddef.h>
10
- #include "upb/collections/array_internal.h"
11
- #include "upb/message/internal.h"
12
- #include "upb/mini_table/enum_internal.h"
10
+ #include "upb/generated_code_support.h"
13
11
  #include "envoy/admin/v3/certs.upb.h"
14
12
  #include "google/protobuf/timestamp.upb.h"
15
13
  #include "udpa/annotations/status.upb.h"
@@ -23,7 +21,7 @@ static const upb_MiniTableSub envoy_admin_v3_Certificates_submsgs[1] = {
23
21
  };
24
22
 
25
23
  static const upb_MiniTableField envoy_admin_v3_Certificates__fields[1] = {
26
- {1, 0, 0, 0, 11, kUpb_FieldMode_Array | (UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
24
+ {1, 0, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
27
25
  };
28
26
 
29
27
  const upb_MiniTable envoy_admin_v3_Certificates_msg_init = {
@@ -42,8 +40,8 @@ static const upb_MiniTableSub envoy_admin_v3_Certificate_submsgs[2] = {
42
40
  };
43
41
 
44
42
  static const upb_MiniTableField envoy_admin_v3_Certificate__fields[2] = {
45
- {1, 0, 0, 0, 11, kUpb_FieldMode_Array | (UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
46
- {2, UPB_SIZE(4, 8), 0, 1, 11, kUpb_FieldMode_Array | (UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
43
+ {1, 0, 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
44
+ {2, UPB_SIZE(4, 8), 0, 1, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
47
45
  };
48
46
 
49
47
  const upb_MiniTable envoy_admin_v3_Certificate_msg_init = {
@@ -66,13 +64,13 @@ static const upb_MiniTableSub envoy_admin_v3_CertificateDetails_submsgs[4] = {
66
64
  };
67
65
 
68
66
  static const upb_MiniTableField envoy_admin_v3_CertificateDetails__fields[7] = {
69
- {1, UPB_SIZE(20, 8), 0, kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
70
- {2, UPB_SIZE(28, 24), 0, kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
71
- {3, UPB_SIZE(4, 40), 0, 0, 11, kUpb_FieldMode_Array | (UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
72
- {4, UPB_SIZE(40, 48), 0, kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
73
- {5, UPB_SIZE(8, 56), 1, 1, 11, kUpb_FieldMode_Scalar | (UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
74
- {6, UPB_SIZE(12, 64), 2, 2, 11, kUpb_FieldMode_Scalar | (UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
75
- {7, UPB_SIZE(16, 72), 3, 3, 11, kUpb_FieldMode_Scalar | (UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
67
+ {1, UPB_SIZE(20, 8), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
68
+ {2, UPB_SIZE(28, 24), 0, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
69
+ {3, UPB_SIZE(4, 40), 0, 0, 11, (int)kUpb_FieldMode_Array | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
70
+ {4, UPB_SIZE(40, 48), 0, kUpb_NoSub, 4, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
71
+ {5, UPB_SIZE(8, 56), 1, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
72
+ {6, UPB_SIZE(12, 64), 2, 2, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
73
+ {7, UPB_SIZE(16, 72), 3, 3, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
76
74
  };
77
75
 
78
76
  const upb_MiniTable envoy_admin_v3_CertificateDetails_msg_init = {
@@ -97,8 +95,8 @@ static const upb_MiniTableSub envoy_admin_v3_CertificateDetails_OcspDetails_subm
97
95
  };
98
96
 
99
97
  static const upb_MiniTableField envoy_admin_v3_CertificateDetails_OcspDetails__fields[2] = {
100
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
101
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
98
+ {1, UPB_SIZE(4, 8), 1, 0, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
99
+ {2, UPB_SIZE(8, 16), 2, 1, 11, (int)kUpb_FieldMode_Scalar | ((int)UPB_SIZE(kUpb_FieldRep_4Byte, kUpb_FieldRep_8Byte) << kUpb_FieldRep_Shift)},
102
100
  };
103
101
 
104
102
  const upb_MiniTable envoy_admin_v3_CertificateDetails_OcspDetails_msg_init = {
@@ -114,9 +112,9 @@ const upb_MiniTable envoy_admin_v3_CertificateDetails_OcspDetails_msg_init = {
114
112
  };
115
113
 
116
114
  static const upb_MiniTableField envoy_admin_v3_SubjectAlternateName__fields[3] = {
117
- {1, UPB_SIZE(4, 8), -1, kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
118
- {2, UPB_SIZE(4, 8), -1, kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
119
- {3, UPB_SIZE(4, 8), -1, kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
115
+ {1, UPB_SIZE(4, 8), -1, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
116
+ {2, UPB_SIZE(4, 8), -1, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
117
+ {3, UPB_SIZE(4, 8), -1, kUpb_NoSub, 9, (int)kUpb_FieldMode_Scalar | ((int)kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
120
118
  };
121
119
 
122
120
  const upb_MiniTable envoy_admin_v3_SubjectAlternateName_msg_init = {