grpc 1.43.1 → 1.48.0

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 (1686) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +488 -338
  3. data/include/grpc/compression.h +1 -1
  4. data/include/grpc/event_engine/event_engine.h +64 -20
  5. data/include/grpc/event_engine/memory_allocator.h +0 -15
  6. data/include/grpc/event_engine/port.h +1 -1
  7. data/include/grpc/event_engine/slice.h +286 -0
  8. data/include/grpc/event_engine/slice_buffer.h +118 -0
  9. data/include/grpc/grpc.h +43 -17
  10. data/include/grpc/grpc_posix.h +20 -19
  11. data/include/grpc/grpc_security.h +47 -50
  12. data/include/grpc/impl/codegen/compression_types.h +2 -3
  13. data/include/grpc/impl/codegen/connectivity_state.h +2 -1
  14. data/include/grpc/impl/codegen/gpr_types.h +2 -1
  15. data/include/grpc/impl/codegen/grpc_types.h +26 -22
  16. data/include/grpc/impl/codegen/port_platform.h +107 -40
  17. data/include/grpc/impl/codegen/slice.h +5 -2
  18. data/include/grpc/slice.h +0 -11
  19. data/src/core/ext/filters/census/grpc_context.cc +3 -0
  20. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
  21. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +141 -0
  22. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
  23. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +7 -5
  24. data/src/core/ext/filters/client_channel/backend_metric.cc +20 -15
  25. data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
  26. data/src/core/ext/filters/client_channel/backup_poller.cc +20 -14
  27. data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
  28. data/src/core/ext/filters/client_channel/channel_connectivity.cc +48 -26
  29. data/src/core/ext/filters/client_channel/client_channel.cc +413 -301
  30. data/src/core/ext/filters/client_channel/client_channel.h +83 -45
  31. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
  32. data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
  33. data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
  34. data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
  35. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -23
  36. data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
  37. data/src/core/ext/filters/client_channel/config_selector.h +12 -10
  38. data/src/core/ext/filters/client_channel/connector.h +10 -4
  39. data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -8
  40. data/src/core/ext/filters/client_channel/dynamic_filters.h +14 -4
  41. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +4 -22
  42. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +6 -15
  43. data/src/core/ext/filters/client_channel/health/health_check_client.cc +140 -583
  44. data/src/core/ext/filters/client_channel/health/health_check_client.h +26 -160
  45. data/src/core/ext/filters/client_channel/http_proxy.cc +98 -112
  46. data/src/core/ext/filters/client_channel/http_proxy.h +20 -0
  47. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +10 -5
  48. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
  49. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  50. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
  51. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
  52. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +15 -12
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +227 -137
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
  56. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
  57. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
  58. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
  59. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +25 -16
  60. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +10 -7
  61. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +407 -0
  62. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  63. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1036 -0
  64. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
  65. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +196 -176
  66. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +364 -224
  67. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +381 -233
  68. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -1
  69. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +253 -175
  70. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +261 -234
  71. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +133 -120
  72. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +155 -105
  73. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +172 -84
  74. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +7 -1
  75. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +99 -46
  76. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +55 -30
  77. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +355 -394
  78. data/src/core/ext/filters/client_channel/lb_policy.cc +19 -16
  79. data/src/core/ext/filters/client_channel/lb_policy.h +37 -34
  80. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
  81. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +11 -6
  82. data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
  83. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
  84. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
  85. data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
  86. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +1 -0
  87. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
  88. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +36 -22
  89. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +383 -318
  90. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +30 -13
  91. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +29 -23
  92. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +29 -44
  93. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +172 -240
  94. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +38 -36
  95. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +3 -2
  96. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  97. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
  98. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +123 -254
  99. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +37 -37
  100. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -3
  101. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +144 -77
  102. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +213 -0
  103. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +113 -0
  104. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +56 -50
  105. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +368 -167
  106. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
  107. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +19 -28
  108. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +22 -10
  109. data/src/core/ext/filters/client_channel/retry_filter.cc +322 -201
  110. data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
  111. data/src/core/ext/filters/client_channel/retry_service_config.cc +27 -30
  112. data/src/core/ext/filters/client_channel/retry_service_config.h +28 -13
  113. data/src/core/ext/filters/client_channel/retry_throttle.cc +10 -31
  114. data/src/core/ext/filters/client_channel/retry_throttle.h +18 -6
  115. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +30 -11
  116. data/src/core/ext/filters/client_channel/subchannel.cc +227 -235
  117. data/src/core/ext/filters/client_channel/subchannel.h +84 -40
  118. data/src/core/ext/filters/client_channel/subchannel_interface.h +51 -41
  119. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  120. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
  121. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
  122. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +473 -0
  123. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +222 -0
  124. data/src/core/ext/filters/deadline/deadline_filter.cc +31 -21
  125. data/src/core/ext/filters/deadline/deadline_filter.h +11 -3
  126. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +173 -402
  127. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +31 -3
  128. data/src/core/ext/filters/fault_injection/service_config_parser.cc +18 -17
  129. data/src/core/ext/filters/fault_injection/service_config_parser.h +27 -7
  130. data/src/core/ext/filters/http/client/http_client_filter.cc +108 -535
  131. data/src/core/ext/filters/http/client/http_client_filter.h +35 -5
  132. data/src/core/ext/filters/http/client_authority_filter.cc +44 -112
  133. data/src/core/ext/filters/http/client_authority_filter.h +28 -6
  134. data/src/core/ext/filters/http/http_filters_plugin.cc +33 -24
  135. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +101 -320
  136. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
  137. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +59 -133
  138. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
  139. data/src/core/ext/filters/http/server/http_server_filter.cc +100 -458
  140. data/src/core/ext/filters/http/server/http_server_filter.h +37 -3
  141. data/src/core/ext/filters/message_size/message_size_filter.cc +66 -70
  142. data/src/core/ext/filters/message_size/message_size_filter.h +25 -5
  143. data/src/core/ext/filters/rbac/rbac_filter.cc +174 -0
  144. data/src/core/ext/filters/rbac/rbac_filter.h +84 -0
  145. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +617 -0
  146. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +87 -0
  147. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +3 -8
  148. data/src/core/ext/filters/server_config_selector/server_config_selector.h +14 -4
  149. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +97 -199
  150. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
  151. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +278 -77
  152. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
  153. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +288 -56
  154. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
  155. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
  156. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  157. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  158. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +512 -710
  159. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -3
  160. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
  161. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
  162. data/src/core/ext/transport/chttp2/transport/flow_control.cc +147 -263
  163. data/src/core/ext/transport/chttp2/transport/flow_control.h +180 -289
  164. data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
  165. data/src/core/ext/transport/chttp2/transport/frame_data.cc +59 -212
  166. data/src/core/ext/transport/chttp2/transport/frame_data.h +13 -36
  167. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
  168. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
  169. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +9 -4
  170. data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
  171. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +11 -2
  172. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
  173. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +12 -42
  174. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
  175. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +10 -12
  176. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
  177. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +349 -290
  178. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +85 -162
  179. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +4 -1
  180. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +5 -0
  181. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +61 -91
  182. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -2
  183. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +146 -37
  184. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +41 -46
  185. data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
  186. data/src/core/ext/transport/chttp2/transport/internal.h +41 -153
  187. data/src/core/ext/transport/chttp2/transport/parsing.cc +87 -51
  188. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +11 -11
  189. data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
  190. data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
  191. data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
  192. data/src/core/ext/transport/chttp2/transport/writing.cc +135 -157
  193. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -5
  194. data/src/core/ext/transport/inproc/inproc_transport.cc +117 -158
  195. data/src/core/ext/transport/inproc/inproc_transport.h +3 -4
  196. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  197. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
  198. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  199. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
  200. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +182 -176
  201. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1248 -685
  202. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  203. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
  204. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  205. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
  206. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  207. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
  208. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  209. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
  210. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  211. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
  212. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  213. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
  214. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  215. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
  216. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +14 -12
  217. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +49 -16
  218. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +13 -11
  219. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +49 -23
  220. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +98 -96
  221. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +669 -386
  222. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +185 -173
  223. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1269 -664
  224. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +34 -26
  225. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +200 -91
  226. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +252 -238
  227. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1670 -827
  228. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +10 -8
  229. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +42 -24
  230. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +49 -27
  231. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +272 -99
  232. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  233. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
  234. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +54 -50
  235. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +354 -190
  236. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +11 -8
  237. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +45 -25
  238. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +157 -154
  239. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1068 -582
  240. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +87 -42
  241. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +525 -167
  242. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +9 -7
  243. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +38 -24
  244. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +11 -29
  245. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +41 -101
  246. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  247. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
  248. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +108 -104
  249. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +768 -410
  250. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +115 -84
  251. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +736 -349
  252. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +11 -9
  253. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +57 -31
  254. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +162 -108
  255. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +992 -397
  256. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +8 -6
  257. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +28 -17
  258. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +15 -13
  259. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +83 -49
  260. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +13 -11
  261. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +75 -34
  262. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +15 -13
  263. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +93 -49
  264. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +11 -9
  265. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +46 -26
  266. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +34 -32
  267. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +194 -109
  268. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +51 -48
  269. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +349 -190
  270. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +49 -47
  271. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +357 -188
  272. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +9 -7
  273. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +34 -21
  274. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +72 -61
  275. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +504 -260
  276. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +77 -69
  277. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +560 -301
  278. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +19 -15
  279. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +104 -49
  280. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +12 -10
  281. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +66 -41
  282. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  283. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
  284. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +58 -55
  285. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +413 -235
  286. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +62 -60
  287. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +406 -237
  288. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +82 -76
  289. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +562 -294
  290. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +37 -31
  291. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +271 -142
  292. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +503 -475
  293. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3642 -1901
  294. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +25 -19
  295. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +148 -72
  296. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
  297. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
  298. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  299. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
  300. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  301. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
  302. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +15 -13
  303. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +77 -46
  304. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  305. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
  306. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  307. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
  308. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  309. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
  310. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  311. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
  312. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  313. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  314. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  315. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
  316. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  317. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
  318. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +8 -6
  319. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +34 -24
  320. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +29 -27
  321. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +188 -113
  322. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +36 -34
  323. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +260 -132
  324. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
  325. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
  326. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +16 -14
  327. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +86 -43
  328. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +229 -198
  329. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1553 -734
  330. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
  331. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
  332. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  333. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
  334. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +3 -1
  335. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -1
  336. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +87 -58
  337. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +554 -235
  338. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +26 -24
  339. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +156 -87
  340. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +98 -71
  341. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +622 -263
  342. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  343. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
  344. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +6 -4
  345. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +22 -16
  346. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +67 -65
  347. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +474 -256
  348. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +18 -16
  349. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +107 -62
  350. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +51 -49
  351. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +347 -186
  352. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  353. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
  354. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +20 -18
  355. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +124 -82
  356. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  357. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
  358. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +16 -14
  359. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +99 -57
  360. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +10 -8
  361. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +50 -31
  362. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +10 -8
  363. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +48 -27
  364. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +9 -7
  365. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +38 -24
  366. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +21 -19
  367. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +117 -69
  368. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +19 -17
  369. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +123 -65
  370. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +14 -12
  371. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +85 -53
  372. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +23 -21
  373. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +150 -83
  374. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +32 -30
  375. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +230 -146
  376. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +36 -34
  377. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +235 -131
  378. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  379. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
  380. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +3 -1
  381. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -1
  382. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  383. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
  384. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +13 -11
  385. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +62 -36
  386. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +19 -17
  387. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +98 -52
  388. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  389. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  390. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +10 -8
  391. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +40 -19
  392. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  393. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
  394. data/src/core/ext/upb-generated/google/api/annotations.upb.c +8 -6
  395. data/src/core/ext/upb-generated/google/api/annotations.upb.h +22 -6
  396. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +109 -103
  397. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +720 -382
  398. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +120 -112
  399. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +795 -402
  400. data/src/core/ext/upb-generated/google/api/http.upb.c +29 -27
  401. data/src/core/ext/upb-generated/google/api/http.upb.h +216 -115
  402. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  403. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
  404. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +9 -7
  405. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +38 -22
  406. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +291 -237
  407. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2076 -1030
  408. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +9 -7
  409. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +36 -20
  410. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +6 -4
  411. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +22 -16
  412. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +31 -29
  413. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +177 -93
  414. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +9 -7
  415. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +36 -20
  416. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +40 -38
  417. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +240 -149
  418. data/src/core/ext/upb-generated/google/rpc/status.upb.c +11 -9
  419. data/src/core/ext/upb-generated/google/rpc/status.upb.h +52 -30
  420. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  421. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
  422. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +21 -19
  423. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +103 -48
  424. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +102 -96
  425. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +685 -359
  426. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +16 -13
  427. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +76 -41
  428. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +12 -10
  429. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +56 -35
  430. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +57 -55
  431. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +383 -219
  432. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +22 -20
  433. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +115 -63
  434. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  435. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  436. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +36 -34
  437. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +189 -78
  438. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +14 -12
  439. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +53 -22
  440. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +7 -5
  441. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +15 -6
  442. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +14 -12
  443. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +55 -24
  444. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +13 -11
  445. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +49 -23
  446. data/src/core/ext/upb-generated/validate/validate.upb.c +339 -312
  447. data/src/core/ext/upb-generated/validate/validate.upb.h +2726 -1180
  448. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  449. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
  450. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  451. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
  452. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  453. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  454. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +34 -32
  455. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +171 -80
  456. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  457. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
  458. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +8 -6
  459. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +30 -19
  460. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +18 -16
  461. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +98 -55
  462. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +14 -12
  463. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +53 -30
  464. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  465. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
  466. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +12 -10
  467. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +55 -30
  468. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +20 -18
  469. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +130 -70
  470. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +12 -10
  471. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +58 -30
  472. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +23 -21
  473. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +101 -46
  474. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
  475. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
  476. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  477. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
  478. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  479. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
  480. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  481. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
  482. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +10 -8
  483. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +42 -24
  484. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  485. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  486. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  487. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  488. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +14 -12
  489. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +67 -67
  490. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  491. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  492. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  493. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  494. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  495. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  496. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  497. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  498. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  499. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  500. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  501. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  502. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  503. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  504. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +8 -6
  505. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
  506. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +8 -6
  507. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
  508. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +20 -17
  509. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
  510. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +248 -240
  511. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
  512. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +58 -51
  513. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
  514. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +385 -371
  515. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +76 -76
  516. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +14 -11
  517. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
  518. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +23 -16
  519. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
  520. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  521. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  522. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +15 -13
  523. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
  524. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +15 -12
  525. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
  526. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +85 -80
  527. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +73 -73
  528. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +138 -101
  529. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
  530. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +14 -12
  531. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
  532. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +22 -34
  533. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
  534. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  535. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  536. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +21 -18
  537. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
  538. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +177 -166
  539. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
  540. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +14 -12
  541. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
  542. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +250 -221
  543. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
  544. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +12 -9
  545. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
  546. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +14 -11
  547. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
  548. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +14 -11
  549. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
  550. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +18 -15
  551. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
  552. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +13 -11
  553. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
  554. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +18 -15
  555. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
  556. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +19 -16
  557. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +19 -19
  558. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +18 -15
  559. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
  560. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +14 -11
  561. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
  562. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +52 -45
  563. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +19 -19
  564. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +153 -147
  565. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
  566. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +19 -16
  567. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
  568. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +15 -12
  569. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
  570. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  571. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  572. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +17 -14
  573. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
  574. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +17 -14
  575. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +28 -28
  576. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
  577. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  578. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +36 -27
  579. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
  580. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +826 -803
  581. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +160 -160
  582. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +52 -37
  583. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
  584. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  585. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  586. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  587. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  588. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  589. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  590. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +15 -12
  591. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
  592. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  593. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  594. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  595. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  596. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  597. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  598. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  599. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  600. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  601. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  602. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  603. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  604. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  605. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  606. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +15 -11
  607. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
  608. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +17 -14
  609. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
  610. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +18 -15
  611. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
  612. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
  613. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  614. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +17 -13
  615. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
  616. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +197 -172
  617. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +63 -58
  618. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +15 -11
  619. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
  620. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +169 -140
  621. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +24 -19
  622. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +19 -16
  623. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
  624. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +217 -199
  625. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
  626. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  627. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  628. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +14 -11
  629. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
  630. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +17 -14
  631. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +22 -22
  632. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +16 -13
  633. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
  634. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +20 -17
  635. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
  636. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  637. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  638. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +13 -10
  639. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
  640. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  641. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  642. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +15 -12
  643. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
  644. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +15 -12
  645. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
  646. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +15 -12
  647. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
  648. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +15 -12
  649. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
  650. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +15 -12
  651. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
  652. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +15 -12
  653. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
  654. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +14 -12
  655. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
  656. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +16 -13
  657. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
  658. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +13 -10
  659. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
  660. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +14 -11
  661. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
  662. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  663. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  664. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +10 -8
  665. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
  666. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  667. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  668. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +12 -10
  669. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
  670. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +11 -8
  671. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
  672. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  673. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  674. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +11 -9
  675. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
  676. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  677. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  678. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +5 -5
  679. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
  680. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  681. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  682. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  683. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  684. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +3 -3
  685. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
  686. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  687. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  688. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +3 -3
  689. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
  690. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +3 -3
  691. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
  692. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +3 -3
  693. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
  694. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +3 -3
  695. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
  696. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +3 -3
  697. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
  698. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +3 -3
  699. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
  700. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +3 -3
  701. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
  702. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
  703. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
  704. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  705. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  706. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  707. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  708. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +4 -4
  709. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
  710. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +5 -5
  711. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
  712. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -4
  713. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
  714. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +4 -4
  715. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
  716. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +4 -4
  717. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
  718. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +6 -6
  719. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
  720. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  721. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  722. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  723. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  724. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  725. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  726. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +4 -4
  727. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +13 -13
  728. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  729. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  730. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +5 -5
  731. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
  732. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +7 -7
  733. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
  734. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +4 -4
  735. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
  736. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  737. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  738. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +6 -6
  739. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
  740. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +6 -6
  741. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
  742. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +6 -6
  743. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
  744. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  745. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  746. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  747. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  748. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  749. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  750. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +5 -5
  751. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +4 -4
  752. data/src/core/ext/xds/certificate_provider_factory.h +6 -1
  753. data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
  754. data/src/core/ext/xds/certificate_provider_registry.h +3 -1
  755. data/src/core/ext/xds/certificate_provider_store.cc +12 -0
  756. data/src/core/ext/xds/certificate_provider_store.h +18 -0
  757. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +13 -4
  758. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +10 -2
  759. data/src/core/ext/xds/upb_utils.h +66 -0
  760. data/src/core/ext/xds/xds_api.cc +376 -3718
  761. data/src/core/ext/xds/xds_api.h +71 -619
  762. data/src/core/ext/xds/xds_bootstrap.cc +250 -141
  763. data/src/core/ext/xds/xds_bootstrap.h +39 -23
  764. data/src/core/ext/xds/xds_certificate_provider.cc +17 -3
  765. data/src/core/ext/xds/xds_certificate_provider.h +25 -1
  766. data/src/core/ext/xds/xds_channel_stack_modifier.cc +24 -18
  767. data/src/core/ext/xds/xds_channel_stack_modifier.h +9 -4
  768. data/src/core/ext/xds/xds_client.cc +850 -1160
  769. data/src/core/ext/xds/xds_client.h +129 -156
  770. data/src/core/ext/xds/xds_client_stats.cc +18 -19
  771. data/src/core/ext/xds/xds_client_stats.h +9 -7
  772. data/src/core/ext/xds/xds_cluster.cc +554 -0
  773. data/src/core/ext/xds/xds_cluster.h +119 -0
  774. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +151 -0
  775. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +72 -0
  776. data/src/core/ext/xds/xds_common_types.cc +402 -0
  777. data/src/core/ext/xds/xds_common_types.h +103 -0
  778. data/src/core/ext/xds/xds_endpoint.cc +381 -0
  779. data/src/core/ext/xds/xds_endpoint.h +143 -0
  780. data/src/core/ext/xds/xds_http_fault_filter.cc +17 -15
  781. data/src/core/ext/xds/xds_http_fault_filter.h +6 -4
  782. data/src/core/ext/xds/xds_http_filters.cc +18 -5
  783. data/src/core/ext/xds/xds_http_filters.h +7 -7
  784. data/src/core/ext/xds/xds_http_rbac_filter.cc +579 -0
  785. data/src/core/ext/xds/xds_http_rbac_filter.h +61 -0
  786. data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
  787. data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
  788. data/src/core/ext/xds/xds_listener.cc +1067 -0
  789. data/src/core/ext/xds/xds_listener.h +229 -0
  790. data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
  791. data/src/core/ext/xds/xds_resource_type.h +98 -0
  792. data/src/core/ext/xds/xds_resource_type_impl.h +91 -0
  793. data/src/core/ext/xds/xds_route_config.cc +1150 -0
  794. data/src/core/ext/xds/xds_route_config.h +227 -0
  795. data/src/core/ext/xds/xds_routing.cc +28 -9
  796. data/src/core/ext/xds/xds_routing.h +15 -7
  797. data/src/core/ext/xds/xds_server_config_fetcher.cc +234 -129
  798. data/src/core/lib/address_utils/parse_address.cc +25 -8
  799. data/src/core/lib/address_utils/parse_address.h +8 -2
  800. data/src/core/lib/address_utils/sockaddr_utils.cc +82 -51
  801. data/src/core/lib/address_utils/sockaddr_utils.h +9 -19
  802. data/src/core/lib/avl/avl.h +71 -6
  803. data/src/core/lib/backoff/backoff.cc +9 -38
  804. data/src/core/lib/backoff/backoff.h +12 -12
  805. data/src/core/lib/channel/call_finalization.h +90 -0
  806. data/src/core/lib/channel/call_tracer.h +15 -6
  807. data/src/core/lib/channel/channel_args.cc +202 -45
  808. data/src/core/lib/channel/channel_args.h +243 -9
  809. data/src/core/lib/channel/channel_args_preconditioning.cc +6 -10
  810. data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
  811. data/src/core/lib/channel/channel_fwd.h +26 -0
  812. data/src/core/lib/channel/channel_stack.cc +55 -10
  813. data/src/core/lib/channel/channel_stack.h +83 -14
  814. data/src/core/lib/channel/channel_stack_builder.cc +19 -276
  815. data/src/core/lib/channel/channel_stack_builder.h +104 -150
  816. data/src/core/lib/channel/channel_stack_builder_impl.cc +97 -0
  817. data/src/core/lib/channel/channel_stack_builder_impl.h +46 -0
  818. data/src/core/lib/channel/channel_trace.cc +11 -19
  819. data/src/core/lib/channel/channel_trace.h +6 -3
  820. data/src/core/lib/channel/channelz.cc +11 -14
  821. data/src/core/lib/channel/channelz.h +15 -7
  822. data/src/core/lib/channel/channelz_registry.cc +11 -19
  823. data/src/core/lib/channel/channelz_registry.h +10 -9
  824. data/src/core/lib/channel/connected_channel.cc +26 -30
  825. data/src/core/lib/channel/connected_channel.h +4 -1
  826. data/src/core/lib/channel/context.h +11 -0
  827. data/src/core/lib/channel/promise_based_filter.cc +1263 -0
  828. data/src/core/lib/channel/promise_based_filter.h +572 -0
  829. data/src/core/lib/channel/status_util.cc +2 -0
  830. data/src/core/lib/channel/status_util.h +0 -3
  831. data/src/core/lib/compression/compression.cc +26 -113
  832. data/src/core/lib/compression/compression_internal.cc +170 -204
  833. data/src/core/lib/compression/compression_internal.h +68 -72
  834. data/src/core/lib/compression/message_compress.cc +14 -12
  835. data/src/core/lib/compression/message_compress.h +4 -5
  836. data/src/core/lib/config/core_configuration.cc +11 -2
  837. data/src/core/lib/config/core_configuration.h +41 -1
  838. data/src/core/lib/debug/stats.cc +9 -9
  839. data/src/core/lib/debug/stats.h +2 -1
  840. data/src/core/lib/debug/stats_data.cc +4 -7
  841. data/src/core/lib/debug/stats_data.h +18 -25
  842. data/src/core/lib/debug/trace.h +13 -12
  843. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
  844. data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
  845. data/src/core/lib/{iomgr/event_engine/resolved_address_internal.h → event_engine/default_event_engine_factory.cc} +10 -12
  846. data/src/core/lib/event_engine/event_engine.cc +40 -10
  847. data/src/core/lib/event_engine/event_engine_factory.h +8 -0
  848. data/src/core/lib/event_engine/handle_containers.h +67 -0
  849. data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.cc +159 -0
  850. data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.h +122 -0
  851. data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
  852. data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
  853. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
  854. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
  855. data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
  856. data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
  857. data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
  858. data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
  859. data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
  860. data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
  861. data/src/core/lib/event_engine/memory_allocator.cc +20 -16
  862. data/src/core/lib/{iomgr/event_engine → event_engine}/promise.h +27 -9
  863. data/src/core/lib/{iomgr/event_engine/resolved_address_internal.cc → event_engine/resolved_address.cc} +13 -13
  864. data/src/core/lib/event_engine/slice.cc +102 -0
  865. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  866. data/src/core/{ext/filters/max_age/max_age_filter.h → lib/event_engine/trace.cc} +3 -11
  867. data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
  868. data/src/core/lib/gpr/log.cc +5 -0
  869. data/src/core/lib/gpr/sync_posix.cc +1 -0
  870. data/src/core/lib/gpr/time.cc +2 -1
  871. data/src/core/lib/gpr/time_posix.cc +6 -9
  872. data/src/core/lib/gpr/time_windows.cc +10 -7
  873. data/src/core/lib/gpr/tls.h +4 -5
  874. data/src/core/lib/gpr/useful.h +18 -0
  875. data/src/core/lib/gprpp/bitset.h +24 -1
  876. data/src/core/lib/gprpp/chunked_vector.h +49 -3
  877. data/src/core/lib/gprpp/construct_destruct.h +1 -0
  878. data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
  879. data/src/core/lib/gprpp/debug_location.h +2 -0
  880. data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
  881. data/src/core/lib/gprpp/examine_stack.h +0 -1
  882. data/src/core/lib/gprpp/fork.cc +3 -6
  883. data/src/core/lib/gprpp/global_config.h +2 -4
  884. data/src/core/lib/gprpp/global_config_env.cc +3 -2
  885. data/src/core/lib/gprpp/global_config_env.h +3 -1
  886. data/src/core/lib/gprpp/global_config_generic.h +0 -4
  887. data/src/core/lib/gprpp/host_port.cc +2 -0
  888. data/src/core/lib/gprpp/manual_constructor.h +0 -68
  889. data/src/core/lib/gprpp/match.h +75 -0
  890. data/src/core/lib/gprpp/memory.h +1 -5
  891. data/src/core/lib/gprpp/orphanable.h +1 -4
  892. data/src/core/lib/gprpp/overload.h +59 -0
  893. data/src/core/lib/gprpp/ref_counted.h +3 -3
  894. data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
  895. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  896. data/src/core/lib/gprpp/stat.h +0 -2
  897. data/src/core/lib/gprpp/stat_posix.cc +7 -2
  898. data/src/core/lib/gprpp/status_helper.cc +74 -48
  899. data/src/core/lib/gprpp/status_helper.h +10 -19
  900. data/src/core/lib/gprpp/sync.h +3 -1
  901. data/src/core/lib/gprpp/table.h +21 -0
  902. data/src/core/lib/gprpp/thd.h +2 -5
  903. data/src/core/lib/gprpp/thd_posix.cc +4 -2
  904. data/src/core/lib/gprpp/thd_windows.cc +2 -0
  905. data/src/core/lib/gprpp/time.cc +214 -0
  906. data/src/core/lib/gprpp/time.h +301 -0
  907. data/src/core/lib/gprpp/time_util.cc +4 -0
  908. data/src/core/lib/gprpp/time_util.h +1 -1
  909. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  910. data/src/core/lib/http/format_request.cc +62 -29
  911. data/src/core/lib/http/format_request.h +10 -7
  912. data/src/core/lib/http/httpcli.cc +325 -244
  913. data/src/core/lib/http/httpcli.h +232 -91
  914. data/src/core/lib/http/httpcli_security_connector.cc +79 -79
  915. data/src/core/lib/http/httpcli_ssl_credentials.h +39 -0
  916. data/src/core/lib/http/parser.cc +85 -15
  917. data/src/core/lib/http/parser.h +18 -2
  918. data/src/core/lib/iomgr/buffer_list.h +5 -5
  919. data/src/core/lib/iomgr/call_combiner.cc +17 -6
  920. data/src/core/lib/iomgr/closure.h +29 -9
  921. data/src/core/lib/iomgr/combiner.cc +25 -3
  922. data/src/core/lib/iomgr/endpoint.cc +4 -4
  923. data/src/core/lib/iomgr/endpoint.h +7 -5
  924. data/src/core/lib/iomgr/endpoint_cfstream.cc +9 -6
  925. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  926. data/src/core/lib/iomgr/error.cc +24 -19
  927. data/src/core/lib/iomgr/error.h +9 -7
  928. data/src/core/lib/iomgr/ev_apple.cc +6 -5
  929. data/src/core/lib/iomgr/ev_epoll1_linux.cc +65 -25
  930. data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
  931. data/src/core/lib/iomgr/ev_poll_posix.cc +84 -59
  932. data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
  933. data/src/core/lib/iomgr/ev_posix.cc +58 -100
  934. data/src/core/lib/iomgr/ev_posix.h +6 -4
  935. data/src/core/lib/iomgr/exec_ctx.cc +25 -97
  936. data/src/core/lib/iomgr/exec_ctx.h +8 -25
  937. data/src/core/lib/iomgr/executor.cc +10 -1
  938. data/src/core/lib/iomgr/fork_posix.cc +1 -0
  939. data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
  940. data/src/core/lib/iomgr/internal_errqueue.h +1 -6
  941. data/src/core/lib/iomgr/iocp_windows.cc +9 -9
  942. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  943. data/src/core/lib/iomgr/iomgr.cc +7 -1
  944. data/src/core/lib/iomgr/{event_engine/pollset.h → iomgr_fwd.h} +9 -9
  945. data/src/core/lib/iomgr/iomgr_posix.cc +3 -2
  946. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +3 -2
  947. data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
  948. data/src/core/lib/iomgr/load_file.cc +1 -1
  949. data/src/core/lib/iomgr/polling_entity.h +6 -0
  950. data/src/core/lib/iomgr/pollset.cc +1 -1
  951. data/src/core/lib/iomgr/pollset.h +4 -4
  952. data/src/core/lib/iomgr/pollset_set.h +1 -2
  953. data/src/core/lib/iomgr/pollset_windows.cc +2 -2
  954. data/src/core/lib/iomgr/port.h +26 -12
  955. data/src/core/lib/iomgr/resolve_address.cc +12 -23
  956. data/src/core/lib/iomgr/resolve_address.h +56 -46
  957. data/src/core/lib/iomgr/resolve_address_impl.h +58 -0
  958. data/src/core/lib/iomgr/resolve_address_posix.cc +76 -66
  959. data/src/core/lib/iomgr/resolve_address_posix.h +50 -0
  960. data/src/core/lib/iomgr/resolve_address_windows.cc +87 -75
  961. data/src/core/lib/iomgr/resolve_address_windows.h +50 -0
  962. data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/resolved_address.h} +21 -10
  963. data/src/core/lib/iomgr/sockaddr.h +2 -3
  964. data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
  965. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
  966. data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
  967. data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -19
  968. data/src/core/lib/iomgr/tcp_client.cc +12 -7
  969. data/src/core/lib/iomgr/tcp_client.h +24 -12
  970. data/src/core/lib/iomgr/tcp_client_cfstream.cc +24 -10
  971. data/src/core/lib/iomgr/tcp_client_posix.cc +157 -32
  972. data/src/core/lib/iomgr/tcp_client_posix.h +2 -2
  973. data/src/core/lib/iomgr/tcp_client_windows.cc +27 -16
  974. data/src/core/lib/iomgr/tcp_posix.cc +167 -64
  975. data/src/core/lib/iomgr/tcp_server_posix.cc +57 -34
  976. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +42 -38
  977. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -6
  978. data/src/core/lib/iomgr/tcp_server_windows.cc +20 -12
  979. data/src/core/lib/iomgr/tcp_windows.cc +29 -19
  980. data/src/core/lib/iomgr/timer.cc +2 -2
  981. data/src/core/lib/iomgr/timer.h +11 -6
  982. data/src/core/lib/iomgr/timer_generic.cc +96 -77
  983. data/src/core/lib/iomgr/timer_manager.cc +15 -14
  984. data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
  985. data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
  986. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
  987. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  988. data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
  989. data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
  990. data/src/core/lib/iomgr/work_serializer.cc +15 -10
  991. data/src/core/lib/iomgr/work_serializer.h +2 -3
  992. data/src/core/lib/json/json.h +1 -2
  993. data/src/core/lib/json/json_reader.cc +9 -1
  994. data/src/core/lib/json/json_util.cc +11 -4
  995. data/src/core/lib/json/json_util.h +15 -6
  996. data/src/core/lib/json/json_writer.cc +6 -1
  997. data/src/core/lib/matchers/matchers.cc +7 -4
  998. data/src/core/lib/matchers/matchers.h +2 -0
  999. data/src/core/lib/promise/activity.cc +15 -10
  1000. data/src/core/lib/promise/activity.h +192 -157
  1001. data/src/core/lib/promise/arena_promise.h +198 -0
  1002. data/src/core/lib/promise/call_push_pull.h +148 -0
  1003. data/src/core/lib/promise/context.h +1 -1
  1004. data/src/core/lib/promise/detail/basic_seq.h +94 -5
  1005. data/src/core/lib/promise/detail/promise_factory.h +1 -2
  1006. data/src/core/lib/promise/detail/status.h +6 -0
  1007. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  1008. data/src/core/lib/promise/latch.h +103 -0
  1009. data/src/core/lib/promise/loop.h +36 -8
  1010. data/src/core/lib/promise/poll.h +6 -0
  1011. data/src/core/lib/promise/promise.h +96 -0
  1012. data/src/core/lib/promise/race.h +0 -1
  1013. data/src/core/lib/promise/seq.h +19 -3
  1014. data/src/core/lib/promise/sleep.cc +81 -0
  1015. data/src/core/lib/promise/sleep.h +76 -0
  1016. data/src/core/lib/promise/try_seq.h +157 -0
  1017. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +22 -25
  1018. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +46 -44
  1019. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +36 -33
  1020. data/src/core/lib/resolver/resolver_registry.cc +149 -0
  1021. data/src/core/lib/resolver/resolver_registry.h +124 -0
  1022. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +18 -4
  1023. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +17 -10
  1024. data/src/core/lib/resource_quota/api.cc +19 -31
  1025. data/src/core/lib/resource_quota/api.h +5 -3
  1026. data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -19
  1027. data/src/core/lib/{gprpp → resource_quota}/arena.h +25 -15
  1028. data/src/core/lib/resource_quota/memory_quota.cc +170 -146
  1029. data/src/core/lib/resource_quota/memory_quota.h +131 -90
  1030. data/src/core/lib/resource_quota/resource_quota.h +16 -0
  1031. data/src/core/lib/resource_quota/thread_quota.cc +2 -0
  1032. data/src/core/lib/resource_quota/thread_quota.h +4 -0
  1033. data/src/core/lib/security/authorization/authorization_policy_provider.h +14 -0
  1034. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
  1035. data/src/core/lib/security/authorization/evaluate_args.cc +34 -23
  1036. data/src/core/lib/security/authorization/evaluate_args.h +7 -4
  1037. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +66 -0
  1038. data/src/core/lib/security/authorization/grpc_authorization_engine.h +69 -0
  1039. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +121 -0
  1040. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +61 -0
  1041. data/src/core/lib/security/authorization/matchers.cc +235 -0
  1042. data/src/core/lib/security/authorization/matchers.h +218 -0
  1043. data/src/core/lib/security/authorization/rbac_policy.cc +447 -0
  1044. data/src/core/lib/security/authorization/rbac_policy.h +178 -0
  1045. data/src/core/lib/security/context/security_context.cc +9 -4
  1046. data/src/core/lib/security/context/security_context.h +23 -4
  1047. data/src/core/lib/security/credentials/alts/alts_credentials.cc +16 -7
  1048. data/src/core/lib/security/credentials/alts/alts_credentials.h +16 -1
  1049. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
  1050. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
  1051. data/src/core/lib/security/credentials/call_creds_util.cc +97 -0
  1052. data/src/core/lib/security/credentials/call_creds_util.h +43 -0
  1053. data/src/core/lib/security/credentials/channel_creds_registry.h +103 -0
  1054. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +80 -0
  1055. data/src/core/lib/security/credentials/composite/composite_credentials.cc +31 -86
  1056. data/src/core/lib/security/credentials/composite/composite_credentials.h +41 -13
  1057. data/src/core/lib/security/credentials/credentials.cc +6 -11
  1058. data/src/core/lib/security/credentials/credentials.h +90 -87
  1059. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +154 -39
  1060. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +19 -0
  1061. data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
  1062. data/src/core/lib/security/credentials/external/external_account_credentials.cc +78 -42
  1063. data/src/core/lib/security/credentials/external/external_account_credentials.h +16 -9
  1064. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -5
  1065. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
  1066. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +55 -17
  1067. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +11 -0
  1068. data/src/core/lib/security/credentials/fake/fake_credentials.cc +40 -32
  1069. data/src/core/lib/security/credentials/fake/fake_credentials.h +35 -22
  1070. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
  1071. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +69 -35
  1072. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +20 -5
  1073. data/src/core/lib/security/credentials/iam/iam_credentials.cc +32 -30
  1074. data/src/core/lib/security/credentials/iam/iam_credentials.h +25 -9
  1075. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +35 -26
  1076. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +62 -0
  1077. data/src/core/lib/security/credentials/jwt/json_token.cc +9 -8
  1078. data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
  1079. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +44 -49
  1080. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +30 -12
  1081. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +81 -43
  1082. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +5 -3
  1083. data/src/core/lib/security/credentials/local/local_credentials.cc +16 -9
  1084. data/src/core/lib/security/credentials/local/local_credentials.h +17 -0
  1085. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +175 -171
  1086. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +81 -34
  1087. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +104 -156
  1088. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +80 -27
  1089. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +18 -14
  1090. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +27 -3
  1091. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
  1092. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
  1093. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +39 -10
  1094. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +56 -4
  1095. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +43 -3
  1096. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +72 -10
  1097. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +29 -5
  1098. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +67 -80
  1099. data/src/core/lib/security/credentials/tls/tls_credentials.cc +26 -8
  1100. data/src/core/lib/security/credentials/tls/tls_credentials.h +11 -1
  1101. data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
  1102. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
  1103. data/src/core/lib/security/credentials/xds/xds_credentials.cc +65 -51
  1104. data/src/core/lib/security/credentials/xds/xds_credentials.h +51 -6
  1105. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +30 -16
  1106. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +7 -4
  1107. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +22 -14
  1108. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -4
  1109. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +15 -16
  1110. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -11
  1111. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
  1112. data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
  1113. data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
  1114. data/src/core/lib/security/security_connector/local/local_security_connector.cc +32 -21
  1115. data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
  1116. data/src/core/lib/security/security_connector/security_connector.cc +22 -32
  1117. data/src/core/lib/security/security_connector/security_connector.h +44 -28
  1118. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +29 -20
  1119. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
  1120. data/src/core/lib/security/security_connector/ssl_utils.cc +41 -33
  1121. data/src/core/lib/security/security_connector/ssl_utils.h +23 -24
  1122. data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
  1123. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +46 -28
  1124. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +29 -9
  1125. data/src/core/lib/security/transport/auth_filters.h +45 -5
  1126. data/src/core/lib/security/transport/client_auth_filter.cc +112 -368
  1127. data/src/core/lib/security/transport/secure_endpoint.cc +267 -137
  1128. data/src/core/lib/security/transport/secure_endpoint.h +5 -4
  1129. data/src/core/lib/security/transport/security_handshaker.cc +69 -26
  1130. data/src/core/lib/security/transport/security_handshaker.h +5 -1
  1131. data/src/core/lib/security/transport/server_auth_filter.cc +70 -41
  1132. data/src/core/lib/security/util/json_util.cc +3 -2
  1133. data/src/core/lib/security/util/json_util.h +0 -2
  1134. data/src/core/lib/service_config/service_config.h +78 -0
  1135. data/src/core/{ext → lib}/service_config/service_config_call_data.h +11 -7
  1136. data/src/core/{ext/service_config/service_config.cc → lib/service_config/service_config_impl.cc} +33 -23
  1137. data/src/core/{ext/service_config/service_config.h → lib/service_config/service_config_impl.h} +24 -21
  1138. data/src/core/{ext → lib}/service_config/service_config_parser.cc +39 -29
  1139. data/src/core/{ext → lib}/service_config/service_config_parser.h +45 -29
  1140. data/src/core/lib/slice/b64.cc +1 -1
  1141. data/src/core/lib/slice/b64.h +2 -0
  1142. data/src/core/lib/slice/percent_encoding.cc +4 -1
  1143. data/src/core/lib/slice/percent_encoding.h +0 -6
  1144. data/src/core/lib/slice/slice.cc +78 -180
  1145. data/src/core/lib/slice/slice.h +77 -29
  1146. data/src/core/lib/slice/slice_api.cc +1 -1
  1147. data/src/core/lib/slice/slice_buffer.cc +79 -23
  1148. data/src/core/lib/slice/slice_buffer.h +137 -0
  1149. data/src/core/lib/{iomgr/is_epollexclusive_available.h → slice/slice_buffer_api.cc} +11 -12
  1150. data/src/core/lib/slice/slice_internal.h +16 -34
  1151. data/src/core/lib/slice/slice_refcount.cc +18 -0
  1152. data/src/core/lib/slice/slice_refcount.h +6 -86
  1153. data/src/core/lib/slice/slice_refcount_base.h +18 -139
  1154. data/src/core/lib/slice/slice_string_helpers.cc +0 -16
  1155. data/src/core/lib/slice/slice_string_helpers.h +1 -8
  1156. data/src/core/lib/surface/builtins.cc +11 -6
  1157. data/src/core/lib/surface/byte_buffer.cc +7 -1
  1158. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  1159. data/src/core/lib/surface/call.cc +1113 -1275
  1160. data/src/core/lib/surface/call.h +26 -22
  1161. data/src/core/lib/surface/call_details.cc +4 -4
  1162. data/src/core/lib/surface/call_log_batch.cc +7 -1
  1163. data/src/core/lib/surface/call_test_only.h +4 -1
  1164. data/src/core/lib/surface/channel.cc +220 -289
  1165. data/src/core/lib/surface/channel.h +100 -62
  1166. data/src/core/lib/surface/channel_init.cc +2 -3
  1167. data/src/core/lib/surface/channel_init.h +4 -6
  1168. data/src/core/lib/surface/channel_ping.cc +8 -2
  1169. data/src/core/lib/surface/channel_stack_type.cc +0 -2
  1170. data/src/core/lib/surface/channel_stack_type.h +0 -2
  1171. data/src/core/lib/surface/completion_queue.cc +39 -29
  1172. data/src/core/lib/surface/completion_queue.h +7 -2
  1173. data/src/core/lib/surface/completion_queue_factory.cc +1 -0
  1174. data/src/core/lib/surface/completion_queue_factory.h +1 -3
  1175. data/src/core/lib/surface/event_string.cc +1 -7
  1176. data/src/core/lib/surface/event_string.h +1 -1
  1177. data/src/core/lib/surface/init.cc +66 -26
  1178. data/src/core/lib/surface/init.h +0 -10
  1179. data/src/core/lib/surface/lame_client.cc +63 -109
  1180. data/src/core/lib/surface/lame_client.h +41 -3
  1181. data/src/core/lib/surface/metadata_array.cc +2 -0
  1182. data/src/core/lib/surface/server.cc +106 -126
  1183. data/src/core/lib/surface/server.h +48 -16
  1184. data/src/core/lib/surface/validate_metadata.cc +3 -6
  1185. data/src/core/lib/surface/validate_metadata.h +3 -0
  1186. data/src/core/lib/surface/version.cc +2 -2
  1187. data/src/core/lib/transport/bdp_estimator.cc +12 -11
  1188. data/src/core/lib/transport/bdp_estimator.h +4 -5
  1189. data/src/core/lib/transport/connectivity_state.cc +6 -4
  1190. data/src/core/lib/transport/connectivity_state.h +2 -3
  1191. data/src/core/lib/transport/error_utils.cc +21 -11
  1192. data/src/core/lib/transport/error_utils.h +7 -2
  1193. data/src/core/lib/{channel → transport}/handshaker.cc +13 -8
  1194. data/src/core/lib/{channel → transport}/handshaker.h +14 -7
  1195. data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
  1196. data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
  1197. data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
  1198. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +37 -26
  1199. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
  1200. data/src/core/lib/transport/metadata_batch.cc +260 -72
  1201. data/src/core/lib/transport/metadata_batch.h +932 -799
  1202. data/src/core/lib/transport/parsed_metadata.cc +4 -0
  1203. data/src/core/lib/transport/parsed_metadata.h +124 -98
  1204. data/src/core/lib/transport/status_conversion.cc +4 -2
  1205. data/src/core/lib/transport/status_conversion.h +3 -3
  1206. data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
  1207. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  1208. data/src/core/lib/transport/timeout_encoding.cc +203 -70
  1209. data/src/core/lib/transport/timeout_encoding.h +44 -10
  1210. data/src/core/lib/transport/transport.cc +21 -21
  1211. data/src/core/lib/transport/transport.h +151 -19
  1212. data/src/core/lib/transport/transport_fwd.h +20 -0
  1213. data/src/core/lib/transport/transport_impl.h +25 -0
  1214. data/src/core/lib/transport/transport_op_string.cc +21 -64
  1215. data/src/core/lib/uri/uri_parser.cc +238 -56
  1216. data/src/core/lib/uri/uri_parser.h +37 -25
  1217. data/src/core/plugin_registry/grpc_plugin_registry.cc +32 -91
  1218. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  1219. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +27 -22
  1220. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  1221. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +22 -14
  1222. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  1223. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  1224. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
  1225. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1226. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
  1227. data/src/core/tsi/fake_transport_security.cc +13 -1
  1228. data/src/core/tsi/fake_transport_security.h +6 -0
  1229. data/src/core/tsi/local_transport_security.cc +3 -11
  1230. data/src/core/tsi/local_transport_security.h +1 -4
  1231. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  1232. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1233. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -3
  1234. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
  1235. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
  1236. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
  1237. data/src/core/tsi/ssl_transport_security.cc +180 -52
  1238. data/src/core/tsi/ssl_transport_security.h +46 -8
  1239. data/src/core/tsi/transport_security_grpc.cc +3 -2
  1240. data/src/core/tsi/transport_security_grpc.h +5 -2
  1241. data/src/core/tsi/transport_security_interface.h +2 -0
  1242. data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
  1243. data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
  1244. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  1245. data/src/ruby/ext/grpc/ext-export.gcc +1 -0
  1246. data/src/ruby/ext/grpc/extconf.rb +59 -21
  1247. data/src/ruby/ext/grpc/rb_channel.c +5 -2
  1248. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +20 -24
  1249. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +31 -37
  1250. data/src/ruby/ext/grpc/rb_server.c +7 -4
  1251. data/src/ruby/lib/grpc/errors.rb +1 -1
  1252. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1253. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1254. data/src/ruby/lib/grpc/version.rb +1 -1
  1255. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  1256. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
  1257. data/src/ruby/pb/test/client.rb +769 -0
  1258. data/src/ruby/pb/test/server.rb +252 -0
  1259. data/src/ruby/pb/test/xds_client.rb +415 -0
  1260. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  1261. data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
  1262. data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
  1263. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  1264. data/third_party/abseil-cpp/absl/base/config.h +182 -41
  1265. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  1266. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
  1267. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
  1268. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  1269. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +50 -0
  1270. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  1271. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  1272. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
  1273. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
  1274. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
  1275. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
  1276. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  1277. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  1278. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  1279. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
  1280. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  1281. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  1282. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
  1283. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  1284. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  1285. data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
  1286. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1287. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  1288. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
  1289. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  1290. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +510 -0
  1291. data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
  1292. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
  1293. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
  1294. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
  1295. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
  1296. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
  1297. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
  1298. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
  1299. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  1300. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
  1301. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  1302. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
  1303. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  1304. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  1305. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  1306. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
  1307. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  1308. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
  1309. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  1310. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
  1311. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  1312. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  1313. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  1314. data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
  1315. data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
  1316. data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
  1317. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  1318. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
  1319. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1320. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1321. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1322. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1323. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1324. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1325. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1326. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1327. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +95 -0
  1328. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +269 -0
  1329. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1330. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1331. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1332. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +161 -0
  1333. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1334. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1335. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1336. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1337. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1338. data/third_party/abseil-cpp/absl/random/internal/randen.h +96 -0
  1339. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +225 -0
  1340. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1341. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +264 -0
  1342. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1343. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1344. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1345. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1346. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1347. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1348. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +165 -0
  1349. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1350. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1351. data/third_party/abseil-cpp/absl/random/internal/traits.h +149 -0
  1352. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1353. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +96 -0
  1354. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +256 -0
  1355. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +261 -0
  1356. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1357. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1358. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1359. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1360. data/third_party/abseil-cpp/absl/random/seed_sequences.h +111 -0
  1361. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1362. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1363. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +272 -0
  1364. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
  1365. data/third_party/abseil-cpp/absl/status/status.cc +174 -2
  1366. data/third_party/abseil-cpp/absl/status/status.h +22 -12
  1367. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  1368. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  1369. data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
  1370. data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
  1371. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  1372. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  1373. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  1374. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
  1375. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  1376. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  1377. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
  1378. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
  1379. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
  1380. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
  1381. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  1382. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  1383. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  1384. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  1385. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
  1386. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
  1387. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  1388. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  1389. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
  1390. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
  1391. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  1392. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
  1393. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
  1394. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
  1395. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
  1396. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
  1397. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
  1398. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
  1399. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
  1400. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  1401. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  1402. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  1403. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  1404. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  1405. data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
  1406. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  1407. data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
  1408. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  1409. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  1410. data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
  1411. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  1412. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  1413. data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
  1414. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  1415. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  1416. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  1417. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  1418. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  1419. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  1420. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
  1421. data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
  1422. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
  1423. data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
  1424. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  1425. data/third_party/abseil-cpp/absl/time/time.h +16 -12
  1426. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  1427. data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
  1428. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  1429. data/third_party/abseil-cpp/absl/types/span.h +2 -1
  1430. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
  1431. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
  1432. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  1433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
  1434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
  1435. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
  1436. data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
  1437. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
  1438. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  1439. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1440. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  1441. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1442. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
  1443. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
  1444. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
  1445. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
  1446. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
  1447. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
  1448. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
  1449. data/third_party/cares/cares/{ares.h → include/ares.h} +73 -1
  1450. data/third_party/cares/cares/{ares_dns.h → include/ares_dns.h} +9 -0
  1451. data/third_party/cares/cares/{ares_version.h → include/ares_version.h} +3 -3
  1452. data/third_party/cares/cares/{ares__close_sockets.c → src/lib/ares__close_sockets.c} +2 -2
  1453. data/third_party/cares/cares/{ares__get_hostent.c → src/lib/ares__get_hostent.c} +1 -2
  1454. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1455. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1456. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1457. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1458. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1459. data/third_party/cares/cares/{ares_create_query.c → src/lib/ares_create_query.c} +8 -17
  1460. data/third_party/cares/cares/{ares_data.c → src/lib/ares_data.c} +18 -0
  1461. data/third_party/cares/cares/{ares_data.h → src/lib/ares_data.h} +2 -0
  1462. data/third_party/cares/cares/{ares_expand_name.c → src/lib/ares_expand_name.c} +114 -23
  1463. data/third_party/cares/cares/{ares_expand_string.c → src/lib/ares_expand_string.c} +2 -5
  1464. data/third_party/cares/cares/{ares_free_hostent.c → src/lib/ares_free_hostent.c} +6 -4
  1465. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  1466. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  1467. data/third_party/cares/cares/{ares_getenv.c → src/lib/ares_getenv.c} +0 -2
  1468. data/third_party/cares/cares/{ares_gethostbyaddr.c → src/lib/ares_gethostbyaddr.c} +2 -9
  1469. data/third_party/cares/cares/{ares_gethostbyname.c → src/lib/ares_gethostbyname.c} +25 -20
  1470. data/third_party/cares/cares/{ares_getnameinfo.c → src/lib/ares_getnameinfo.c} +4 -10
  1471. data/third_party/cares/cares/{ares_init.c → src/lib/ares_init.c} +79 -40
  1472. data/third_party/cares/cares/{ares_ipv6.h → src/lib/ares_ipv6.h} +7 -0
  1473. data/third_party/cares/cares/{ares_library_init.c → src/lib/ares_library_init.c} +7 -2
  1474. data/third_party/cares/cares/{ares_library_init.h → src/lib/ares_library_init.h} +1 -1
  1475. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  1476. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  1477. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  1478. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  1479. data/third_party/cares/cares/{ares_parse_mx_reply.c → src/lib/ares_parse_mx_reply.c} +2 -8
  1480. data/third_party/cares/cares/{ares_parse_naptr_reply.c → src/lib/ares_parse_naptr_reply.c} +2 -13
  1481. data/third_party/cares/cares/{ares_parse_ns_reply.c → src/lib/ares_parse_ns_reply.c} +5 -11
  1482. data/third_party/cares/cares/{ares_parse_ptr_reply.c → src/lib/ares_parse_ptr_reply.c} +53 -46
  1483. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  1484. data/third_party/cares/cares/{ares_parse_srv_reply.c → src/lib/ares_parse_srv_reply.c} +2 -13
  1485. data/third_party/cares/cares/{ares_parse_txt_reply.c → src/lib/ares_parse_txt_reply.c} +3 -9
  1486. data/third_party/cares/cares/{ares_private.h → src/lib/ares_private.h} +52 -11
  1487. data/third_party/cares/cares/{ares_process.c → src/lib/ares_process.c} +127 -52
  1488. data/third_party/cares/cares/{ares_query.c → src/lib/ares_query.c} +3 -9
  1489. data/third_party/cares/cares/{ares_search.c → src/lib/ares_search.c} +5 -7
  1490. data/third_party/cares/cares/{ares_send.c → src/lib/ares_send.c} +2 -8
  1491. data/third_party/cares/cares/{ares_setup.h → src/lib/ares_setup.h} +4 -1
  1492. data/third_party/cares/cares/{ares_strsplit.c → src/lib/ares_strsplit.c} +4 -0
  1493. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  1494. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  1495. data/third_party/cares/cares/{inet_net_pton.c → src/lib/inet_net_pton.c} +2 -8
  1496. data/third_party/cares/cares/{inet_ntop.c → src/lib/inet_ntop.c} +2 -8
  1497. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  1498. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  1499. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  1500. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  1501. data/third_party/upb/upb/decode.c +542 -319
  1502. data/third_party/upb/upb/decode.h +43 -17
  1503. data/third_party/upb/upb/decode_fast.c +303 -301
  1504. data/third_party/upb/upb/decode_fast.h +18 -18
  1505. data/third_party/upb/upb/decode_internal.h +73 -56
  1506. data/third_party/upb/upb/def.c +1926 -1078
  1507. data/third_party/upb/upb/def.h +329 -288
  1508. data/third_party/upb/upb/def.hpp +129 -172
  1509. data/third_party/upb/upb/encode.c +208 -175
  1510. data/third_party/upb/upb/encode.h +15 -17
  1511. data/third_party/upb/upb/json_encode.c +776 -0
  1512. data/third_party/upb/upb/json_encode.h +62 -0
  1513. data/third_party/upb/upb/msg.c +142 -124
  1514. data/third_party/upb/upb/msg.h +39 -33
  1515. data/third_party/upb/upb/msg_internal.h +342 -280
  1516. data/third_party/upb/upb/port_def.inc +8 -0
  1517. data/third_party/upb/upb/port_undef.inc +1 -0
  1518. data/third_party/upb/upb/reflection.c +239 -199
  1519. data/third_party/upb/upb/reflection.h +87 -67
  1520. data/third_party/upb/upb/reflection.hpp +6 -6
  1521. data/third_party/upb/upb/table.c +231 -147
  1522. data/third_party/upb/upb/table_internal.h +129 -95
  1523. data/third_party/upb/upb/text_encode.c +113 -90
  1524. data/third_party/upb/upb/text_encode.h +10 -10
  1525. data/third_party/upb/upb/upb.c +111 -72
  1526. data/third_party/upb/upb/upb.h +157 -151
  1527. data/third_party/upb/upb/upb.hpp +31 -28
  1528. data/third_party/upb/upb/upb_internal.h +21 -11
  1529. data/third_party/xxhash/xxhash.h +607 -352
  1530. data/third_party/zlib/crc32.c +966 -292
  1531. data/third_party/zlib/crc32.h +9441 -436
  1532. data/third_party/zlib/deflate.c +78 -30
  1533. data/third_party/zlib/deflate.h +12 -15
  1534. data/third_party/zlib/gzguts.h +3 -2
  1535. data/third_party/zlib/gzlib.c +5 -3
  1536. data/third_party/zlib/gzread.c +5 -7
  1537. data/third_party/zlib/gzwrite.c +25 -13
  1538. data/third_party/zlib/infback.c +2 -1
  1539. data/third_party/zlib/inffast.c +14 -14
  1540. data/third_party/zlib/inflate.c +39 -8
  1541. data/third_party/zlib/inflate.h +3 -2
  1542. data/third_party/zlib/inftrees.c +3 -3
  1543. data/third_party/zlib/trees.c +27 -48
  1544. data/third_party/zlib/zlib.h +123 -100
  1545. data/third_party/zlib/zutil.c +2 -2
  1546. data/third_party/zlib/zutil.h +12 -9
  1547. metadata +502 -247
  1548. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
  1549. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -83
  1550. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
  1551. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -194
  1552. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -88
  1553. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -264
  1554. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -560
  1555. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -122
  1556. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -92
  1557. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -192
  1558. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -52
  1559. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -79
  1560. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -125
  1561. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  1562. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
  1563. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
  1564. data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
  1565. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -38
  1566. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -64
  1567. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -38
  1568. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -64
  1569. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -38
  1570. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -64
  1571. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -38
  1572. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -64
  1573. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -38
  1574. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -64
  1575. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +0 -102
  1576. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +0 -306
  1577. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +0 -56
  1578. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +0 -135
  1579. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +0 -115
  1580. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +0 -371
  1581. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -67
  1582. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
  1583. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -68
  1584. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
  1585. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -67
  1586. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
  1587. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -75
  1588. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
  1589. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -69
  1590. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
  1591. data/src/core/lib/compression/algorithm_metadata.h +0 -62
  1592. data/src/core/lib/compression/compression_args.cc +0 -140
  1593. data/src/core/lib/compression/compression_args.h +0 -58
  1594. data/src/core/lib/compression/stream_compression.cc +0 -81
  1595. data/src/core/lib/compression/stream_compression.h +0 -117
  1596. data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
  1597. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  1598. data/src/core/lib/compression/stream_compression_identity.cc +0 -91
  1599. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  1600. data/src/core/lib/event_engine/event_engine_factory.cc +0 -49
  1601. data/src/core/lib/event_engine/sockaddr.cc +0 -40
  1602. data/src/core/lib/event_engine/sockaddr.h +0 -44
  1603. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1654
  1604. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  1605. data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
  1606. data/src/core/lib/iomgr/event_engine/closure.h +0 -42
  1607. data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
  1608. data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
  1609. data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -84
  1610. data/src/core/lib/iomgr/event_engine/pollset.cc +0 -88
  1611. data/src/core/lib/iomgr/event_engine/resolver.cc +0 -115
  1612. data/src/core/lib/iomgr/event_engine/tcp.cc +0 -295
  1613. data/src/core/lib/iomgr/event_engine/timer.cc +0 -63
  1614. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  1615. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  1616. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  1617. data/src/core/lib/iomgr/pollset_custom.cc +0 -105
  1618. data/src/core/lib/iomgr/pollset_custom.h +0 -37
  1619. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -47
  1620. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  1621. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
  1622. data/src/core/lib/iomgr/resolve_address_custom.h +0 -44
  1623. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  1624. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -146
  1625. data/src/core/lib/iomgr/tcp_custom.cc +0 -350
  1626. data/src/core/lib/iomgr/tcp_custom.h +0 -85
  1627. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -457
  1628. data/src/core/lib/iomgr/timer_custom.cc +0 -96
  1629. data/src/core/lib/iomgr/timer_custom.h +0 -43
  1630. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +0 -173
  1631. data/src/core/lib/security/authorization/sdk_server_authz_filter.h +0 -67
  1632. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
  1633. data/src/core/lib/slice/slice_intern.cc +0 -367
  1634. data/src/core/lib/slice/slice_split.cc +0 -100
  1635. data/src/core/lib/slice/slice_split.h +0 -40
  1636. data/src/core/lib/slice/slice_utils.h +0 -200
  1637. data/src/core/lib/slice/static_slice.cc +0 -377
  1638. data/src/core/lib/slice/static_slice.h +0 -300
  1639. data/src/core/lib/surface/init_secure.cc +0 -103
  1640. data/src/core/lib/transport/byte_stream.cc +0 -162
  1641. data/src/core/lib/transport/byte_stream.h +0 -166
  1642. data/src/core/lib/transport/metadata.cc +0 -714
  1643. data/src/core/lib/transport/metadata.h +0 -449
  1644. data/src/core/lib/transport/static_metadata.cc +0 -1032
  1645. data/src/core/lib/transport/static_metadata.h +0 -322
  1646. data/src/core/lib/transport/status_metadata.cc +0 -63
  1647. data/src/core/lib/transport/status_metadata.h +0 -48
  1648. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
  1649. data/third_party/cares/cares/ares_getopt.c +0 -122
  1650. data/third_party/cares/cares/ares_getopt.h +0 -53
  1651. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  1652. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  1653. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
  1654. /data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  1655. /data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  1656. /data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  1657. /data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  1658. /data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  1659. /data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  1660. /data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  1661. /data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  1662. /data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  1663. /data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  1664. /data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  1665. /data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  1666. /data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  1667. /data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  1668. /data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  1669. /data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  1670. /data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  1671. /data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  1672. /data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  1673. /data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  1674. /data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  1675. /data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  1676. /data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  1677. /data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  1678. /data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  1679. /data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  1680. /data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  1681. /data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  1682. /data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  1683. /data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  1684. /data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  1685. /data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  1686. /data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
