grpc 1.42.0 → 1.46.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (1531) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +425 -234
  3. data/include/grpc/event_engine/event_engine.h +37 -13
  4. data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
  5. data/include/grpc/event_engine/memory_allocator.h +27 -11
  6. data/include/grpc/event_engine/memory_request.h +57 -0
  7. data/include/grpc/grpc.h +40 -14
  8. data/include/grpc/grpc_posix.h +20 -19
  9. data/include/grpc/grpc_security.h +312 -195
  10. data/include/grpc/grpc_security_constants.h +1 -14
  11. data/include/grpc/impl/codegen/compression_types.h +0 -2
  12. data/include/grpc/impl/codegen/grpc_types.h +24 -21
  13. data/include/grpc/impl/codegen/port_platform.h +7 -3
  14. data/include/grpc/impl/codegen/slice.h +4 -1
  15. data/include/grpc/slice.h +0 -11
  16. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
  17. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
  18. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
  19. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +5 -5
  20. data/src/core/ext/filters/client_channel/backend_metric.cc +9 -10
  21. data/src/core/ext/filters/client_channel/backend_metric.h +4 -3
  22. data/src/core/ext/filters/client_channel/backup_poller.cc +12 -8
  23. data/src/core/ext/filters/client_channel/channel_connectivity.cc +5 -5
  24. data/src/core/ext/filters/client_channel/client_channel.cc +367 -243
  25. data/src/core/ext/filters/client_channel/client_channel.h +45 -41
  26. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +6 -13
  27. data/src/core/ext/filters/client_channel/config_selector.h +4 -4
  28. data/src/core/ext/filters/client_channel/connector.h +1 -1
  29. data/src/core/ext/filters/client_channel/dynamic_filters.cc +5 -6
  30. data/src/core/ext/filters/client_channel/dynamic_filters.h +2 -2
  31. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -22
  32. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -15
  33. data/src/core/ext/filters/client_channel/health/health_check_client.cc +126 -582
  34. data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
  35. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +22 -27
  36. data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
  37. data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
  39. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
  40. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +4 -7
  41. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +100 -81
  42. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
  43. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
  44. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
  45. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
  46. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +15 -15
  47. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
  48. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +50 -32
  49. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +199 -150
  50. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +123 -76
  51. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +162 -122
  52. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
  53. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
  54. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +98 -63
  55. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +104 -145
  56. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
  57. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +147 -70
  58. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +19 -10
  59. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +323 -470
  60. data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
  61. data/src/core/ext/filters/client_channel/lb_policy.h +94 -62
  62. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +10 -16
  63. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +287 -313
  64. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
  65. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
  66. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +31 -50
  67. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +136 -226
  68. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
  69. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  70. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +92 -255
  71. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -17
  72. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
  73. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +84 -68
  74. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
  75. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
  76. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +40 -39
  77. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +476 -412
  78. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +8 -11
  79. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +13 -7
  80. data/src/core/ext/filters/client_channel/retry_filter.cc +253 -171
  81. data/src/core/ext/filters/client_channel/retry_service_config.cc +16 -18
  82. data/src/core/ext/filters/client_channel/retry_service_config.h +18 -12
  83. data/src/core/ext/filters/client_channel/retry_throttle.cc +9 -23
  84. data/src/core/ext/filters/client_channel/retry_throttle.h +11 -5
  85. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +8 -7
  86. data/src/core/ext/filters/client_channel/subchannel.cc +52 -59
  87. data/src/core/ext/filters/client_channel/subchannel.h +7 -7
  88. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
  89. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
  90. data/src/core/ext/filters/deadline/deadline_filter.cc +15 -14
  91. data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
  92. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +155 -400
  93. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
  94. data/src/core/ext/filters/fault_injection/service_config_parser.cc +11 -13
  95. data/src/core/ext/filters/fault_injection/service_config_parser.h +10 -4
  96. data/src/core/ext/filters/http/client/http_client_filter.cc +81 -544
  97. data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
  98. data/src/core/ext/filters/http/client_authority_filter.cc +31 -95
  99. data/src/core/ext/filters/http/client_authority_filter.h +24 -5
  100. data/src/core/ext/filters/http/http_filters_plugin.cc +22 -22
  101. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +43 -140
  102. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +15 -27
  103. data/src/core/ext/filters/http/server/http_server_filter.cc +36 -251
  104. data/src/core/ext/filters/message_size/message_size_filter.cc +27 -35
  105. data/src/core/ext/filters/message_size/message_size_filter.h +10 -3
  106. data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
  107. data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
  108. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
  109. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
  110. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
  111. data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
  112. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
  113. data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → filters/server_config_selector/server_config_selector_filter.h} +9 -7
  114. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +239 -20
  115. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
  116. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +286 -108
  117. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +327 -303
  118. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +9 -4
  119. data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
  120. data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
  121. data/src/core/ext/transport/chttp2/transport/flow_control.cc +10 -10
  122. data/src/core/ext/transport/chttp2/transport/flow_control.h +5 -5
  123. data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
  124. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -4
  125. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -0
  126. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
  127. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +361 -240
  128. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +87 -145
  129. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
  130. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
  131. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +74 -149
  132. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
  133. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
  134. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
  135. data/src/core/ext/transport/chttp2/transport/internal.h +16 -43
  136. data/src/core/ext/transport/chttp2/transport/parsing.cc +11 -9
  137. data/src/core/ext/transport/chttp2/transport/writing.cc +81 -136
  138. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  139. data/src/core/ext/transport/inproc/inproc_transport.cc +42 -81
  140. data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
  141. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  142. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
  143. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  144. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
  145. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +247 -209
  146. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1249 -684
  147. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  148. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
  149. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  150. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
  151. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  152. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
  153. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  154. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
  155. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  156. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
  157. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  158. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
  159. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  160. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
  161. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +43 -0
  162. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +51 -0
  163. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +30 -4
  164. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +50 -17
  165. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +143 -116
  166. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +670 -385
  167. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +239 -199
  168. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1270 -663
  169. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +49 -28
  170. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +201 -90
  171. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +320 -271
  172. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1671 -826
  173. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +20 -7
  174. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +43 -23
  175. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +60 -27
  176. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +273 -98
  177. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  178. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
  179. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +74 -53
  180. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +355 -189
  181. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +21 -7
  182. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +46 -24
  183. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +213 -176
  184. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1069 -581
  185. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +105 -45
  186. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +526 -166
  187. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +19 -6
  188. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +39 -23
  189. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +16 -22
  190. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +42 -100
  191. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  192. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
  193. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +145 -117
  194. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +769 -409
  195. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +141 -92
  196. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +737 -348
  197. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +21 -8
  198. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +58 -30
  199. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +203 -125
  200. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +993 -396
  201. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +17 -4
  202. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +29 -16
  203. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +27 -13
  204. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +84 -48
  205. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +22 -9
  206. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +76 -33
  207. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +26 -13
  208. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +94 -48
  209. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +21 -8
  210. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +47 -25
  211. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +51 -35
  212. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +195 -108
  213. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +74 -55
  214. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +350 -189
  215. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +70 -53
  216. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +358 -187
  217. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +19 -6
  218. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +35 -20
  219. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +98 -71
  220. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +504 -258
  221. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +104 -79
  222. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +561 -300
  223. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +31 -16
  224. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +105 -48
  225. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +24 -10
  226. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +66 -39
  227. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  228. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
  229. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +82 -61
  230. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +414 -234
  231. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +86 -65
  232. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +407 -236
  233. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +127 -103
  234. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +563 -293
  235. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +53 -34
  236. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +272 -141
  237. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +663 -572
  238. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3643 -1900
  239. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +38 -19
  240. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +149 -71
  241. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
  242. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
  243. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  244. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
  245. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  246. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
  247. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +27 -13
  248. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +78 -45
  249. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  250. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
  251. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  252. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
  253. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  254. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
  255. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  256. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
  257. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  258. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  259. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  260. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
  261. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  262. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
  263. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +17 -4
  264. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +35 -23
  265. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +45 -28
  266. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +188 -111
  267. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +51 -36
  268. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +261 -131
  269. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
  270. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
  271. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +26 -13
  272. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +87 -42
  273. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +283 -223
  274. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1554 -733
  275. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +9 -0
  276. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +6 -3
  277. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +105 -60
  278. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +555 -234
  279. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +41 -26
  280. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +157 -86
  281. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +126 -83
  282. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +623 -262
  283. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  284. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
  285. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +15 -2
  286. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +22 -14
  287. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +91 -72
  288. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +475 -255
  289. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +31 -17
  290. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +108 -61
  291. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +73 -56
  292. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +348 -185
  293. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  294. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
  295. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +34 -18
  296. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +124 -80
  297. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  298. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
  299. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +28 -14
  300. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +100 -56
  301. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +21 -8
  302. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +51 -30
  303. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +20 -7
  304. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +49 -26
  305. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +19 -6
  306. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +39 -23
  307. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +35 -20
  308. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +118 -68
  309. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +31 -17
  310. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +124 -64
  311. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +26 -12
  312. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +86 -52
  313. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +37 -22
  314. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +151 -82
  315. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +50 -31
  316. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +230 -144
  317. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +53 -36
  318. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +236 -130
  319. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  320. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
  321. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +9 -0
  322. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +3 -0
  323. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  324. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
  325. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +23 -9
  326. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +63 -35
  327. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +30 -15
  328. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +99 -51
  329. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  330. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  331. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +19 -6
  332. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +41 -18
  333. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  334. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
  335. data/src/core/ext/upb-generated/google/api/annotations.upb.c +22 -0
  336. data/src/core/ext/upb-generated/google/api/annotations.upb.h +23 -0
  337. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +154 -125
  338. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +721 -381
  339. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +158 -126
  340. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +796 -401
  341. data/src/core/ext/upb-generated/google/api/http.upb.c +43 -28
  342. data/src/core/ext/upb-generated/google/api/http.upb.h +217 -114
  343. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  344. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
  345. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +18 -5
  346. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +39 -21
  347. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +373 -282
  348. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2077 -1029
  349. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +18 -5
  350. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +37 -19
  351. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +15 -2
  352. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +22 -14
  353. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +47 -31
  354. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +178 -92
  355. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +18 -5
  356. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +37 -19
  357. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +57 -36
  358. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +241 -148
  359. data/src/core/ext/upb-generated/google/rpc/status.upb.c +21 -8
  360. data/src/core/ext/upb-generated/google/rpc/status.upb.h +53 -29
  361. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  362. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
  363. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +32 -18
  364. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +104 -47
  365. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +135 -107
  366. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +686 -358
  367. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +27 -12
  368. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +77 -40
  369. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +22 -8
  370. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +57 -34
  371. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +81 -61
  372. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +399 -237
  373. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +34 -19
  374. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +116 -62
  375. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  376. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  377. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +75 -13
  378. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +194 -56
  379. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -5
  380. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +55 -17
  381. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +21 -0
  382. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +16 -0
  383. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +31 -5
  384. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +57 -19
  385. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +30 -4
  386. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +50 -17
  387. data/src/core/ext/upb-generated/validate/validate.upb.c +406 -310
  388. data/src/core/ext/upb-generated/validate/validate.upb.h +2730 -1164
  389. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  390. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
  391. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  392. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
  393. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  394. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  395. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +64 -17
  396. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +175 -67
  397. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  398. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
  399. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +17 -4
  400. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +31 -18
  401. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +30 -16
  402. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +99 -54
  403. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +25 -11
  404. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +54 -29
  405. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  406. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
  407. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +22 -9
  408. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +56 -29
  409. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +33 -19
  410. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +131 -69
  411. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +22 -9
  412. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +59 -29
  413. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +36 -21
  414. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +102 -45
  415. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  416. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
  417. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  418. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
  419. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  420. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
  421. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +20 -7
  422. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +43 -23
  423. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  424. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  425. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  426. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  427. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +16 -61
  428. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +67 -67
  429. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  430. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  431. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  432. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  433. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  434. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  435. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  436. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  437. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  438. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  439. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  440. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  441. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  442. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  443. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +10 -8
  444. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
  445. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +10 -13
  446. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
  447. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +22 -52
  448. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
  449. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +250 -281
  450. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
  451. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +60 -62
  452. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
  453. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +387 -426
  454. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +76 -76
  455. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +16 -18
  456. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
  457. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +25 -23
  458. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
  459. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  460. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  461. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +17 -32
  462. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
  463. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +17 -19
  464. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
  465. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +87 -133
  466. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +73 -73
  467. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +140 -116
  468. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
  469. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +16 -19
  470. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
  471. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +24 -43
  472. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
  473. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  474. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  475. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +23 -51
  476. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
  477. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +179 -187
  478. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
  479. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +16 -19
  480. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
  481. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +252 -254
  482. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
  483. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +14 -16
  484. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
  485. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +16 -20
  486. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
  487. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +16 -18
  488. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
  489. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +20 -22
  490. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
  491. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +15 -18
  492. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
  493. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +20 -28
  494. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
  495. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +21 -33
  496. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +19 -19
  497. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +20 -30
  498. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
  499. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +16 -18
  500. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
  501. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +54 -62
  502. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +19 -19
  503. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +155 -166
  504. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
  505. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +21 -23
  506. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
  507. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +17 -21
  508. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
  509. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  510. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  511. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +19 -35
  512. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
  513. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +19 -37
  514. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +28 -28
  515. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
  516. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  517. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +38 -38
  518. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
  519. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +828 -914
  520. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +160 -160
  521. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +54 -48
  522. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
  523. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  524. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  525. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  526. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  527. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  528. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  529. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +17 -21
  530. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
  531. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  532. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  533. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  534. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  535. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  536. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  537. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  538. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  539. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  540. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  541. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  542. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  543. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  544. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  545. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +17 -18
  546. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
  547. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +19 -29
  548. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
  549. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +20 -26
  550. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
  551. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
  552. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  553. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +19 -20
  554. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
  555. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +199 -215
  556. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +63 -58
  557. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +17 -13
  558. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
  559. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +171 -157
  560. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +24 -19
  561. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +21 -27
  562. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
  563. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +219 -216
  564. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
  565. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  566. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  567. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +16 -18
  568. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
  569. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +19 -33
  570. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +22 -22
  571. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +18 -22
  572. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
  573. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +22 -32
  574. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
  575. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  576. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  577. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +15 -23
  578. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
  579. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  580. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  581. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +17 -21
  582. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
  583. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +17 -19
  584. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
  585. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +17 -19
  586. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
  587. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +17 -19
  588. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
  589. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +17 -23
  590. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
  591. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +17 -21
  592. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
  593. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +16 -21
  594. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
  595. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +18 -24
  596. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
  597. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +15 -29
  598. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
  599. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +16 -26
  600. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
  601. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  602. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  603. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +12 -10
  604. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
  605. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  606. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  607. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +14 -19
  608. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
  609. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +13 -19
  610. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
  611. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  612. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  613. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +13 -16
  614. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
  615. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  616. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  617. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +7 -7
  618. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
  619. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  620. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  621. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  622. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  623. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +5 -14
  624. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
  625. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  626. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  627. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +5 -10
  628. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
  629. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +5 -62
  630. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
  631. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +5 -10
  632. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
  633. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +5 -10
  634. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
  635. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +5 -16
  636. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
  637. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +5 -10
  638. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
  639. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +5 -26
  640. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
  641. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +6 -11
  642. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
  643. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  644. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  645. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  646. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  647. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +6 -15
  648. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
  649. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +7 -12
  650. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
  651. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +6 -6
  652. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
  653. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +6 -11
  654. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
  655. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +6 -11
  656. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
  657. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +8 -57
  658. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
  659. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  660. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  661. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  662. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  663. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  664. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  665. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +6 -17
  666. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +13 -13
  667. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  668. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  669. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +7 -12
  670. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
  671. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +9 -16
  672. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
  673. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +6 -13
  674. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
  675. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  676. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  677. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +8 -13
  678. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
  679. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +8 -15
  680. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
  681. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +8 -13
  682. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
  683. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  684. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  685. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  686. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  687. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  688. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  689. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +7 -12
  690. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +4 -4
  691. data/src/core/ext/xds/certificate_provider_registry.cc +1 -1
  692. data/src/core/ext/xds/certificate_provider_store.cc +8 -0
  693. data/src/core/ext/xds/certificate_provider_store.h +10 -1
  694. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -4
  695. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  696. data/src/core/ext/xds/upb_utils.h +67 -0
  697. data/src/core/ext/xds/xds_api.cc +182 -3417
  698. data/src/core/ext/xds/xds_api.h +60 -613
  699. data/src/core/ext/xds/xds_bootstrap.cc +222 -123
  700. data/src/core/ext/xds/xds_bootstrap.h +33 -15
  701. data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
  702. data/src/core/ext/xds/xds_certificate_provider.h +10 -2
  703. data/src/core/ext/xds/xds_channel_stack_modifier.cc +16 -20
  704. data/src/core/ext/xds/xds_channel_stack_modifier.h +4 -3
  705. data/src/core/ext/xds/xds_client.cc +805 -1084
  706. data/src/core/ext/xds/xds_client.h +118 -150
  707. data/src/core/ext/xds/xds_client_stats.cc +15 -15
  708. data/src/core/ext/xds/xds_client_stats.h +5 -4
  709. data/src/core/ext/xds/xds_cluster.cc +453 -0
  710. data/src/core/ext/xds/xds_cluster.h +108 -0
  711. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  712. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  713. data/src/core/ext/xds/xds_common_types.cc +388 -0
  714. data/src/core/ext/xds/xds_common_types.h +95 -0
  715. data/src/core/ext/xds/xds_endpoint.cc +371 -0
  716. data/src/core/ext/xds/xds_endpoint.h +135 -0
  717. data/src/core/ext/xds/xds_http_fault_filter.cc +7 -7
  718. data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
  719. data/src/core/ext/xds/xds_http_filters.cc +11 -5
  720. data/src/core/ext/xds/xds_http_filters.h +4 -4
  721. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  722. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  723. data/src/core/ext/xds/xds_listener.cc +1039 -0
  724. data/src/core/ext/xds/xds_listener.h +220 -0
  725. data/src/core/ext/xds/xds_resource_type.cc +33 -0
  726. data/src/core/ext/xds/xds_resource_type.h +98 -0
  727. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  728. data/src/core/ext/xds/xds_route_config.cc +1122 -0
  729. data/src/core/ext/xds/xds_route_config.h +218 -0
  730. data/src/core/ext/xds/xds_routing.cc +250 -0
  731. data/src/core/ext/xds/xds_routing.h +101 -0
  732. data/src/core/ext/xds/xds_server_config_fetcher.cc +1056 -286
  733. data/src/core/lib/address_utils/parse_address.cc +20 -0
  734. data/src/core/lib/address_utils/parse_address.h +5 -0
  735. data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
  736. data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
  737. data/src/core/lib/avl/avl.h +452 -88
  738. data/src/core/lib/backoff/backoff.cc +9 -38
  739. data/src/core/lib/backoff/backoff.h +11 -11
  740. data/src/core/lib/channel/call_finalization.h +86 -0
  741. data/src/core/lib/channel/call_tracer.h +4 -1
  742. data/src/core/lib/channel/channel_args.cc +166 -28
  743. data/src/core/lib/channel/channel_args.h +214 -10
  744. data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
  745. data/src/core/lib/channel/channel_args_preconditioning.h +61 -0
  746. data/src/core/lib/channel/channel_stack.cc +10 -3
  747. data/src/core/lib/channel/channel_stack.h +39 -6
  748. data/src/core/lib/channel/channel_stack_builder.cc +23 -272
  749. data/src/core/lib/channel/channel_stack_builder.h +118 -149
  750. data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
  751. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  752. data/src/core/lib/channel/channel_trace.cc +3 -6
  753. data/src/core/lib/channel/channelz.cc +2 -1
  754. data/src/core/lib/channel/connected_channel.cc +9 -4
  755. data/src/core/lib/channel/connected_channel.h +2 -1
  756. data/src/core/lib/channel/context.h +11 -0
  757. data/src/core/lib/channel/handshaker.cc +1 -1
  758. data/src/core/lib/channel/handshaker.h +1 -1
  759. data/src/core/lib/channel/promise_based_filter.cc +1002 -0
  760. data/src/core/lib/channel/promise_based_filter.h +437 -0
  761. data/src/core/lib/compression/compression.cc +20 -112
  762. data/src/core/lib/compression/compression_internal.cc +137 -203
  763. data/src/core/lib/compression/compression_internal.h +64 -69
  764. data/src/core/lib/compression/message_compress.cc +11 -11
  765. data/src/core/lib/compression/message_compress.h +2 -2
  766. data/src/core/lib/config/core_configuration.cc +11 -3
  767. data/src/core/lib/config/core_configuration.h +50 -0
  768. data/src/core/lib/debug/stats_data.cc +2 -6
  769. data/src/core/lib/debug/stats_data.h +18 -21
  770. data/src/core/lib/debug/trace.h +2 -2
  771. data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
  772. data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
  773. data/src/core/lib/event_engine/default_event_engine_factory.cc +27 -0
  774. data/src/core/lib/event_engine/event_engine.cc +21 -19
  775. data/src/core/lib/event_engine/event_engine_factory.h +36 -0
  776. data/src/core/lib/event_engine/memory_allocator.cc +66 -0
  777. data/src/core/lib/event_engine/resolved_address.cc +39 -0
  778. data/src/core/lib/gpr/sync_posix.cc +1 -0
  779. data/src/core/lib/gpr/time.cc +2 -1
  780. data/src/core/lib/gpr/tls.h +7 -0
  781. data/src/core/lib/gpr/useful.h +18 -0
  782. data/src/core/lib/gprpp/bitset.h +19 -0
  783. data/src/core/lib/gprpp/capture.h +76 -0
  784. data/src/core/lib/gprpp/chunked_vector.h +45 -3
  785. data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
  786. data/src/core/lib/gprpp/debug_location.h +2 -0
  787. data/src/core/lib/gprpp/global_config_env.cc +7 -7
  788. data/src/core/lib/gprpp/global_config_env.h +2 -2
  789. data/src/core/lib/gprpp/manual_constructor.h +2 -3
  790. data/src/core/lib/gprpp/orphanable.h +1 -1
  791. data/src/core/lib/gprpp/ref_counted.h +3 -1
  792. data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
  793. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  794. data/src/core/lib/gprpp/status_helper.cc +48 -40
  795. data/src/core/lib/gprpp/status_helper.h +6 -19
  796. data/src/core/lib/gprpp/table.h +24 -1
  797. data/src/core/lib/gprpp/time.cc +198 -0
  798. data/src/core/lib/gprpp/time.h +292 -0
  799. data/src/core/lib/http/format_request.cc +28 -25
  800. data/src/core/lib/http/format_request.h +7 -6
  801. data/src/core/lib/http/httpcli.cc +310 -238
  802. data/src/core/lib/http/httpcli.h +183 -88
  803. data/src/core/lib/http/httpcli_security_connector.cc +64 -75
  804. data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
  805. data/src/core/lib/http/parser.cc +80 -9
  806. data/src/core/lib/http/parser.h +15 -2
  807. data/src/core/lib/iomgr/buffer_list.cc +9 -9
  808. data/src/core/lib/iomgr/buffer_list.h +18 -18
  809. data/src/core/lib/iomgr/call_combiner.cc +17 -7
  810. data/src/core/lib/iomgr/closure.h +29 -9
  811. data/src/core/lib/iomgr/combiner.cc +25 -3
  812. data/src/core/lib/iomgr/endpoint.h +0 -1
  813. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -24
  814. data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
  815. data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
  816. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
  817. data/src/core/lib/iomgr/error.cc +13 -10
  818. data/src/core/lib/iomgr/error.h +0 -2
  819. data/src/core/lib/iomgr/ev_apple.cc +6 -5
  820. data/src/core/lib/iomgr/ev_epoll1_linux.cc +8 -7
  821. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -7
  822. data/src/core/lib/iomgr/ev_posix.cc +9 -10
  823. data/src/core/lib/iomgr/ev_posix.h +1 -1
  824. data/src/core/lib/iomgr/event_engine/endpoint.cc +2 -3
  825. data/src/core/lib/iomgr/event_engine/iomgr.cc +8 -27
  826. data/src/core/lib/iomgr/event_engine/pollset.cc +2 -3
  827. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
  828. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
  829. data/src/core/lib/iomgr/event_engine/resolver.cc +68 -49
  830. data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
  831. data/src/core/lib/iomgr/event_engine/tcp.cc +11 -8
  832. data/src/core/lib/iomgr/event_engine/timer.cc +7 -7
  833. data/src/core/lib/iomgr/exec_ctx.cc +25 -97
  834. data/src/core/lib/iomgr/exec_ctx.h +18 -34
  835. data/src/core/lib/iomgr/executor.cc +22 -16
  836. data/src/core/lib/iomgr/executor.h +1 -1
  837. data/src/core/lib/iomgr/fork_posix.cc +2 -1
  838. data/src/core/lib/iomgr/iocp_windows.cc +9 -9
  839. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  840. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  841. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  842. data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
  843. data/src/core/lib/iomgr/polling_entity.h +6 -0
  844. data/src/core/lib/iomgr/pollset.cc +1 -1
  845. data/src/core/lib/iomgr/pollset.h +4 -4
  846. data/src/core/lib/iomgr/pollset_windows.cc +2 -2
  847. data/src/core/lib/iomgr/port.h +6 -11
  848. data/src/core/lib/iomgr/resolve_address.cc +5 -24
  849. data/src/core/lib/iomgr/resolve_address.h +47 -44
  850. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  851. data/src/core/lib/iomgr/resolve_address_posix.cc +83 -67
  852. data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
  853. data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
  854. data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
  855. data/src/core/lib/iomgr/resolved_address.h +39 -0
  856. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
  857. data/src/core/lib/iomgr/socket_utils_common_posix.cc +0 -17
  858. data/src/core/lib/iomgr/tcp_client.cc +3 -5
  859. data/src/core/lib/iomgr/tcp_client.h +4 -5
  860. data/src/core/lib/iomgr/tcp_client_cfstream.cc +2 -10
  861. data/src/core/lib/iomgr/tcp_client_posix.cc +10 -26
  862. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  863. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -11
  864. data/src/core/lib/iomgr/tcp_posix.cc +120 -66
  865. data/src/core/lib/iomgr/tcp_posix.h +1 -3
  866. data/src/core/lib/iomgr/tcp_server.cc +4 -6
  867. data/src/core/lib/iomgr/tcp_server.h +6 -8
  868. data/src/core/lib/iomgr/tcp_server_posix.cc +43 -38
  869. data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
  870. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
  871. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
  872. data/src/core/lib/iomgr/tcp_server_windows.cc +5 -12
  873. data/src/core/lib/iomgr/tcp_windows.cc +19 -17
  874. data/src/core/lib/iomgr/tcp_windows.h +1 -2
  875. data/src/core/lib/iomgr/timer.cc +2 -2
  876. data/src/core/lib/iomgr/timer.h +11 -6
  877. data/src/core/lib/iomgr/timer_generic.cc +96 -77
  878. data/src/core/lib/iomgr/timer_manager.cc +15 -14
  879. data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
  880. data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
  881. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
  882. data/src/core/lib/iomgr/work_serializer.cc +120 -44
  883. data/src/core/lib/iomgr/work_serializer.h +16 -4
  884. data/src/core/lib/json/json_reader.cc +83 -35
  885. data/src/core/lib/json/json_util.cc +5 -5
  886. data/src/core/lib/json/json_util.h +5 -5
  887. data/src/core/lib/matchers/matchers.cc +1 -1
  888. data/src/core/lib/promise/activity.cc +121 -0
  889. data/src/core/lib/promise/activity.h +540 -0
  890. data/src/core/lib/promise/arena_promise.h +188 -0
  891. data/src/core/lib/promise/call_push_pull.h +144 -0
  892. data/src/core/lib/promise/context.h +86 -0
  893. data/src/core/lib/promise/detail/basic_seq.h +496 -0
  894. data/src/core/lib/promise/detail/promise_factory.h +189 -0
  895. data/src/core/lib/promise/detail/promise_like.h +85 -0
  896. data/src/core/lib/promise/detail/status.h +50 -0
  897. data/src/core/lib/promise/detail/switch.h +1455 -0
  898. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
  899. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  900. data/src/core/lib/promise/latch.h +104 -0
  901. data/src/core/lib/promise/loop.h +134 -0
  902. data/src/core/lib/promise/map.h +88 -0
  903. data/src/core/lib/promise/poll.h +66 -0
  904. data/src/core/lib/promise/promise.h +95 -0
  905. data/src/core/lib/promise/race.h +84 -0
  906. data/src/core/lib/promise/seq.h +89 -0
  907. data/src/core/lib/promise/sleep.cc +74 -0
  908. data/src/core/lib/promise/sleep.h +66 -0
  909. data/src/core/lib/promise/try_seq.h +157 -0
  910. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
  911. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
  912. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +32 -31
  913. data/src/core/lib/resolver/resolver_registry.cc +156 -0
  914. data/src/core/lib/resolver/resolver_registry.h +113 -0
  915. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
  916. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
  917. data/src/core/lib/resource_quota/api.cc +83 -0
  918. data/src/core/lib/resource_quota/api.h +40 -0
  919. data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
  920. data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
  921. data/src/core/lib/resource_quota/memory_quota.cc +478 -0
  922. data/src/core/lib/resource_quota/memory_quota.h +457 -0
  923. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  924. data/src/core/lib/resource_quota/resource_quota.h +66 -0
  925. data/src/core/lib/resource_quota/thread_quota.cc +43 -0
  926. data/src/core/lib/resource_quota/thread_quota.h +57 -0
  927. data/src/core/lib/resource_quota/trace.cc +19 -0
  928. data/src/core/{ext/filters/max_age/max_age_filter.h → lib/resource_quota/trace.h} +6 -8
  929. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  930. data/src/core/lib/security/authorization/evaluate_args.cc +37 -38
  931. data/src/core/lib/security/authorization/evaluate_args.h +3 -2
  932. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  933. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  934. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +106 -0
  935. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
  936. data/src/core/lib/security/authorization/matchers.cc +227 -0
  937. data/src/core/lib/security/authorization/matchers.h +211 -0
  938. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  939. data/src/core/lib/security/authorization/rbac_policy.h +171 -0
  940. data/src/core/lib/security/context/security_context.cc +4 -2
  941. data/src/core/lib/security/context/security_context.h +9 -2
  942. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
  943. data/src/core/lib/security/credentials/alts/alts_credentials.h +10 -0
  944. data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
  945. data/src/core/lib/security/credentials/call_creds_util.h +42 -0
  946. data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
  947. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
  948. data/src/core/lib/security/credentials/composite/composite_credentials.cc +24 -83
  949. data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -10
  950. data/src/core/lib/security/credentials/credentials.cc +2 -3
  951. data/src/core/lib/security/credentials/credentials.h +74 -80
  952. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +48 -33
  953. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  954. data/src/core/lib/security/credentials/external/external_account_credentials.cc +52 -35
  955. data/src/core/lib/security/credentials/external/external_account_credentials.h +5 -9
  956. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -1
  957. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +33 -14
  958. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -0
  959. data/src/core/lib/security/credentials/fake/fake_credentials.cc +23 -27
  960. data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
  961. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +21 -16
  962. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
  963. data/src/core/lib/security/credentials/iam/iam_credentials.cc +21 -28
  964. data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
  965. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +25 -26
  966. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  967. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
  968. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +33 -45
  969. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -12
  970. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +54 -43
  971. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  972. data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
  973. data/src/core/lib/security/credentials/local/local_credentials.h +10 -0
  974. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +157 -174
  975. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +60 -33
  976. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +96 -152
  977. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
  978. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +7 -14
  979. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -3
  980. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
  981. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +56 -8
  982. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +209 -0
  983. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +145 -0
  984. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +33 -87
  985. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +73 -149
  986. data/src/core/lib/security/credentials/tls/tls_credentials.cc +30 -16
  987. data/src/core/lib/security/credentials/tls/tls_credentials.h +6 -0
  988. data/src/core/lib/security/credentials/xds/xds_credentials.cc +51 -58
  989. data/src/core/lib/security/credentials/xds/xds_credentials.h +37 -6
  990. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +11 -17
  991. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
  992. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -16
  993. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
  994. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +8 -18
  995. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +11 -16
  996. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
  997. data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -19
  998. data/src/core/lib/security/security_connector/security_connector.cc +3 -15
  999. data/src/core/lib/security/security_connector/security_connector.h +25 -21
  1000. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +10 -13
  1001. data/src/core/lib/security/security_connector/ssl_utils.cc +38 -32
  1002. data/src/core/lib/security/security_connector/ssl_utils.h +14 -18
  1003. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +365 -206
  1004. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +70 -47
  1005. data/src/core/lib/security/transport/auth_filters.h +38 -5
  1006. data/src/core/lib/security/transport/client_auth_filter.cc +97 -360
  1007. data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
  1008. data/src/core/lib/security/transport/secure_endpoint.h +1 -1
  1009. data/src/core/lib/security/transport/security_handshaker.cc +22 -12
  1010. data/src/core/lib/security/transport/server_auth_filter.cc +41 -35
  1011. data/src/core/lib/service_config/service_config.h +82 -0
  1012. data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
  1013. data/src/core/{ext/service_config/service_config.cc → lib/service_config/service_config_impl.cc} +20 -17
  1014. data/src/core/{ext/service_config/service_config.h → lib/service_config/service_config_impl.h} +16 -18
  1015. data/src/core/{ext → lib}/service_config/service_config_parser.cc +31 -27
  1016. data/src/core/{ext → lib}/service_config/service_config_parser.h +39 -30
  1017. data/src/core/lib/slice/percent_encoding.cc +30 -86
  1018. data/src/core/lib/slice/percent_encoding.h +5 -11
  1019. data/src/core/lib/slice/slice.cc +78 -181
  1020. data/src/core/lib/slice/slice.h +384 -0
  1021. data/src/core/lib/slice/slice_buffer.cc +4 -0
  1022. data/src/core/lib/slice/slice_internal.h +12 -31
  1023. data/src/core/lib/slice/slice_refcount.cc +18 -0
  1024. data/src/core/lib/slice/slice_refcount.h +8 -83
  1025. data/src/core/lib/slice/slice_refcount_base.h +21 -133
  1026. data/src/core/lib/surface/builtins.cc +6 -6
  1027. data/src/core/lib/surface/call.cc +1132 -1221
  1028. data/src/core/lib/surface/call.h +5 -19
  1029. data/src/core/lib/surface/channel.cc +68 -99
  1030. data/src/core/lib/surface/channel.h +12 -23
  1031. data/src/core/lib/surface/channel_init.cc +2 -3
  1032. data/src/core/lib/surface/channel_init.h +3 -7
  1033. data/src/core/lib/surface/completion_queue.cc +12 -11
  1034. data/src/core/lib/surface/init.cc +78 -10
  1035. data/src/core/lib/surface/init.h +0 -2
  1036. data/src/core/lib/surface/lame_client.cc +26 -19
  1037. data/src/core/lib/surface/server.cc +46 -85
  1038. data/src/core/lib/surface/server.h +14 -16
  1039. data/src/core/lib/surface/validate_metadata.cc +2 -2
  1040. data/src/core/lib/surface/version.cc +2 -2
  1041. data/src/core/lib/transport/bdp_estimator.cc +10 -11
  1042. data/src/core/lib/transport/bdp_estimator.h +2 -2
  1043. data/src/core/lib/transport/byte_stream.cc +6 -0
  1044. data/src/core/lib/transport/error_utils.cc +5 -3
  1045. data/src/core/lib/transport/error_utils.h +2 -1
  1046. data/src/core/lib/transport/metadata_batch.h +1131 -792
  1047. data/src/core/lib/transport/parsed_metadata.cc +37 -0
  1048. data/src/core/lib/transport/parsed_metadata.h +228 -90
  1049. data/src/core/lib/transport/pid_controller.cc +4 -4
  1050. data/src/core/lib/transport/status_conversion.cc +2 -2
  1051. data/src/core/lib/transport/status_conversion.h +1 -1
  1052. data/src/core/lib/transport/timeout_encoding.cc +204 -67
  1053. data/src/core/lib/transport/timeout_encoding.h +40 -10
  1054. data/src/core/lib/transport/transport.cc +7 -27
  1055. data/src/core/lib/transport/transport.h +103 -4
  1056. data/src/core/lib/transport/transport_impl.h +14 -0
  1057. data/src/core/lib/transport/transport_op_string.cc +5 -47
  1058. data/src/core/lib/uri/uri_parser.cc +237 -63
  1059. data/src/core/lib/uri/uri_parser.h +39 -23
  1060. data/src/core/plugin_registry/grpc_plugin_registry.cc +24 -92
  1061. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  1062. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +28 -23
  1063. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  1064. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +21 -13
  1065. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  1066. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  1067. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
  1068. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1069. data/src/core/tsi/local_transport_security.cc +16 -24
  1070. data/src/core/tsi/local_transport_security.h +1 -4
  1071. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  1072. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1073. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
  1074. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
  1075. data/src/core/tsi/ssl_transport_security.cc +210 -53
  1076. data/src/core/tsi/ssl_transport_security.h +47 -8
  1077. data/src/core/tsi/transport_security_interface.h +2 -0
  1078. data/src/ruby/ext/grpc/extconf.rb +10 -3
  1079. data/src/ruby/ext/grpc/rb_channel.c +5 -2
  1080. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +26 -34
  1081. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +39 -51
  1082. data/src/ruby/ext/grpc/rb_server.c +7 -4
  1083. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1084. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1085. data/src/ruby/lib/grpc/version.rb +1 -1
  1086. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  1087. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
  1088. data/src/ruby/pb/test/client.rb +769 -0
  1089. data/src/ruby/pb/test/server.rb +252 -0
  1090. data/src/ruby/pb/test/xds_client.rb +415 -0
  1091. data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
  1092. data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
  1093. data/third_party/abseil-cpp/absl/base/config.h +67 -37
  1094. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
  1095. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  1096. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
  1097. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
  1098. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
  1099. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -4
  1100. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
  1101. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
  1102. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1103. data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
  1104. data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
  1105. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
  1106. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
  1107. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
  1108. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
  1109. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
  1110. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
  1111. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
  1112. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
  1113. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
  1114. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
  1115. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
  1116. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  1117. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
  1118. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
  1119. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
  1120. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
  1121. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
  1122. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
  1123. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
  1124. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  1125. data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
  1126. data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
  1127. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
  1128. data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
  1129. data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
  1130. data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
  1131. data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
  1132. data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
  1133. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
  1134. data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
  1135. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  1136. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  1137. data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
  1138. data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
  1139. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
  1140. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1141. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1142. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1143. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1144. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1145. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1146. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1147. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1148. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  1149. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  1150. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1151. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1152. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1153. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  1154. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1155. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1156. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1157. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1158. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1159. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  1160. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  1161. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1162. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  1163. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1164. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1165. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1166. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1167. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1168. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1169. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  1170. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1171. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1172. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  1173. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1174. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  1175. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  1176. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  1177. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1178. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1179. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1180. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1181. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  1182. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1183. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1184. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  1185. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
  1186. data/third_party/abseil-cpp/absl/status/status.cc +9 -17
  1187. data/third_party/abseil-cpp/absl/status/status.h +19 -15
  1188. data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
  1189. data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
  1190. data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
  1191. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  1192. data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
  1193. data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
  1194. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
  1195. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
  1196. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
  1197. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
  1198. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
  1199. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
  1200. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
  1201. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
  1202. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
  1203. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
  1204. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  1205. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
  1206. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
  1207. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
  1208. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
  1209. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  1210. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  1211. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  1212. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  1213. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
  1214. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  1215. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
  1216. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  1217. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
  1218. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  1219. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
  1220. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
  1221. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
  1222. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  1223. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
  1224. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
  1225. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
  1226. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
  1227. data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
  1228. data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
  1229. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  1230. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
  1231. data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
  1232. data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
  1233. data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
  1234. data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
  1235. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
  1236. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
  1237. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
  1238. data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
  1239. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
  1240. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
  1241. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1242. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  1243. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
  1244. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  1245. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
  1246. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
  1247. data/third_party/abseil-cpp/absl/time/time.h +67 -36
  1248. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  1249. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
  1250. data/third_party/abseil-cpp/absl/types/span.h +3 -3
  1251. data/third_party/boringssl-with-bazel/err_data.c +681 -677
  1252. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
  1253. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
  1254. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
  1255. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
  1256. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
  1257. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
  1258. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +28 -0
  1259. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
  1260. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
  1261. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
  1262. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
  1263. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
  1264. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  1265. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
  1266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
  1267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
  1268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
  1269. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
  1270. data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
  1271. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
  1272. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  1273. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1274. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  1275. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  1276. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
  1277. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
  1278. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
  1279. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
  1280. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
  1281. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
  1282. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  1283. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
  1284. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  1285. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
  1286. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
  1287. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
  1288. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
  1289. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +971 -253
  1290. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
  1291. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -1
  1292. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1293. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
  1294. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
  1295. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
  1296. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  1297. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
  1298. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
  1299. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
  1300. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -13
  1301. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
  1302. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  1303. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
  1304. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +29 -11
  1305. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +12 -43
  1306. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
  1307. data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
  1308. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
  1309. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
  1310. data/third_party/cares/cares/{ares.h → include/ares.h} +73 -1
  1311. data/third_party/cares/cares/{ares_dns.h → include/ares_dns.h} +9 -0
  1312. data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  1313. data/third_party/cares/cares/{ares_version.h → include/ares_version.h} +3 -3
  1314. data/third_party/cares/cares/{ares__close_sockets.c → src/lib/ares__close_sockets.c} +2 -2
  1315. data/third_party/cares/cares/{ares__get_hostent.c → src/lib/ares__get_hostent.c} +1 -2
  1316. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1317. data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  1318. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1319. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1320. data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  1321. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1322. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1323. data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  1324. data/third_party/cares/cares/{ares_create_query.c → src/lib/ares_create_query.c} +8 -17
  1325. data/third_party/cares/cares/{ares_data.c → src/lib/ares_data.c} +18 -0
  1326. data/third_party/cares/cares/{ares_data.h → src/lib/ares_data.h} +2 -0
  1327. data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  1328. data/third_party/cares/cares/{ares_expand_name.c → src/lib/ares_expand_name.c} +114 -23
  1329. data/third_party/cares/cares/{ares_expand_string.c → src/lib/ares_expand_string.c} +2 -5
  1330. data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  1331. data/third_party/cares/cares/{ares_free_hostent.c → src/lib/ares_free_hostent.c} +6 -4
  1332. data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  1333. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  1334. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  1335. data/third_party/cares/cares/{ares_getenv.c → src/lib/ares_getenv.c} +0 -2
  1336. data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  1337. data/third_party/cares/cares/{ares_gethostbyaddr.c → src/lib/ares_gethostbyaddr.c} +2 -9
  1338. data/third_party/cares/cares/{ares_gethostbyname.c → src/lib/ares_gethostbyname.c} +25 -20
  1339. data/third_party/cares/cares/{ares_getnameinfo.c → src/lib/ares_getnameinfo.c} +4 -10
  1340. data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  1341. data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  1342. data/third_party/cares/cares/{ares_init.c → src/lib/ares_init.c} +79 -40
  1343. data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  1344. data/third_party/cares/cares/{ares_ipv6.h → src/lib/ares_ipv6.h} +7 -0
  1345. data/third_party/cares/cares/{ares_library_init.c → src/lib/ares_library_init.c} +7 -2
  1346. data/third_party/cares/cares/{ares_library_init.h → src/lib/ares_library_init.h} +1 -1
  1347. data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  1348. data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  1349. data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  1350. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  1351. data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  1352. data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  1353. data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  1354. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  1355. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  1356. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  1357. data/third_party/cares/cares/{ares_parse_mx_reply.c → src/lib/ares_parse_mx_reply.c} +2 -8
  1358. data/third_party/cares/cares/{ares_parse_naptr_reply.c → src/lib/ares_parse_naptr_reply.c} +2 -13
  1359. data/third_party/cares/cares/{ares_parse_ns_reply.c → src/lib/ares_parse_ns_reply.c} +5 -11
  1360. data/third_party/cares/cares/{ares_parse_ptr_reply.c → src/lib/ares_parse_ptr_reply.c} +53 -46
  1361. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  1362. data/third_party/cares/cares/{ares_parse_srv_reply.c → src/lib/ares_parse_srv_reply.c} +2 -13
  1363. data/third_party/cares/cares/{ares_parse_txt_reply.c → src/lib/ares_parse_txt_reply.c} +3 -9
  1364. data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  1365. data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  1366. data/third_party/cares/cares/{ares_private.h → src/lib/ares_private.h} +52 -11
  1367. data/third_party/cares/cares/{ares_process.c → src/lib/ares_process.c} +127 -52
  1368. data/third_party/cares/cares/{ares_query.c → src/lib/ares_query.c} +3 -9
  1369. data/third_party/cares/cares/{ares_search.c → src/lib/ares_search.c} +5 -7
  1370. data/third_party/cares/cares/{ares_send.c → src/lib/ares_send.c} +2 -8
  1371. data/third_party/cares/cares/{ares_setup.h → src/lib/ares_setup.h} +4 -1
  1372. data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  1373. data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  1374. data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  1375. data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  1376. data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  1377. data/third_party/cares/cares/{ares_strsplit.c → src/lib/ares_strsplit.c} +4 -0
  1378. data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  1379. data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  1380. data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  1381. data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  1382. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  1383. data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  1384. data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  1385. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  1386. data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  1387. data/third_party/cares/cares/{inet_net_pton.c → src/lib/inet_net_pton.c} +2 -8
  1388. data/third_party/cares/cares/{inet_ntop.c → src/lib/inet_ntop.c} +2 -8
  1389. data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  1390. data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
  1391. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  1392. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  1393. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  1394. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  1395. data/third_party/upb/upb/decode.c +732 -378
  1396. data/third_party/upb/upb/decode.h +43 -17
  1397. data/third_party/upb/upb/decode_fast.c +303 -301
  1398. data/third_party/upb/upb/decode_fast.h +18 -18
  1399. data/third_party/upb/upb/decode_internal.h +73 -55
  1400. data/third_party/upb/upb/def.c +2074 -981
  1401. data/third_party/upb/upb/def.h +332 -260
  1402. data/third_party/upb/upb/def.hpp +139 -169
  1403. data/third_party/upb/upb/encode.c +267 -174
  1404. data/third_party/upb/upb/encode.h +15 -17
  1405. data/third_party/upb/upb/json_encode.c +776 -0
  1406. data/third_party/upb/upb/json_encode.h +62 -0
  1407. data/third_party/upb/upb/msg.c +152 -121
  1408. data/third_party/upb/upb/msg.h +39 -33
  1409. data/third_party/upb/upb/msg_internal.h +395 -251
  1410. data/third_party/upb/upb/port_def.inc +8 -0
  1411. data/third_party/upb/upb/port_undef.inc +1 -0
  1412. data/third_party/upb/upb/reflection.c +292 -212
  1413. data/third_party/upb/upb/reflection.h +91 -67
  1414. data/third_party/upb/upb/reflection.hpp +6 -6
  1415. data/third_party/upb/upb/table.c +231 -147
  1416. data/third_party/upb/upb/table_internal.h +129 -95
  1417. data/third_party/upb/upb/text_encode.c +114 -91
  1418. data/third_party/upb/upb/text_encode.h +10 -10
  1419. data/third_party/upb/upb/upb.c +118 -71
  1420. data/third_party/upb/upb/upb.h +157 -151
  1421. data/third_party/upb/upb/upb.hpp +31 -28
  1422. data/third_party/upb/upb/upb_internal.h +21 -11
  1423. data/third_party/xxhash/xxhash.h +607 -352
  1424. data/third_party/zlib/crc32.c +966 -292
  1425. data/third_party/zlib/crc32.h +9441 -436
  1426. data/third_party/zlib/deflate.c +78 -30
  1427. data/third_party/zlib/deflate.h +12 -15
  1428. data/third_party/zlib/gzguts.h +3 -2
  1429. data/third_party/zlib/gzlib.c +5 -3
  1430. data/third_party/zlib/gzread.c +5 -7
  1431. data/third_party/zlib/gzwrite.c +25 -13
  1432. data/third_party/zlib/infback.c +2 -1
  1433. data/third_party/zlib/inffast.c +14 -14
  1434. data/third_party/zlib/inflate.c +39 -8
  1435. data/third_party/zlib/inflate.h +3 -2
  1436. data/third_party/zlib/inftrees.c +3 -3
  1437. data/third_party/zlib/trees.c +27 -48
  1438. data/third_party/zlib/zlib.h +123 -100
  1439. data/third_party/zlib/zutil.c +2 -2
  1440. data/third_party/zlib/zutil.h +12 -9
  1441. metadata +505 -221
  1442. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
  1443. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -83
  1444. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -195
  1445. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
  1446. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -264
  1447. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -560
  1448. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -119
  1449. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -95
  1450. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -189
  1451. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -53
  1452. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -83
  1453. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -125
  1454. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  1455. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
  1456. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
  1457. data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
  1458. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
  1459. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -62
  1460. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -27
  1461. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -62
  1462. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -27
  1463. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -62
  1464. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -27
  1465. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -62
  1466. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
  1467. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -62
  1468. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -72
  1469. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
  1470. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -73
  1471. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
  1472. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -72
  1473. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
  1474. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -80
  1475. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
  1476. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -74
  1477. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
  1478. data/src/core/lib/avl/avl.cc +0 -306
  1479. data/src/core/lib/compression/algorithm_metadata.h +0 -62
  1480. data/src/core/lib/compression/compression_args.cc +0 -138
  1481. data/src/core/lib/compression/compression_args.h +0 -56
  1482. data/src/core/lib/compression/stream_compression.cc +0 -81
  1483. data/src/core/lib/compression/stream_compression.h +0 -117
  1484. data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
  1485. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  1486. data/src/core/lib/compression/stream_compression_identity.cc +0 -91
  1487. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  1488. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1654
  1489. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  1490. data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
  1491. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  1492. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  1493. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  1494. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  1495. data/src/core/lib/iomgr/pollset_custom.cc +0 -105
  1496. data/src/core/lib/iomgr/pollset_custom.h +0 -37
  1497. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -47
  1498. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  1499. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
  1500. data/src/core/lib/iomgr/resolve_address_custom.h +0 -44
  1501. data/src/core/lib/iomgr/resource_quota.cc +0 -1106
  1502. data/src/core/lib/iomgr/resource_quota.h +0 -226
  1503. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  1504. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -152
  1505. data/src/core/lib/iomgr/tcp_custom.cc +0 -377
  1506. data/src/core/lib/iomgr/tcp_custom.h +0 -86
  1507. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -467
  1508. data/src/core/lib/iomgr/timer_custom.cc +0 -96
  1509. data/src/core/lib/iomgr/timer_custom.h +0 -43
  1510. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +0 -171
  1511. data/src/core/lib/security/authorization/sdk_server_authz_filter.h +0 -67
  1512. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
  1513. data/src/core/lib/slice/slice_intern.cc +0 -367
  1514. data/src/core/lib/slice/slice_utils.h +0 -200
  1515. data/src/core/lib/slice/static_slice.cc +0 -529
  1516. data/src/core/lib/slice/static_slice.h +0 -331
  1517. data/src/core/lib/surface/init_secure.cc +0 -103
  1518. data/src/core/lib/transport/metadata.cc +0 -714
  1519. data/src/core/lib/transport/metadata.h +0 -449
  1520. data/src/core/lib/transport/metadata_batch.cc +0 -94
  1521. data/src/core/lib/transport/static_metadata.cc +0 -1117
  1522. data/src/core/lib/transport/static_metadata.h +0 -340
  1523. data/src/core/lib/transport/status_metadata.cc +0 -63
  1524. data/src/core/lib/transport/status_metadata.h +0 -48
  1525. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  1526. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
  1527. data/third_party/cares/cares/ares_getopt.c +0 -122
  1528. data/third_party/cares/cares/ares_getopt.h +0 -53
  1529. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  1530. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  1531. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
