grpc 1.41.1 → 1.42.0.pre1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (416) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +55 -43
  3. data/include/grpc/event_engine/event_engine.h +82 -42
  4. data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
  5. data/include/grpc/event_engine/memory_allocator.h +210 -0
  6. data/include/grpc/grpc.h +4 -0
  7. data/include/grpc/grpc_security.h +18 -0
  8. data/include/grpc/grpc_security_constants.h +1 -0
  9. data/include/grpc/impl/codegen/port_platform.h +7 -0
  10. data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
  11. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
  12. data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
  13. data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
  14. data/src/core/ext/filters/client_channel/client_channel.h +74 -27
  15. data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
  16. data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
  17. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
  18. data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +4 -5
  20. data/src/core/ext/filters/client_channel/connector.h +18 -18
  21. data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
  22. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
  23. data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
  24. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
  25. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
  31. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
  32. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
  33. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
  34. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
  35. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
  42. data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
  43. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
  44. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
  49. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
  50. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
  51. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
  52. data/src/core/ext/filters/client_channel/resolver.h +1 -1
  53. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
  54. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
  55. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
  56. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
  57. data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
  58. data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
  59. data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
  60. data/src/core/ext/filters/client_channel/server_address.h +1 -1
  61. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
  62. data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
  63. data/src/core/ext/filters/client_channel/subchannel.h +29 -49
  64. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
  65. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
  66. data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
  67. data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
  68. data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
  69. data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
  70. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
  71. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
  72. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  73. data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
  74. data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
  75. data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
  76. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
  77. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
  78. data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
  79. data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
  80. data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
  81. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  82. data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
  83. data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
  84. data/src/core/ext/service_config/service_config_call_data.h +72 -0
  85. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
  86. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
  87. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
  88. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
  89. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
  90. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
  91. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
  92. data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
  93. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
  94. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
  95. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  96. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
  97. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
  98. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
  99. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
  100. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
  102. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
  103. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
  104. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
  105. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
  106. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
  107. data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
  108. data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
  109. data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
  110. data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
  111. data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
  112. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
  113. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
  119. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
  120. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
  121. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
  122. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
  123. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
  124. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
  125. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
  126. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
  127. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
  128. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
  129. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
  130. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  131. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
  132. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  133. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  134. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  135. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  136. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
  137. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
  138. data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
  139. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
  140. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
  141. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
  142. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
  143. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
  144. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
  145. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
  146. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
  147. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
  148. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
  149. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
  150. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
  151. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
  152. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
  153. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
  154. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  155. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
  156. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
  157. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
  158. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
  159. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
  160. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
  161. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
  162. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  163. data/src/core/ext/xds/xds_api.cc +325 -362
  164. data/src/core/ext/xds/xds_api.h +134 -82
  165. data/src/core/ext/xds/xds_bootstrap.h +10 -0
  166. data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
  167. data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
  168. data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
  169. data/src/core/ext/xds/xds_client.cc +527 -314
  170. data/src/core/ext/xds/xds_client.h +42 -37
  171. data/src/core/ext/xds/xds_client_stats.h +1 -1
  172. data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
  173. data/src/core/lib/address_utils/parse_address.cc +2 -0
  174. data/src/core/lib/avl/avl.cc +5 -5
  175. data/src/core/lib/backoff/backoff.cc +1 -1
  176. data/src/core/lib/channel/channel_args.cc +24 -6
  177. data/src/core/lib/channel/channel_args.h +9 -0
  178. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  179. data/src/core/lib/channel/channel_trace.cc +1 -1
  180. data/src/core/lib/channel/channel_trace.h +1 -1
  181. data/src/core/lib/channel/channelz.cc +3 -3
  182. data/src/core/lib/channel/channelz.h +2 -2
  183. data/src/core/lib/channel/channelz_registry.cc +1 -1
  184. data/src/core/lib/channel/channelz_registry.h +1 -1
  185. data/src/core/lib/channel/connected_channel.cc +1 -3
  186. data/src/core/lib/channel/connected_channel.h +1 -2
  187. data/src/core/lib/compression/compression.cc +2 -2
  188. data/src/core/lib/compression/compression_args.cc +6 -4
  189. data/src/core/lib/compression/compression_internal.cc +2 -2
  190. data/src/core/lib/compression/compression_internal.h +1 -1
  191. data/src/core/lib/config/core_configuration.cc +44 -2
  192. data/src/core/lib/config/core_configuration.h +39 -1
  193. data/src/core/lib/debug/stats.cc +1 -1
  194. data/src/core/lib/debug/stats_data.cc +13 -13
  195. data/src/core/lib/gpr/atm.cc +1 -1
  196. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  197. data/src/core/lib/gpr/string.cc +2 -2
  198. data/src/core/lib/gpr/tls.h +1 -1
  199. data/src/core/lib/gpr/useful.h +79 -32
  200. data/src/core/lib/gprpp/arena.h +10 -0
  201. data/src/core/lib/gprpp/bitset.h +38 -16
  202. data/src/core/lib/gprpp/chunked_vector.h +211 -0
  203. data/src/core/lib/gprpp/construct_destruct.h +1 -1
  204. data/src/core/lib/gprpp/match.h +1 -1
  205. data/src/core/lib/gprpp/memory.h +6 -0
  206. data/src/core/lib/gprpp/overload.h +1 -1
  207. data/src/core/lib/gprpp/status_helper.cc +23 -3
  208. data/src/core/lib/gprpp/status_helper.h +12 -1
  209. data/src/core/lib/gprpp/table.h +411 -0
  210. data/src/core/lib/http/httpcli.cc +200 -182
  211. data/src/core/lib/http/parser.cc +2 -2
  212. data/src/core/lib/iomgr/call_combiner.cc +28 -10
  213. data/src/core/lib/iomgr/combiner.cc +6 -21
  214. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
  215. data/src/core/lib/iomgr/error.cc +113 -52
  216. data/src/core/lib/iomgr/error.h +50 -9
  217. data/src/core/lib/iomgr/error_cfstream.cc +5 -0
  218. data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
  219. data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
  220. data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
  221. data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
  222. data/src/core/lib/iomgr/event_engine/closure.h +10 -1
  223. data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
  224. data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
  225. data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
  226. data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
  227. data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
  228. data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
  229. data/src/core/lib/iomgr/exec_ctx.cc +1 -9
  230. data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
  231. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
  232. data/src/core/lib/iomgr/executor.cc +6 -20
  233. data/src/core/lib/iomgr/iomgr.cc +3 -1
  234. data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
  235. data/src/core/lib/iomgr/iomgr_internal.h +3 -2
  236. data/src/core/lib/iomgr/load_file.cc +2 -2
  237. data/src/core/lib/iomgr/lockfree_event.cc +18 -0
  238. data/src/core/lib/iomgr/pollset_custom.cc +1 -1
  239. data/src/core/lib/iomgr/pollset_custom.h +1 -1
  240. data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
  241. data/src/core/lib/iomgr/resource_quota.cc +13 -11
  242. data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
  243. data/src/core/lib/iomgr/socket_mutator.cc +2 -2
  244. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
  245. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
  246. data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
  247. data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
  248. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
  249. data/src/core/lib/iomgr/tcp_posix.cc +4 -5
  250. data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
  251. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
  252. data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
  253. data/src/core/lib/iomgr/tcp_windows.cc +2 -2
  254. data/src/core/lib/iomgr/timer_generic.cc +13 -13
  255. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  256. data/src/core/lib/json/json_util.cc +68 -0
  257. data/src/core/lib/json/json_util.h +57 -99
  258. data/src/core/lib/json/json_writer.cc +0 -3
  259. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  260. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  261. data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
  262. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
  263. data/src/core/lib/security/context/security_context.cc +4 -2
  264. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  265. data/src/core/lib/security/credentials/credentials.cc +4 -2
  266. data/src/core/lib/security/credentials/credentials.h +6 -1
  267. data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
  268. data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
  269. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
  270. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
  271. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
  272. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
  273. data/src/core/lib/security/security_connector/security_connector.cc +9 -4
  274. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  275. data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
  276. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
  277. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
  278. data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
  279. data/src/core/lib/security/transport/security_handshaker.cc +73 -43
  280. data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
  281. data/src/core/lib/security/transport/tsi_error.cc +3 -5
  282. data/src/core/lib/slice/slice.cc +0 -16
  283. data/src/core/lib/slice/slice_api.cc +39 -0
  284. data/src/core/lib/slice/slice_buffer.cc +5 -5
  285. data/src/core/lib/slice/slice_intern.cc +8 -13
  286. data/src/core/lib/slice/slice_internal.h +1 -244
  287. data/src/core/lib/slice/slice_refcount.cc +17 -0
  288. data/src/core/lib/slice/slice_refcount.h +121 -0
  289. data/src/core/lib/slice/slice_refcount_base.h +173 -0
  290. data/src/core/lib/slice/slice_split.cc +100 -0
  291. data/src/core/lib/slice/slice_split.h +40 -0
  292. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  293. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  294. data/src/core/lib/slice/static_slice.cc +529 -0
  295. data/src/core/lib/slice/static_slice.h +331 -0
  296. data/src/core/lib/surface/builtins.cc +49 -0
  297. data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
  298. data/src/core/lib/surface/call.cc +103 -120
  299. data/src/core/lib/surface/call.h +0 -6
  300. data/src/core/lib/surface/channel.cc +19 -32
  301. data/src/core/lib/surface/channel.h +0 -9
  302. data/src/core/lib/surface/channel_init.cc +23 -76
  303. data/src/core/lib/surface/channel_init.h +52 -44
  304. data/src/core/lib/surface/completion_queue.cc +6 -5
  305. data/src/core/lib/surface/init.cc +0 -39
  306. data/src/core/lib/surface/init_secure.cc +17 -14
  307. data/src/core/lib/surface/lame_client.cc +18 -11
  308. data/src/core/lib/surface/lame_client.h +1 -1
  309. data/src/core/lib/surface/server.cc +25 -17
  310. data/src/core/lib/surface/server.h +17 -10
  311. data/src/core/lib/surface/validate_metadata.cc +5 -2
  312. data/src/core/lib/surface/version.cc +2 -2
  313. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  314. data/src/core/lib/transport/error_utils.cc +42 -17
  315. data/src/core/lib/transport/error_utils.h +1 -1
  316. data/src/core/lib/transport/metadata.cc +31 -10
  317. data/src/core/lib/transport/metadata.h +2 -1
  318. data/src/core/lib/transport/metadata_batch.cc +35 -371
  319. data/src/core/lib/transport/metadata_batch.h +905 -71
  320. data/src/core/lib/transport/parsed_metadata.h +263 -0
  321. data/src/core/lib/transport/pid_controller.cc +4 -4
  322. data/src/core/lib/transport/static_metadata.cc +714 -846
  323. data/src/core/lib/transport/static_metadata.h +115 -379
  324. data/src/core/lib/transport/status_metadata.cc +1 -0
  325. data/src/core/lib/transport/transport.cc +4 -5
  326. data/src/core/lib/transport/transport_op_string.cc +40 -20
  327. data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
  328. data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
  329. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  330. data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
  331. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
  332. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
  333. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  334. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
  335. data/src/core/tsi/fake_transport_security.cc +15 -7
  336. data/src/core/tsi/local_transport_security.cc +36 -73
  337. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
  338. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
  339. data/src/core/tsi/ssl_transport_security.cc +10 -2
  340. data/src/core/tsi/transport_security.cc +12 -0
  341. data/src/core/tsi/transport_security.h +16 -1
  342. data/src/core/tsi/transport_security_interface.h +26 -0
  343. data/src/ruby/ext/grpc/extconf.rb +12 -9
  344. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  345. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  346. data/src/ruby/lib/grpc/version.rb +1 -1
  347. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
  348. data/src/ruby/spec/client_server_spec.rb +1 -1
  349. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
  350. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
  351. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  352. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +20 -21
  353. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +104 -114
  354. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +13 -0
  355. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
  356. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  357. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  358. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  359. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  360. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  361. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +3 -6
  362. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
  363. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
  364. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
  365. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
  366. data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
  367. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  368. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +0 -1
  369. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +72 -45
  370. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
  371. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +2 -2
  372. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +479 -15
  373. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -564
  374. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +0 -1
  375. data/third_party/re2/re2/compile.cc +91 -109
  376. data/third_party/re2/re2/dfa.cc +27 -39
  377. data/third_party/re2/re2/filtered_re2.cc +18 -2
  378. data/third_party/re2/re2/filtered_re2.h +10 -5
  379. data/third_party/re2/re2/nfa.cc +1 -1
  380. data/third_party/re2/re2/parse.cc +42 -23
  381. data/third_party/re2/re2/perl_groups.cc +34 -34
  382. data/third_party/re2/re2/prefilter.cc +3 -2
  383. data/third_party/re2/re2/prog.cc +182 -4
  384. data/third_party/re2/re2/prog.h +28 -9
  385. data/third_party/re2/re2/re2.cc +87 -118
  386. data/third_party/re2/re2/re2.h +156 -141
  387. data/third_party/re2/re2/regexp.cc +12 -5
  388. data/third_party/re2/re2/regexp.h +8 -2
  389. data/third_party/re2/re2/set.cc +31 -9
  390. data/third_party/re2/re2/set.h +9 -4
  391. data/third_party/re2/re2/simplify.cc +11 -3
  392. data/third_party/re2/re2/tostring.cc +1 -1
  393. data/third_party/re2/re2/walker-inl.h +1 -1
  394. data/third_party/re2/util/mutex.h +2 -2
  395. data/third_party/re2/util/pcre.h +3 -3
  396. metadata +78 -66
  397. data/include/grpc/event_engine/slice_allocator.h +0 -71
  398. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
  399. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
  400. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  401. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  402. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  403. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  404. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
  405. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
  406. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  407. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  408. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  409. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
  410. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
  411. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
  412. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
  413. data/src/core/lib/iomgr/udp_server.cc +0 -747
  414. data/src/core/lib/iomgr/udp_server.h +0 -103
  415. data/src/core/lib/transport/authority_override.cc +0 -40
  416. data/src/core/lib/transport/authority_override.h +0 -37