@@ -20,60 +20,73 @@
20
20
 
21
21
  #include <inttypes.h>
22
22
  #include <limits.h>
23
- #include <stdbool.h>
24
- #include <stdio.h>
25
23
  #include <string.h>
26
24
 
25
+ #include <algorithm>
26
+ #include <functional>
27
+ #include <new>
27
28
  #include <set>
29
+ #include <vector>
28
30
 
29
31
  #include "absl/container/inlined_vector.h"
32
+ #include "absl/memory/memory.h"
33
+ #include "absl/status/status.h"
34
+ #include "absl/status/statusor.h"
35
+ #include "absl/strings/cord.h"
30
36
  #include "absl/strings/numbers.h"
31
37
  #include "absl/strings/str_cat.h"
32
38
  #include "absl/strings/str_join.h"
33
39
  #include "absl/strings/string_view.h"
34
40
  #include "absl/types/optional.h"
41
+ #include "absl/types/variant.h"
35
42
 
43
+ #include <grpc/impl/codegen/gpr_types.h>
44
+ #include <grpc/slice.h>
45
+ #include <grpc/status.h>
36
46
  #include <grpc/support/alloc.h>
37
47
  #include <grpc/support/log.h>
38
48
  #include <grpc/support/string_util.h>
39
- #include <grpc/support/sync.h>
40
49
 