@@ -48,15 +48,13 @@
48
48
  #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
49
49
  #include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
50
50
  #include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
51
- #include "src/core/ext/filters/client_channel/resolver_registry.h"
52
51
  #include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
53
52
  #include "src/core/ext/filters/client_channel/retry_filter.h"
54
53
  #include "src/core/ext/filters/client_channel/subchannel.h"
55
54
  #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
55
  #include "src/core/lib/backoff/backoff.h"
59
56
  #include "src/core/lib/channel/channel_args.h"
57
+ #include "src/core/lib/channel/channel_stack.h"
60
58
  #include "src/core/lib/channel/connected_channel.h"
61
59
  #include "src/core/lib/channel/status_util.h"
62
60
  #include "src/core/lib/gpr/string.h"
@@ -65,15 +63,15 @@
65
63
  #include "src/core/lib/iomgr/polling_entity.h"
66
64
  #include "src/core/lib/iomgr/work_serializer.h"
67
65
  #include "src/core/lib/profiling/timers.h"
66
+ #include "src/core/lib/resolver/resolver_registry.h"
67
+ #include "src/core/lib/service_config/service_config_call_data.h"
68
+ #include "src/core/lib/service_config/service_config_impl.h"
68
69
  #include "src/core/lib/slice/slice_internal.h"