@@ -32,7 +32,6 @@
32
32
  #include "src/core/lib/slice/slice_internal.h"
33
33
  #include "src/core/lib/surface/api_trace.h"
34
34
  #include "src/core/lib/surface/channel.h"
35
- #include "src/core/lib/surface/channel_stack_type.h"
36
35
  #include "src/core/lib/surface/server.h"
37
36
  #include "src/core/lib/transport/connectivity_state.h"
38
37
  #include "src/core/lib/transport/error_utils.h"
@@ -58,10 +57,9 @@ void maybe_process_ops_locked(inproc_stream* s, grpc_error_handle error);
58
57
  void op_state_machine_locked(inproc_stream* s, grpc_error_handle error);
59
58
  void log_metadata(const grpc_metadata_batch* md_batch, bool is_client,
60
59
  bool is_initial);
61
- grpc_error_handle fill_in_metadata(inproc_stream* s,
62
- const grpc_metadata_batch* metadata,
63
- uint32_t flags, grpc_metadata_batch* out_md,
64
- uint32_t* outflags, bool* markfilled);
60
+ void fill_in_metadata(inproc_stream* s, const grpc_metadata_batch* metadata,
61
+ uint32_t flags, grpc_metadata_batch* out_md,
62
+ uint32_t* outflags, bool* markfilled);
65
63
 