41
50
  #include "src/core/ext/filters/client_channel/backend_metric.h"
42
51
  #include "src/core/ext/filters/client_channel/backup_poller.h"
52
+ #include "src/core/ext/filters/client_channel/client_channel_channelz.h"
43
53
  #include "src/core/ext/filters/client_channel/config_selector.h"
44
54
  #include "src/core/ext/filters/client_channel/dynamic_filters.h"
45
55
  #include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
46
- #include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
47
56
  #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
48
57
  #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
49
58
  #include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
50
59
  #include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
51
- #include "src/core/ext/filters/client_channel/resolver_registry.h"
52
60
  #include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
53
61
  #include "src/core/ext/filters/client_channel/retry_filter.h"
54
62
  #include "src/core/ext/filters/client_channel/subchannel.h"
63
+ #include "src/core/ext/filters/client_channel/subchannel_interface.h"
64
+ #include "src/core/ext/filters/client_channel/subchannel_interface_internal.h"
55
65
  #include "src/core/ext/filters/deadline/deadline_filter.h"
56
- #include "src/core/ext/service_config/service_config.h"
57
- #include "src/core/ext/service_config/service_config_call_data.h"
58
- #include "src/core/lib/backoff/backoff.h"
59
66
  #include "src/core/lib/channel/channel_args.h"