69
70
  #include "src/core/lib/slice/slice_string_helpers.h"
70
71
  #include "src/core/lib/surface/channel.h"
71
72
  #include "src/core/lib/transport/connectivity_state.h"
72
73
  #include "src/core/lib/transport/error_utils.h"
73
- #include "src/core/lib/transport/metadata.h"
74
74
  #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
75
 
78
76
  //
79
77
  // Client channel filter
@@ -88,8 +86,9 @@ using internal::ClientChannelGlobalParsedConfig;
88
86
  using internal::ClientChannelMethodParsedConfig;
89
87
  using internal::ClientChannelServiceConfigParser;
90
88
 
89
+ TraceFlag grpc_client_channel_trace(false, "client_channel");
91
90
  TraceFlag grpc_client_channel_call_trace(false, "client_channel_call");
92
- TraceFlag grpc_client_channel_routing_trace(false, "client_channel_routing");
91
+ TraceFlag grpc_client_channel_lb_call_trace(false, "client_channel_lb_call");
93
92
 
94
93
  //
95
94
  // ClientChannel::CallData definition
@@ -178,8 +177,6 @@ class ClientChannel::CallData {
178
177
 
179
178
  static void RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
180
179
  void* arg, grpc_error_handle error);
181
- void InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
182
- grpc_transport_stream_op_batch* batch);
183
180
 