66
64
  struct shared_mu {
67
65
  shared_mu() {
@@ -132,11 +130,6 @@ struct inproc_stream {
132
130
  ref("inproc_init_stream:init");
133
131
  ref("inproc_init_stream:list");
134
132
 
135
- grpc_metadata_batch_init(&to_read_initial_md);
136
- grpc_metadata_batch_init(&to_read_trailing_md);
137
- grpc_metadata_batch_init(&write_buffer_initial_md);
138
- grpc_metadata_batch_init(&write_buffer_trailing_md);
139
-
140
133
  stream_list_prev = nullptr;
141
134
  gpr_mu_lock(&t->mu->mu);
142
135
  stream_list_next = t->stream_list;
@@ -172,18 +165,19 @@ struct inproc_stream {
172
165
  // Now transfer from the other side's write_buffer if any to the to_read
173
166
  // buffer
174
167
  if (cs->write_buffer_initial_md_filled) {
175
- fill_in_metadata(this, &cs->write_buffer_initial_md,
176
- cs->write_buffer_initial_md_flags, &to_read_initial_md,
177
- &to_read_initial_md_flags, &to_read_initial_md_filled);
178
- deadline = GPR_MIN(deadline, cs->write_buffer_deadline);
179
- grpc_metadata_batch_clear(&cs->write_buffer_initial_md);
168
+ (void)fill_in_metadata(this, &cs->write_buffer_initial_md,
169
+ cs->write_buffer_initial_md_flags,
170
+ &to_read_initial_md, &to_read_initial_md_flags,
171
+ &to_read_initial_md_filled);
172
+ deadline = std::min(deadline, cs->write_buffer_deadline);
173
+ cs->write_buffer_initial_md.Clear();
180
174
  cs->write_buffer_initial_md_filled = false;
181
175
  }
182
176
  if (cs->write_buffer_trailing_md_filled) {
183
- fill_in_metadata(this, &cs->write_buffer_trailing_md, 0,
184
- &to_read_trailing_md, nullptr,
185
- &to_read_trailing_md_filled);
186
- grpc_metadata_batch_clear(&cs->write_buffer_trailing_md);
177
+ (void)fill_in_metadata(this, &cs->write_buffer_trailing_md, 0,
178
+ &to_read_trailing_md, nullptr,
179
+ &to_read_trailing_md_filled);
180
+ cs->write_buffer_trailing_md.Clear();
187
181
  cs->write_buffer_trailing_md_filled = false;
188
182
  }
189
183
  if (cs->write_buffer_cancel_error != GRPC_ERROR_NONE) {
@@ -228,28 +222,28 @@ struct inproc_stream {
228
222
  #undef STREAM_UNREF
229
223
 
230
224
  inproc_transport* t;
231
- grpc_metadata_batch to_read_initial_md;
225
+ grpc_stream_refcount* refs;
226
+ grpc_core::Arena* arena;
227
+
228
+ grpc_metadata_batch to_read_initial_md{arena};
232
229
  uint32_t to_read_initial_md_flags = 0;
233
230
  bool to_read_initial_md_filled = false;
234
- grpc_metadata_batch to_read_trailing_md;
231
+ grpc_metadata_batch to_read_trailing_md{arena};
235
232
  bool to_read_trailing_md_filled = false;
236
233
  bool ops_needed = false;
237
234
  // Write buffer used only during gap at init time when client-side
238
235
  // stream is set up but server side stream is not yet set up
239
- grpc_metadata_batch write_buffer_initial_md;
236
+ grpc_metadata_batch write_buffer_initial_md{arena};
240
237
  bool write_buffer_initial_md_filled = false;
241
238
  uint32_t write_buffer_initial_md_flags = 0;
242
239
  grpc_millis write_buffer_deadline = GRPC_MILLIS_INF_FUTURE;
243
- grpc_metadata_batch write_buffer_trailing_md;
240
+ grpc_metadata_batch write_buffer_trailing_md{arena};
244
241
  bool write_buffer_trailing_md_filled = false;
245
242
  grpc_error_handle write_buffer_cancel_error = GRPC_ERROR_NONE;
246
243
 
247
244
  struct inproc_stream* other_side;
248
245
  bool other_side_closed = false; // won't talk anymore
249
246
  bool write_buffer_other_side_closed = false; // on hold
250
- grpc_stream_refcount* refs;
251
-
252
- grpc_core::Arena* arena;
253
247
 
254
248
  grpc_transport_stream_op_batch* send_message_op = nullptr;
255
249
  grpc_transport_stream_op_batch* send_trailing_md_op = nullptr;
@@ -285,21 +279,51 @@ struct inproc_stream {
285
279
 
286
280
  void log_metadata(const grpc_metadata_batch* md_batch, bool is_client,
287
281
  bool is_initial) {
288
- for (grpc_linked_mdelem* md = md_batch->list.head; md != nullptr;
289
- md = md->next) {
290
- char* key = grpc_slice_to_c_string(GRPC_MDKEY(md->md));
291
- char* value = grpc_slice_to_c_string(GRPC_MDVALUE(md->md));
282
+ md_batch->ForEach([=](grpc_mdelem md) {
283
+ char* key = grpc_slice_to_c_string(GRPC_MDKEY(md));
284
+ char* value = grpc_slice_to_c_string(GRPC_MDVALUE(md));
292
285
  gpr_log(GPR_INFO, "INPROC:%s:%s: %s: %s", is_initial ? "HDR" : "TRL",
293
286
  is_client ? "CLI" : "SVR", key, value);
294
287
  gpr_free(key);
295
288
  gpr_free(value);
296
- }
289
+ });
297
290
  }
298
291
 
299
- grpc_error_handle fill_in_metadata(inproc_stream* s,
300
- const grpc_metadata_batch* metadata,
301
- uint32_t flags, grpc_metadata_batch* out_md,
302
- uint32_t* outflags, bool* markfilled) {
292
+ namespace {
293
+
294
+ class CopySink {
295
+ public:
296
+ explicit CopySink(grpc_metadata_batch* dst) : dst_(dst) {}
297
+
298
+ void Encode(grpc_mdelem md) {
299
+ // Differently to grpc_metadata_batch_copy, we always copy slices here so
300
+ // that we don't need to deal with the plethora of edge cases in that world.
301
+ // TODO(ctiller): revisit this when deleting mdelem.
302
+ md = grpc_mdelem_from_slices(grpc_slice_intern(GRPC_MDKEY(md)),
303
+ grpc_slice_copy(GRPC_MDVALUE(md)));
304
+ // Error unused in non-debug builds.
305
+ grpc_error_handle GRPC_UNUSED error = dst_->Append(md);
306
+ // The only way that Append() can fail is if
307
+ // there's a duplicate entry for a callout. However, that can't be
308
+ // the case here, because we would not have been allowed to create
309
+ // a source batch that had that kind of conflict.
310
+ GPR_DEBUG_ASSERT(error == GRPC_ERROR_NONE);
311
+ }
312
+
313
+ template <class T, class V>
314
+ void Encode(T trait, V value) {
315
+ dst_->Set(trait, value);
316
+ }
317
+
318
+ private:
319
+ grpc_metadata_batch* dst_;
320
+ };
321
+
322
+ } // namespace
323
+
324
+ void fill_in_metadata(inproc_stream* s, const grpc_metadata_batch* metadata,
325
+ uint32_t flags, grpc_metadata_batch* out_md,
326
+ uint32_t* outflags, bool* markfilled) {
303
327
  if (GRPC_TRACE_FLAG_ENABLED(grpc_inproc_trace)) {
304
328
  log_metadata(metadata, s->t->is_client, outflags != nullptr);
305
329
  }
@@ -310,18 +334,13 @@ grpc_error_handle fill_in_metadata(inproc_stream* s,
310
334
  if (markfilled != nullptr) {
311
335
  *markfilled = true;
312
336
  }
313
- grpc_error_handle error = GRPC_ERROR_NONE;
314
- for (grpc_linked_mdelem* elem = metadata->list.head;
315
- (elem != nullptr) && (error == GRPC_ERROR_NONE); elem = elem->next) {
316
- grpc_linked_mdelem* nelem =
317
- static_cast<grpc_linked_mdelem*>(s->arena->Alloc(sizeof(*nelem)));
318
- nelem->md =
319
- grpc_mdelem_from_slices(grpc_slice_intern(GRPC_MDKEY(elem->md)),
320
- grpc_slice_intern(GRPC_MDVALUE(elem->md)));
321
-
322
- error = grpc_metadata_batch_link_tail(out_md, nelem);
323
- }
324
- return error;
337
+
338
+ // TODO(ctiller): copy the metadata batch, don't rely on a bespoke copy
339
+ // function. Can only do this once mdelems are out of the way though, too many
340
+ // edge cases otherwise.
341
+ out_md->Clear();
342
+ CopySink sink(out_md);
343
+ metadata->Encode(&sink);
325
344
  }
326
345
 
327
346
  int init_stream(grpc_transport* gt, grpc_stream* gs,
@@ -336,8 +355,8 @@ int init_stream(grpc_transport* gt, grpc_stream* gs,
336
355
  void close_stream_locked(inproc_stream* s) {
337
356
  if (!s->closed) {
338
357
  // Release the metadata that we would have written out
339
- grpc_metadata_batch_destroy(&s->write_buffer_initial_md);
340
- grpc_metadata_batch_destroy(&s->write_buffer_trailing_md);
358
+ s->write_buffer_initial_md.Clear();
359
+ s->write_buffer_trailing_md.Clear();
341
360
 
342
361
  if (s->listed) {
343
362
  inproc_stream* p = s->stream_list_prev;
@@ -362,8 +381,8 @@ void close_stream_locked(inproc_stream* s) {
362
381
  void close_other_side_locked(inproc_stream* s, const char* reason) {
363
382
  if (s->other_side != nullptr) {
364
383
  // First release the metadata that came from the other side's arena
365
- grpc_metadata_batch_destroy(&s->to_read_initial_md);
366
- grpc_metadata_batch_destroy(&s->to_read_trailing_md);
384
+ s->to_read_initial_md.Clear();
385
+ s->to_read_trailing_md.Clear();
367
386
 
368
387
  s->other_side->unref(reason);
369
388
  s->other_side_closed = true;
@@ -413,17 +432,14 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
413
432
  // Send trailing md to the other side indicating cancellation
414
433
  s->trailing_md_sent = true;
415
434
 
416
- grpc_metadata_batch fake_md;
417
- grpc_metadata_batch_init(&fake_md);
418
-
435
+ grpc_metadata_batch fake_md(s->arena);
419
436
  inproc_stream* other = s->other_side;
420
437
  grpc_metadata_batch* dest = (other == nullptr)
421
438
  ? &s->write_buffer_trailing_md
422
439
  : &other->to_read_trailing_md;
423
440
  bool* destfilled = (other == nullptr) ? &s->write_buffer_trailing_md_filled
424
441
  : &other->to_read_trailing_md_filled;
425
- fill_in_metadata(s, &fake_md, 0, dest, nullptr, destfilled);
426
- grpc_metadata_batch_destroy(&fake_md);
442
+ (void)fill_in_metadata(s, &fake_md, 0, dest, nullptr, destfilled);
427
443
 
428
444
  if (other != nullptr) {
429
445
  if (other->cancel_other_error == GRPC_ERROR_NONE) {
@@ -439,26 +455,22 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
439
455
  if (!s->t->is_client) {
440
456
  // If this is a server, provide initial metadata with a path and authority
441
457
  // since it expects that as well as no error yet
442
- grpc_metadata_batch fake_md;
443
- grpc_metadata_batch_init(&fake_md);
458
+ grpc_metadata_batch fake_md(s->arena);
444
459
  grpc_linked_mdelem* path_md =
445
460
  static_cast<grpc_linked_mdelem*>(s->arena->Alloc(sizeof(*path_md)));
446
461
  path_md->md = grpc_mdelem_from_slices(g_fake_path_key, g_fake_path_value);
447
- GPR_ASSERT(grpc_metadata_batch_link_tail(&fake_md, path_md) ==
448
- GRPC_ERROR_NONE);
462
+ GPR_ASSERT(fake_md.LinkTail(path_md) == GRPC_ERROR_NONE);
449
463
  grpc_linked_mdelem* auth_md =
450
464
  static_cast<grpc_linked_mdelem*>(s->arena->Alloc(sizeof(*auth_md)));
451
465
  auth_md->md = grpc_mdelem_from_slices(g_fake_auth_key, g_fake_auth_value);
452
- GPR_ASSERT(grpc_metadata_batch_link_tail(&fake_md, auth_md) ==
453
- GRPC_ERROR_NONE);
466
+ GPR_ASSERT(fake_md.LinkTail(auth_md) == GRPC_ERROR_NONE);
454
467
 
455
- fill_in_metadata(
468
+ (void)fill_in_metadata(
456
469
  s, &fake_md, 0,
457
470
  s->recv_initial_md_op->payload->recv_initial_metadata
458
471
  .recv_initial_metadata,
459
472
  s->recv_initial_md_op->payload->recv_initial_metadata.recv_flags,
460
473
  nullptr);
461
- grpc_metadata_batch_destroy(&fake_md);
462
474
  err = GRPC_ERROR_NONE;
463
475
  } else {
464
476
  err = GRPC_ERROR_REF(error);
@@ -656,10 +668,11 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
656
668
  goto done;
657
669
  } else {
658
670
  if (!other || !other->closed) {
659
- fill_in_metadata(s,
660
- s->send_trailing_md_op->payload->send_trailing_metadata
661
- .send_trailing_metadata,
662
- 0, dest, nullptr, destfilled);
671
+ (void)fill_in_metadata(
672
+ s,
673
+ s->send_trailing_md_op->payload->send_trailing_metadata
674
+ .send_trailing_metadata,
675
+ 0, dest, nullptr, destfilled);
663
676
  }
664
677
  s->trailing_md_sent = true;
665
678
  if (s->send_trailing_md_op->payload->send_trailing_metadata.sent) {
@@ -703,42 +716,34 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
703
716
 
704
717
  if (s->to_read_initial_md_filled) {
705
718
  s->initial_md_recvd = true;
706
- new_err = fill_in_metadata(
719
+ fill_in_metadata(
707
720
  s, &s->to_read_initial_md, s->to_read_initial_md_flags,
708
721
  s->recv_initial_md_op->payload->recv_initial_metadata
709
722
  .recv_initial_metadata,
710
723
  s->recv_initial_md_op->payload->recv_initial_metadata.recv_flags,
711
724
  nullptr);
712
- s->recv_initial_md_op->payload->recv_initial_metadata
713
- .recv_initial_metadata->deadline = s->deadline;
725
+ if (s->deadline != GRPC_MILLIS_INF_FUTURE) {
726
+ s->recv_initial_md_op->payload->recv_initial_metadata
727
+ .recv_initial_metadata->Set(grpc_core::GrpcTimeoutMetadata(),
728
+ s->deadline);
729
+ }
714
730
  if (s->recv_initial_md_op->payload->recv_initial_metadata
715
731
  .trailing_metadata_available != nullptr) {
716
732
  *s->recv_initial_md_op->payload->recv_initial_metadata
717
733
  .trailing_metadata_available =
718
734
  (other != nullptr && other->send_trailing_md_op != nullptr);
719
735
  }
720
- grpc_metadata_batch_clear(&s->to_read_initial_md);
736
+ s->to_read_initial_md.Clear();
721
737
  s->to_read_initial_md_filled = false;
722
- INPROC_LOG(GPR_INFO,
723
- "op_state_machine %p scheduling initial-metadata-ready %s", s,
724
- grpc_error_std_string(new_err).c_str());
725
738
  grpc_core::ExecCtx::Run(
726
739
  DEBUG_LOCATION,
727
740
  s->recv_initial_md_op->payload->recv_initial_metadata
728
741
  .recv_initial_metadata_ready,
729
- GRPC_ERROR_REF(new_err));
742
+ GRPC_ERROR_NONE);
730
743
  complete_if_batch_end_locked(
731
- s, new_err, s->recv_initial_md_op,
744
+ s, GRPC_ERROR_NONE, s->recv_initial_md_op,
732
745
  "op_state_machine scheduling recv-initial-metadata-on-complete");
733
746
  s->recv_initial_md_op = nullptr;
734
-
735
- if (new_err != GRPC_ERROR_NONE) {
736
- INPROC_LOG(GPR_INFO,
737
- "op_state_machine %p scheduling on_complete errors2 %s", s,
738
- grpc_error_std_string(new_err).c_str());
739
- fail_helper_locked(s, GRPC_ERROR_REF(new_err));
740
- goto done;
741
- }
742
747
  }
743
748
  }
744
749
  if (s->recv_message_op) {
@@ -754,7 +759,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
754
759
  "op_state_machine %p already implicitly received trailing "
755
760
  "metadata, so ignoring new trailing metadata from client",
756
761
  s);
757
- grpc_metadata_batch_clear(&s->to_read_trailing_md);
762
+ s->to_read_trailing_md.Clear();
758
763
  s->to_read_trailing_md_filled = false;
759
764
  s->trailing_md_recvd_implicit_only = false;
760
765
  } else {
@@ -796,12 +801,11 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
796
801
  if (s->recv_trailing_md_op != nullptr) {
797
802
  // We wanted trailing metadata and we got it
798
803
  s->trailing_md_recvd = true;
799
- new_err =
800
- fill_in_metadata(s, &s->to_read_trailing_md, 0,
801
- s->recv_trailing_md_op->payload
802
- ->recv_trailing_metadata.recv_trailing_metadata,
803
- nullptr, nullptr);
804
- grpc_metadata_batch_clear(&s->to_read_trailing_md);
804
+ fill_in_metadata(s, &s->to_read_trailing_md, 0,
805
+ s->recv_trailing_md_op->payload->recv_trailing_metadata
806
+ .recv_trailing_metadata,
807
+ nullptr, nullptr);
808
+ s->to_read_trailing_md.Clear();
805
809
  s->to_read_trailing_md_filled = false;
806
810
 
807
811
  // We should schedule the recv_trailing_md_op completion if
@@ -810,24 +814,16 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
810
814
  // (If the server hasn't already sent its trailing md, it doesn't have
811
815
  // a final status, so don't mark this op complete)
812
816
  if (s->t->is_client || s->trailing_md_sent) {
813
- INPROC_LOG(GPR_INFO,
814
- "op_state_machine %p scheduling trailing-md-on-complete %s",
815
- s, grpc_error_std_string(new_err).c_str());
816
817
  grpc_core::ExecCtx::Run(
817
818
  DEBUG_LOCATION,
818
819
  s->recv_trailing_md_op->payload->recv_trailing_metadata
819
820
  .recv_trailing_metadata_ready,
820
- GRPC_ERROR_REF(new_err));
821
+ GRPC_ERROR_NONE);
821
822
  grpc_core::ExecCtx::Run(DEBUG_LOCATION,
822
823
  s->recv_trailing_md_op->on_complete,
823
- GRPC_ERROR_REF(new_err));
824
+ GRPC_ERROR_NONE);
824
825
  s->recv_trailing_md_op = nullptr;
825
826
  needs_close = s->trailing_md_sent;
826
- } else {
827
- INPROC_LOG(GPR_INFO,
828
- "op_state_machine %p server needs to delay handling "
829
- "trailing-md-on-complete %s",
830
- s, grpc_error_std_string(new_err).c_str());
831
827
  }
832
828
  } else if (!s->trailing_md_recvd) {
833
829
  INPROC_LOG(
@@ -911,16 +907,14 @@ bool cancel_stream_locked(inproc_stream* s, grpc_error_handle error) {
911
907
  // already have
912
908
  s->trailing_md_sent = true;
913
909
 
914
- grpc_metadata_batch cancel_md;
915
- grpc_metadata_batch_init(&cancel_md);
910
+ grpc_metadata_batch cancel_md(s->arena);
916
911
 
917
912
  grpc_metadata_batch* dest = (other == nullptr)
918
913
  ? &s->write_buffer_trailing_md
919
914
  : &other->to_read_trailing_md;
920
915
  bool* destfilled = (other == nullptr) ? &s->write_buffer_trailing_md_filled
921
916
  : &other->to_read_trailing_md_filled;
922
- fill_in_metadata(s, &cancel_md, 0, dest, nullptr, destfilled);
923
- grpc_metadata_batch_destroy(&cancel_md);
917
+ (void)fill_in_metadata(s, &cancel_md, 0, dest, nullptr, destfilled);
924
918
 
925
919
  if (other != nullptr) {
926
920
  if (other->cancel_other_error == GRPC_ERROR_NONE) {
@@ -1025,7 +1019,7 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1025
1019
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Extra initial metadata");
1026
1020
  } else {
1027
1021
  if (!s->other_side_closed) {
1028
- fill_in_metadata(
1022
+ (void)fill_in_metadata(
1029
1023
  s, op->payload->send_initial_metadata.send_initial_metadata,
1030
1024
  op->payload->send_initial_metadata.send_initial_metadata_flags,
1031
1025
  dest, destflags, destfilled);
@@ -1033,8 +1027,10 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1033
1027
  if (s->t->is_client) {
1034
1028
  grpc_millis* dl =
1035
1029
  (other == nullptr) ? &s->write_buffer_deadline : &other->deadline;
1036
- *dl = GPR_MIN(*dl, op->payload->send_initial_metadata
1037
- .send_initial_metadata->deadline);
1030
+ *dl = std::min(
1031
+ *dl, op->payload->send_initial_metadata.send_initial_metadata
1032
+ ->get(grpc_core::GrpcTimeoutMetadata())
1033
+ .value_or(GRPC_MILLIS_INF_FUTURE));
1038
1034
  s->initial_md_sent = true;
1039
1035
  }
1040
1036
  }
@@ -49,7 +49,7 @@ const upb_msglayout envoy_config_cluster_v3_ClusterCollection_msginit = {
49
49
  UPB_SIZE(8, 16), 1, false, 1, 255,
50
50
  };
51
51
 
52
- static const upb_msglayout *const envoy_config_cluster_v3_Cluster_submsgs[34] = {
52
+ static const upb_msglayout *const envoy_config_cluster_v3_Cluster_submsgs[35] = {
53
53
  &envoy_config_cluster_v3_CircuitBreakers_msginit,
54
54
  &envoy_config_cluster_v3_Cluster_CommonLbConfig_msginit,
55
55
  &envoy_config_cluster_v3_Cluster_CustomClusterType_msginit,
@@ -61,6 +61,7 @@ static const upb_msglayout *const envoy_config_cluster_v3_Cluster_submsgs[34] =
61
61
  &envoy_config_cluster_v3_Cluster_PreconnectPolicy_msginit,
62
62
  &envoy_config_cluster_v3_Cluster_RefreshRate_msginit,
63
63
  &envoy_config_cluster_v3_Cluster_RingHashLbConfig_msginit,
64
+ &envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_msginit,
64
65
  &envoy_config_cluster_v3_Cluster_TransportSocketMatch_msginit,
65
66
  &envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry_msginit,
66
67
  &envoy_config_cluster_v3_Filter_msginit,
@@ -86,63 +87,64 @@ static const upb_msglayout *const envoy_config_cluster_v3_Cluster_submsgs[34] =
86
87
  &google_protobuf_UInt32Value_msginit,
87
88
  };
88
89
 
89
- static const upb_msglayout_field envoy_config_cluster_v3_Cluster__fields[50] = {
90
+ static const upb_msglayout_field envoy_config_cluster_v3_Cluster__fields[51] = {
90
91
  {1, UPB_SIZE(24, 24), 0, 0, 9, _UPB_MODE_SCALAR},
91
92
  {2, UPB_SIZE(172, 320), UPB_SIZE(-177, -329), 0, 14, _UPB_MODE_SCALAR},
92
93
  {3, UPB_SIZE(40, 56), 1, 3, 11, _UPB_MODE_SCALAR},
93
- {4, UPB_SIZE(44, 64), 2, 32, 11, _UPB_MODE_SCALAR},
94
- {5, UPB_SIZE(48, 72), 3, 33, 11, _UPB_MODE_SCALAR},
94
+ {4, UPB_SIZE(44, 64), 2, 33, 11, _UPB_MODE_SCALAR},
95
+ {5, UPB_SIZE(48, 72), 3, 34, 11, _UPB_MODE_SCALAR},
95
96
  {6, UPB_SIZE(4, 4), 0, 0, 14, _UPB_MODE_SCALAR},
96
- {8, UPB_SIZE(152, 280), 0, 22, 11, _UPB_MODE_ARRAY},
97
- {9, UPB_SIZE(52, 80), 4, 33, 11, _UPB_MODE_SCALAR},
97
+ {8, UPB_SIZE(152, 280), 0, 23, 11, _UPB_MODE_ARRAY},
98
+ {9, UPB_SIZE(52, 80), 4, 34, 11, _UPB_MODE_SCALAR},
98
99
  {10, UPB_SIZE(56, 88), 5, 0, 11, _UPB_MODE_SCALAR},
99
- {13, UPB_SIZE(60, 96), 6, 23, 11, _UPB_MODE_SCALAR},
100
- {14, UPB_SIZE(64, 104), 7, 24, 11, _UPB_MODE_SCALAR},
101
- {16, UPB_SIZE(68, 112), 8, 32, 11, _UPB_MODE_SCALAR},
100
+ {13, UPB_SIZE(60, 96), 6, 24, 11, _UPB_MODE_SCALAR},
101
+ {14, UPB_SIZE(64, 104), 7, 25, 11, _UPB_MODE_SCALAR},
102
+ {16, UPB_SIZE(68, 112), 8, 33, 11, _UPB_MODE_SCALAR},
102
103
  {17, UPB_SIZE(8, 8), 0, 0, 14, _UPB_MODE_SCALAR},
103
- {18, UPB_SIZE(156, 288), 0, 18, 11, _UPB_MODE_ARRAY},
104
- {19, UPB_SIZE(72, 120), 9, 15, 11, _UPB_MODE_SCALAR},
105
- {20, UPB_SIZE(76, 128), 10, 32, 11, _UPB_MODE_SCALAR},
106
- {21, UPB_SIZE(80, 136), 11, 19, 11, _UPB_MODE_SCALAR},
104
+ {18, UPB_SIZE(156, 288), 0, 19, 11, _UPB_MODE_ARRAY},
105
+ {19, UPB_SIZE(72, 120), 9, 16, 11, _UPB_MODE_SCALAR},
106
+ {20, UPB_SIZE(76, 128), 10, 33, 11, _UPB_MODE_SCALAR},
107
+ {21, UPB_SIZE(80, 136), 11, 20, 11, _UPB_MODE_SCALAR},
107
108
  {22, UPB_SIZE(84, 144), 12, 4, 11, _UPB_MODE_SCALAR},
108
109
  {23, UPB_SIZE(180, 336), UPB_SIZE(-185, -345), 10, 11, _UPB_MODE_SCALAR},
109
- {24, UPB_SIZE(88, 152), 13, 27, 11, _UPB_MODE_SCALAR},
110
- {25, UPB_SIZE(92, 160), 14, 26, 11, _UPB_MODE_SCALAR},
110
+ {24, UPB_SIZE(88, 152), 13, 28, 11, _UPB_MODE_SCALAR},
111
+ {25, UPB_SIZE(92, 160), 14, 27, 11, _UPB_MODE_SCALAR},
111
112
  {26, UPB_SIZE(12, 12), 0, 0, 14, _UPB_MODE_SCALAR},
112
113
  {27, UPB_SIZE(96, 168), 15, 1, 11, _UPB_MODE_SCALAR},
113
114
  {28, UPB_SIZE(32, 40), 0, 0, 9, _UPB_MODE_SCALAR},
114
- {29, UPB_SIZE(100, 176), 16, 25, 11, _UPB_MODE_SCALAR},
115
- {30, UPB_SIZE(104, 184), 17, 17, 11, _UPB_MODE_SCALAR},
115
+ {29, UPB_SIZE(100, 176), 16, 26, 11, _UPB_MODE_SCALAR},
116
+ {30, UPB_SIZE(104, 184), 17, 18, 11, _UPB_MODE_SCALAR},
116
117
  {31, UPB_SIZE(16, 16), 0, 0, 8, _UPB_MODE_SCALAR},
117
118
  {32, UPB_SIZE(17, 17), 0, 0, 8, _UPB_MODE_SCALAR},
118
- {33, UPB_SIZE(108, 192), 18, 30, 11, _UPB_MODE_SCALAR},
119
+ {33, UPB_SIZE(108, 192), 18, 31, 11, _UPB_MODE_SCALAR},
119
120
  {34, UPB_SIZE(180, 336), UPB_SIZE(-185, -345), 7, 11, _UPB_MODE_SCALAR},
120
- {36, UPB_SIZE(160, 296), 0, 12, 11, _UPB_MODE_MAP},
121
+ {36, UPB_SIZE(160, 296), 0, 13, 11, _UPB_MODE_MAP},
121
122
  {37, UPB_SIZE(180, 336), UPB_SIZE(-185, -345), 5, 11, _UPB_MODE_SCALAR},
122
123
  {38, UPB_SIZE(172, 320), UPB_SIZE(-177, -329), 2, 11, _UPB_MODE_SCALAR},
123
124
  {39, UPB_SIZE(18, 18), 0, 0, 8, _UPB_MODE_SCALAR},
124
- {40, UPB_SIZE(164, 304), 0, 13, 11, _UPB_MODE_ARRAY},
125
- {41, UPB_SIZE(112, 200), 19, 14, 11, _UPB_MODE_SCALAR},
126
- {42, UPB_SIZE(116, 208), 20, 20, 11, _UPB_MODE_SCALAR},
127
- {43, UPB_SIZE(168, 312), 0, 11, 11, _UPB_MODE_ARRAY},
125
+ {40, UPB_SIZE(164, 304), 0, 14, 11, _UPB_MODE_ARRAY},
126
+ {41, UPB_SIZE(112, 200), 19, 15, 11, _UPB_MODE_SCALAR},
127
+ {42, UPB_SIZE(116, 208), 20, 21, 11, _UPB_MODE_SCALAR},
128
+ {43, UPB_SIZE(168, 312), 0, 12, 11, _UPB_MODE_ARRAY},
128
129
  {44, UPB_SIZE(120, 216), 21, 9, 11, _UPB_MODE_SCALAR},
129
130
  {45, UPB_SIZE(19, 19), 0, 0, 8, _UPB_MODE_SCALAR},
130
- {46, UPB_SIZE(124, 224), 22, 29, 11, _UPB_MODE_SCALAR},
131
+ {46, UPB_SIZE(124, 224), 22, 30, 11, _UPB_MODE_SCALAR},
131
132
  {47, UPB_SIZE(20, 20), 0, 0, 8, _UPB_MODE_SCALAR},
132
- {48, UPB_SIZE(128, 232), 23, 28, 11, _UPB_MODE_SCALAR},
133
- {49, UPB_SIZE(132, 240), 24, 16, 11, _UPB_MODE_SCALAR},
133
+ {48, UPB_SIZE(128, 232), 23, 29, 11, _UPB_MODE_SCALAR},
134
+ {49, UPB_SIZE(132, 240), 24, 17, 11, _UPB_MODE_SCALAR},
134
135
  {50, UPB_SIZE(136, 248), 25, 8, 11, _UPB_MODE_SCALAR},
135
136
  {51, UPB_SIZE(21, 21), 0, 0, 8, _UPB_MODE_SCALAR},
136
137
  {52, UPB_SIZE(180, 336), UPB_SIZE(-185, -345), 6, 11, _UPB_MODE_SCALAR},
137
- {53, UPB_SIZE(140, 256), 26, 21, 11, _UPB_MODE_SCALAR},
138
- {54, UPB_SIZE(144, 264), 27, 31, 11, _UPB_MODE_SCALAR},
139
- {55, UPB_SIZE(148, 272), 28, 28, 11, _UPB_MODE_SCALAR},
138
+ {53, UPB_SIZE(140, 256), 26, 22, 11, _UPB_MODE_SCALAR},
139
+ {54, UPB_SIZE(144, 264), 27, 32, 11, _UPB_MODE_SCALAR},
140
+ {55, UPB_SIZE(148, 272), 28, 29, 11, _UPB_MODE_SCALAR},
141
+ {56, UPB_SIZE(180, 336), UPB_SIZE(-185, -345), 11, 11, _UPB_MODE_SCALAR},
140
142
  };
141
143
 
142
144
  const upb_msglayout envoy_config_cluster_v3_Cluster_msginit = {
143
145
  &envoy_config_cluster_v3_Cluster_submsgs[0],
144
146
  &envoy_config_cluster_v3_Cluster__fields[0],
145
- UPB_SIZE(192, 352), 50, false, 6, 255,
147
+ UPB_SIZE(192, 352), 51, false, 6, 255,
146
148
  };
147
149
 
148
150
  static const upb_msglayout *const envoy_config_cluster_v3_Cluster_TransportSocketMatch_submsgs[2] = {
@@ -226,20 +228,52 @@ const upb_msglayout envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelec
226
228
  UPB_SIZE(16, 24), 4, false, 4, 255,
227
229
  };
228
230
 
229
- static const upb_msglayout *const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_submsgs[2] = {
231
+ static const upb_msglayout *const envoy_config_cluster_v3_Cluster_SlowStartConfig_submsgs[2] = {
230
232
  &envoy_config_core_v3_RuntimeDouble_msginit,
231
- &google_protobuf_UInt32Value_msginit,
233
+ &google_protobuf_Duration_msginit,
232
234
  };
233
235
 
234
- static const upb_msglayout_field envoy_config_cluster_v3_Cluster_LeastRequestLbConfig__fields[2] = {
236
+ static const upb_msglayout_field envoy_config_cluster_v3_Cluster_SlowStartConfig__fields[2] = {
235
237
  {1, UPB_SIZE(4, 8), 1, 1, 11, _UPB_MODE_SCALAR},
236
238
  {2, UPB_SIZE(8, 16), 2, 0, 11, _UPB_MODE_SCALAR},
237
239
  };
238
240
 
241
+ const upb_msglayout envoy_config_cluster_v3_Cluster_SlowStartConfig_msginit = {
242
+ &envoy_config_cluster_v3_Cluster_SlowStartConfig_submsgs[0],
243
+ &envoy_config_cluster_v3_Cluster_SlowStartConfig__fields[0],
244
+ UPB_SIZE(16, 24), 2, false, 2, 255,
245
+ };
246
+
247
+ static const upb_msglayout *const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_submsgs[1] = {
248
+ &envoy_config_cluster_v3_Cluster_SlowStartConfig_msginit,
249
+ };
250
+
251
+ static const upb_msglayout_field envoy_config_cluster_v3_Cluster_RoundRobinLbConfig__fields[1] = {
252
+ {1, UPB_SIZE(4, 8), 1, 0, 11, _UPB_MODE_SCALAR},
253
+ };
254
+
255
+ const upb_msglayout envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_msginit = {
256
+ &envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_submsgs[0],
257
+ &envoy_config_cluster_v3_Cluster_RoundRobinLbConfig__fields[0],
258
+ UPB_SIZE(8, 16), 1, false, 1, 255,
259
+ };
260
+
261
+ static const upb_msglayout *const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_submsgs[3] = {
262
+ &envoy_config_cluster_v3_Cluster_SlowStartConfig_msginit,
263
+ &envoy_config_core_v3_RuntimeDouble_msginit,
264
+ &google_protobuf_UInt32Value_msginit,
265
+ };
266
+
267
+ static const upb_msglayout_field envoy_config_cluster_v3_Cluster_LeastRequestLbConfig__fields[3] = {
268
+ {1, UPB_SIZE(4, 8), 1, 2, 11, _UPB_MODE_SCALAR},
269
+ {2, UPB_SIZE(8, 16), 2, 1, 11, _UPB_MODE_SCALAR},
270
+ {3, UPB_SIZE(12, 24), 3, 0, 11, _UPB_MODE_SCALAR},
271
+ };
272
+
239
273
  const upb_msglayout envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_msginit = {
240
274
  &envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_submsgs[0],
241
275
  &envoy_config_cluster_v3_Cluster_LeastRequestLbConfig__fields[0],
242
- UPB_SIZE(16, 24), 2, false, 2, 255,
276
+ UPB_SIZE(16, 32), 3, false, 3, 255,
243
277
  };
244
278
 
245
279
  static const upb_msglayout *const envoy_config_cluster_v3_Cluster_RingHashLbConfig_submsgs[1] = {