60
- #include "src/core/lib/channel/connected_channel.h"
61
- #include "src/core/lib/channel/status_util.h"
62
- #include "src/core/lib/gpr/string.h"
67
+ #include "src/core/lib/channel/channel_stack.h"
68
+ #include "src/core/lib/channel/channel_trace.h"
69
+ #include "src/core/lib/config/core_configuration.h"
70
+ #include "src/core/lib/debug/trace.h"
71
+ #include "src/core/lib/gpr/useful.h"
72
+ #include "src/core/lib/gprpp/debug_location.h"
63
73
  #include "src/core/lib/gprpp/sync.h"
64
- #include "src/core/lib/iomgr/iomgr.h"
74
+ #include "src/core/lib/iomgr/exec_ctx.h"
65
75
  #include "src/core/lib/iomgr/polling_entity.h"
76
+ #include "src/core/lib/iomgr/pollset_set.h"
66
77
  #include "src/core/lib/iomgr/work_serializer.h"
78
+ #include "src/core/lib/json/json.h"
67
79
  #include "src/core/lib/profiling/timers.h"
80
+ #include "src/core/lib/resolver/resolver_registry.h"
81
+ #include "src/core/lib/resolver/server_address.h"
82
+ #include "src/core/lib/service_config/service_config_call_data.h"
83
+ #include "src/core/lib/service_config/service_config_impl.h"
68
84
  #include "src/core/lib/slice/slice_internal.h"
69
- #include "src/core/lib/slice/slice_string_helpers.h"
85
+ #include "src/core/lib/slice/slice_refcount.h"
70
86
  #include "src/core/lib/surface/channel.h"
71
87
  #include "src/core/lib/transport/connectivity_state.h"
72
88
  #include "src/core/lib/transport/error_utils.h"
73
- #include "src/core/lib/transport/metadata.h"
74
89
  #include "src/core/lib/transport/metadata_batch.h"
75
- #include "src/core/lib/transport/static_metadata.h"
76
- #include "src/core/lib/transport/status_metadata.h"
77
90
 
78
91
  //
79
92
  // Client channel filter
@@ -84,12 +97,11 @@
84
97
 
85
98
  namespace grpc_core {
86
99
 
87
- using internal::ClientChannelGlobalParsedConfig;
88
100
  using internal::ClientChannelMethodParsedConfig;
89
- using internal::ClientChannelServiceConfigParser;
90
101
 
102
+ TraceFlag grpc_client_channel_trace(false, "client_channel");
91
103
  TraceFlag grpc_client_channel_call_trace(false, "client_channel_call");
92
- TraceFlag grpc_client_channel_routing_trace(false, "client_channel_routing");
104
+ TraceFlag grpc_client_channel_lb_call_trace(false, "client_channel_lb_call");
93
105
 
94
106
  //
95
107
  // ClientChannel::CallData definition
@@ -178,8 +190,6 @@ class ClientChannel::CallData {
178
190
 
179
191
  static void RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
180
192
  void* arg, grpc_error_handle error);
181
- void InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
182
- grpc_transport_stream_op_batch* batch);
183
193
 
184
194
  void CreateDynamicCall(grpc_call_element* elem);
185
195
 
@@ -193,7 +203,7 @@ class ClientChannel::CallData {
193
203
 
194
204
  grpc_slice path_; // Request path.
195
205
  gpr_cycle_counter call_start_time_;
196
- grpc_millis deadline_;
206
+ Timestamp deadline_;
197
207
  Arena* arena_;
198
208
  grpc_call_stack* owning_call_;
199
209
  CallCombiner* call_combiner_;
@@ -236,6 +246,7 @@ class ClientChannel::CallData {
236
246
 
237
247
  const grpc_channel_filter ClientChannel::kFilterVtable = {
238
248
  ClientChannel::CallData::StartTransportStreamOpBatch,
249
+ nullptr,
239
250
  ClientChannel::StartTransportOp,
240
251
  sizeof(ClientChannel::CallData),
241
252
  ClientChannel::CallData::Init,
@@ -243,6 +254,7 @@ const grpc_channel_filter ClientChannel::kFilterVtable = {
243
254
  ClientChannel::CallData::Destroy,
244
255
  sizeof(ClientChannel),
245
256
  ClientChannel::Init,
257
+ grpc_channel_stack_no_post_init,
246
258
  ClientChannel::Destroy,
247
259
  ClientChannel::GetChannelInfo,
248
260
  "client-channel",
@@ -356,7 +368,7 @@ class DynamicTerminationFilter::CallData {
356
368
  args, pollent, nullptr,
357
369
  service_config_call_data->call_dispatch_controller(),
358
370
  /*is_transparent_retry=*/false);
359
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
371
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
360
372
  gpr_log(GPR_INFO,
361
373
  "chand=%p dynamic_termination_calld=%p: create lb_call=%p", chand,
362
374
  client_channel, calld->lb_call_.get());
@@ -375,7 +387,7 @@ class DynamicTerminationFilter::CallData {
375
387
  ~CallData() { grpc_slice_unref_internal(path_); }
376
388
 
377
389
  grpc_slice path_; // Request path.
378
- grpc_millis deadline_;
390
+ Timestamp deadline_;
379
391
  Arena* arena_;
380
392
  grpc_call_stack* owning_call_;
381
393
  CallCombiner* call_combiner_;
@@ -386,6 +398,7 @@ class DynamicTerminationFilter::CallData {
386
398
 
387
399
  const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
388
400
  DynamicTerminationFilter::CallData::StartTransportStreamOpBatch,
401
+ nullptr,
389
402
  DynamicTerminationFilter::StartTransportOp,
390
403
  sizeof(DynamicTerminationFilter::CallData),
391
404
  DynamicTerminationFilter::CallData::Init,
@@ -393,6 +406,7 @@ const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
393
406
  DynamicTerminationFilter::CallData::Destroy,
394
407
  sizeof(DynamicTerminationFilter),
395
408
  DynamicTerminationFilter::Init,
409
+ grpc_channel_stack_no_post_init,
396
410
  DynamicTerminationFilter::Destroy,
397
411
  DynamicTerminationFilter::GetChannelInfo,
398
412
  "dynamic_filter_termination",
@@ -411,22 +425,17 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
411
425
  }
412
426
 
413
427
  ~ResolverResultHandler() override {
414
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
428
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
415
429
  gpr_log(GPR_INFO, "chand=%p: resolver shutdown complete", chand_);
416
430
  }
417
431
  GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ResolverResultHandler");
418
432
  }
419
433
 
420
- void ReturnResult(Resolver::Result result) override
421
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
434
+ void ReportResult(Resolver::Result result) override
435
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
422
436
  chand_->OnResolverResultChangedLocked(std::move(result));
423
437
  }
424
438
 
425
- void ReturnError(grpc_error_handle error) override
426
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
427
- chand_->OnResolverErrorLocked(error);
428
- }
429
-
430
439
  private:
431
440
  ClientChannel* chand_;
432
441
  };
@@ -447,14 +456,13 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
447
456
  public:
448
457
  SubchannelWrapper(ClientChannel* chand, RefCountedPtr<Subchannel> subchannel,
449
458
  absl::optional<std::string> health_check_service_name)
450
- : SubchannelInterface(
451
- GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
452
- ? "SubchannelWrapper"
453
- : nullptr),
459
+ : SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
460
+ ? "SubchannelWrapper"
461
+ : nullptr),
454
462
  chand_(chand),
455
463
  subchannel_(std::move(subchannel)),
456
464
  health_check_service_name_(std::move(health_check_service_name)) {
457
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
465
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
458
466
  gpr_log(GPR_INFO,
459
467
  "chand=%p: creating subchannel wrapper %p for subchannel %p",
460
468
  chand, this, subchannel_.get());
@@ -476,7 +484,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
476
484
  }
477
485
 
478
486
  ~SubchannelWrapper() override {
479
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
487
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
480
488
  gpr_log(GPR_INFO,
481
489
  "chand=%p: destroying subchannel wrapper %p for subchannel %p",
482
490
  chand_, this, subchannel_.get());
@@ -498,27 +506,21 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
498
506
  GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "SubchannelWrapper");