184
181
  void CreateDynamicCall(grpc_call_element* elem);
185
182
 
@@ -193,7 +190,7 @@ class ClientChannel::CallData {
193
190
 
194
191
  grpc_slice path_; // Request path.
195
192
  gpr_cycle_counter call_start_time_;
196
- grpc_millis deadline_;
193
+ Timestamp deadline_;
197
194
  Arena* arena_;
198
195
  grpc_call_stack* owning_call_;
199
196
  CallCombiner* call_combiner_;
@@ -236,6 +233,7 @@ class ClientChannel::CallData {
236
233
 
237
234
  const grpc_channel_filter ClientChannel::kFilterVtable = {
238
235
  ClientChannel::CallData::StartTransportStreamOpBatch,
236
+ nullptr,
239
237
  ClientChannel::StartTransportOp,
240
238
  sizeof(ClientChannel::CallData),
241
239
  ClientChannel::CallData::Init,
@@ -356,7 +354,7 @@ class DynamicTerminationFilter::CallData {
356
354
  args, pollent, nullptr,
357
355
  service_config_call_data->call_dispatch_controller(),
358
356
  /*is_transparent_retry=*/false);
359
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
357
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
360
358
  gpr_log(GPR_INFO,
361
359
  "chand=%p dynamic_termination_calld=%p: create lb_call=%p", chand,
362
360
  client_channel, calld->lb_call_.get());
@@ -375,7 +373,7 @@ class DynamicTerminationFilter::CallData {
375
373
  ~CallData() { grpc_slice_unref_internal(path_); }
376
374
 
377
375
  grpc_slice path_; // Request path.
378
- grpc_millis deadline_;
376
+ Timestamp deadline_;
379
377
  Arena* arena_;
380
378
  grpc_call_stack* owning_call_;
381
379
  CallCombiner* call_combiner_;
@@ -386,6 +384,7 @@ class DynamicTerminationFilter::CallData {
386
384
 
387
385
  const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
388
386
  DynamicTerminationFilter::CallData::StartTransportStreamOpBatch,
387
+ nullptr,
389
388
  DynamicTerminationFilter::StartTransportOp,
390
389
  sizeof(DynamicTerminationFilter::CallData),
391
390
  DynamicTerminationFilter::CallData::Init,
@@ -411,22 +410,17 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
411
410
  }
412
411
 
413
412
  ~ResolverResultHandler() override {
414
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
413
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
415
414
  gpr_log(GPR_INFO, "chand=%p: resolver shutdown complete", chand_);
416
415
  }
417
416
  GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ResolverResultHandler");
418
417
  }
419
418
 
420
- void ReturnResult(Resolver::Result result) override
421
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
419
+ void ReportResult(Resolver::Result result) override
420
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
422
421
  chand_->OnResolverResultChangedLocked(std::move(result));
423
422
  }
424
423
 
425
- void ReturnError(grpc_error_handle error) override
426
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
427
- chand_->OnResolverErrorLocked(error);
428
- }
429
-
430
424
  private:
431
425
  ClientChannel* chand_;
432
426
  };
@@ -447,14 +441,13 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
447
441
  public:
448
442
  SubchannelWrapper(ClientChannel* chand, RefCountedPtr<Subchannel> subchannel,
449
443
  absl::optional<std::string> health_check_service_name)
450
- : SubchannelInterface(
451
- GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
452
- ? "SubchannelWrapper"
453
- : nullptr),
444
+ : SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
445
+ ? "SubchannelWrapper"
446
+ : nullptr),
454
447
  chand_(chand),
455
448
  subchannel_(std::move(subchannel)),
456
449
  health_check_service_name_(std::move(health_check_service_name)) {
457
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
450
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
458
451
  gpr_log(GPR_INFO,
459
452
  "chand=%p: creating subchannel wrapper %p for subchannel %p",
460
453
  chand, this, subchannel_.get());
@@ -476,7 +469,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
476
469
  }
477
470
 