499
507
  }
500
508
 
501
- grpc_connectivity_state CheckConnectivityState() override {
502
- return subchannel_->CheckConnectivityState(health_check_service_name_);
503
- }
504
-
505
509
  void WatchConnectivityState(
506
- grpc_connectivity_state initial_state,
507
510
  std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
508
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
511
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
509
512
  auto& watcher_wrapper = watcher_map_[watcher.get()];
510
513
  GPR_ASSERT(watcher_wrapper == nullptr);
511
514
  watcher_wrapper = new WatcherWrapper(std::move(watcher),
512
- Ref(DEBUG_LOCATION, "WatcherWrapper"),
513
- initial_state);
515
+ Ref(DEBUG_LOCATION, "WatcherWrapper"));
514
516
  subchannel_->WatchConnectivityState(
515
- initial_state, health_check_service_name_,
517
+ health_check_service_name_,
516
518
  RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
517
519
  watcher_wrapper));
518
520
  }
519
521
 
520
522
  void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher)
521
- override ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
523
+ override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
522
524
  auto it = watcher_map_.find(watcher);
523
525
  GPR_ASSERT(it != watcher_map_.end());
524
526
  subchannel_->CancelConnectivityStateWatch(health_check_service_name_,
@@ -530,10 +532,19 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
530
532
  return subchannel_->connected_subchannel();
531
533
  }
532
534
 
533
- void AttemptToConnect() override { subchannel_->AttemptToConnect(); }
535
+ void RequestConnection() override { subchannel_->RequestConnection(); }
534
536
 
535
537
  void ResetBackoff() override { subchannel_->ResetBackoff(); }
536
538
 
539
+ void AddDataWatcher(std::unique_ptr<DataWatcherInterface> watcher) override
540
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
541
+ std::unique_ptr<InternalSubchannelDataWatcherInterface> internal_watcher(
542
+ static_cast<InternalSubchannelDataWatcherInterface*>(
543
+ watcher.release()));
544
+ internal_watcher->SetSubchannel(subchannel_.get());
545
+ data_watchers_.push_back(std::move(internal_watcher));
546
+ }
547
+
537
548
  const grpc_channel_args* channel_args() override {
538
549
  return subchannel_->channel_args();
539
550
  }
@@ -562,24 +573,21 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
562
573
  WatcherWrapper(
563
574
  std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
564
575
  watcher,
565
- RefCountedPtr<SubchannelWrapper> parent,
566
- grpc_connectivity_state initial_state)
567
- : watcher_(std::move(watcher)),
568
- parent_(std::move(parent)),
569
- last_seen_state_(initial_state) {}
576
+ RefCountedPtr<SubchannelWrapper> parent)
577
+ : watcher_(std::move(watcher)), parent_(std::move(parent)) {}
570
578
 
571
579
  ~WatcherWrapper() override {
572
580
  auto* parent = parent_.release(); // ref owned by lambda
573
581
  parent->chand_->work_serializer_->Run(
574
- [parent]()
575
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_->chand_->work_serializer_) {
576
- parent->Unref(DEBUG_LOCATION, "WatcherWrapper");
577
- },
582
+ [parent]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
583
+ *parent_->chand_->work_serializer_) {
584
+ parent->Unref(DEBUG_LOCATION, "WatcherWrapper");
585
+ },
578
586
  DEBUG_LOCATION);
579
587
  }
580
588
 
581
589
  void OnConnectivityStateChange() override {
582
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
590
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
583
591
  gpr_log(GPR_INFO,
584
592
  "chand=%p: connectivity change for subchannel wrapper %p "
585
593
  "subchannel %p; hopping into work_serializer",
@@ -587,11 +595,11 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
587
595
  }
588
596
  Ref().release(); // ref owned by lambda
589
597
  parent_->chand_->work_serializer_->Run(
590
- [this]()
591
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_->chand_->work_serializer_) {
592
- ApplyUpdateInControlPlaneWorkSerializer();
593
- Unref();
594
- },
598
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
599
+ *parent_->chand_->work_serializer_) {
600
+ ApplyUpdateInControlPlaneWorkSerializer();
601
+ Unref();
602
+ },
595
603
  DEBUG_LOCATION);
596
604
  }
597
605
 
@@ -603,18 +611,15 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
603
611
  }
604
612
 
605
613
  WatcherWrapper* MakeReplacement() {
606
- auto* replacement =
607
- new WatcherWrapper(std::move(watcher_), parent_, last_seen_state_);
614
+ auto* replacement = new WatcherWrapper(std::move(watcher_), parent_);
608
615
  replacement_ = replacement;
609
616
  return replacement;
610
617
  }
611
618
 
612
- grpc_connectivity_state last_seen_state() const { return last_seen_state_; }
613
-
614
619
  private:
615
620
  void ApplyUpdateInControlPlaneWorkSerializer()
616
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_->chand_->work_serializer_) {
617
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
621
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
622
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
618
623
  gpr_log(GPR_INFO,
619
624
  "chand=%p: processing connectivity change in work serializer "
620
625
  "for subchannel wrapper %p subchannel %p "
@@ -631,7 +636,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
631
636
  &new_keepalive_time)) {
632
637
  if (new_keepalive_time > parent_->chand_->keepalive_time_) {
633
638
  parent_->chand_->keepalive_time_ = new_keepalive_time;
634
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
639
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
635
640
  gpr_log(GPR_INFO, "chand=%p: throttling keepalive time to %d",
636
641
  parent_->chand_, parent_->chand_->keepalive_time_);
637
642
  }
@@ -652,15 +657,21 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
652
657
  // Ignore update if the parent WatcherWrapper has been replaced
653
658
  // since this callback was scheduled.
654
659
  if (watcher_ != nullptr) {
655
- last_seen_state_ = state_change.state;
656
- watcher_->OnConnectivityStateChange(state_change.state);
660
+ // Propagate status only in state TF.
661
+ // We specifically want to avoid propagating the status for
662
+ // state IDLE that the real subchannel gave us only for the
663
+ // purpose of keepalive propagation.
664
+ if (state_change.state != GRPC_CHANNEL_TRANSIENT_FAILURE) {
665
+ state_change.status = absl::OkStatus();
666
+ }
667
+ watcher_->OnConnectivityStateChange(state_change.state,
668
+ state_change.status);
657
669
  }
658
670
  }
659
671
 
660
672
  std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
661
673
  watcher_;
662
674
  RefCountedPtr<SubchannelWrapper> parent_;
663
- grpc_connectivity_state last_seen_state_;
664
675
  WatcherWrapper* replacement_ = nullptr;
665
676
  };
666
677
 
@@ -673,7 +684,9 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
673
684
  // CancelConnectivityStateWatch() with its watcher, we know the
674
685
  // corresponding WrapperWatcher to cancel on the underlying subchannel.
675
686
  std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_
676
- ABSL_GUARDED_BY(&ClientChannel::work_serializer_);
687
+ ABSL_GUARDED_BY(*chand_->work_serializer_);
688
+ std::vector<std::unique_ptr<InternalSubchannelDataWatcherInterface>>
689
+ data_watchers_ ABSL_GUARDED_BY(*chand_->work_serializer_);
677
690
  };
678
691
 
679
692
  //
@@ -703,7 +716,7 @@ ClientChannel::ExternalConnectivityWatcher::ExternalConnectivityWatcher(
703
716
  }
704
717
  // Pass the ref from creating the object to Start().
705
718
  chand_->work_serializer_->Run(
706
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
719
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
707
720
  // The ref is passed to AddWatcherLocked().
708
721
  AddWatcherLocked();
709
722
  },
@@ -753,7 +766,7 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
753
766
  // automatically remove all watchers in that case.
754
767
  if (state != GRPC_CHANNEL_SHUTDOWN) {
755
768
  chand_->work_serializer_->Run(
756
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
769
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
757
770
  RemoveWatcherLocked();
758
771
  },
759
772
  DEBUG_LOCATION);
@@ -769,7 +782,7 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
769
782
  ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_CANCELLED);
770
783
  // Hop back into the work_serializer to clean up.
771
784
  chand_->work_serializer_->Run(
772
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
785
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
773
786
  RemoveWatcherLocked();
774
787
  },
775
788
  DEBUG_LOCATION);
@@ -800,7 +813,7 @@ class ClientChannel::ConnectivityWatcherAdder {
800
813
  watcher_(std::move(watcher)) {
801
814
  GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherAdder");
802
815
  chand_->work_serializer_->Run(
803
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
816
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
804
817
  AddWatcherLocked();
805
818
  },
806
819
  DEBUG_LOCATION);
@@ -808,7 +821,7 @@ class ClientChannel::ConnectivityWatcherAdder {
808
821
 
809
822
  private:
810
823
  void AddWatcherLocked()
811
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
824
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
812
825
  chand_->state_tracker_.AddWatcher(initial_state_, std::move(watcher_));
813
826
  GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ConnectivityWatcherAdder");
814
827
  delete this;
@@ -830,7 +843,7 @@ class ClientChannel::ConnectivityWatcherRemover {
830
843
  : chand_(chand), watcher_(watcher) {
831
844
  GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherRemover");
832
845
  chand_->work_serializer_->Run(
833
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
846
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
834
847
  RemoveWatcherLocked();
835
848
  },
836
849
  DEBUG_LOCATION);
@@ -838,7 +851,7 @@ class ClientChannel::ConnectivityWatcherRemover {
838
851
 
839
852
  private:
840
853
  void RemoveWatcherLocked()
841
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
854
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
842
855
  chand_->state_tracker_.RemoveWatcher(watcher_);
843
856
  GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_,
844
857
  "ConnectivityWatcherRemover");
@@ -867,7 +880,7 @@ class ClientChannel::ClientChannelControlHelper
867
880
 
868
881
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
869
882
  ServerAddress address, const grpc_channel_args& args) override
870
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
883
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
871
884
  if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
872
885
  // Determine health check service name.
873
886
  absl::optional<std::string> health_check_service_name;
@@ -938,10 +951,10 @@ class ClientChannel::ClientChannelControlHelper
938
951
  void UpdateState(
939
952
  grpc_connectivity_state state, const absl::Status& status,
940
953
  std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) override
941
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
954
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
942
955
  if (chand_->resolver_ == nullptr) return; // Shutting down.
943
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
944
- const char* extra = chand_->disconnect_error_ == GRPC_ERROR_NONE
956
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
957
+ const char* extra = GRPC_ERROR_IS_NONE(chand_->disconnect_error_)
945
958
  ? ""
946
959
  : " (ignoring -- channel shutting down)";
947
960
  gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
@@ -949,16 +962,16 @@ class ClientChannel::ClientChannelControlHelper
949
962
  picker.get(), extra);
950
963
  }
951
964
  // Do update only if not shutting down.
952
- if (chand_->disconnect_error_ == GRPC_ERROR_NONE) {
965
+ if (GRPC_ERROR_IS_NONE(chand_->disconnect_error_)) {
953
966
  chand_->UpdateStateAndPickerLocked(state, status, "helper",
954
967
  std::move(picker));
955
968
  }
956
969
  }
957
970
 
958
971
  void RequestReresolution() override
959
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
972
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
960
973
  if (chand_->resolver_ == nullptr) return; // Shutting down.
961
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
974
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
962
975
  gpr_log(GPR_INFO, "chand=%p: started name re-resolving", chand_);
963
976
  }
964
977
  chand_->resolver_->RequestReresolutionLocked();
@@ -969,7 +982,7 @@ class ClientChannel::ClientChannelControlHelper
969
982
  }
970
983
 
971
984
  void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
972
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
985
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
973
986
  if (chand_->resolver_ == nullptr) return; // Shutting down.
974
987
  if (chand_->channelz_node_ != nullptr) {
975
988
  chand_->channelz_node_->AddTraceEvent(
@@ -993,9 +1006,9 @@ class ClientChannel::ClientChannelControlHelper
993
1006
  // ClientChannel implementation
994
1007
  //
995
1008
 
996
- ClientChannel* ClientChannel::GetFromChannel(grpc_channel* channel) {
1009
+ ClientChannel* ClientChannel::GetFromChannel(Channel* channel) {
997
1010
  grpc_channel_element* elem =
998
- grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
1011
+ grpc_channel_stack_last_element(channel->channel_stack());
999
1012
  if (elem->filter != &kFilterVtable) return nullptr;
1000
1013
  return static_cast<ClientChannel*>(elem->channel_data);
1001
1014
  }
@@ -1042,10 +1055,12 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1042
1055
  ClientChannelFactory::GetFromChannelArgs(args->channel_args)),
1043
1056
  channelz_node_(GetChannelzNode(args->channel_args)),
1044
1057
  interested_parties_(grpc_pollset_set_create()),
1058
+ service_config_parser_index_(
1059
+ internal::ClientChannelServiceConfigParser::ParserIndex()),
1045
1060
  work_serializer_(std::make_shared<WorkSerializer>()),
1046
1061
  state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
1047
1062
  subchannel_pool_(GetSubchannelPool(args->channel_args)) {
1048
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1063
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1049
1064
  gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
1050
1065
  this, owning_stack_);
1051
1066
  }
@@ -1064,8 +1079,8 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1064
1079
  if (service_config_json == nullptr) service_config_json = "{}";
1065
1080
  *error = GRPC_ERROR_NONE;
1066
1081
  default_service_config_ =
1067
- ServiceConfig::Create(args->channel_args, service_config_json, error);
1068
- if (*error != GRPC_ERROR_NONE) {
1082
+ ServiceConfigImpl::Create(args->channel_args, service_config_json, error);
1083
+ if (!GRPC_ERROR_IS_NONE(*error)) {
1069
1084
  default_service_config_.reset();
1070
1085
  return;
1071
1086
  }
@@ -1089,7 +1104,8 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1089
1104
  }
1090
1105
  // Make sure the URI to resolve is valid, so that we know that
1091
1106
  // resolver creation will succeed later.
1092
- if (!ResolverRegistry::IsValidTarget(uri_to_resolve_)) {
1107
+ if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
1108
+ uri_to_resolve_)) {
1093
1109
  *error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
1094
1110
  absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
1095
1111
  return;
@@ -1108,7 +1124,9 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1108
1124
  const char* default_authority =
1109
1125
  grpc_channel_args_find_string(channel_args_, GRPC_ARG_DEFAULT_AUTHORITY);
1110
1126
  if (default_authority == nullptr) {
1111
- default_authority_ = ResolverRegistry::GetDefaultAuthority(server_uri);
1127
+ default_authority_ =
1128
+ CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
1129
+ server_uri);
1112
1130
  } else {
1113
1131
  default_authority_ = default_authority;
1114
1132
  }
@@ -1117,12 +1135,11 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1117
1135
  }
1118
1136
 
1119
1137
  ClientChannel::~ClientChannel() {
1120
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1138
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1121
1139
  gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
1122
1140
  }
1123
1141
  DestroyResolverAndLbPolicyLocked();
1124
1142
  grpc_channel_args_destroy(channel_args_);
1125
- GRPC_ERROR_UNREF(resolver_transient_failure_error_);
1126
1143
  // Stop backup polling.
1127
1144
  grpc_client_channel_stop_backup_polling(interested_parties_);
1128
1145
  grpc_pollset_set_destroy(interested_parties_);
@@ -1157,6 +1174,24 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
1157
1174
  } else {
1158
1175
  policy_name = grpc_channel_args_find_string(resolver_result.args,
1159
1176
  GRPC_ARG_LB_POLICY_NAME);
1177
+ bool requires_config = false;
1178
+ if (policy_name != nullptr &&
1179
+ (!LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
1180
+ policy_name, &requires_config) ||
1181
+ requires_config)) {
1182
+ if (requires_config) {
1183
+ gpr_log(GPR_ERROR,
1184
+ "LB policy: %s passed through channel_args must not "
1185
+ "require a config. Using pick_first instead.",
1186
+ policy_name);
1187
+ } else {
1188
+ gpr_log(GPR_ERROR,
1189
+ "LB policy: %s passed through channel_args does not exist. "
1190
+ "Using pick_first instead.",
1191
+ policy_name);
1192
+ }
1193
+ policy_name = "pick_first";
1194
+ }
1160
1195
  }
1161
1196
  // Use pick_first if nothing was specified and we didn't select grpclb
1162
1197
  // above.
@@ -1174,14 +1209,11 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
1174
1209
  // already verified that the policy does not require a config.
1175
1210
  // - One of the hard-coded values here, all of which are known to not
1176
1211
  // require a config.
1177
- // - A channel arg, in which case the application did something that
1178
- // is a misuse of our API.
1179
- // In the first two cases, these assertions will always be true. In
1180
- // the last case, this is probably fine for now.
1181
- // TODO(roth): If the last case becomes a problem, add better error
1182
- // handling here.
1212
+ // - A channel arg, in which case we check that the specified policy exists
1213
+ // and accepts an empty config. If not, we revert to using pick_first
1214
+ // lb_policy
1183
1215
  GPR_ASSERT(lb_policy_config != nullptr);
1184
- GPR_ASSERT(parse_error == GRPC_ERROR_NONE);
1216
+ GPR_ASSERT(GRPC_ERROR_IS_NONE(parse_error));
1185
1217
  return lb_policy_config;
1186
1218
  }
1187
1219
 
@@ -1190,7 +1222,7 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
1190
1222
  void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1191
1223
  // Handle race conditions.
1192
1224
  if (resolver_ == nullptr) return;
1193
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1225
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1194
1226
  gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
1195
1227
  }
1196
1228
  // We only want to trace the address resolution in the follow cases:
@@ -1202,32 +1234,35 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1202
1234
  // (d) Address resolution that causes a new LB policy to be created.
1203
1235
  //
1204
1236
  // We track a list of strings to eventually be concatenated and traced.
1205
- absl::InlinedVector<const char*, 3> trace_strings;
1206
- if (result.addresses.empty() && previous_resolution_contained_addresses_) {
1237
+ std::vector<const char*> trace_strings;
1238
+ const bool resolution_contains_addresses =
1239
+ result.addresses.ok() && !result.addresses->empty();
1240
+ if (!resolution_contains_addresses &&
1241
+ previous_resolution_contained_addresses_) {
1207
1242
  trace_strings.push_back("Address list became empty");
1208
- } else if (!result.addresses.empty() &&
1243
+ } else if (resolution_contains_addresses &&
1209
1244
  !previous_resolution_contained_addresses_) {
1210
1245
  trace_strings.push_back("Address list became non-empty");
1211
1246
  }
1212
- previous_resolution_contained_addresses_ = !result.addresses.empty();
1247
+ previous_resolution_contained_addresses_ = resolution_contains_addresses;
1213
1248
  std::string service_config_error_string_storage;
1214
- if (result.service_config_error != GRPC_ERROR_NONE) {
1249
+ if (!result.service_config.ok()) {
1215
1250
  service_config_error_string_storage =
1216
- grpc_error_std_string(result.service_config_error);
1251
+ result.service_config.status().ToString();
1217
1252
  trace_strings.push_back(service_config_error_string_storage.c_str());
1218
1253
  }
1219
1254
  // Choose the service config.
1220
1255
  RefCountedPtr<ServiceConfig> service_config;
1221
1256
  RefCountedPtr<ConfigSelector> config_selector;
1222
- if (result.service_config_error != GRPC_ERROR_NONE) {
1223
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1257
+ if (!result.service_config.ok()) {
1258
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1224
1259
  gpr_log(GPR_INFO, "chand=%p: resolver returned service config error: %s",
1225
- this, grpc_error_std_string(result.service_config_error).c_str());
1260
+ this, result.service_config.status().ToString().c_str());
1226
1261
  }
1227
1262
  // If the service config was invalid, then fallback to the
1228
1263
  // previously returned service config.
1229
1264
  if (saved_service_config_ != nullptr) {
1230
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1265
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1231
1266
  gpr_log(GPR_INFO,
1232
1267
  "chand=%p: resolver returned invalid service config. "
1233
1268
  "Continuing to use previous service config.",
@@ -1236,15 +1271,15 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1236
1271
  service_config = saved_service_config_;
1237
1272
  config_selector = saved_config_selector_;
1238
1273
  } else {
1239
- // We received an invalid service config and we don't have a
1274
+ // We received a service config error and we don't have a
1240
1275
  // previous service config to fall back to. Put the channel into
1241
1276
  // TRANSIENT_FAILURE.
1242
- OnResolverErrorLocked(GRPC_ERROR_REF(result.service_config_error));
1277
+ OnResolverErrorLocked(result.service_config.status());
1243
1278
  trace_strings.push_back("no valid service config");
1244
1279
  }
1245
- } else if (result.service_config == nullptr) {
1280
+ } else if (*result.service_config == nullptr) {
1246
1281
  // Resolver did not return any service config.
1247
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1282
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1248
1283
  gpr_log(GPR_INFO,
1249
1284
  "chand=%p: resolver returned no service config. Using default "
1250
1285
  "service config for channel.",
@@ -1253,15 +1288,18 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1253
1288
  service_config = default_service_config_;
1254
1289
  } else {
1255
1290
  // Use ServiceConfig and ConfigSelector returned by resolver.
1256
- service_config = result.service_config;
1291
+ service_config = std::move(*result.service_config);
1257
1292
  config_selector = ConfigSelector::GetFromChannelArgs(*result.args);
1258
1293
  }
1294
+ // Note: The only case in which service_config is null here is if the resolver
1295
+ // returned a service config error and we don't have a previous service
1296
+ // config to fall back to.
1259
1297
  if (service_config != nullptr) {
1260
1298
  // Extract global config for client channel.
1261
1299
  const internal::ClientChannelGlobalParsedConfig* parsed_service_config =
1262
1300
  static_cast<const internal::ClientChannelGlobalParsedConfig*>(
1263
1301
  service_config->GetGlobalParsedConfig(
1264
- internal::ClientChannelServiceConfigParser::ParserIndex()));
1302
+ service_config_parser_index_));
1265
1303
  // Choose LB policy config.
1266
1304
  RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config =
1267
1305
  ChooseLbPolicy(result, parsed_service_config);
@@ -1278,7 +1316,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1278
1316
  UpdateServiceConfigInControlPlaneLocked(std::move(service_config),
1279
1317
  std::move(config_selector),
1280
1318
  lb_policy_config->name());
1281
- } else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1319
+ } else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1282
1320
  gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
1283
1321
  }
1284
1322
  // Create or update LB policy, as needed.
@@ -1307,28 +1345,21 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1307
1345
  }
1308
1346
  }
1309
1347
 
1310
- void ClientChannel::OnResolverErrorLocked(grpc_error_handle error) {
1311
- if (resolver_ == nullptr) {
1312
- GRPC_ERROR_UNREF(error);
1313
- return;
1314
- }
1315
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1348
+ void ClientChannel::OnResolverErrorLocked(absl::Status status) {
1349
+ if (resolver_ == nullptr) return;
1350
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1316
1351
  gpr_log(GPR_INFO, "chand=%p: resolver transient failure: %s", this,
1317
- grpc_error_std_string(error).c_str());
1352
+ status.ToString().c_str());
1318
1353
  }
1319
1354
  // If we already have an LB policy from a previous resolution
1320
1355
  // result, then we continue to let it set the connectivity state.
1321
1356
  // Otherwise, we go into TRANSIENT_FAILURE.
1322
1357
  if (lb_policy_ == nullptr) {
1323
- grpc_error_handle state_error =
1324
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1325
- "Resolver transient failure", &error, 1);
1326
- absl::Status status = grpc_error_to_absl_status(state_error);
1358
+ grpc_error_handle error = absl_status_to_grpc_error(status);
1327
1359
  {
1328
1360
  MutexLock lock(&resolution_mu_);
1329
1361
  // Update resolver transient failure.
1330
- GRPC_ERROR_UNREF(resolver_transient_failure_error_);
1331
- resolver_transient_failure_error_ = state_error;
1362
+ resolver_transient_failure_error_ = status;
1332
1363
  // Process calls that were queued waiting for the resolver result.
1333
1364
  for (ResolverQueuedCall* call = resolver_queued_calls_; call != nullptr;
1334
1365
  call = call->next) {
@@ -1340,12 +1371,12 @@ void ClientChannel::OnResolverErrorLocked(grpc_error_handle error) {
1340
1371
  }
1341
1372
  }
1342
1373
  }
1374
+ GRPC_ERROR_UNREF(error);
1343
1375
  // Update connectivity state.
1344
1376
  UpdateStateAndPickerLocked(
1345
1377
  GRPC_CHANNEL_TRANSIENT_FAILURE, status, "resolver failure",
1346
1378
  absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(status));
1347
1379
  }
1348
- GRPC_ERROR_UNREF(error);
1349
1380
  }
1350
1381
 
1351
1382
  void ClientChannel::CreateOrUpdateLbPolicyLocked(
@@ -1356,6 +1387,7 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
1356
1387
  LoadBalancingPolicy::UpdateArgs update_args;
1357
1388
  update_args.addresses = std::move(result.addresses);
1358
1389
  update_args.config = std::move(lb_policy_config);
1390
+ update_args.resolution_note = std::move(result.resolution_note);
1359
1391
  // Add health check service name to channel args.
1360
1392
  absl::InlinedVector<grpc_arg, 1> args_to_add;
1361
1393
  if (health_check_service_name.has_value()) {
@@ -1374,7 +1406,7 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
1374
1406
  lb_policy_ = CreateLbPolicyLocked(*update_args.args);
1375
1407
  }
1376
1408
  // Update the policy.
1377
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1409
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1378
1410
  gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
1379
1411
  lb_policy_.get());
1380
1412
  }
@@ -1391,8 +1423,8 @@ OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
1391
1423
  lb_policy_args.args = &args;
1392
1424
  OrphanablePtr<LoadBalancingPolicy> lb_policy =
1393
1425
  MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
1394
- &grpc_client_channel_routing_trace);
1395
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1426
+ &grpc_client_channel_trace);
1427
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1396
1428
  gpr_log(GPR_INFO, "chand=%p: created new LB policy %p", this,
1397
1429
  lb_policy.get());
1398
1430
  }
@@ -1427,26 +1459,24 @@ void ClientChannel::RemoveResolverQueuedCall(ResolverQueuedCall* to_remove,
1427
1459
 
1428
1460
  void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
1429
1461
  RefCountedPtr<ServiceConfig> service_config,
1430
- RefCountedPtr<ConfigSelector> config_selector, const char* lb_policy_name) {
1431
- UniquePtr<char> service_config_json(
1432
- gpr_strdup(service_config->json_string().c_str()));
1433
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1462
+ RefCountedPtr<ConfigSelector> config_selector, std::string lb_policy_name) {
1463
+ std::string service_config_json(service_config->json_string());
1464
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1434
1465
  gpr_log(GPR_INFO,
1435
1466
  "chand=%p: resolver returned updated service config: \"%s\"", this,
1436
- service_config_json.get());
1467
+ service_config_json.c_str());
1437
1468
  }
1438
1469
  // Save service config.
1439
1470
  saved_service_config_ = std::move(service_config);
1440
1471
  // Swap out the data used by GetChannelInfo().
1441
- UniquePtr<char> lb_policy_name_owned(gpr_strdup(lb_policy_name));
1442
1472
  {
1443
1473
  MutexLock lock(&info_mu_);
1444
- info_lb_policy_name_ = std::move(lb_policy_name_owned);
1474
+ info_lb_policy_name_ = std::move(lb_policy_name);
1445
1475
  info_service_config_json_ = std::move(service_config_json);
1446
1476
  }
1447
1477
  // Save config selector.
1448
1478
  saved_config_selector_ = std::move(config_selector);
1449
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1479
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1450
1480
  gpr_log(GPR_INFO, "chand=%p: using ConfigSelector %p", this,
1451
1481
  saved_config_selector_.get());
1452
1482
  }
@@ -1457,7 +1487,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1457
1487
  RefCountedPtr<ServiceConfig> service_config = saved_service_config_;
1458
1488
  // Grab ref to config selector. Use default if resolver didn't supply one.
1459
1489
  RefCountedPtr<ConfigSelector> config_selector = saved_config_selector_;
1460
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1490
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1461
1491
  gpr_log(GPR_INFO, "chand=%p: switching to ConfigSelector %p", this,
1462
1492
  saved_config_selector_.get());
1463
1493
  }
@@ -1477,6 +1507,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1477
1507
  channel_args_, args_to_add.data(), args_to_add.size());
1478
1508
  new_args = config_selector->ModifyChannelArgs(new_args);
1479
1509
  bool enable_retries =
1510
+ !grpc_channel_args_want_minimal_stack(new_args) &&
1480
1511
  grpc_channel_args_find_bool(new_args, GRPC_ARG_ENABLE_RETRIES, true);
1481
1512
  // Construct dynamic filter stack.
1482
1513
  std::vector<const grpc_channel_filter*> filters =
@@ -1496,8 +1527,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1496
1527
  // after releasing the lock to keep the critical section small.
1497
1528
  {
1498
1529
  MutexLock lock(&resolution_mu_);
1499
- GRPC_ERROR_UNREF(resolver_transient_failure_error_);
1500
- resolver_transient_failure_error_ = GRPC_ERROR_NONE;
1530
+ resolver_transient_failure_error_ = absl::OkStatus();
1501
1531
  // Update service config.
1502
1532
  received_service_config_data_ = true;
1503
1533
  // Old values will be unreffed after lock is released.
@@ -1529,10 +1559,10 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1529
1559
  }
1530
1560
 
1531
1561
  void ClientChannel::CreateResolverLocked() {
1532
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1562
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1533
1563
  gpr_log(GPR_INFO, "chand=%p: starting name resolution", this);
1534
1564
  }
1535
- resolver_ = ResolverRegistry::CreateResolver(
1565
+ resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
1536
1566
  uri_to_resolve_.c_str(), channel_args_, interested_parties_,
1537
1567
  work_serializer_, absl::make_unique<ResolverResultHandler>(this));
1538
1568
  // Since the validity of the args was checked when the channel was created,
@@ -1542,20 +1572,20 @@ void ClientChannel::CreateResolverLocked() {
1542
1572
  GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
1543
1573
  absl::make_unique<LoadBalancingPolicy::QueuePicker>(nullptr));
1544
1574
  resolver_->StartLocked();
1545
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1575
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1546
1576
  gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
1547
1577
  }
1548
1578
  }
1549
1579
 
1550
1580
  void ClientChannel::DestroyResolverAndLbPolicyLocked() {
1551
1581
  if (resolver_ != nullptr) {
1552
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1582
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1553
1583
  gpr_log(GPR_INFO, "chand=%p: shutting down resolver=%p", this,
1554
1584
  resolver_.get());
1555
1585
  }
1556
1586
  resolver_.reset();
1557
1587
  if (lb_policy_ != nullptr) {
1558
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1588
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1559
1589
  gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
1560
1590
  lb_policy_.get());
1561
1591
  }
@@ -1671,7 +1701,7 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
1671
1701
  &result,
1672
1702
  // Complete pick.
1673
1703
  [op](LoadBalancingPolicy::PickResult::Complete* complete_pick)
1674
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::work_serializer_) {
1704
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*ClientChannel::work_serializer_) {
1675
1705
  SubchannelWrapper* subchannel = static_cast<SubchannelWrapper*>(
1676
1706
  complete_pick->subchannel.get());
1677
1707
  RefCountedPtr<ConnectedSubchannel> connected_subchannel =
@@ -1706,7 +1736,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
1706
1736
  // Ping.
1707
1737
  if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
1708
1738
  grpc_error_handle error = DoPingLocked(op);
1709
- if (error != GRPC_ERROR_NONE) {
1739
+ if (!GRPC_ERROR_IS_NONE(error)) {
1710
1740
  ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
1711
1741
  GRPC_ERROR_REF(error));
1712
1742
  ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_ack, error);
@@ -1722,8 +1752,8 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
1722
1752
  }
1723
1753
  }
1724
1754
  // Disconnect or enter IDLE.
1725
- if (op->disconnect_with_error != GRPC_ERROR_NONE) {
1726
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
1755
+ if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
1756
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1727
1757
  gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
1728
1758
  grpc_error_std_string(op->disconnect_with_error).c_str());
1729
1759
  }
@@ -1732,7 +1762,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
1732
1762
  if (grpc_error_get_int(op->disconnect_with_error,
1733
1763
  GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE, &value) &&
1734
1764
  static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
1735
- if (disconnect_error_ == GRPC_ERROR_NONE) {
1765
+ if (GRPC_ERROR_IS_NONE(disconnect_error_)) {
1736
1766
  // Enter IDLE state.
1737
1767
  UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, absl::Status(),
1738
1768
  "channel entering IDLE", nullptr);
@@ -1740,7 +1770,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
1740
1770
  GRPC_ERROR_UNREF(op->disconnect_with_error);
1741
1771
  } else {
1742
1772
  // Disconnect.
1743
- GPR_ASSERT(disconnect_error_ == GRPC_ERROR_NONE);
1773
+ GPR_ASSERT(GRPC_ERROR_IS_NONE(disconnect_error_));
1744
1774
  disconnect_error_ = op->disconnect_with_error;
1745
1775
  UpdateStateAndPickerLocked(
1746
1776
  GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
@@ -1763,7 +1793,7 @@ void ClientChannel::StartTransportOp(grpc_channel_element* elem,
1763
1793
  // Pop into control plane work_serializer for remaining ops.
1764
1794
  GRPC_CHANNEL_STACK_REF(chand->owning_stack_, "start_transport_op");
1765
1795
  chand->work_serializer_->Run(
1766
- [chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
1796
+ [chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
1767
1797
  chand->StartTransportOpLocked(op);
1768
1798
  },
1769
1799
  DEBUG_LOCATION);
@@ -1774,11 +1804,11 @@ void ClientChannel::GetChannelInfo(grpc_channel_element* elem,
1774
1804
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
1775
1805
  MutexLock lock(&chand->info_mu_);
1776
1806
  if (info->lb_policy_name != nullptr) {
1777
- *info->lb_policy_name = gpr_strdup(chand->info_lb_policy_name_.get());
1807
+ *info->lb_policy_name = gpr_strdup(chand->info_lb_policy_name_.c_str());
1778
1808
  }
1779
1809
  if (info->service_config_json != nullptr) {
1780
1810
  *info->service_config_json =
1781
- gpr_strdup(chand->info_service_config_json_.get());
1811
+ gpr_strdup(chand->info_service_config_json_.c_str());
1782
1812
  }
1783
1813
  }
1784
1814
 
@@ -1825,7 +1855,7 @@ grpc_connectivity_state ClientChannel::CheckConnectivityState(
1825
1855
  if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
1826
1856
  GRPC_CHANNEL_STACK_REF(owning_stack_, "TryToConnect");
1827
1857
  work_serializer_->Run([this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
1828
- work_serializer_) { TryToConnectLocked(); },
1858
+ *work_serializer_) { TryToConnectLocked(); },
1829
1859
  DEBUG_LOCATION);
1830
1860
  }
1831
1861
  return out;
@@ -1852,7 +1882,7 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
1852
1882
  : deadline_state_(elem, args,
1853
1883
  GPR_LIKELY(chand.deadline_checking_enabled_)
1854
1884
  ? args.deadline
1855
- : GRPC_MILLIS_INF_FUTURE),
1885
+ : Timestamp::InfFuture()),
1856
1886
  path_(grpc_slice_ref_internal(args.path)),
1857
1887
  call_start_time_(args.start_time),
1858
1888
  deadline_(args.deadline),
@@ -1901,6 +1931,11 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
1901
1931
  GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
1902
1932
  CallData* calld = static_cast<CallData*>(elem->call_data);
1903
1933
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
1934
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace) &&
1935
+ !GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
1936
+ gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from above: %s", chand,
1937
+ calld, grpc_transport_stream_op_batch_string(batch).c_str());
1938
+ }
1904
1939
  if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
1905
1940
  grpc_deadline_state_client_start_transport_stream_op_batch(elem, batch);
1906
1941
  }
@@ -1908,8 +1943,13 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
1908
1943
  // in case we wind up failing the call before we get down to the retry
1909
1944
  // or LB call layer.
1910
1945
  if (batch->recv_trailing_metadata) {
1911
- calld->InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
1912
- batch);
1946
+ calld->original_recv_trailing_metadata_ready_ =
1947
+ batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
1948
+ GRPC_CLOSURE_INIT(&calld->recv_trailing_metadata_ready_,
1949
+ RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
1950
+ elem, nullptr);
1951
+ batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
1952
+ &calld->recv_trailing_metadata_ready_;
1913
1953
  }
1914
1954
  // If we already have a dynamic call, pass the batch down to it.
1915
1955
  // Note that once we have done so, we do not need to acquire the channel's
@@ -1925,7 +1965,7 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
1925
1965
  // We do not yet have a dynamic call.