478
471
  ~SubchannelWrapper() override {
479
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
472
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
480
473
  gpr_log(GPR_INFO,
481
474
  "chand=%p: destroying subchannel wrapper %p for subchannel %p",
482
475
  chand_, this, subchannel_.get());
@@ -505,7 +498,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
505
498
  void WatchConnectivityState(
506
499
  grpc_connectivity_state initial_state,
507
500
  std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
508
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
501
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
509
502
  auto& watcher_wrapper = watcher_map_[watcher.get()];
510
503
  GPR_ASSERT(watcher_wrapper == nullptr);
511
504
  watcher_wrapper = new WatcherWrapper(std::move(watcher),
@@ -518,7 +511,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
518
511
  }
519
512
 
520
513
  void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher)
521
- override ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
514
+ override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
522
515
  auto it = watcher_map_.find(watcher);
523
516
  GPR_ASSERT(it != watcher_map_.end());
524
517
  subchannel_->CancelConnectivityStateWatch(health_check_service_name_,
@@ -571,15 +564,15 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
571
564
  ~WatcherWrapper() override {
572
565
  auto* parent = parent_.release(); // ref owned by lambda
573
566
  parent->chand_->work_serializer_->Run(
574
- [parent]()
575
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_->chand_->work_serializer_) {
576
- parent->Unref(DEBUG_LOCATION, "WatcherWrapper");
577
- },
567
+ [parent]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
568
+ *parent_->chand_->work_serializer_) {
569
+ parent->Unref(DEBUG_LOCATION, "WatcherWrapper");
570
+ },
578
571
  DEBUG_LOCATION);
579
572
  }
580
573
 
581
574
  void OnConnectivityStateChange() override {
582
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
575
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
583
576
  gpr_log(GPR_INFO,
584
577
  "chand=%p: connectivity change for subchannel wrapper %p "
585
578
  "subchannel %p; hopping into work_serializer",
@@ -587,11 +580,11 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
587
580
  }
588
581
  Ref().release(); // ref owned by lambda
589
582
  parent_->chand_->work_serializer_->Run(
590
- [this]()
591
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_->chand_->work_serializer_) {
592
- ApplyUpdateInControlPlaneWorkSerializer();
593
- Unref();
594
- },
583
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
584
+ *parent_->chand_->work_serializer_) {
585
+ ApplyUpdateInControlPlaneWorkSerializer();
586
+ Unref();
587
+ },
595
588
  DEBUG_LOCATION);
596
589
  }
597
590
 
@@ -613,8 +606,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
613
606
 
614
607
  private:
615
608
  void ApplyUpdateInControlPlaneWorkSerializer()
616
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_->chand_->work_serializer_) {
617
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
609
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
610
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
618
611
  gpr_log(GPR_INFO,
619
612
  "chand=%p: processing connectivity change in work serializer "
620
613
  "for subchannel wrapper %p subchannel %p "
@@ -631,7 +624,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
631
624
  &new_keepalive_time)) {
632
625
  if (new_keepalive_time > parent_->chand_->keepalive_time_) {
633
626
  parent_->chand_->keepalive_time_ = new_keepalive_time;
634
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
627
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
635
628
  gpr_log(GPR_INFO, "chand=%p: throttling keepalive time to %d",
636
629
  parent_->chand_, parent_->chand_->keepalive_time_);
637
630
  }
@@ -673,7 +666,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
673
666
  // CancelConnectivityStateWatch() with its watcher, we know the
674
667
  // corresponding WrapperWatcher to cancel on the underlying subchannel.
675
668
  std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_
676
- ABSL_GUARDED_BY(&ClientChannel::work_serializer_);
669
+ ABSL_GUARDED_BY(*chand_->work_serializer_);
677
670
  };
678
671
 
679
672
  //
@@ -703,7 +696,7 @@ ClientChannel::ExternalConnectivityWatcher::ExternalConnectivityWatcher(
703
696
  }
704
697
  // Pass the ref from creating the object to Start().
705
698
  chand_->work_serializer_->Run(
706
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
699
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
707
700
  // The ref is passed to AddWatcherLocked().
708
701
  AddWatcherLocked();
709
702
  },
@@ -753,7 +746,7 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
753
746
  // automatically remove all watchers in that case.
754
747
  if (state != GRPC_CHANNEL_SHUTDOWN) {
755
748
  chand_->work_serializer_->Run(
756
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
749
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
757
750
  RemoveWatcherLocked();
758
751
  },
759
752
  DEBUG_LOCATION);
@@ -769,7 +762,7 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
769
762
  ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_CANCELLED);
770
763
  // Hop back into the work_serializer to clean up.
771
764
  chand_->work_serializer_->Run(
772
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
765
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
773
766
  RemoveWatcherLocked();
774
767
  },
775
768
  DEBUG_LOCATION);
@@ -800,7 +793,7 @@ class ClientChannel::ConnectivityWatcherAdder {
800
793
  watcher_(std::move(watcher)) {
801
794
  GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherAdder");
802
795
  chand_->work_serializer_->Run(
803
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
796
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
804
797
  AddWatcherLocked();
805
798
  },
806
799
  DEBUG_LOCATION);
@@ -808,7 +801,7 @@ class ClientChannel::ConnectivityWatcherAdder {
808
801
 
809
802
  private:
810
803
  void AddWatcherLocked()
811
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
804
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
812
805
  chand_->state_tracker_.AddWatcher(initial_state_, std::move(watcher_));
813
806
  GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ConnectivityWatcherAdder");
814
807
  delete this;
@@ -830,7 +823,7 @@ class ClientChannel::ConnectivityWatcherRemover {
830
823
  : chand_(chand), watcher_(watcher) {
831
824
  GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherRemover");
832
825
  chand_->work_serializer_->Run(
833
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
826
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
834
827
  RemoveWatcherLocked();
835
828
  },
836
829
  DEBUG_LOCATION);
@@ -838,7 +831,7 @@ class ClientChannel::ConnectivityWatcherRemover {
838
831
 
839
832
  private:
840
833
  void RemoveWatcherLocked()
841
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
834
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
842
835
  chand_->state_tracker_.RemoveWatcher(watcher_);
843
836
  GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_,
844
837
  "ConnectivityWatcherRemover");
@@ -867,7 +860,7 @@ class ClientChannel::ClientChannelControlHelper
867
860
 
868
861
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
869
862
  ServerAddress address, const grpc_channel_args& args) override
870
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
863
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
871
864
  if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
872
865
  // Determine health check service name.
873
866
  absl::optional<std::string> health_check_service_name;
@@ -938,9 +931,9 @@ class ClientChannel::ClientChannelControlHelper
938
931
  void UpdateState(
939
932
  grpc_connectivity_state state, const absl::Status& status,
940
933
  std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) override
941
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
934
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
942
935
  if (chand_->resolver_ == nullptr) return; // Shutting down.
943
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
936
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
944
937
  const char* extra = chand_->disconnect_error_ == GRPC_ERROR_NONE
945
938
  ? ""
946
939
  : " (ignoring -- channel shutting down)";
@@ -956,9 +949,9 @@ class ClientChannel::ClientChannelControlHelper
956
949
  }
957
950
 
958
951
  void RequestReresolution() override
959
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
952
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
960
953
  if (chand_->resolver_ == nullptr) return; // Shutting down.
961
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
954
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
962
955
  gpr_log(GPR_INFO, "chand=%p: started name re-resolving", chand_);
963
956
  }
964
957
  chand_->resolver_->RequestReresolutionLocked();
@@ -969,7 +962,7 @@ class ClientChannel::ClientChannelControlHelper
969
962
  }
970
963
 
971
964
  void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
972
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
965
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
973
966
  if (chand_->resolver_ == nullptr) return; // Shutting down.
974
967
  if (chand_->channelz_node_ != nullptr) {
975
968
  chand_->channelz_node_->AddTraceEvent(
@@ -1042,10 +1035,12 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1042
1035
  ClientChannelFactory::GetFromChannelArgs(args->channel_args)),
1043
1036
  channelz_node_(GetChannelzNode(args->channel_args)),
1044
1037
  interested_parties_(grpc_pollset_set_create()),
1038
+ service_config_parser_index_(
1039
+ internal::ClientChannelServiceConfigParser::ParserIndex()),
1045
1040
  work_serializer_(std::make_shared<WorkSerializer>()),
1046
1041
  state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
1047
1042
  subchannel_pool_(GetSubchannelPool(args->channel_args)) {
1048
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1043
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1049
1044
  gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
1050
1045
  this, owning_stack_);
1051
1046
  }
@@ -1064,7 +1059,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1064
1059
  if (service_config_json == nullptr) service_config_json = "{}";
1065
1060
  *error = GRPC_ERROR_NONE;
1066
1061
  default_service_config_ =
1067
- ServiceConfig::Create(args->channel_args, service_config_json, error);
1062
+ ServiceConfigImpl::Create(args->channel_args, service_config_json, error);
1068
1063
  if (*error != GRPC_ERROR_NONE) {
1069
1064
  default_service_config_.reset();
1070
1065
  return;
@@ -1089,9 +1084,10 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1089
1084
  }
1090
1085
  // Make sure the URI to resolve is valid, so that we know that
1091
1086
  // resolver creation will succeed later.
1092
- if (!ResolverRegistry::IsValidTarget(uri_to_resolve_)) {
1087
+ if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
1088
+ uri_to_resolve_)) {
1093
1089
  *error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
1094
- absl::StrCat("the target uri is not valid: ", uri_to_resolve_.c_str()));
1090
+ absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
1095
1091
  return;
1096
1092
  }
1097
1093
  // Strip out service config channel arg, so that it doesn't affect
@@ -1108,7 +1104,9 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1108
1104
  const char* default_authority =
1109
1105
  grpc_channel_args_find_string(channel_args_, GRPC_ARG_DEFAULT_AUTHORITY);
1110
1106
  if (default_authority == nullptr) {
1111
- default_authority_ = ResolverRegistry::GetDefaultAuthority(server_uri);
1107
+ default_authority_ =
1108
+ CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
1109
+ server_uri);
1112
1110
  } else {
1113
1111
  default_authority_ = default_authority;
1114
1112
  }
@@ -1117,12 +1115,11 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1117
1115
  }
1118
1116
 
1119
1117
  ClientChannel::~ClientChannel() {
1120
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1118
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1121
1119
  gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
1122
1120
  }
1123
1121
  DestroyResolverAndLbPolicyLocked();
1124
1122
  grpc_channel_args_destroy(channel_args_);
1125
- GRPC_ERROR_UNREF(resolver_transient_failure_error_);
1126
1123
  // Stop backup polling.
1127
1124
  grpc_client_channel_stop_backup_polling(interested_parties_);
1128
1125
  grpc_pollset_set_destroy(interested_parties_);
@@ -1157,6 +1154,24 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
1157
1154
  } else {
1158
1155
  policy_name = grpc_channel_args_find_string(resolver_result.args,
1159
1156
  GRPC_ARG_LB_POLICY_NAME);
1157
+ bool requires_config = false;
1158
+ if (policy_name != nullptr &&
1159
+ (!LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
1160
+ policy_name, &requires_config) ||
1161
+ requires_config)) {
1162
+ if (requires_config) {
1163
+ gpr_log(GPR_ERROR,
1164
+ "LB policy: %s passed through channel_args must not "
1165
+ "require a config. Using pick_first instead.",
1166
+ policy_name);
1167
+ } else {
1168
+ gpr_log(GPR_ERROR,
1169
+ "LB policy: %s passed through channel_args does not exist. "
1170
+ "Using pick_first instead.",
1171
+ policy_name);
1172
+ }
1173
+ policy_name = "pick_first";
1174
+ }
1160
1175
  }
1161
1176
  // Use pick_first if nothing was specified and we didn't select grpclb
1162
1177
  // above.
@@ -1174,12 +1189,9 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
1174
1189
  // already verified that the policy does not require a config.
1175
1190
  // - One of the hard-coded values here, all of which are known to not
1176
1191
  // 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.
1192
+ // - A channel arg, in which case we check that the specified policy exists
1193
+ // and accepts an empty config. If not, we revert to using pick_first
1194
+ // lb_policy
1183
1195
  GPR_ASSERT(lb_policy_config != nullptr);
1184
1196
  GPR_ASSERT(parse_error == GRPC_ERROR_NONE);
1185
1197
  return lb_policy_config;
@@ -1190,7 +1202,7 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
1190
1202
  void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1191
1203
  // Handle race conditions.
1192
1204
  if (resolver_ == nullptr) return;
1193
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1205
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1194
1206
  gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
1195
1207
  }
1196
1208
  // We only want to trace the address resolution in the follow cases:
@@ -1203,31 +1215,34 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1203
1215
  //
1204
1216
  // We track a list of strings to eventually be concatenated and traced.
1205
1217
  absl::InlinedVector<const char*, 3> trace_strings;
1206
- if (result.addresses.empty() && previous_resolution_contained_addresses_) {
1218
+ const bool resolution_contains_addresses =
1219
+ result.addresses.ok() && !result.addresses->empty();
1220
+ if (!resolution_contains_addresses &&
1221
+ previous_resolution_contained_addresses_) {
1207
1222
  trace_strings.push_back("Address list became empty");
1208
- } else if (!result.addresses.empty() &&
1223
+ } else if (resolution_contains_addresses &&
1209
1224
  !previous_resolution_contained_addresses_) {
1210
1225
  trace_strings.push_back("Address list became non-empty");
1211
1226
  }
1212
- previous_resolution_contained_addresses_ = !result.addresses.empty();
1227
+ previous_resolution_contained_addresses_ = resolution_contains_addresses;
1213
1228
  std::string service_config_error_string_storage;
1214
- if (result.service_config_error != GRPC_ERROR_NONE) {
1229
+ if (!result.service_config.ok()) {
1215
1230
  service_config_error_string_storage =
1216
- grpc_error_std_string(result.service_config_error);
1231
+ result.service_config.status().ToString();
1217
1232
  trace_strings.push_back(service_config_error_string_storage.c_str());
1218
1233
  }
1219
1234
  // Choose the service config.
1220
1235
  RefCountedPtr<ServiceConfig> service_config;
1221
1236
  RefCountedPtr<ConfigSelector> config_selector;
1222
- if (result.service_config_error != GRPC_ERROR_NONE) {
1223
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1237
+ if (!result.service_config.ok()) {
1238
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1224
1239
  gpr_log(GPR_INFO, "chand=%p: resolver returned service config error: %s",
1225
- this, grpc_error_std_string(result.service_config_error).c_str());
1240
+ this, result.service_config.status().ToString().c_str());
1226
1241
  }
1227
1242
  // If the service config was invalid, then fallback to the
1228
1243
  // previously returned service config.
1229
1244
  if (saved_service_config_ != nullptr) {
1230
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1245
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1231
1246
  gpr_log(GPR_INFO,
1232
1247
  "chand=%p: resolver returned invalid service config. "
1233
1248
  "Continuing to use previous service config.",
@@ -1236,15 +1251,15 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1236
1251
  service_config = saved_service_config_;
1237
1252
  config_selector = saved_config_selector_;
1238
1253
  } else {
1239
- // We received an invalid service config and we don't have a
1254
+ // We received a service config error and we don't have a
1240
1255
  // previous service config to fall back to. Put the channel into
1241
1256
  // TRANSIENT_FAILURE.
1242
- OnResolverErrorLocked(GRPC_ERROR_REF(result.service_config_error));
1257
+ OnResolverErrorLocked(result.service_config.status());
1243
1258
  trace_strings.push_back("no valid service config");
1244
1259
  }
1245
- } else if (result.service_config == nullptr) {
1260
+ } else if (*result.service_config == nullptr) {
1246
1261
  // Resolver did not return any service config.
1247
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1262
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1248
1263
  gpr_log(GPR_INFO,
1249
1264
  "chand=%p: resolver returned no service config. Using default "
1250
1265
  "service config for channel.",
@@ -1253,15 +1268,18 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1253
1268
  service_config = default_service_config_;
1254
1269
  } else {
1255
1270
  // Use ServiceConfig and ConfigSelector returned by resolver.
1256
- service_config = result.service_config;
1271
+ service_config = std::move(*result.service_config);
1257
1272
  config_selector = ConfigSelector::GetFromChannelArgs(*result.args);
1258
1273
  }
1274
+ // Note: The only case in which service_config is null here is if the resolver
1275
+ // returned a service config error and we don't have a previous service
1276
+ // config to fall back to.
1259
1277
  if (service_config != nullptr) {
1260
1278
  // Extract global config for client channel.
1261
1279
  const internal::ClientChannelGlobalParsedConfig* parsed_service_config =
1262
1280
  static_cast<const internal::ClientChannelGlobalParsedConfig*>(
1263
1281
  service_config->GetGlobalParsedConfig(
1264
- internal::ClientChannelServiceConfigParser::ParserIndex()));
1282
+ service_config_parser_index_));
1265
1283
  // Choose LB policy config.
1266
1284
  RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config =
1267
1285
  ChooseLbPolicy(result, parsed_service_config);
@@ -1278,7 +1296,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1278
1296
  UpdateServiceConfigInControlPlaneLocked(std::move(service_config),
1279
1297
  std::move(config_selector),
1280
1298
  lb_policy_config->name());
1281
- } else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1299
+ } else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1282
1300
  gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