1926
1966
  //
1927
1967
  // If we've previously been cancelled, immediately fail any new batches.
1928
- if (GPR_UNLIKELY(calld->cancel_error_ != GRPC_ERROR_NONE)) {
1968
+ if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(calld->cancel_error_))) {
1929
1969
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
1930
1970
  gpr_log(GPR_INFO, "chand=%p calld=%p: failing batch with error: %s",
1931
1971
  chand, calld,
@@ -2037,7 +2077,7 @@ void ClientChannel::CallData::FailPendingBatchInCallCombiner(
2037
2077
  void ClientChannel::CallData::PendingBatchesFail(
2038
2078
  grpc_call_element* elem, grpc_error_handle error,
2039
2079
  YieldCallCombinerPredicate yield_call_combiner_predicate) {
2040
- GPR_ASSERT(error != GRPC_ERROR_NONE);
2080
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
2041
2081
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2042
2082
  size_t num_batches = 0;
2043
2083
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
@@ -2134,14 +2174,15 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
2134
2174
  auto* calld = static_cast<CallData*>(self->elem_->call_data);
2135
2175
  {
2136
2176
  MutexLock lock(&chand->resolution_mu_);
2137
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2177
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2138
2178
  gpr_log(GPR_INFO,
2139
2179
  "chand=%p calld=%p: cancelling resolver queued pick: "
2140
2180
  "error=%s self=%p calld->resolver_pick_canceller=%p",
2141
2181
  chand, calld, grpc_error_std_string(error).c_str(), self,
2142
2182
  calld->resolver_call_canceller_);
2143
2183
  }
2144
- if (calld->resolver_call_canceller_ == self && error != GRPC_ERROR_NONE) {
2184
+ if (calld->resolver_call_canceller_ == self &&
2185
+ !GRPC_ERROR_IS_NONE(error)) {
2145
2186
  // Remove pick from list of queued picks.
2146
2187
  calld->MaybeRemoveCallFromResolverQueuedCallsLocked(self->elem_);
2147
2188
  // Fail pending batches on the call.
@@ -2161,7 +2202,7 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
2161
2202
  grpc_call_element* elem) {
2162
2203
  if (!queued_pending_resolver_result_) return;
2163
2204
  auto* chand = static_cast<ClientChannel*>(elem->channel_data);
2164
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2205
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2165
2206
  gpr_log(GPR_INFO,
2166
2207
  "chand=%p calld=%p: removing from resolver queued picks list",
2167
2208
  chand, this);
@@ -2176,7 +2217,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
2176
2217
  grpc_call_element* elem) {
2177
2218
  if (queued_pending_resolver_result_) return;
2178
2219
  auto* chand = static_cast<ClientChannel*>(elem->channel_data);
2179
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2220
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2180
2221
  gpr_log(GPR_INFO, "chand=%p calld=%p: adding to resolver queued picks list",
2181
2222
  chand, this);
2182
2223
  }
@@ -2190,7 +2231,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
2190
2231
  grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2191
2232
  grpc_call_element* elem, grpc_metadata_batch* initial_metadata) {
2192
2233
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2193
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2234
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2194
2235
  gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
2195
2236
  chand, this);
2196
2237
  }
@@ -2199,7 +2240,7 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2199
2240
  // Use the ConfigSelector to determine the config for the call.
2200
2241
  ConfigSelector::CallConfig call_config =
2201
2242
  config_selector->GetCallConfig({&path_, initial_metadata, arena_});
2202
- if (call_config.error != GRPC_ERROR_NONE) return call_config.error;
2243
+ if (!GRPC_ERROR_IS_NONE(call_config.error)) return call_config.error;
2203
2244
  // Create a ClientChannelServiceConfigCallData for the call. This stores
2204
2245
  // a ref to the ServiceConfig and caches the right set of parsed configs
2205
2246
  // to use for the call. The ClientChannelServiceConfigCallData will store
@@ -2213,13 +2254,14 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2213
2254
  // Apply our own method params to the call.
2214
2255
  auto* method_params = static_cast<ClientChannelMethodParsedConfig*>(
2215
2256
  service_config_call_data->GetMethodParsedConfig(
2216
- internal::ClientChannelServiceConfigParser::ParserIndex()));
2257
+ chand->service_config_parser_index_));
2217
2258
  if (method_params != nullptr) {
2218
2259
  // If the deadline from the service config is shorter than the one
2219
2260
  // from the client API, reset the deadline timer.
2220
- if (chand->deadline_checking_enabled_ && method_params->timeout() != 0) {
2221
- const grpc_millis per_method_deadline =
2222
- grpc_cycle_counter_to_millis_round_up(call_start_time_) +
2261
+ if (chand->deadline_checking_enabled_ &&
2262
+ method_params->timeout() != Duration::Zero()) {
2263
+ const Timestamp per_method_deadline =
2264
+ Timestamp::FromCycleCounterRoundUp(call_start_time_) +
2223
2265
  method_params->timeout();
2224
2266
  if (per_method_deadline < deadline_) {
2225
2267
  deadline_ = per_method_deadline;
@@ -2250,30 +2292,27 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2250
2292
  void ClientChannel::CallData::
2251
2293
  RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
2252
2294
  void* arg, grpc_error_handle error) {
2253
- auto* self = static_cast<CallData*>(arg);
2295
+ auto* elem = static_cast<grpc_call_element*>(arg);
2296
+ auto* chand = static_cast<ClientChannel*>(elem->channel_data);
2297
+ auto* calld = static_cast<CallData*>(elem->call_data);
2254
2298
  auto* service_config_call_data =
2255
2299
  static_cast<ClientChannelServiceConfigCallData*>(
2256
- self->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
2300
+ calld->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
2301
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2302
+ gpr_log(GPR_INFO,
2303
+ "chand=%p calld=%p: got recv_trailing_metadata_ready: error=%s "
2304
+ "service_config_call_data=%p",
2305
+ chand, calld, grpc_error_std_string(error).c_str(),
2306
+ service_config_call_data);
2307
+ }
2257
2308
  if (service_config_call_data != nullptr) {
2258
2309
  service_config_call_data->call_dispatch_controller()->Commit();
2259
2310
  }
2260
2311
  // Chain to original callback.
2261
- Closure::Run(DEBUG_LOCATION, self->original_recv_trailing_metadata_ready_,
2312
+ Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
2262
2313
  GRPC_ERROR_REF(error));
2263
2314
  }
2264
2315
 
2265
- void ClientChannel::CallData::
2266
- InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
2267
- grpc_transport_stream_op_batch* batch) {
2268
- original_recv_trailing_metadata_ready_ =
2269
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
2270
- GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
2271
- RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
2272
- this, nullptr);
2273
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
2274
- &recv_trailing_metadata_ready_;
2275
- }
2276
-
2277
2316
  void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
2278
2317
  grpc_error_handle error) {
2279
2318
  // TODO(roth): Does this callback need to hold a ref to the call stack?
@@ -2286,8 +2325,8 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
2286
2325
  grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
2287
2326
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2288
2327
  CallData* calld = static_cast<CallData*>(elem->call_data);
2289
- if (error != GRPC_ERROR_NONE) {
2290
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2328
+ if (!GRPC_ERROR_IS_NONE(error)) {
2329
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2291
2330
  gpr_log(GPR_INFO,
2292
2331
  "chand=%p calld=%p: error applying config to call: error=%s",
2293
2332
  chand, calld, grpc_error_std_string(error).c_str());
@@ -2319,6 +2358,9 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2319
2358
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2320
2359
  // If we're still in IDLE, we need to start resolving.
2321
2360
  if (GPR_UNLIKELY(chand->CheckConnectivityState(false) == GRPC_CHANNEL_IDLE)) {
2361
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2362
+ gpr_log(GPR_INFO, "chand=%p calld=%p: triggering exit idle", chand, this);
2363
+ }
2322
2364
  // Bounce into the control plane work serializer to start resolving,
2323
2365
  // in case we are still in IDLE state. Since we are holding on to the
2324
2366
  // resolution mutex here, we offload it on the ExecCtx so that we don't
@@ -2331,7 +2373,7 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2331
2373
  auto* chand = static_cast<ClientChannel*>(arg);
2332
2374
  chand->work_serializer_->Run(
2333
2375
  [chand]()
2334
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
2376
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
2335
2377
  chand->CheckConnectivityState(/*try_to_connect=*/true);
2336
2378
  GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_,
2337
2379
  "CheckResolutionLocked");
@@ -2353,17 +2395,24 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2353
2395
  if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
2354
2396
  // If the resolver returned transient failure before returning the
2355
2397
  // first service config, fail any non-wait_for_ready calls.
2356
- grpc_error_handle resolver_error = chand->resolver_transient_failure_error_;
2357
- if (resolver_error != GRPC_ERROR_NONE &&
2358
- (send_initial_metadata_flags & GRPC_INITIAL_METADATA_WAIT_FOR_READY) ==
2359
- 0) {
2398
+ absl::Status resolver_error = chand->resolver_transient_failure_error_;
2399
+ if (!resolver_error.ok() && (send_initial_metadata_flags &
2400
+ GRPC_INITIAL_METADATA_WAIT_FOR_READY) == 0) {
2401
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2402
+ gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
2403
+ chand, this);
2404
+ }
2360
2405
  MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
2361
- *error = GRPC_ERROR_REF(resolver_error);
2406
+ *error = absl_status_to_grpc_error(resolver_error);
2362
2407
  return true;
2363
2408
  }
2364
2409
  // Either the resolver has not yet returned a result, or it has
2365
2410
  // returned transient failure but the call is wait_for_ready. In
2366
2411
  // either case, queue the call.
2412
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2413
+ gpr_log(GPR_INFO, "chand=%p calld=%p: queuing to wait for resolution",
2414
+ chand, this);
2415
+ }
2367
2416
  MaybeAddCallToResolverQueuedCallsLocked(elem);
2368
2417
  return false;
2369
2418
  }
@@ -2388,15 +2437,15 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
2388
2437
  call_combiner_};
2389
2438
  grpc_error_handle error = GRPC_ERROR_NONE;
2390
2439
  DynamicFilters* channel_stack = args.channel_stack.get();
2391
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2440
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2392
2441
  gpr_log(
2393
2442
  GPR_INFO,
2394
2443
  "chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
2395
2444
  chand, this, channel_stack);
2396
2445
  }
2397
2446
  dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
2398
- if (error != GRPC_ERROR_NONE) {
2399
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2447
+ if (!GRPC_ERROR_IS_NONE(error)) {
2448
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2400
2449
  gpr_log(GPR_INFO,
2401
2450
  "chand=%p calld=%p: failed to create dynamic call: error=%s",
2402
2451
  chand, this, grpc_error_std_string(error).c_str());
@@ -2414,20 +2463,31 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
2414
2463
  class ClientChannel::LoadBalancedCall::Metadata
2415
2464
  : public LoadBalancingPolicy::MetadataInterface {
2416
2465
  public:
2417
- Metadata(LoadBalancedCall* lb_call, grpc_metadata_batch* batch)
2418
- : lb_call_(lb_call), batch_(batch) {}
2466
+ explicit Metadata(grpc_metadata_batch* batch) : batch_(batch) {}
2419
2467
 
2420
2468
  void Add(absl::string_view key, absl::string_view value) override {
2421
- grpc_linked_mdelem* linked_mdelem = static_cast<grpc_linked_mdelem*>(
2422
- lb_call_->arena_->Alloc(sizeof(grpc_linked_mdelem)));
2423
- linked_mdelem->md = grpc_mdelem_from_slices(
2424
- ExternallyManagedSlice(key.data(), key.size()),
2425
- ExternallyManagedSlice(value.data(), value.size()));
2426
- GPR_ASSERT(batch_->LinkTail(linked_mdelem) == GRPC_ERROR_NONE);
2469
+ if (batch_ == nullptr) return;
2470
+ // Gross, egregious hack to support legacy grpclb behavior.
2471
+ // TODO(ctiller): Use a promise context for this once that plumbing is done.
2472
+ if (key == GrpcLbClientStatsMetadata::key()) {
2473
+ batch_->Set(
2474
+ GrpcLbClientStatsMetadata(),
2475
+ const_cast<GrpcLbClientStats*>(
2476
+ reinterpret_cast<const GrpcLbClientStats*>(value.data())));
2477
+ return;
2478
+ }
2479
+ batch_->Append(key, Slice::FromStaticString(value),
2480
+ [key](absl::string_view error, const Slice& value) {
2481
+ gpr_log(GPR_ERROR, "%s",
2482
+ absl::StrCat(error, " key:", key,
2483
+ " value:", value.as_string_view())
2484
+ .c_str());
2485
+ });
2427
2486
  }
2428
2487
 
2429
2488
  std::vector<std::pair<std::string, std::string>> TestOnlyCopyToVector()
2430
2489
  override {
2490
+ if (batch_ == nullptr) return {};
2431
2491
  Encoder encoder;
2432
2492
  batch_->Encode(&encoder);
2433
2493
  return encoder.Take();
@@ -2435,18 +2495,16 @@ class ClientChannel::LoadBalancedCall::Metadata
2435
2495
 
2436
2496
  absl::optional<absl::string_view> Lookup(absl::string_view key,
2437
2497
  std::string* buffer) const override {
2438
- return batch_->GetValue(key, buffer);
2498
+ if (batch_ == nullptr) return absl::nullopt;
2499
+ return batch_->GetStringValue(key, buffer);
2439
2500
  }
2440
2501
 
2441
2502
  private:
2442
2503
  class Encoder {
2443
2504
  public:
2444
- void Encode(grpc_mdelem md) {
2445
- auto key = StringViewFromSlice(GRPC_MDKEY(md));
2446
- if (key != ":path") {
2447
- out_.emplace_back(std::string(key),
2448
- std::string(StringViewFromSlice(GRPC_MDVALUE(md))));
2449
- }
2505
+ void Encode(const Slice& key, const Slice& value) {
2506
+ out_.emplace_back(std::string(key.as_string_view()),
2507
+ std::string(value.as_string_view()));
2450
2508
  }
2451
2509
 
2452
2510
  template <class Which>
@@ -2456,7 +2514,11 @@ class ClientChannel::LoadBalancedCall::Metadata
2456
2514
  std::string(value_slice.as_string_view()));
2457
2515
  }
2458
2516
 
2459
- void Encode(GrpcTimeoutMetadata, grpc_millis) {}
2517
+ void Encode(GrpcTimeoutMetadata,
2518
+ const typename GrpcTimeoutMetadata::ValueType&) {}
2519
+ void Encode(HttpPathMetadata, const Slice&) {}
2520
+ void Encode(HttpMethodMetadata,
2521
+ const typename HttpMethodMetadata::ValueType&) {}
2460
2522
 
2461
2523
  std::vector<std::pair<std::string, std::string>> Take() {
2462
2524
  return std::move(out_);
@@ -2466,7 +2528,6 @@ class ClientChannel::LoadBalancedCall::Metadata
2466
2528
  std::vector<std::pair<std::string, std::string>> out_;
2467
2529
  };
2468
2530
 
2469
- LoadBalancedCall* lb_call_;
2470
2531
  grpc_metadata_batch* batch_;
2471
2532
  };
2472
2533
 
@@ -2474,25 +2535,16 @@ class ClientChannel::LoadBalancedCall::Metadata
2474
2535
  // ClientChannel::LoadBalancedCall::LbCallState
2475
2536
  //
2476
2537
 
2477
- class ClientChannel::LoadBalancedCall::LbCallState
2478
- : public LoadBalancingPolicy::CallState {
2479
- public:
2480
- explicit LbCallState(LoadBalancedCall* lb_call) : lb_call_(lb_call) {}
2481
-
2482
- void* Alloc(size_t size) override { return lb_call_->arena_->Alloc(size); }
2483
-
2484
- absl::string_view ExperimentalGetCallAttribute(const char* key) override {
2485
- auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
2486
- lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
2487
- auto& call_attributes = service_config_call_data->call_attributes();
2488
- auto it = call_attributes.find(key);
2489
- if (it == call_attributes.end()) return absl::string_view();
2490
- return it->second;
2491
- }
2492
-
2493
- private:
2494
- LoadBalancedCall* lb_call_;
2495
- };
2538
+ absl::string_view
2539
+ ClientChannel::LoadBalancedCall::LbCallState::GetCallAttribute(
2540
+ UniqueTypeName type) {
2541
+ auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
2542
+ lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
2543
+ auto& call_attributes = service_config_call_data->call_attributes();
2544
+ auto it = call_attributes.find(type);
2545
+ if (it == call_attributes.end()) return absl::string_view();
2546
+ return it->second;
2547
+ }
2496
2548
 
2497
2549
  //
2498
2550
  // ClientChannel::LoadBalancedCall::BackendMetricAccessor
@@ -2505,17 +2557,35 @@ class ClientChannel::LoadBalancedCall::BackendMetricAccessor
2505
2557
  : lb_call_(lb_call) {}
2506
2558
 
2507
2559
  const BackendMetricData* GetBackendMetricData() override {
2508
- if (lb_call_->backend_metric_data_ == nullptr) {
2560
+ if (lb_call_->backend_metric_data_ == nullptr &&
2561
+ lb_call_->recv_trailing_metadata_ != nullptr) {
2509
2562
  if (const auto* md = lb_call_->recv_trailing_metadata_->get_pointer(
2510
- XEndpointLoadMetricsBinMetadata())) {
2563
+ EndpointLoadMetricsBinMetadata())) {
2564
+ BackendMetricAllocator allocator(lb_call_->arena_);
2511
2565
  lb_call_->backend_metric_data_ =
2512
- ParseBackendMetricData(*md, lb_call_->arena_);
2566
+ ParseBackendMetricData(md->as_string_view(), &allocator);
2513
2567
  }
2514
2568
  }
2515
2569
  return lb_call_->backend_metric_data_;
2516
2570
  }
2517
2571
 
2518
2572
  private:
2573
+ class BackendMetricAllocator : public BackendMetricAllocatorInterface {
2574
+ public:
2575
+ explicit BackendMetricAllocator(Arena* arena) : arena_(arena) {}
2576
+
2577
+ BackendMetricData* AllocateBackendMetricData() override {
2578
+ return arena_->New<BackendMetricData>();
2579
+ }
2580
+
2581
+ char* AllocateString(size_t size) override {
2582
+ return static_cast<char*>(arena_->Alloc(size));
2583
+ }
2584
+
2585
+ private:
2586
+ Arena* arena_;
2587
+ };
2588
+
2519
2589
  LoadBalancedCall* lb_call_;
2520
2590
  };
2521
2591
 
@@ -2541,7 +2611,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
2541
2611
  ConfigSelector::CallDispatchController* call_dispatch_controller,
2542
2612
  bool is_transparent_retry)
2543
2613
  : InternallyRefCounted(
2544
- GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
2614
+ GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
2545
2615
  ? "LoadBalancedCall"
2546
2616
  : nullptr),
2547
2617
  chand_(chand),
@@ -2555,15 +2625,17 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
2555
2625
  on_call_destruction_complete_(on_call_destruction_complete),
2556
2626
  call_dispatch_controller_(call_dispatch_controller),
2557
2627
  call_attempt_tracer_(
2558
- GetCallAttemptTracer(args.context, is_transparent_retry)) {}
2628
+ GetCallAttemptTracer(args.context, is_transparent_retry)) {
2629
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2630
+ gpr_log(GPR_INFO, "chand=%p lb_call=%p: created", chand_, this);
2631
+ }
2632
+ }
2559
2633
 