1283
1301
  }
1284
1302
  // Create or update LB policy, as needed.
@@ -1307,28 +1325,21 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1307
1325
  }
1308
1326
  }
1309
1327
 
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)) {
1328
+ void ClientChannel::OnResolverErrorLocked(absl::Status status) {
1329
+ if (resolver_ == nullptr) return;
1330
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1316
1331
  gpr_log(GPR_INFO, "chand=%p: resolver transient failure: %s", this,
1317
- grpc_error_std_string(error).c_str());
1332
+ status.ToString().c_str());
1318
1333
  }
1319
1334
  // If we already have an LB policy from a previous resolution
1320
1335
  // result, then we continue to let it set the connectivity state.
1321
1336
  // Otherwise, we go into TRANSIENT_FAILURE.
1322
1337
  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);
1338
+ grpc_error_handle error = absl_status_to_grpc_error(status);
1327
1339
  {
1328
1340
  MutexLock lock(&resolution_mu_);
1329
1341
  // Update resolver transient failure.
1330
- GRPC_ERROR_UNREF(resolver_transient_failure_error_);
1331
- resolver_transient_failure_error_ = state_error;
1342
+ resolver_transient_failure_error_ = status;
1332
1343
  // Process calls that were queued waiting for the resolver result.
1333
1344
  for (ResolverQueuedCall* call = resolver_queued_calls_; call != nullptr;
1334
1345
  call = call->next) {
@@ -1340,12 +1351,12 @@ void ClientChannel::OnResolverErrorLocked(grpc_error_handle error) {
1340
1351
  }
1341
1352
  }
1342
1353
  }
1354
+ GRPC_ERROR_UNREF(error);
1343
1355
  // Update connectivity state.
1344
1356
  UpdateStateAndPickerLocked(
1345
1357
  GRPC_CHANNEL_TRANSIENT_FAILURE, status, "resolver failure",
1346
1358
  absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(status));
1347
1359
  }
1348
- GRPC_ERROR_UNREF(error);
1349
1360
  }
1350
1361
 
1351
1362
  void ClientChannel::CreateOrUpdateLbPolicyLocked(
@@ -1356,6 +1367,7 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
1356
1367
  LoadBalancingPolicy::UpdateArgs update_args;
1357
1368
  update_args.addresses = std::move(result.addresses);
1358
1369
  update_args.config = std::move(lb_policy_config);
1370
+ update_args.resolution_note = std::move(result.resolution_note);
1359
1371
  // Add health check service name to channel args.
1360
1372
  absl::InlinedVector<grpc_arg, 1> args_to_add;
1361
1373
  if (health_check_service_name.has_value()) {
@@ -1374,7 +1386,7 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
1374
1386
  lb_policy_ = CreateLbPolicyLocked(*update_args.args);
1375
1387
  }
1376
1388
  // Update the policy.
1377
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1389
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1378
1390
  gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
1379
1391
  lb_policy_.get());
1380
1392
  }
@@ -1391,8 +1403,8 @@ OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
1391
1403
  lb_policy_args.args = &args;
1392
1404
  OrphanablePtr<LoadBalancingPolicy> lb_policy =
1393
1405
  MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
1394
- &grpc_client_channel_routing_trace);
1395
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1406
+ &grpc_client_channel_trace);
1407
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1396
1408
  gpr_log(GPR_INFO, "chand=%p: created new LB policy %p", this,
1397
1409
  lb_policy.get());
1398
1410
  }
@@ -1427,26 +1439,24 @@ void ClientChannel::RemoveResolverQueuedCall(ResolverQueuedCall* to_remove,
1427
1439
 
1428
1440
  void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
1429
1441
  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)) {
1442
+ RefCountedPtr<ConfigSelector> config_selector, std::string lb_policy_name) {
1443
+ std::string service_config_json(service_config->json_string());
1444
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1434
1445
  gpr_log(GPR_INFO,
1435
1446
  "chand=%p: resolver returned updated service config: \"%s\"", this,
1436
- service_config_json.get());
1447
+ service_config_json.c_str());
1437
1448
  }
1438
1449
  // Save service config.
1439
1450
  saved_service_config_ = std::move(service_config);
1440
1451
  // Swap out the data used by GetChannelInfo().
1441
- UniquePtr<char> lb_policy_name_owned(gpr_strdup(lb_policy_name));
1442
1452
  {
1443
1453
  MutexLock lock(&info_mu_);
1444
- info_lb_policy_name_ = std::move(lb_policy_name_owned);
1454
+ info_lb_policy_name_ = std::move(lb_policy_name);
1445
1455
  info_service_config_json_ = std::move(service_config_json);
1446
1456
  }
1447
1457
  // Save config selector.
1448
1458
  saved_config_selector_ = std::move(config_selector);
1449
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1459
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1450
1460
  gpr_log(GPR_INFO, "chand=%p: using ConfigSelector %p", this,
1451
1461
  saved_config_selector_.get());
1452
1462
  }
@@ -1457,7 +1467,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1457
1467
  RefCountedPtr<ServiceConfig> service_config = saved_service_config_;
1458
1468
  // Grab ref to config selector. Use default if resolver didn't supply one.
1459
1469
  RefCountedPtr<ConfigSelector> config_selector = saved_config_selector_;
1460
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1470
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1461
1471
  gpr_log(GPR_INFO, "chand=%p: switching to ConfigSelector %p", this,
1462
1472
  saved_config_selector_.get());
1463
1473
  }
@@ -1496,8 +1506,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1496
1506
  // after releasing the lock to keep the critical section small.
1497
1507
  {
1498
1508
  MutexLock lock(&resolution_mu_);
1499
- GRPC_ERROR_UNREF(resolver_transient_failure_error_);
1500
- resolver_transient_failure_error_ = GRPC_ERROR_NONE;
1509
+ resolver_transient_failure_error_ = absl::OkStatus();
1501
1510
  // Update service config.
1502
1511
  received_service_config_data_ = true;
1503
1512
  // Old values will be unreffed after lock is released.
@@ -1529,10 +1538,10 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1529
1538
  }
1530
1539
 
1531
1540
  void ClientChannel::CreateResolverLocked() {
1532
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1541
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1533
1542
  gpr_log(GPR_INFO, "chand=%p: starting name resolution", this);
1534
1543
  }
1535
- resolver_ = ResolverRegistry::CreateResolver(
1544
+ resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
1536
1545
  uri_to_resolve_.c_str(), channel_args_, interested_parties_,
1537
1546
  work_serializer_, absl::make_unique<ResolverResultHandler>(this));
1538
1547
  // Since the validity of the args was checked when the channel was created,
@@ -1542,20 +1551,20 @@ void ClientChannel::CreateResolverLocked() {
1542
1551
  GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
1543
1552
  absl::make_unique<LoadBalancingPolicy::QueuePicker>(nullptr));
1544
1553
  resolver_->StartLocked();
1545
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1554
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1546
1555
  gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
1547
1556
  }
1548
1557
  }
1549
1558
 
1550
1559
  void ClientChannel::DestroyResolverAndLbPolicyLocked() {
1551
1560
  if (resolver_ != nullptr) {
1552
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1561
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1553
1562
  gpr_log(GPR_INFO, "chand=%p: shutting down resolver=%p", this,
1554
1563
  resolver_.get());
1555
1564
  }
1556
1565
  resolver_.reset();
1557
1566
  if (lb_policy_ != nullptr) {
1558
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1567
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1559
1568
  gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
1560
1569
  lb_policy_.get());
1561
1570
  }
@@ -1671,7 +1680,7 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
1671
1680
  &result,
1672
1681
  // Complete pick.
1673
1682
  [op](LoadBalancingPolicy::PickResult::Complete* complete_pick)
1674
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::work_serializer_) {
1683
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*ClientChannel::work_serializer_) {
1675
1684
  SubchannelWrapper* subchannel = static_cast<SubchannelWrapper*>(
1676
1685
  complete_pick->subchannel.get());
1677
1686
  RefCountedPtr<ConnectedSubchannel> connected_subchannel =
@@ -1723,7 +1732,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
1723
1732
  }
1724
1733
  // Disconnect or enter IDLE.
1725
1734
  if (op->disconnect_with_error != GRPC_ERROR_NONE) {
1726
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
1735
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1727
1736
  gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
1728
1737
  grpc_error_std_string(op->disconnect_with_error).c_str());
1729
1738
  }
@@ -1763,7 +1772,7 @@ void ClientChannel::StartTransportOp(grpc_channel_element* elem,
1763
1772
  // Pop into control plane work_serializer for remaining ops.
1764
1773
  GRPC_CHANNEL_STACK_REF(chand->owning_stack_, "start_transport_op");
1765
1774
  chand->work_serializer_->Run(
1766
- [chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
1775
+ [chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
1767
1776
  chand->StartTransportOpLocked(op);
1768
1777
  },
1769
1778
  DEBUG_LOCATION);
@@ -1774,11 +1783,11 @@ void ClientChannel::GetChannelInfo(grpc_channel_element* elem,
1774
1783
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
1775
1784
  MutexLock lock(&chand->info_mu_);
1776
1785
  if (info->lb_policy_name != nullptr) {
1777
- *info->lb_policy_name = gpr_strdup(chand->info_lb_policy_name_.get());
1786
+ *info->lb_policy_name = gpr_strdup(chand->info_lb_policy_name_.c_str());
1778
1787
  }
1779
1788
  if (info->service_config_json != nullptr) {
1780
1789
  *info->service_config_json =
1781
- gpr_strdup(chand->info_service_config_json_.get());
1790
+ gpr_strdup(chand->info_service_config_json_.c_str());
1782
1791
  }
1783
1792
  }
1784
1793
 
@@ -1825,7 +1834,7 @@ grpc_connectivity_state ClientChannel::CheckConnectivityState(
1825
1834
  if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
1826
1835
  GRPC_CHANNEL_STACK_REF(owning_stack_, "TryToConnect");
1827
1836
  work_serializer_->Run([this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
1828
- work_serializer_) { TryToConnectLocked(); },
1837
+ *work_serializer_) { TryToConnectLocked(); },
1829
1838
  DEBUG_LOCATION);
1830
1839
  }
1831
1840
  return out;
@@ -1852,7 +1861,7 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
1852
1861
  : deadline_state_(elem, args,
1853
1862
  GPR_LIKELY(chand.deadline_checking_enabled_)
1854
1863
  ? args.deadline
1855
- : GRPC_MILLIS_INF_FUTURE),
1864
+ : Timestamp::InfFuture()),
1856
1865
  path_(grpc_slice_ref_internal(args.path)),
1857
1866
  call_start_time_(args.start_time),
1858
1867
  deadline_(args.deadline),
@@ -1901,6 +1910,11 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
1901
1910
  GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
1902
1911
  CallData* calld = static_cast<CallData*>(elem->call_data);
1903
1912
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
1913
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace) &&
1914
+ !GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
1915
+ gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from above: %s", chand,
1916
+ calld, grpc_transport_stream_op_batch_string(batch).c_str());
1917
+ }
1904
1918
  if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
1905
1919
  grpc_deadline_state_client_start_transport_stream_op_batch(elem, batch);
1906
1920
  }
@@ -1908,8 +1922,13 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
1908
1922
  // in case we wind up failing the call before we get down to the retry
1909
1923
  // or LB call layer.
1910
1924
  if (batch->recv_trailing_metadata) {
1911
- calld->InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
1912
- batch);
1925
+ calld->original_recv_trailing_metadata_ready_ =
1926
+ batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
1927
+ GRPC_CLOSURE_INIT(&calld->recv_trailing_metadata_ready_,
1928
+ RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
1929
+ elem, nullptr);
1930
+ batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
1931
+ &calld->recv_trailing_metadata_ready_;
1913
1932
  }
1914
1933
  // If we already have a dynamic call, pass the batch down to it.
1915
1934
  // Note that once we have done so, we do not need to acquire the channel's
@@ -2134,7 +2153,7 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
2134
2153
  auto* calld = static_cast<CallData*>(self->elem_->call_data);
2135
2154
  {
2136
2155
  MutexLock lock(&chand->resolution_mu_);
2137
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2156
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2138
2157
  gpr_log(GPR_INFO,
2139
2158
  "chand=%p calld=%p: cancelling resolver queued pick: "
2140
2159
  "error=%s self=%p calld->resolver_pick_canceller=%p",
@@ -2161,7 +2180,7 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
2161
2180
  grpc_call_element* elem) {
2162
2181
  if (!queued_pending_resolver_result_) return;
2163
2182
  auto* chand = static_cast<ClientChannel*>(elem->channel_data);
2164
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2183
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2165
2184
  gpr_log(GPR_INFO,
2166
2185
  "chand=%p calld=%p: removing from resolver queued picks list",
2167
2186
  chand, this);
@@ -2176,7 +2195,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
2176
2195
  grpc_call_element* elem) {
2177
2196
  if (queued_pending_resolver_result_) return;
2178
2197
  auto* chand = static_cast<ClientChannel*>(elem->channel_data);
2179
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2198
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2180
2199
  gpr_log(GPR_INFO, "chand=%p calld=%p: adding to resolver queued picks list",
2181
2200
  chand, this);
2182
2201
  }
@@ -2190,7 +2209,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
2190
2209
  grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2191
2210
  grpc_call_element* elem, grpc_metadata_batch* initial_metadata) {
2192
2211
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2193
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2212
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2194
2213
  gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
2195
2214
  chand, this);
2196
2215
  }
@@ -2213,13 +2232,14 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2213
2232
  // Apply our own method params to the call.
2214
2233
  auto* method_params = static_cast<ClientChannelMethodParsedConfig*>(
2215
2234
  service_config_call_data->GetMethodParsedConfig(
2216
- internal::ClientChannelServiceConfigParser::ParserIndex()));
2235
+ chand->service_config_parser_index_));
2217
2236
  if (method_params != nullptr) {
2218
2237
  // If the deadline from the service config is shorter than the one
2219
2238
  // 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_) +
2239
+ if (chand->deadline_checking_enabled_ &&
2240
+ method_params->timeout() != Duration::Zero()) {
2241
+ const Timestamp per_method_deadline =
2242
+ Timestamp::FromCycleCounterRoundUp(call_start_time_) +
2223
2243
  method_params->timeout();
2224
2244
  if (per_method_deadline < deadline_) {
2225
2245
  deadline_ = per_method_deadline;
@@ -2250,30 +2270,27 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2250
2270
  void ClientChannel::CallData::
2251
2271
  RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
2252
2272
  void* arg, grpc_error_handle error) {
2253
- auto* self = static_cast<CallData*>(arg);
2273
+ auto* elem = static_cast<grpc_call_element*>(arg);
2274
+ auto* chand = static_cast<ClientChannel*>(elem->channel_data);
2275
+ auto* calld = static_cast<CallData*>(elem->call_data);
2254
2276
  auto* service_config_call_data =
2255
2277
  static_cast<ClientChannelServiceConfigCallData*>(
2256
- self->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
2278
+ calld->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
2279
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2280
+ gpr_log(GPR_INFO,
2281
+ "chand=%p calld=%p: got recv_trailing_metadata_ready: error=%s "
2282
+ "service_config_call_data=%p",
2283
+ chand, calld, grpc_error_std_string(error).c_str(),
2284
+ service_config_call_data);
2285
+ }
2257
2286
  if (service_config_call_data != nullptr) {
2258
2287
  service_config_call_data->call_dispatch_controller()->Commit();
2259
2288
  }
2260
2289
  // Chain to original callback.
2261
- Closure::Run(DEBUG_LOCATION, self->original_recv_trailing_metadata_ready_,
2290
+ Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
2262
2291
  GRPC_ERROR_REF(error));
2263
2292
  }
2264
2293
 
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
2294
  void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
2278
2295
  grpc_error_handle error) {
2279
2296
  // TODO(roth): Does this callback need to hold a ref to the call stack?
@@ -2287,7 +2304,7 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
2287
2304
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2288
2305
  CallData* calld = static_cast<CallData*>(elem->call_data);
2289
2306
  if (error != GRPC_ERROR_NONE) {
2290
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2307
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2291
2308
  gpr_log(GPR_INFO,
2292
2309
  "chand=%p calld=%p: error applying config to call: error=%s",
2293
2310
  chand, calld, grpc_error_std_string(error).c_str());
@@ -2319,6 +2336,9 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2319
2336
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2320
2337
  // If we're still in IDLE, we need to start resolving.
2321
2338
  if (GPR_UNLIKELY(chand->CheckConnectivityState(false) == GRPC_CHANNEL_IDLE)) {
2339
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2340
+ gpr_log(GPR_INFO, "chand=%p calld=%p: triggering exit idle", chand, this);
2341
+ }
2322
2342
  // Bounce into the control plane work serializer to start resolving,
2323
2343
  // in case we are still in IDLE state. Since we are holding on to the
2324
2344
  // resolution mutex here, we offload it on the ExecCtx so that we don't
@@ -2331,7 +2351,7 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2331
2351
  auto* chand = static_cast<ClientChannel*>(arg);
2332
2352
  chand->work_serializer_->Run(
2333
2353
  [chand]()
2334
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
2354
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
2335
2355
  chand->CheckConnectivityState(/*try_to_connect=*/true);
2336
2356
  GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_,
2337
2357
  "CheckResolutionLocked");
@@ -2353,17 +2373,24 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2353
2373
  if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
2354
2374
  // If the resolver returned transient failure before returning the
2355
2375
  // 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) {
2376
+ absl::Status resolver_error = chand->resolver_transient_failure_error_;
2377
+ if (!resolver_error.ok() && (send_initial_metadata_flags &
2378
+ GRPC_INITIAL_METADATA_WAIT_FOR_READY) == 0) {
2379
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2380
+ gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
2381
+ chand, this);
2382
+ }
2360
2383
  MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
2361
- *error = GRPC_ERROR_REF(resolver_error);
2384
+ *error = absl_status_to_grpc_error(resolver_error);
2362
2385
  return true;
2363
2386
  }
2364
2387
  // Either the resolver has not yet returned a result, or it has
2365
2388
  // returned transient failure but the call is wait_for_ready. In
2366
2389
  // either case, queue the call.
2390
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2391
+ gpr_log(GPR_INFO, "chand=%p calld=%p: queuing to wait for resolution",
2392
+ chand, this);
2393
+ }
2367
2394
  MaybeAddCallToResolverQueuedCallsLocked(elem);
2368
2395
  return false;
2369
2396
  }
@@ -2388,7 +2415,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
2388
2415
  call_combiner_};
2389
2416
  grpc_error_handle error = GRPC_ERROR_NONE;
2390
2417
  DynamicFilters* channel_stack = args.channel_stack.get();
2391
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2418
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2392
2419
  gpr_log(
2393
2420
  GPR_INFO,
2394
2421
  "chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
@@ -2396,7 +2423,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
2396
2423
  }
2397
2424
  dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
2398
2425
  if (error != GRPC_ERROR_NONE) {
2399
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2426
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2400
2427
  gpr_log(GPR_INFO,
2401
2428
  "chand=%p calld=%p: failed to create dynamic call: error=%s",
2402
2429
  chand, this, grpc_error_std_string(error).c_str());
@@ -2414,39 +2441,71 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
2414
2441
  class ClientChannel::LoadBalancedCall::Metadata
2415
2442
  : public LoadBalancingPolicy::MetadataInterface {
2416
2443
  public:
2417
- Metadata(LoadBalancedCall* lb_call, grpc_metadata_batch* batch)
2418
- : lb_call_(lb_call), batch_(batch) {}
2444
+ explicit Metadata(grpc_metadata_batch* batch) : batch_(batch) {}
2419
2445
 
2420
2446
  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);
2447
+ if (batch_ == nullptr) return;
2448
+ // Gross, egregious hack to support legacy grpclb behavior.
2449
+ // TODO(ctiller): Use a promise context for this once that plumbing is done.
2450
+ if (key == GrpcLbClientStatsMetadata::key()) {
2451
+ batch_->Set(
2452
+ GrpcLbClientStatsMetadata(),
2453
+ const_cast<GrpcLbClientStats*>(
2454
+ reinterpret_cast<const GrpcLbClientStats*>(value.data())));
2455
+ return;
2456
+ }
2457
+ batch_->Append(key, Slice::FromStaticString(value),
2458
+ [key](absl::string_view error, const Slice& value) {
2459
+ gpr_log(GPR_ERROR, "%s",
2460
+ absl::StrCat(error, " key:", key,
2461
+ " value:", value.as_string_view())
2462
+ .c_str());
2463
+ });
2427
2464
  }
2428
2465
 
2429
2466
  std::vector<std::pair<std::string, std::string>> TestOnlyCopyToVector()
2430
2467
  override {
2431
- std::vector<std::pair<std::string, std::string>> result;
2432
- batch_->ForEach([&](grpc_mdelem md) {
2433
- auto key = std::string(StringViewFromSlice(GRPC_MDKEY(md)));
2434
- if (key != ":path") {
2435
- result.push_back(
2436
- std::make_pair(std::move(key),
2437
- std::string(StringViewFromSlice(GRPC_MDVALUE(md)))));
2438
- }
2439
- });
2440
- return result;
2468
+ if (batch_ == nullptr) return {};
2469
+ Encoder encoder;
2470
+ batch_->Encode(&encoder);
2471
+ return encoder.Take();
2441
2472
  }
2442
2473
 
2443
2474
  absl::optional<absl::string_view> Lookup(absl::string_view key,
2444
2475
  std::string* buffer) const override {
2445
- return batch_->GetValue(key, buffer);
2476
+ if (batch_ == nullptr) return absl::nullopt;
2477
+ return batch_->GetStringValue(key, buffer);
2446
2478
  }
2447
2479
 
2448
2480
  private:
2449
- LoadBalancedCall* lb_call_;
2481
+ class Encoder {
2482
+ public:
2483
+ void Encode(const Slice& key, const Slice& value) {
2484
+ out_.emplace_back(std::string(key.as_string_view()),
2485
+ std::string(value.as_string_view()));
2486
+ }
2487
+
2488
+ template <class Which>
2489
+ void Encode(Which, const typename Which::ValueType& value) {
2490
+ auto value_slice = Which::Encode(value);
2491
+ out_.emplace_back(std::string(Which::key()),
2492
+ std::string(value_slice.as_string_view()));
2493
+ }
2494
+
2495
+ void Encode(GrpcTimeoutMetadata,
2496
+ const typename GrpcTimeoutMetadata::ValueType&) {}
2497
+ void Encode(HttpPathMetadata, const Slice&) {}
2498
+ void Encode(HttpMethodMetadata,
2499
+ const typename HttpMethodMetadata::ValueType&) {}
2500
+
2501
+ std::vector<std::pair<std::string, std::string>> Take() {
2502
+ return std::move(out_);
2503
+ }
2504
+
2505
+ private:
2506
+ std::vector<std::pair<std::string, std::string>> out_;
2507
+ };
2508
+
2450
2509
  grpc_metadata_batch* batch_;
2451
2510
  };
2452
2511
 
@@ -2461,19 +2520,6 @@ class ClientChannel::LoadBalancedCall::LbCallState
2461
2520
 
2462
2521
  void* Alloc(size_t size) override { return lb_call_->arena_->Alloc(size); }
2463
2522
 
2464
- const LoadBalancingPolicy::BackendMetricData* GetBackendMetricData()
2465
- override {
2466
- if (lb_call_->backend_metric_data_ == nullptr) {
2467
- grpc_linked_mdelem* md = lb_call_->recv_trailing_metadata_->legacy_index()
2468
- ->named.x_endpoint_load_metrics_bin;
2469
- if (md != nullptr) {
2470
- lb_call_->backend_metric_data_ =
2471
- ParseBackendMetricData(GRPC_MDVALUE(md->md), lb_call_->arena_);
2472
- }
2473
- }
2474
- return lb_call_->backend_metric_data_;
2475
- }
2476
-
2477
2523
  absl::string_view ExperimentalGetCallAttribute(const char* key) override {
2478
2524
  auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
2479
2525
  lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
@@ -2488,7 +2534,33 @@ class ClientChannel::LoadBalancedCall::LbCallState
2488
2534
  };
2489
2535
 
2490
2536
  //
2491
- // LoadBalancedCall
2537
+ // ClientChannel::LoadBalancedCall::BackendMetricAccessor
2538
+ //
2539
+
2540
+ class ClientChannel::LoadBalancedCall::BackendMetricAccessor
2541
+ : public LoadBalancingPolicy::BackendMetricAccessor {
2542
+ public:
2543
+ explicit BackendMetricAccessor(LoadBalancedCall* lb_call)
2544
+ : lb_call_(lb_call) {}
2545
+
2546
+ const BackendMetricData* GetBackendMetricData() override {
2547
+ if (lb_call_->backend_metric_data_ == nullptr &&
2548
+ lb_call_->recv_trailing_metadata_ != nullptr) {
2549
+ if (const auto* md = lb_call_->recv_trailing_metadata_->get_pointer(
2550
+ XEndpointLoadMetricsBinMetadata())) {
2551
+ lb_call_->backend_metric_data_ =
2552
+ ParseBackendMetricData(*md, lb_call_->arena_);
2553
+ }
2554
+ }
2555
+ return lb_call_->backend_metric_data_;
2556
+ }
2557
+
2558
+ private:
2559
+ LoadBalancedCall* lb_call_;
2560
+ };
2561
+
2562
+ //
2563
+ // ClientChannel::LoadBalancedCall
2492
2564
  //
2493
2565
 
2494
2566
  namespace {
@@ -2509,7 +2581,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
2509
2581
  ConfigSelector::CallDispatchController* call_dispatch_controller,
2510
2582
  bool is_transparent_retry)
2511
2583
  : InternallyRefCounted(
2512
- GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
2584
+ GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
2513
2585
  ? "LoadBalancedCall"
2514
2586
  : nullptr),
2515
2587
  chand_(chand),
@@ -2523,15 +2595,18 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
2523
2595
  on_call_destruction_complete_(on_call_destruction_complete),
2524
2596
  call_dispatch_controller_(call_dispatch_controller),
2525
2597
  call_attempt_tracer_(
2526
- GetCallAttemptTracer(args.context, is_transparent_retry)) {}
2598
+ GetCallAttemptTracer(args.context, is_transparent_retry)) {
2599
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2600
+ gpr_log(GPR_INFO, "chand=%p lb_call=%p: created", chand_, this);
2601
+ }
2602
+ }
2527
2603
 
2528
2604
  ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
2529
- grpc_slice_unref_internal(path_);
2530
2605
  GRPC_ERROR_UNREF(cancel_error_);
2531
2606
  GRPC_ERROR_UNREF(failure_error_);
2532
2607
  if (backend_metric_data_ != nullptr) {
2533
- backend_metric_data_
2534
- ->LoadBalancingPolicy::BackendMetricData::~BackendMetricData();
2608
+ backend_metric_data_->LoadBalancingPolicy::BackendMetricAccessor::
2609
+ BackendMetricData::~BackendMetricData();
2535
2610
  }
2536
2611
  // Make sure there are no remaining pending batches.
2537
2612
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
@@ -2544,6 +2619,12 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
2544
2619
  }
2545
2620
 