2560
2634
  ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
2561
- grpc_slice_unref_internal(path_);
2562
2635
  GRPC_ERROR_UNREF(cancel_error_);
2563
2636
  GRPC_ERROR_UNREF(failure_error_);
2564
2637
  if (backend_metric_data_ != nullptr) {
2565
- backend_metric_data_->LoadBalancingPolicy::BackendMetricAccessor::
2566
- BackendMetricData::~BackendMetricData();
2638
+ backend_metric_data_->BackendMetricData::~BackendMetricData();
2567
2639
  }
2568
2640
  // Make sure there are no remaining pending batches.
2569
2641
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
@@ -2576,6 +2648,12 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
2576
2648
  }
2577
2649
 
2578
2650
  void ClientChannel::LoadBalancedCall::Orphan() {
2651
+ // If the recv_trailing_metadata op was never started, then notify
2652
+ // about call completion here, as best we can. We assume status
2653
+ // CANCELLED in this case.
2654
+ if (recv_trailing_metadata_ == nullptr) {
2655
+ RecordCallCompletion(absl::CancelledError("call cancelled"));
2656
+ }
2579
2657
  // Compute latency and report it to the tracer.
2580
2658
  if (call_attempt_tracer_ != nullptr) {
2581
2659
  gpr_timespec latency =
@@ -2602,7 +2680,7 @@ size_t ClientChannel::LoadBalancedCall::GetBatchIndex(
2602
2680
  void ClientChannel::LoadBalancedCall::PendingBatchesAdd(
2603
2681
  grpc_transport_stream_op_batch* batch) {
2604
2682
  const size_t idx = GetBatchIndex(batch);
2605
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2683
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2606
2684
  gpr_log(GPR_INFO,
2607
2685
  "chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
2608
2686
  chand_, this, idx);
@@ -2626,10 +2704,10 @@ void ClientChannel::LoadBalancedCall::FailPendingBatchInCallCombiner(
2626
2704
  void ClientChannel::LoadBalancedCall::PendingBatchesFail(
2627
2705
  grpc_error_handle error,
2628
2706
  YieldCallCombinerPredicate yield_call_combiner_predicate) {
2629
- GPR_ASSERT(error != GRPC_ERROR_NONE);
2707
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
2630
2708
  GRPC_ERROR_UNREF(failure_error_);
2631
2709
  failure_error_ = error;
2632
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2710
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2633
2711
  size_t num_batches = 0;
2634
2712
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2635
2713
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2671,7 +2749,7 @@ void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner(
2671
2749
 
2672
2750
  // This is called via the call combiner, so access to calld is synchronized.
2673
2751
  void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
2674
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2752
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2675
2753
  size_t num_batches = 0;
2676
2754
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2677
2755
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2700,6 +2778,14 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
2700
2778
 
2701
2779
  void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2702
2780
  grpc_transport_stream_op_batch* batch) {
2781
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace) ||
2782
+ GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
2783
+ gpr_log(GPR_INFO,
2784
+ "chand=%p lb_call=%p: batch started from above: %s, "
2785
+ "call_attempt_tracer_=%p",
2786
+ chand_, this, grpc_transport_stream_op_batch_string(batch).c_str(),
2787
+ call_attempt_tracer_);
2788
+ }
2703
2789
  // Handle call tracing.
2704
2790
  if (call_attempt_tracer_ != nullptr) {
2705
2791
  // Record send ops in tracer.
@@ -2763,7 +2849,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2763
2849
  // the channel's data plane mutex, which is more efficient (especially for
2764
2850
  // streaming calls).
2765
2851
  if (subchannel_call_ != nullptr) {
2766
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2852
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2767
2853
  gpr_log(GPR_INFO,
2768
2854
  "chand=%p lb_call=%p: starting batch on subchannel_call=%p",
2769
2855
  chand_, this, subchannel_call_.get());
@@ -2774,8 +2860,8 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2774
2860
  // We do not yet have a subchannel call.
2775
2861
  //
2776
2862
  // If we've previously been cancelled, immediately fail any new batches.
2777
- if (GPR_UNLIKELY(cancel_error_ != GRPC_ERROR_NONE)) {
2778
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2863
+ if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(cancel_error_))) {
2864
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2779
2865
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
2780
2866
  chand_, this, grpc_error_std_string(cancel_error_).c_str());
2781
2867
  }
@@ -2793,7 +2879,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2793
2879
  // error to the caller when the first batch does get passed down.
2794
2880
  GRPC_ERROR_UNREF(cancel_error_);
2795
2881
  cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
2796
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2882
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2797
2883
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
2798
2884
  chand_, this, grpc_error_std_string(cancel_error_).c_str());
2799
2885
  }
@@ -2809,7 +2895,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2809
2895
  // For batches containing a send_initial_metadata op, acquire the
2810
2896
  // channel's data plane mutex to pick a subchannel.
2811
2897
  if (GPR_LIKELY(batch->send_initial_metadata)) {
2812
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2898
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2813
2899
  gpr_log(GPR_INFO,
2814
2900
  "chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
2815
2901
  chand_, this);
@@ -2817,7 +2903,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2817
2903
  PickSubchannel(this, GRPC_ERROR_NONE);
2818
2904
  } else {
2819
2905
  // For all other batches, release the call combiner.
2820
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2906
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2821
2907
  gpr_log(GPR_INFO,
2822
2908
  "chand=%p lb_call=%p: saved batch, yielding call combiner",
2823
2909
  chand_, this);
@@ -2830,6 +2916,12 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2830
2916
  void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
2831
2917
  void* arg, grpc_error_handle error) {
2832
2918
  auto* self = static_cast<LoadBalancedCall*>(arg);
2919
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2920
+ gpr_log(GPR_INFO,
2921
+ "chand=%p lb_call=%p: got on_complete for send_initial_metadata: "
2922
+ "error=%s",
2923
+ self->chand_, self, grpc_error_std_string(error).c_str());
2924
+ }
2833
2925
  self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
2834
2926
  self->peer_string_);
2835
2927
  Closure::Run(DEBUG_LOCATION,
@@ -2840,7 +2932,12 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
2840
2932
  void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
2841
2933
  void* arg, grpc_error_handle error) {
2842
2934
  auto* self = static_cast<LoadBalancedCall*>(arg);
2843
- if (error == GRPC_ERROR_NONE) {
2935
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2936
+ gpr_log(GPR_INFO,
2937
+ "chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
2938
+ self->chand_, self, grpc_error_std_string(error).c_str());
2939
+ }
2940
+ if (GRPC_ERROR_IS_NONE(error)) {
2844
2941
  // recv_initial_metadata_flags is not populated for clients
2845
2942
  self->call_attempt_tracer_->RecordReceivedInitialMetadata(
2846
2943
  self->recv_initial_metadata_, 0 /* recv_initial_metadata_flags */);
@@ -2852,7 +2949,11 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
2852
2949
  void ClientChannel::LoadBalancedCall::RecvMessageReady(
2853
2950
  void* arg, grpc_error_handle error) {
2854
2951
  auto* self = static_cast<LoadBalancedCall*>(arg);
2855
- if (*self->recv_message_ != nullptr) {
2952
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2953
+ gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
2954
+ self->chand_, self, grpc_error_std_string(error).c_str());
2955
+ }
2956
+ if (self->recv_message_->has_value()) {
2856
2957
  self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
2857
2958
  }
2858
2959
  Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_,
@@ -2862,12 +2963,21 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
2862
2963
  void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2863
2964
  void* arg, grpc_error_handle error) {
2864
2965
  auto* self = static_cast<LoadBalancedCall*>(arg);
2966
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2967
+ gpr_log(GPR_INFO,
2968
+ "chand=%p lb_call=%p: got recv_trailing_metadata_ready: error=%s "
2969
+ "call_attempt_tracer_=%p lb_subchannel_call_tracker_=%p "
2970
+ "failure_error_=%s",
2971
+ self->chand_, self, grpc_error_std_string(error).c_str(),
2972
+ self->call_attempt_tracer_, self->lb_subchannel_call_tracker_.get(),
2973
+ grpc_error_std_string(self->failure_error_).c_str());
2974
+ }
2865
2975
  // Check if we have a tracer or an LB callback to invoke.
2866
2976
  if (self->call_attempt_tracer_ != nullptr ||
2867
2977
  self->lb_subchannel_call_tracker_ != nullptr) {
2868
2978
  // Get the call's status.
2869
2979
  absl::Status status;
2870
- if (error != GRPC_ERROR_NONE) {
2980
+ if (!GRPC_ERROR_IS_NONE(error)) {
2871
2981
  // Get status from error.
2872
2982
  grpc_status_code code;
2873
2983
  std::string message;
@@ -2877,10 +2987,8 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2877
2987
  } else {
2878
2988
  // Get status from headers.
2879
2989
  const auto& md = *self->recv_trailing_metadata_;
2880
- const auto& fields = md.legacy_index()->named;
2881
- GPR_ASSERT(fields.grpc_status != nullptr);
2882
2990
  grpc_status_code code =
2883
- grpc_get_status_code_from_metadata(fields.grpc_status->md);
2991
+ md.get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
2884
2992
  if (code != GRPC_STATUS_OK) {
2885
2993
  absl::string_view message;
2886
2994
  if (const auto* grpc_message = md.get_pointer(GrpcMessageMetadata())) {
@@ -2889,25 +2997,10 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2889
2997
  status = absl::Status(static_cast<absl::StatusCode>(code), message);
2890
2998
  }
2891
2999
  }
2892
- // If we have a tracer, notify it.
2893
- if (self->call_attempt_tracer_ != nullptr) {
2894
- self->call_attempt_tracer_->RecordReceivedTrailingMetadata(
2895
- status, self->recv_trailing_metadata_,
2896
- *self->transport_stream_stats_);
2897
- }
2898
- // If the LB policy requested a callback for trailing metadata, invoke
2899
- // the callback.
2900
- if (self->lb_subchannel_call_tracker_ != nullptr) {
2901
- Metadata trailing_metadata(self, self->recv_trailing_metadata_);
2902
- BackendMetricAccessor backend_metric_accessor(self);
2903
- LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
2904
- status, &trailing_metadata, &backend_metric_accessor};
2905
- self->lb_subchannel_call_tracker_->Finish(args);
2906
- self->lb_subchannel_call_tracker_.reset();
2907
- }
3000
+ self->RecordCallCompletion(status);
2908
3001
  }
2909
3002
  // Chain to original callback.
2910
- if (self->failure_error_ != GRPC_ERROR_NONE) {
3003
+ if (!GRPC_ERROR_IS_NONE(self->failure_error_)) {
2911
3004
  error = self->failure_error_;
2912
3005
  self->failure_error_ = GRPC_ERROR_NONE;
2913
3006
  } else {
@@ -2917,16 +3010,35 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2917
3010
  error);
2918
3011
  }
2919
3012
 
3013
+ void ClientChannel::LoadBalancedCall::RecordCallCompletion(
3014
+ absl::Status status) {
3015
+ // If we have a tracer, notify it.
3016
+ if (call_attempt_tracer_ != nullptr) {
3017
+ call_attempt_tracer_->RecordReceivedTrailingMetadata(
3018
+ status, recv_trailing_metadata_, transport_stream_stats_);
3019
+ }
3020
+ // If the LB policy requested a callback for trailing metadata, invoke
3021
+ // the callback.
3022
+ if (lb_subchannel_call_tracker_ != nullptr) {
3023
+ Metadata trailing_metadata(recv_trailing_metadata_);
3024
+ BackendMetricAccessor backend_metric_accessor(this);
3025
+ LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
3026
+ status, &trailing_metadata, &backend_metric_accessor};
3027
+ lb_subchannel_call_tracker_->Finish(args);
3028
+ lb_subchannel_call_tracker_.reset();
3029
+ }
3030
+ }
3031
+
2920
3032
  void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
2921
3033
  SubchannelCall::Args call_args = {
2922
- std::move(connected_subchannel_), pollent_, path_, /*start_time=*/0,
3034
+ std::move(connected_subchannel_), pollent_, path_.Ref(), /*start_time=*/0,
2923
3035
  deadline_, arena_,
2924
3036
  // TODO(roth): When we implement hedging support, we will probably
2925
3037
  // need to use a separate call context for each subchannel call.
2926
3038
  call_context_, call_combiner_};
2927
3039
  grpc_error_handle error = GRPC_ERROR_NONE;
2928
3040
  subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
2929
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3041
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2930
3042
  gpr_log(GPR_INFO,
2931
3043
  "chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
2932
3044
  this, subchannel_call_.get(), grpc_error_std_string(error).c_str());
@@ -2935,7 +3047,7 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
2935
3047
  subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_);
2936
3048
  on_call_destruction_complete_ = nullptr;
2937
3049
  }
2938
- if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) {
3050
+ if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(error))) {
2939
3051
  PendingBatchesFail(error, YieldCallCombiner);
2940
3052
  } else {
2941
3053
  PendingBatchesResume();
@@ -2965,14 +3077,14 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
2965
3077
  auto* chand = lb_call->chand_;
2966
3078
  {
2967
3079
  MutexLock lock(&chand->data_plane_mu_);
2968
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3080
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2969
3081
  gpr_log(GPR_INFO,
2970
3082
  "chand=%p lb_call=%p: cancelling queued pick: "
2971
3083
  "error=%s self=%p calld->pick_canceller=%p",
2972
3084
  chand, lb_call, grpc_error_std_string(error).c_str(), self,
2973
3085
  lb_call->lb_call_canceller_);
2974
3086
  }
2975
- if (lb_call->lb_call_canceller_ == self && error != GRPC_ERROR_NONE) {
3087
+ if (lb_call->lb_call_canceller_ == self && !GRPC_ERROR_IS_NONE(error)) {
2976
3088
  lb_call->call_dispatch_controller_->Commit();
2977
3089
  // Remove pick from list of queued picks.
2978
3090
  lb_call->MaybeRemoveCallFromLbQueuedCallsLocked();
@@ -2991,7 +3103,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
2991
3103
 
2992
3104
  void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
2993
3105
  if (!queued_pending_lb_pick_) return;
2994
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3106
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2995
3107
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
2996
3108
  chand_, this);
2997
3109
  }
@@ -3003,7 +3115,7 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
3003
3115
 
3004
3116
  void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
3005
3117
  if (queued_pending_lb_pick_) return;
3006
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3118
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3007
3119
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
3008
3120
  chand_, this);
3009
3121
  }
@@ -3023,8 +3135,8 @@ void ClientChannel::LoadBalancedCall::AsyncPickDone(grpc_error_handle error) {
3023
3135
  void ClientChannel::LoadBalancedCall::PickDone(void* arg,
3024
3136
  grpc_error_handle error) {
3025
3137
  auto* self = static_cast<LoadBalancedCall*>(arg);
3026
- if (error != GRPC_ERROR_NONE) {
3027
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3138
+ if (!GRPC_ERROR_IS_NONE(error)) {
3139
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3028
3140
  gpr_log(GPR_INFO,
3029
3141
  "chand=%p lb_call=%p: failed to pick subchannel: error=%s",
3030
3142
  self->chand_, self, grpc_error_std_string(error).c_str());
@@ -3063,10 +3175,10 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3063
3175
  send_initial_metadata.send_initial_metadata_flags;
3064
3176
  // Perform LB pick.
3065
3177
  LoadBalancingPolicy::PickArgs pick_args;
3066
- pick_args.path = StringViewFromSlice(path_);
3178
+ pick_args.path = path_.as_string_view();
3067
3179
  LbCallState lb_call_state(this);
3068
3180
  pick_args.call_state = &lb_call_state;
3069
- Metadata initial_metadata(this, initial_metadata_batch);
3181
+ Metadata initial_metadata(initial_metadata_batch);
3070
3182
  pick_args.initial_metadata = &initial_metadata;
3071
3183
  auto result = chand_->picker_->Pick(pick_args);
3072
3184
  return HandlePickResult<bool>(
@@ -3074,7 +3186,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3074
3186
  // CompletePick
3075
3187
  [this](LoadBalancingPolicy::PickResult::Complete* complete_pick)
3076
3188
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3077
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3189
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3078
3190
  gpr_log(GPR_INFO,
3079
3191
  "chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
3080
3192
  chand_, this, complete_pick->subchannel.get());
@@ -3090,7 +3202,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3090
3202
  // yet seen that change and given us a new picker), then just
3091
3203
  // queue the pick. We'll try again as soon as we get a new picker.
3092
3204
  if (connected_subchannel_ == nullptr) {
3093
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3205
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3094
3206
  gpr_log(GPR_INFO,
3095
3207
  "chand=%p lb_call=%p: subchannel returned by LB picker "
3096
3208
  "has no connected subchannel; queueing pick",
@@ -3110,7 +3222,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3110
3222
  // QueuePick
3111
3223
  [this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/)
3112
3224
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3113
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3225
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3114
3226
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
3115
3227
  this);
3116
3228
  }
@@ -3121,7 +3233,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3121
3233
  [this, send_initial_metadata_flags,
3122
3234
  &error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
3123
3235
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3124
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3236
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3125
3237
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
3126
3238
  chand_, this, fail_pick->status.ToString().c_str());
3127
3239
  }
@@ -3145,7 +3257,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3145
3257
  // DropPick
3146
3258
  [this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick)
3147
3259
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3148
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3260
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3149
3261
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
3150
3262
  chand_, this, drop_pick->status.ToString().c_str());
3151
3263
  }