2546
2621
  void ClientChannel::LoadBalancedCall::Orphan() {
2622
+ // If the recv_trailing_metadata op was never started, then notify
2623
+ // about call completion here, as best we can. We assume status
2624
+ // CANCELLED in this case.
2625
+ if (recv_trailing_metadata_ == nullptr) {
2626
+ RecordCallCompletion(absl::CancelledError("call cancelled"));
2627
+ }
2547
2628
  // Compute latency and report it to the tracer.
2548
2629
  if (call_attempt_tracer_ != nullptr) {
2549
2630
  gpr_timespec latency =
@@ -2570,7 +2651,7 @@ size_t ClientChannel::LoadBalancedCall::GetBatchIndex(
2570
2651
  void ClientChannel::LoadBalancedCall::PendingBatchesAdd(
2571
2652
  grpc_transport_stream_op_batch* batch) {
2572
2653
  const size_t idx = GetBatchIndex(batch);
2573
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2654
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2574
2655
  gpr_log(GPR_INFO,
2575
2656
  "chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
2576
2657
  chand_, this, idx);
@@ -2597,7 +2678,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
2597
2678
  GPR_ASSERT(error != GRPC_ERROR_NONE);
2598
2679
  GRPC_ERROR_UNREF(failure_error_);
2599
2680
  failure_error_ = error;
2600
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2681
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2601
2682
  size_t num_batches = 0;
2602
2683
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2603
2684
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2639,7 +2720,7 @@ void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner(
2639
2720
 
2640
2721
  // This is called via the call combiner, so access to calld is synchronized.
2641
2722
  void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
2642
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2723
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2643
2724
  size_t num_batches = 0;
2644
2725
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2645
2726
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2668,6 +2749,14 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
2668
2749
 
2669
2750
  void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2670
2751
  grpc_transport_stream_op_batch* batch) {
2752
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace) ||
2753
+ GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
2754
+ gpr_log(GPR_INFO,
2755
+ "chand=%p lb_call=%p: batch started from above: %s, "
2756
+ "call_attempt_tracer_=%p",
2757
+ chand_, this, grpc_transport_stream_op_batch_string(batch).c_str(),
2758
+ call_attempt_tracer_);
2759
+ }
2671
2760
  // Handle call tracing.
2672
2761
  if (call_attempt_tracer_ != nullptr) {
2673
2762
  // Record send ops in tracer.
@@ -2731,7 +2820,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2731
2820
  // the channel's data plane mutex, which is more efficient (especially for
2732
2821
  // streaming calls).
2733
2822
  if (subchannel_call_ != nullptr) {
2734
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2823
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2735
2824
  gpr_log(GPR_INFO,
2736
2825
  "chand=%p lb_call=%p: starting batch on subchannel_call=%p",
2737
2826
  chand_, this, subchannel_call_.get());
@@ -2743,7 +2832,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2743
2832
  //
2744
2833
  // If we've previously been cancelled, immediately fail any new batches.
2745
2834
  if (GPR_UNLIKELY(cancel_error_ != GRPC_ERROR_NONE)) {
2746
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2835
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2747
2836
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
2748
2837
  chand_, this, grpc_error_std_string(cancel_error_).c_str());
2749
2838
  }
@@ -2761,7 +2850,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2761
2850
  // error to the caller when the first batch does get passed down.
2762
2851
  GRPC_ERROR_UNREF(cancel_error_);
2763
2852
  cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
2764
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2853
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2765
2854
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
2766
2855
  chand_, this, grpc_error_std_string(cancel_error_).c_str());
2767
2856
  }
@@ -2777,7 +2866,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2777
2866
  // For batches containing a send_initial_metadata op, acquire the
2778
2867
  // channel's data plane mutex to pick a subchannel.
2779
2868
  if (GPR_LIKELY(batch->send_initial_metadata)) {
2780
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2869
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2781
2870
  gpr_log(GPR_INFO,
2782
2871
  "chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
2783
2872
  chand_, this);
@@ -2785,7 +2874,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2785
2874
  PickSubchannel(this, GRPC_ERROR_NONE);
2786
2875
  } else {
2787
2876
  // For all other batches, release the call combiner.
2788
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2877
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2789
2878
  gpr_log(GPR_INFO,
2790
2879
  "chand=%p lb_call=%p: saved batch, yielding call combiner",
2791
2880
  chand_, this);
@@ -2798,6 +2887,12 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2798
2887
  void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
2799
2888
  void* arg, grpc_error_handle error) {
2800
2889
  auto* self = static_cast<LoadBalancedCall*>(arg);
2890
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2891
+ gpr_log(GPR_INFO,
2892
+ "chand=%p lb_call=%p: got on_complete for send_initial_metadata: "
2893
+ "error=%s",
2894
+ self->chand_, self, grpc_error_std_string(error).c_str());
2895
+ }
2801
2896
  self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
2802
2897
  self->peer_string_);
2803
2898
  Closure::Run(DEBUG_LOCATION,
@@ -2808,6 +2903,11 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
2808
2903
  void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
2809
2904
  void* arg, grpc_error_handle error) {
2810
2905
  auto* self = static_cast<LoadBalancedCall*>(arg);
2906
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2907
+ gpr_log(GPR_INFO,
2908
+ "chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
2909
+ self->chand_, self, grpc_error_std_string(error).c_str());
2910
+ }
2811
2911
  if (error == GRPC_ERROR_NONE) {
2812
2912
  // recv_initial_metadata_flags is not populated for clients
2813
2913
  self->call_attempt_tracer_->RecordReceivedInitialMetadata(
@@ -2820,6 +2920,10 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
2820
2920
  void ClientChannel::LoadBalancedCall::RecvMessageReady(
2821
2921
  void* arg, grpc_error_handle error) {
2822
2922
  auto* self = static_cast<LoadBalancedCall*>(arg);
2923
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2924
+ gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
2925
+ self->chand_, self, grpc_error_std_string(error).c_str());
2926
+ }
2823
2927
  if (*self->recv_message_ != nullptr) {
2824
2928
  self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
2825
2929
  }
@@ -2830,9 +2934,18 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
2830
2934
  void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2831
2935
  void* arg, grpc_error_handle error) {
2832
2936
  auto* self = static_cast<LoadBalancedCall*>(arg);
2937
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2938
+ gpr_log(GPR_INFO,
2939
+ "chand=%p lb_call=%p: got recv_trailing_metadata_ready: error=%s "
2940
+ "call_attempt_tracer_=%p lb_subchannel_call_tracker_=%p "
2941
+ "failure_error_=%s",
2942
+ self->chand_, self, grpc_error_std_string(error).c_str(),
2943
+ self->call_attempt_tracer_, self->lb_subchannel_call_tracker_.get(),
2944
+ grpc_error_std_string(self->failure_error_).c_str());
2945
+ }
2833
2946
  // Check if we have a tracer or an LB callback to invoke.
2834
2947
  if (self->call_attempt_tracer_ != nullptr ||
2835
- self->lb_recv_trailing_metadata_ready_ != nullptr) {
2948
+ self->lb_subchannel_call_tracker_ != nullptr) {
2836
2949
  // Get the call's status.
2837
2950
  absl::Status status;
2838
2951
  if (error != GRPC_ERROR_NONE) {
@@ -2844,32 +2957,18 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2844
2957
  status = absl::Status(static_cast<absl::StatusCode>(code), message);
2845
2958
  } else {
2846
2959
  // Get status from headers.
2847
- const auto& fields = self->recv_trailing_metadata_->legacy_index()->named;
2848
- GPR_ASSERT(fields.grpc_status != nullptr);
2960
+ const auto& md = *self->recv_trailing_metadata_;
2849
2961
  grpc_status_code code =
2850
- grpc_get_status_code_from_metadata(fields.grpc_status->md);
2962
+ md.get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
2851
2963
  if (code != GRPC_STATUS_OK) {
2852
2964
  absl::string_view message;
2853
- if (fields.grpc_message != nullptr) {
2854
- message = StringViewFromSlice(GRPC_MDVALUE(fields.grpc_message->md));
2965
+ if (const auto* grpc_message = md.get_pointer(GrpcMessageMetadata())) {
2966
+ message = grpc_message->as_string_view();
2855
2967
  }
2856
2968
  status = absl::Status(static_cast<absl::StatusCode>(code), message);
2857
2969
  }
2858
2970
  }
2859
- // If we have a tracer, notify it.
2860
- if (self->call_attempt_tracer_ != nullptr) {
2861
- self->call_attempt_tracer_->RecordReceivedTrailingMetadata(
2862
- status, self->recv_trailing_metadata_,
2863
- *self->transport_stream_stats_);
2864
- }
2865
- // If the LB policy requested a callback for trailing metadata, invoke
2866
- // the callback.
2867
- if (self->lb_recv_trailing_metadata_ready_ != nullptr) {
2868
- Metadata trailing_metadata(self, self->recv_trailing_metadata_);
2869
- LbCallState lb_call_state(self);
2870
- self->lb_recv_trailing_metadata_ready_(status, &trailing_metadata,
2871
- &lb_call_state);
2872
- }
2971
+ self->RecordCallCompletion(status);
2873
2972
  }
2874
2973
  // Chain to original callback.
2875
2974
  if (self->failure_error_ != GRPC_ERROR_NONE) {
@@ -2882,16 +2981,35 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2882
2981
  error);
2883
2982
  }
2884
2983
 
2984
+ void ClientChannel::LoadBalancedCall::RecordCallCompletion(
2985
+ absl::Status status) {
2986
+ // If we have a tracer, notify it.
2987
+ if (call_attempt_tracer_ != nullptr) {
2988
+ call_attempt_tracer_->RecordReceivedTrailingMetadata(
2989
+ status, recv_trailing_metadata_, transport_stream_stats_);
2990
+ }
2991
+ // If the LB policy requested a callback for trailing metadata, invoke
2992
+ // the callback.
2993
+ if (lb_subchannel_call_tracker_ != nullptr) {
2994
+ Metadata trailing_metadata(recv_trailing_metadata_);
2995
+ BackendMetricAccessor backend_metric_accessor(this);
2996
+ LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
2997
+ status, &trailing_metadata, &backend_metric_accessor};
2998
+ lb_subchannel_call_tracker_->Finish(args);
2999
+ lb_subchannel_call_tracker_.reset();
3000
+ }
3001
+ }
3002
+
2885
3003
  void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
2886
3004
  SubchannelCall::Args call_args = {
2887
- std::move(connected_subchannel_), pollent_, path_, /*start_time=*/0,
3005
+ std::move(connected_subchannel_), pollent_, path_.Ref(), /*start_time=*/0,
2888
3006
  deadline_, arena_,
2889
3007
  // TODO(roth): When we implement hedging support, we will probably
2890
3008
  // need to use a separate call context for each subchannel call.
2891
3009
  call_context_, call_combiner_};
2892
3010
  grpc_error_handle error = GRPC_ERROR_NONE;
2893
3011
  subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
2894
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3012
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2895
3013
  gpr_log(GPR_INFO,
2896
3014
  "chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
2897
3015
  this, subchannel_call_.get(), grpc_error_std_string(error).c_str());
@@ -2930,7 +3048,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
2930
3048
  auto* chand = lb_call->chand_;
2931
3049
  {
2932
3050
  MutexLock lock(&chand->data_plane_mu_);
2933
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3051
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2934
3052
  gpr_log(GPR_INFO,
2935
3053
  "chand=%p lb_call=%p: cancelling queued pick: "
2936
3054
  "error=%s self=%p calld->pick_canceller=%p",
@@ -2956,7 +3074,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
2956
3074
 
2957
3075
  void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
2958
3076
  if (!queued_pending_lb_pick_) return;
2959
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3077
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2960
3078
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
2961
3079
  chand_, this);
2962
3080
  }
@@ -2968,7 +3086,7 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
2968
3086
 
2969
3087
  void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
2970
3088
  if (queued_pending_lb_pick_) return;
2971
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3089
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2972
3090
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
2973
3091
  chand_, this);
2974
3092
  }
@@ -2989,7 +3107,7 @@ void ClientChannel::LoadBalancedCall::PickDone(void* arg,
2989
3107
  grpc_error_handle error) {
2990
3108
  auto* self = static_cast<LoadBalancedCall*>(arg);
2991
3109
  if (error != GRPC_ERROR_NONE) {
2992
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3110
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2993
3111
  gpr_log(GPR_INFO,
2994
3112
  "chand=%p lb_call=%p: failed to pick subchannel: error=%s",
2995
3113
  self->chand_, self, grpc_error_std_string(error).c_str());
@@ -3028,10 +3146,10 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3028
3146
  send_initial_metadata.send_initial_metadata_flags;
3029
3147
  // Perform LB pick.
3030
3148
  LoadBalancingPolicy::PickArgs pick_args;
3031
- pick_args.path = StringViewFromSlice(path_);
3149
+ pick_args.path = path_.as_string_view();
3032
3150
  LbCallState lb_call_state(this);
3033
3151
  pick_args.call_state = &lb_call_state;
3034
- Metadata initial_metadata(this, initial_metadata_batch);
3152
+ Metadata initial_metadata(initial_metadata_batch);
3035
3153
  pick_args.initial_metadata = &initial_metadata;
3036
3154
  auto result = chand_->picker_->Pick(pick_args);
3037
3155
  return HandlePickResult<bool>(
@@ -3039,7 +3157,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3039
3157
  // CompletePick
3040
3158
  [this](LoadBalancingPolicy::PickResult::Complete* complete_pick)
3041
3159
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3042
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3160
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3043
3161
  gpr_log(GPR_INFO,
3044
3162
  "chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
3045
3163
  chand_, this, complete_pick->subchannel.get());
@@ -3054,22 +3172,28 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3054
3172
  // subchannel has moved out of state READY but the LB policy hasn't
3055
3173
  // yet seen that change and given us a new picker), then just
3056
3174
  // queue the pick. We'll try again as soon as we get a new picker.
3057
- // TODO(roth): In this case, we need to invoke the LB
3058
- // policy's recv_trailing_metadata_ready callback to tell it
3059
- // that the pick has been abandoned.
3060
3175
  if (connected_subchannel_ == nullptr) {
3176
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3177
+ gpr_log(GPR_INFO,
3178
+ "chand=%p lb_call=%p: subchannel returned by LB picker "
3179
+ "has no connected subchannel; queueing pick",
3180
+ chand_, this);
3181
+ }
3061
3182
  MaybeAddCallToLbQueuedCallsLocked();
3062
3183
  return false;
3063
3184
  }
3064
- lb_recv_trailing_metadata_ready_ =
3065
- std::move(complete_pick->recv_trailing_metadata_ready);
3185
+ lb_subchannel_call_tracker_ =
3186
+ std::move(complete_pick->subchannel_call_tracker);
3187
+ if (lb_subchannel_call_tracker_ != nullptr) {
3188
+ lb_subchannel_call_tracker_->Start();
3189
+ }
3066
3190
  MaybeRemoveCallFromLbQueuedCallsLocked();
3067
3191
  return true;
3068
3192
  },
3069
3193
  // QueuePick
3070
3194
  [this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/)
3071
3195
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3072
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3196
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3073
3197
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
3074
3198
  this);
3075
3199
  }
@@ -3080,7 +3204,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3080
3204
  [this, send_initial_metadata_flags,
3081
3205
  &error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
3082
3206
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3083
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3207
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3084
3208
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
3085
3209
  chand_, this, fail_pick->status.ToString().c_str());
3086
3210
  }
@@ -3104,7 +3228,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3104
3228
  // DropPick
3105
3229
  [this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick)
3106
3230
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3107
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3231
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3108
3232
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
3109
3233
  chand_, this, drop_pick->status.ToString().c_str());
3110
3234
  }