grpc 1.43.1 → 1.46.2

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

Potentially problematic release.


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

Files changed (1326) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +369 -229
  3. data/include/grpc/event_engine/event_engine.h +2 -2
  4. data/include/grpc/grpc.h +40 -14
  5. data/include/grpc/grpc_posix.h +20 -19
  6. data/include/grpc/grpc_security.h +36 -50
  7. data/include/grpc/impl/codegen/compression_types.h +0 -2
  8. data/include/grpc/impl/codegen/grpc_types.h +24 -21
  9. data/include/grpc/impl/codegen/port_platform.h +2 -2
  10. data/include/grpc/impl/codegen/slice.h +4 -1
  11. data/include/grpc/slice.h +0 -11
  12. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
  13. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
  14. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
  15. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +5 -5
  16. data/src/core/ext/filters/client_channel/backend_metric.cc +3 -3
  17. data/src/core/ext/filters/client_channel/backend_metric.h +1 -1
  18. data/src/core/ext/filters/client_channel/backup_poller.cc +12 -8
  19. data/src/core/ext/filters/client_channel/channel_connectivity.cc +5 -5
  20. data/src/core/ext/filters/client_channel/client_channel.cc +302 -219
  21. data/src/core/ext/filters/client_channel/client_channel.h +40 -37
  22. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +6 -12
  23. data/src/core/ext/filters/client_channel/config_selector.h +4 -4
  24. data/src/core/ext/filters/client_channel/connector.h +1 -1
  25. data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -2
  26. data/src/core/ext/filters/client_channel/dynamic_filters.h +2 -2
  27. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -22
  28. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -15
  29. data/src/core/ext/filters/client_channel/health/health_check_client.cc +126 -582
  30. data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
  31. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +10 -13
  32. data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
  33. data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
  34. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
  35. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
  36. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +4 -7
  37. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +99 -79
  38. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
  39. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
  40. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +15 -15
  41. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
  42. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +50 -32
  43. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +199 -150
  44. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +121 -73
  45. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +162 -122
  46. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
  47. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
  48. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +98 -63
  49. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +79 -67
  50. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
  51. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +65 -36
  52. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +19 -10
  53. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +282 -385
  54. data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
  55. data/src/core/ext/filters/client_channel/lb_policy.h +19 -3
  56. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +10 -16
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +287 -313
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
  59. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
  60. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +23 -38
  61. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +136 -226
  62. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
  63. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  64. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +92 -255
  65. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -17
  66. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
  67. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +83 -61
  68. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
  69. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
  70. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +40 -39
  71. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +284 -148
  72. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +8 -11
  73. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +13 -7
  74. data/src/core/ext/filters/client_channel/retry_filter.cc +253 -171
  75. data/src/core/ext/filters/client_channel/retry_service_config.cc +16 -18
  76. data/src/core/ext/filters/client_channel/retry_service_config.h +18 -12
  77. data/src/core/ext/filters/client_channel/retry_throttle.cc +9 -23
  78. data/src/core/ext/filters/client_channel/retry_throttle.h +11 -5
  79. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +8 -7
  80. data/src/core/ext/filters/client_channel/subchannel.cc +48 -55
  81. data/src/core/ext/filters/client_channel/subchannel.h +7 -7
  82. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
  83. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
  84. data/src/core/ext/filters/deadline/deadline_filter.cc +15 -14
  85. data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
  86. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +155 -400
  87. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
  88. data/src/core/ext/filters/fault_injection/service_config_parser.cc +11 -13
  89. data/src/core/ext/filters/fault_injection/service_config_parser.h +10 -4
  90. data/src/core/ext/filters/http/client/http_client_filter.cc +81 -528
  91. data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
  92. data/src/core/ext/filters/http/client_authority_filter.cc +31 -95
  93. data/src/core/ext/filters/http/client_authority_filter.h +24 -5
  94. data/src/core/ext/filters/http/http_filters_plugin.cc +20 -18
  95. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +43 -140
  96. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +15 -27
  97. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -225
  98. data/src/core/ext/filters/message_size/message_size_filter.cc +27 -35
  99. data/src/core/ext/filters/message_size/message_size_filter.h +10 -3
  100. data/src/core/ext/filters/rbac/rbac_filter.cc +162 -0
  101. data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
  102. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
  103. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
  104. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
  105. data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -4
  106. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +76 -198
  107. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +235 -0
  108. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +239 -36
  109. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +278 -245
  110. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -2
  111. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -2
  112. data/src/core/ext/transport/chttp2/transport/flow_control.h +3 -3
  113. data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
  114. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -4
  115. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -0
  116. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
  117. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +338 -281
  118. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +70 -160
  119. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
  120. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
  121. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +29 -78
  122. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
  123. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
  124. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
  125. data/src/core/ext/transport/chttp2/transport/internal.h +10 -41
  126. data/src/core/ext/transport/chttp2/transport/parsing.cc +11 -9
  127. data/src/core/ext/transport/chttp2/transport/writing.cc +81 -136
  128. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  129. data/src/core/ext/transport/inproc/inproc_transport.cc +27 -75
  130. data/src/core/ext/transport/inproc/inproc_transport.h +0 -3
  131. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  132. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
  133. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  134. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
  135. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +182 -176
  136. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1248 -685
  137. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  138. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
  139. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  140. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
  141. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  142. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
  143. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  144. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
  145. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  146. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
  147. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  148. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
  149. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  150. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
  151. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +14 -12
  152. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +49 -16
  153. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +13 -11
  154. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +49 -23
  155. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +98 -96
  156. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +669 -386
  157. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +185 -173
  158. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1269 -664
  159. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +34 -26
  160. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +200 -91
  161. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +252 -238
  162. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1670 -827
  163. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +10 -8
  164. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +42 -24
  165. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +49 -27
  166. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +272 -99
  167. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  168. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
  169. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +54 -50
  170. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +354 -190
  171. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +11 -8
  172. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +45 -25
  173. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +157 -154
  174. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1068 -582
  175. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +87 -42
  176. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +525 -167
  177. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +9 -7
  178. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +38 -24
  179. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +11 -29
  180. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +41 -101
  181. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  182. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
  183. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +108 -104
  184. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +768 -410
  185. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +115 -84
  186. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +736 -349
  187. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +11 -9
  188. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +57 -31
  189. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +162 -108
  190. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +992 -397
  191. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +8 -6
  192. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +28 -17
  193. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +15 -13
  194. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +83 -49
  195. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +13 -11
  196. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +75 -34
  197. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +15 -13
  198. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +93 -49
  199. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +11 -9
  200. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +46 -26
  201. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +34 -32
  202. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +194 -109
  203. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +51 -48
  204. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +349 -190
  205. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +49 -47
  206. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +357 -188
  207. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +9 -7
  208. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +34 -21
  209. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +72 -61
  210. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +504 -260
  211. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +77 -69
  212. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +560 -301
  213. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +19 -15
  214. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +104 -49
  215. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +12 -10
  216. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +66 -41
  217. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  218. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
  219. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +58 -55
  220. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +413 -235
  221. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +62 -60
  222. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +406 -237
  223. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +82 -76
  224. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +562 -294
  225. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +37 -31
  226. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +271 -142
  227. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +503 -475
  228. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3642 -1901
  229. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +25 -19
  230. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +148 -72
  231. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
  232. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
  233. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  234. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
  235. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  236. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
  237. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +15 -13
  238. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +77 -46
  239. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  240. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
  241. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  242. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
  243. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  244. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
  245. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  246. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
  247. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  248. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  249. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  250. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
  251. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  252. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
  253. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +8 -6
  254. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +34 -24
  255. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +29 -27
  256. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +188 -113
  257. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +36 -34
  258. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +260 -132
  259. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
  260. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
  261. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +16 -14
  262. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +86 -43
  263. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +229 -198
  264. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1553 -734
  265. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +3 -1
  266. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -1
  267. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +87 -58
  268. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +554 -235
  269. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +26 -24
  270. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +156 -87
  271. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +98 -71
  272. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +622 -263
  273. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  274. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
  275. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +6 -4
  276. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +22 -16
  277. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +67 -65
  278. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +474 -256
  279. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +18 -16
  280. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +107 -62
  281. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +51 -49
  282. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +347 -186
  283. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  284. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
  285. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +20 -18
  286. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +124 -82
  287. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  288. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
  289. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +16 -14
  290. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +99 -57
  291. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +10 -8
  292. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +50 -31
  293. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +10 -8
  294. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +48 -27
  295. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +9 -7
  296. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +38 -24
  297. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +21 -19
  298. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +117 -69
  299. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +19 -17
  300. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +123 -65
  301. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +14 -12
  302. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +85 -53
  303. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +23 -21
  304. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +150 -83
  305. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +32 -30
  306. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +230 -146
  307. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +36 -34
  308. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +235 -131
  309. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  310. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
  311. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +3 -1
  312. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -1
  313. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  314. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
  315. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +13 -11
  316. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +62 -36
  317. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +19 -17
  318. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +98 -52
  319. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  320. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  321. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +10 -8
  322. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +40 -19
  323. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  324. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
  325. data/src/core/ext/upb-generated/google/api/annotations.upb.c +8 -6
  326. data/src/core/ext/upb-generated/google/api/annotations.upb.h +22 -6
  327. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +109 -103
  328. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +720 -382
  329. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +120 -112
  330. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +795 -402
  331. data/src/core/ext/upb-generated/google/api/http.upb.c +29 -27
  332. data/src/core/ext/upb-generated/google/api/http.upb.h +216 -115
  333. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  334. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
  335. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +9 -7
  336. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +38 -22
  337. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +291 -237
  338. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2076 -1030
  339. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +9 -7
  340. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +36 -20
  341. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +6 -4
  342. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +22 -16
  343. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +31 -29
  344. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +177 -93
  345. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +9 -7
  346. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +36 -20
  347. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +40 -38
  348. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +240 -149
  349. data/src/core/ext/upb-generated/google/rpc/status.upb.c +11 -9
  350. data/src/core/ext/upb-generated/google/rpc/status.upb.h +52 -30
  351. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  352. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
  353. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +21 -19
  354. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +103 -48
  355. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +102 -96
  356. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +685 -359
  357. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +16 -13
  358. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +76 -41
  359. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +12 -10
  360. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +56 -35
  361. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +57 -55
  362. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +383 -219
  363. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +22 -20
  364. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +115 -63
  365. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  366. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  367. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +36 -34
  368. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +189 -78
  369. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +14 -12
  370. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +53 -22
  371. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +7 -5
  372. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +15 -6
  373. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +14 -12
  374. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +55 -24
  375. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +13 -11
  376. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +49 -23
  377. data/src/core/ext/upb-generated/validate/validate.upb.c +339 -312
  378. data/src/core/ext/upb-generated/validate/validate.upb.h +2726 -1180
  379. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  380. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
  381. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  382. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
  383. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  384. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  385. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +34 -32
  386. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +171 -80
  387. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  388. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
  389. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +8 -6
  390. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +30 -19
  391. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +18 -16
  392. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +98 -55
  393. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +14 -12
  394. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +53 -30
  395. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  396. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
  397. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +12 -10
  398. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +55 -30
  399. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +20 -18
  400. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +130 -70
  401. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +12 -10
  402. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +58 -30
  403. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +23 -21
  404. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +101 -46
  405. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  406. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
  407. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  408. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
  409. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  410. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
  411. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +10 -8
  412. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +42 -24
  413. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  414. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  415. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  416. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  417. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +14 -12
  418. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +67 -67
  419. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  420. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  421. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  422. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  423. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  424. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  425. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  426. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  427. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  428. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  429. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  430. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  431. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  432. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  433. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +8 -6
  434. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
  435. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +8 -6
  436. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
  437. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +20 -17
  438. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
  439. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +248 -240
  440. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
  441. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +58 -51
  442. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
  443. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +385 -371
  444. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +76 -76
  445. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +14 -11
  446. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
  447. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +23 -16
  448. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
  449. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  450. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  451. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +15 -13
  452. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
  453. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +15 -12
  454. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
  455. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +85 -80
  456. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +73 -73
  457. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +138 -101
  458. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
  459. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +14 -12
  460. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
  461. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +22 -34
  462. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
  463. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  464. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  465. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +21 -18
  466. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
  467. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +177 -166
  468. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
  469. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +14 -12
  470. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
  471. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +250 -221
  472. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
  473. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +12 -9
  474. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
  475. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +14 -11
  476. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
  477. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +14 -11
  478. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
  479. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +18 -15
  480. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
  481. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +13 -11
  482. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
  483. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +18 -15
  484. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
  485. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +19 -16
  486. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +19 -19
  487. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +18 -15
  488. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
  489. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +14 -11
  490. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
  491. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +52 -45
  492. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +19 -19
  493. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +153 -147
  494. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
  495. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +19 -16
  496. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
  497. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +15 -12
  498. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
  499. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  500. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  501. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +17 -14
  502. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
  503. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +17 -14
  504. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +28 -28
  505. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
  506. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  507. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +36 -27
  508. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
  509. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +826 -803
  510. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +160 -160
  511. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +52 -37
  512. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
  513. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  514. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  515. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  516. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  517. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  518. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  519. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +15 -12
  520. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
  521. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  522. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  523. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  524. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  525. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  526. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  527. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  528. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  529. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  530. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  531. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  532. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  533. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  534. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  535. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +15 -11
  536. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
  537. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +17 -14
  538. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
  539. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +18 -15
  540. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
  541. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
  542. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  543. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +17 -13
  544. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
  545. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +197 -172
  546. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +63 -58
  547. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +15 -11
  548. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
  549. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +169 -140
  550. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +24 -19
  551. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +19 -16
  552. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
  553. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +217 -199
  554. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
  555. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  556. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  557. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +14 -11
  558. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
  559. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +17 -14
  560. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +22 -22
  561. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +16 -13
  562. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
  563. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +20 -17
  564. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
  565. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  566. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  567. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +13 -10
  568. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
  569. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  570. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  571. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +15 -12
  572. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
  573. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +15 -12
  574. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
  575. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +15 -12
  576. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
  577. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +15 -12
  578. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
  579. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +15 -12
  580. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
  581. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +15 -12
  582. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
  583. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +14 -12
  584. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
  585. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +16 -13
  586. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
  587. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +13 -10
  588. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
  589. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +14 -11
  590. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
  591. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  592. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  593. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +10 -8
  594. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
  595. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  596. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  597. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +12 -10
  598. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
  599. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +11 -8
  600. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
  601. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  602. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  603. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +11 -9
  604. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
  605. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  606. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  607. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +5 -5
  608. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
  609. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  610. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  611. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  612. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  613. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +3 -3
  614. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
  615. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  616. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  617. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +3 -3
  618. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
  619. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +3 -3
  620. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
  621. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +3 -3
  622. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
  623. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +3 -3
  624. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
  625. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +3 -3
  626. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
  627. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +3 -3
  628. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
  629. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +3 -3
  630. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
  631. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
  632. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
  633. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  634. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  635. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  636. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  637. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +4 -4
  638. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
  639. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +5 -5
  640. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
  641. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -4
  642. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
  643. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +4 -4
  644. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
  645. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +4 -4
  646. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
  647. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +6 -6
  648. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
  649. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  650. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  651. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  652. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  653. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  654. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  655. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +4 -4
  656. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +13 -13
  657. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  658. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  659. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +5 -5
  660. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
  661. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +7 -7
  662. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
  663. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +4 -4
  664. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
  665. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  666. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  667. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +6 -6
  668. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
  669. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +6 -6
  670. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
  671. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +6 -6
  672. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
  673. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  674. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  675. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  676. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  677. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  678. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  679. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +5 -5
  680. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +4 -4
  681. data/src/core/ext/xds/certificate_provider_store.cc +8 -0
  682. data/src/core/ext/xds/certificate_provider_store.h +9 -0
  683. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -4
  684. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  685. data/src/core/ext/xds/upb_utils.h +67 -0
  686. data/src/core/ext/xds/xds_api.cc +147 -3487
  687. data/src/core/ext/xds/xds_api.h +60 -615
  688. data/src/core/ext/xds/xds_bootstrap.cc +221 -125
  689. data/src/core/ext/xds/xds_bootstrap.h +31 -15
  690. data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
  691. data/src/core/ext/xds/xds_certificate_provider.h +9 -0
  692. data/src/core/ext/xds/xds_channel_stack_modifier.cc +14 -17
  693. data/src/core/ext/xds/xds_channel_stack_modifier.h +4 -3
  694. data/src/core/ext/xds/xds_client.cc +750 -1135
  695. data/src/core/ext/xds/xds_client.h +111 -153
  696. data/src/core/ext/xds/xds_client_stats.cc +15 -15
  697. data/src/core/ext/xds/xds_client_stats.h +5 -4
  698. data/src/core/ext/xds/xds_cluster.cc +453 -0
  699. data/src/core/ext/xds/xds_cluster.h +108 -0
  700. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  701. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  702. data/src/core/ext/xds/xds_common_types.cc +388 -0
  703. data/src/core/ext/xds/xds_common_types.h +95 -0
  704. data/src/core/ext/xds/xds_endpoint.cc +371 -0
  705. data/src/core/ext/xds/xds_endpoint.h +135 -0
  706. data/src/core/ext/xds/xds_http_fault_filter.cc +7 -7
  707. data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
  708. data/src/core/ext/xds/xds_http_filters.cc +11 -5
  709. data/src/core/ext/xds/xds_http_filters.h +4 -4
  710. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  711. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  712. data/src/core/ext/xds/xds_listener.cc +1039 -0
  713. data/src/core/ext/xds/xds_listener.h +220 -0
  714. data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
  715. data/src/core/ext/xds/xds_resource_type.h +98 -0
  716. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  717. data/src/core/ext/xds/xds_route_config.cc +1122 -0
  718. data/src/core/ext/xds/xds_route_config.h +218 -0
  719. data/src/core/ext/xds/xds_routing.cc +12 -9
  720. data/src/core/ext/xds/xds_routing.h +8 -5
  721. data/src/core/ext/xds/xds_server_config_fetcher.cc +179 -123
  722. data/src/core/lib/address_utils/parse_address.cc +20 -0
  723. data/src/core/lib/address_utils/parse_address.h +5 -0
  724. data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
  725. data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
  726. data/src/core/lib/avl/avl.h +68 -5
  727. data/src/core/lib/backoff/backoff.cc +8 -37
  728. data/src/core/lib/backoff/backoff.h +11 -11
  729. data/src/core/lib/channel/call_finalization.h +86 -0
  730. data/src/core/lib/channel/call_tracer.h +4 -1
  731. data/src/core/lib/channel/channel_args.cc +161 -23
  732. data/src/core/lib/channel/channel_args.h +210 -7
  733. data/src/core/lib/channel/channel_args_preconditioning.cc +3 -8
  734. data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
  735. data/src/core/lib/channel/channel_stack.cc +10 -3
  736. data/src/core/lib/channel/channel_stack.h +39 -6
  737. data/src/core/lib/channel/channel_stack_builder.cc +23 -270
  738. data/src/core/lib/channel/channel_stack_builder.h +118 -149
  739. data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
  740. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  741. data/src/core/lib/channel/channel_trace.cc +3 -6
  742. data/src/core/lib/channel/channelz.cc +1 -0
  743. data/src/core/lib/channel/connected_channel.cc +9 -4
  744. data/src/core/lib/channel/connected_channel.h +2 -1
  745. data/src/core/lib/channel/context.h +11 -0
  746. data/src/core/lib/channel/handshaker.cc +1 -1
  747. data/src/core/lib/channel/handshaker.h +1 -1
  748. data/src/core/lib/channel/promise_based_filter.cc +1002 -0
  749. data/src/core/lib/channel/promise_based_filter.h +437 -0
  750. data/src/core/lib/compression/compression.cc +20 -112
  751. data/src/core/lib/compression/compression_internal.cc +137 -203
  752. data/src/core/lib/compression/compression_internal.h +64 -69
  753. data/src/core/lib/compression/message_compress.cc +11 -11
  754. data/src/core/lib/compression/message_compress.h +2 -2
  755. data/src/core/lib/config/core_configuration.cc +8 -2
  756. data/src/core/lib/config/core_configuration.h +39 -0
  757. data/src/core/lib/debug/stats_data.cc +2 -6
  758. data/src/core/lib/debug/stats_data.h +18 -21
  759. data/src/core/{ext/filters/max_age/max_age_filter.h → lib/event_engine/default_event_engine_factory.cc} +11 -10
  760. data/src/core/lib/event_engine/event_engine.cc +23 -8
  761. data/src/core/lib/event_engine/event_engine_factory.h +3 -0
  762. data/src/core/lib/event_engine/memory_allocator.cc +9 -13
  763. data/src/core/lib/event_engine/{event_engine_factory.cc → resolved_address.cc} +10 -20
  764. data/src/core/lib/gpr/sync_posix.cc +1 -0
  765. data/src/core/lib/gpr/time.cc +2 -1
  766. data/src/core/lib/gpr/tls.h +1 -0
  767. data/src/core/lib/gpr/useful.h +18 -0
  768. data/src/core/lib/gprpp/bitset.h +19 -0
  769. data/src/core/lib/gprpp/capture.h +76 -0
  770. data/src/core/lib/gprpp/chunked_vector.h +45 -3
  771. data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
  772. data/src/core/lib/gprpp/debug_location.h +2 -0
  773. data/src/core/lib/gprpp/match.h +73 -0
  774. data/src/core/lib/gprpp/overload.h +59 -0
  775. data/src/core/lib/gprpp/ref_counted.h +2 -0
  776. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  777. data/src/core/lib/gprpp/status_helper.cc +48 -40
  778. data/src/core/lib/gprpp/status_helper.h +6 -19
  779. data/src/core/lib/gprpp/table.h +11 -0
  780. data/src/core/lib/gprpp/time.cc +198 -0
  781. data/src/core/lib/gprpp/time.h +292 -0
  782. data/src/core/lib/http/format_request.cc +28 -25
  783. data/src/core/lib/http/format_request.h +7 -6
  784. data/src/core/lib/http/httpcli.cc +307 -239
  785. data/src/core/lib/http/httpcli.h +182 -89
  786. data/src/core/lib/http/httpcli_security_connector.cc +64 -75
  787. data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
  788. data/src/core/lib/http/parser.cc +80 -9
  789. data/src/core/lib/http/parser.h +15 -2
  790. data/src/core/lib/iomgr/buffer_list.h +5 -5
  791. data/src/core/lib/iomgr/call_combiner.cc +15 -4
  792. data/src/core/lib/iomgr/closure.h +29 -9
  793. data/src/core/lib/iomgr/combiner.cc +25 -3
  794. data/src/core/lib/iomgr/error.cc +13 -10
  795. data/src/core/lib/iomgr/error.h +0 -2
  796. data/src/core/lib/iomgr/ev_apple.cc +6 -5
  797. data/src/core/lib/iomgr/ev_epoll1_linux.cc +8 -7
  798. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -7
  799. data/src/core/lib/iomgr/ev_posix.cc +9 -10
  800. data/src/core/lib/iomgr/ev_posix.h +1 -1
  801. data/src/core/lib/iomgr/event_engine/iomgr.cc +3 -2
  802. data/src/core/lib/iomgr/event_engine/pollset.cc +2 -3
  803. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
  804. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
  805. data/src/core/lib/iomgr/event_engine/resolver.cc +66 -48
  806. data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
  807. data/src/core/lib/iomgr/event_engine/tcp.cc +4 -3
  808. data/src/core/lib/iomgr/event_engine/timer.cc +3 -4
  809. data/src/core/lib/iomgr/exec_ctx.cc +25 -97
  810. data/src/core/lib/iomgr/exec_ctx.h +7 -23
  811. data/src/core/lib/iomgr/executor.cc +10 -1
  812. data/src/core/lib/iomgr/fork_posix.cc +2 -1
  813. data/src/core/lib/iomgr/iocp_windows.cc +9 -9
  814. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  815. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  816. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  817. data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
  818. data/src/core/lib/iomgr/polling_entity.h +6 -0
  819. data/src/core/lib/iomgr/pollset.cc +1 -1
  820. data/src/core/lib/iomgr/pollset.h +4 -4
  821. data/src/core/lib/iomgr/pollset_windows.cc +2 -2
  822. data/src/core/lib/iomgr/port.h +6 -11
  823. data/src/core/lib/iomgr/resolve_address.cc +5 -24
  824. data/src/core/lib/iomgr/resolve_address.h +47 -44
  825. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  826. data/src/core/lib/iomgr/resolve_address_posix.cc +83 -67
  827. data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
  828. data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
  829. data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
  830. data/src/core/lib/iomgr/resolved_address.h +39 -0
  831. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
  832. data/src/core/lib/iomgr/socket_utils_common_posix.cc +0 -17
  833. data/src/core/lib/iomgr/tcp_client.cc +1 -1
  834. data/src/core/lib/iomgr/tcp_client.h +3 -2
  835. data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -1
  836. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -4
  837. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  838. data/src/core/lib/iomgr/tcp_client_windows.cc +1 -1
  839. data/src/core/lib/iomgr/tcp_posix.cc +95 -36
  840. data/src/core/lib/iomgr/tcp_server_posix.cc +26 -17
  841. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
  842. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
  843. data/src/core/lib/iomgr/tcp_windows.cc +17 -10
  844. data/src/core/lib/iomgr/timer.cc +2 -2
  845. data/src/core/lib/iomgr/timer.h +11 -6
  846. data/src/core/lib/iomgr/timer_generic.cc +96 -77
  847. data/src/core/lib/iomgr/timer_manager.cc +15 -14
  848. data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
  849. data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
  850. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
  851. data/src/core/lib/iomgr/work_serializer.cc +15 -10
  852. data/src/core/lib/json/json_util.cc +4 -4
  853. data/src/core/lib/json/json_util.h +5 -5
  854. data/src/core/lib/matchers/matchers.cc +1 -1
  855. data/src/core/lib/promise/activity.cc +14 -8
  856. data/src/core/lib/promise/activity.h +183 -142
  857. data/src/core/lib/promise/arena_promise.h +188 -0
  858. data/src/core/lib/promise/call_push_pull.h +144 -0
  859. data/src/core/lib/promise/detail/basic_seq.h +92 -3
  860. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  861. data/src/core/lib/promise/detail/status.h +6 -0
  862. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  863. data/src/core/lib/promise/latch.h +104 -0
  864. data/src/core/lib/promise/loop.h +34 -8
  865. data/src/core/lib/promise/poll.h +6 -0
  866. data/src/core/lib/promise/promise.h +95 -0
  867. data/src/core/lib/promise/seq.h +19 -1
  868. data/src/core/lib/promise/sleep.cc +74 -0
  869. data/src/core/lib/promise/sleep.h +66 -0
  870. data/src/core/lib/promise/try_seq.h +157 -0
  871. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
  872. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
  873. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +32 -31
  874. data/src/core/lib/resolver/resolver_registry.cc +156 -0
  875. data/src/core/lib/resolver/resolver_registry.h +113 -0
  876. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
  877. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
  878. data/src/core/lib/resource_quota/api.cc +5 -30
  879. data/src/core/lib/resource_quota/api.h +1 -2
  880. data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
  881. data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
  882. data/src/core/lib/resource_quota/memory_quota.cc +118 -94
  883. data/src/core/lib/resource_quota/memory_quota.h +100 -64
  884. data/src/core/lib/resource_quota/resource_quota.h +8 -0
  885. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  886. data/src/core/lib/security/authorization/evaluate_args.cc +26 -21
  887. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  888. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  889. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  890. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +106 -0
  891. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
  892. data/src/core/lib/security/authorization/matchers.cc +227 -0
  893. data/src/core/lib/security/authorization/matchers.h +211 -0
  894. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  895. data/src/core/lib/security/authorization/rbac_policy.h +171 -0
  896. data/src/core/lib/security/context/security_context.cc +4 -2
  897. data/src/core/lib/security/context/security_context.h +9 -2
  898. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
  899. data/src/core/lib/security/credentials/alts/alts_credentials.h +10 -0
  900. data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
  901. data/src/core/lib/security/credentials/call_creds_util.h +42 -0
  902. data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
  903. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
  904. data/src/core/lib/security/credentials/composite/composite_credentials.cc +24 -83
  905. data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -10
  906. data/src/core/lib/security/credentials/credentials.cc +2 -3
  907. data/src/core/lib/security/credentials/credentials.h +74 -80
  908. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +46 -30
  909. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  910. data/src/core/lib/security/credentials/external/external_account_credentials.cc +51 -33
  911. data/src/core/lib/security/credentials/external/external_account_credentials.h +5 -9
  912. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -1
  913. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +33 -13
  914. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -0
  915. data/src/core/lib/security/credentials/fake/fake_credentials.cc +23 -27
  916. data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
  917. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +20 -13
  918. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
  919. data/src/core/lib/security/credentials/iam/iam_credentials.cc +21 -28
  920. data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
  921. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +25 -26
  922. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  923. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
  924. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +32 -44
  925. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -12
  926. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +54 -41
  927. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  928. data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
  929. data/src/core/lib/security/credentials/local/local_credentials.h +10 -0
  930. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +146 -159
  931. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +60 -33
  932. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +96 -152
  933. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
  934. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +7 -14
  935. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -3
  936. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +49 -0
  937. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -0
  938. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +42 -3
  939. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +25 -0
  940. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +67 -80
  941. data/src/core/lib/security/credentials/tls/tls_credentials.cc +9 -6
  942. data/src/core/lib/security/credentials/tls/tls_credentials.h +6 -0
  943. data/src/core/lib/security/credentials/xds/xds_credentials.cc +48 -50
  944. data/src/core/lib/security/credentials/xds/xds_credentials.h +37 -6
  945. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +8 -14
  946. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +1 -1
  947. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +4 -12
  948. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
  949. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +6 -16
  950. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +4 -9
  951. data/src/core/lib/security/security_connector/local/local_security_connector.cc +10 -18
  952. data/src/core/lib/security/security_connector/security_connector.cc +3 -15
  953. data/src/core/lib/security/security_connector/security_connector.h +25 -21
  954. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +10 -13
  955. data/src/core/lib/security/security_connector/ssl_utils.cc +29 -31
  956. data/src/core/lib/security/security_connector/ssl_utils.h +13 -17
  957. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +25 -15
  958. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +6 -6
  959. data/src/core/lib/security/transport/auth_filters.h +38 -5
  960. data/src/core/lib/security/transport/client_auth_filter.cc +97 -360
  961. data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
  962. data/src/core/lib/security/transport/secure_endpoint.h +1 -1
  963. data/src/core/lib/security/transport/security_handshaker.cc +20 -10
  964. data/src/core/lib/security/transport/server_auth_filter.cc +41 -35
  965. data/src/core/lib/service_config/service_config.h +82 -0
  966. data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
  967. data/src/core/{ext/service_config/service_config.cc → lib/service_config/service_config_impl.cc} +20 -17
  968. data/src/core/{ext/service_config/service_config.h → lib/service_config/service_config_impl.h} +16 -18
  969. data/src/core/{ext → lib}/service_config/service_config_parser.cc +31 -27
  970. data/src/core/{ext → lib}/service_config/service_config_parser.h +39 -30
  971. data/src/core/lib/slice/slice.cc +76 -179
  972. data/src/core/lib/slice/slice.h +67 -24
  973. data/src/core/lib/slice/slice_internal.h +12 -31
  974. data/src/core/lib/slice/slice_refcount.cc +18 -0
  975. data/src/core/lib/slice/slice_refcount.h +6 -85
  976. data/src/core/lib/slice/slice_refcount_base.h +16 -136
  977. data/src/core/lib/surface/builtins.cc +6 -6
  978. data/src/core/lib/surface/call.cc +1091 -1206
  979. data/src/core/lib/surface/call.h +5 -19
  980. data/src/core/lib/surface/channel.cc +65 -71
  981. data/src/core/lib/surface/channel.h +10 -11
  982. data/src/core/lib/surface/channel_init.cc +2 -3
  983. data/src/core/lib/surface/channel_init.h +3 -7
  984. data/src/core/lib/surface/completion_queue.cc +10 -9
  985. data/src/core/lib/surface/init.cc +78 -9
  986. data/src/core/lib/surface/init.h +0 -2
  987. data/src/core/lib/surface/lame_client.cc +2 -2
  988. data/src/core/lib/surface/server.cc +25 -64
  989. data/src/core/lib/surface/server.h +6 -7
  990. data/src/core/lib/surface/version.cc +2 -2
  991. data/src/core/lib/transport/bdp_estimator.cc +9 -10
  992. data/src/core/lib/transport/bdp_estimator.h +2 -2
  993. data/src/core/lib/transport/byte_stream.cc +2 -0
  994. data/src/core/lib/transport/error_utils.cc +5 -3
  995. data/src/core/lib/transport/error_utils.h +2 -1
  996. data/src/core/lib/transport/metadata_batch.h +1014 -750
  997. data/src/core/lib/transport/parsed_metadata.cc +2 -0
  998. data/src/core/lib/transport/parsed_metadata.h +115 -96
  999. data/src/core/lib/transport/status_conversion.cc +2 -2
  1000. data/src/core/lib/transport/status_conversion.h +1 -1
  1001. data/src/core/lib/transport/timeout_encoding.cc +204 -67
  1002. data/src/core/lib/transport/timeout_encoding.h +40 -10
  1003. data/src/core/lib/transport/transport.cc +3 -1
  1004. data/src/core/lib/transport/transport.h +103 -3
  1005. data/src/core/lib/transport/transport_impl.h +14 -0
  1006. data/src/core/lib/transport/transport_op_string.cc +5 -47
  1007. data/src/core/lib/uri/uri_parser.cc +227 -53
  1008. data/src/core/lib/uri/uri_parser.h +37 -23
  1009. data/src/core/plugin_registry/grpc_plugin_registry.cc +21 -91
  1010. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  1011. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +27 -22
  1012. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  1013. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +21 -13
  1014. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  1015. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  1016. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
  1017. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1018. data/src/core/tsi/local_transport_security.cc +3 -11
  1019. data/src/core/tsi/local_transport_security.h +1 -4
  1020. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  1021. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1022. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
  1023. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
  1024. data/src/core/tsi/ssl_transport_security.cc +180 -52
  1025. data/src/core/tsi/ssl_transport_security.h +46 -8
  1026. data/src/core/tsi/transport_security_interface.h +2 -0
  1027. data/src/ruby/ext/grpc/extconf.rb +10 -3
  1028. data/src/ruby/ext/grpc/rb_channel.c +5 -2
  1029. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +20 -24
  1030. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +30 -36
  1031. data/src/ruby/ext/grpc/rb_server.c +7 -4
  1032. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1033. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1034. data/src/ruby/lib/grpc/version.rb +1 -1
  1035. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  1036. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
  1037. data/src/ruby/pb/test/client.rb +769 -0
  1038. data/src/ruby/pb/test/server.rb +252 -0
  1039. data/src/ruby/pb/test/xds_client.rb +415 -0
  1040. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  1041. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1042. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1043. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1044. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1045. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1046. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1047. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1048. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1049. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  1050. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  1051. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1052. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1053. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1054. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  1055. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1056. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1057. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1058. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1059. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1060. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  1061. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  1062. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1063. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  1064. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1065. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1066. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1067. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1068. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1069. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1070. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  1071. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1072. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1073. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  1074. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1075. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  1076. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  1077. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  1078. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1079. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1080. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1081. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1082. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  1083. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1084. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1085. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  1086. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
  1087. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
  1088. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  1089. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
  1090. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
  1091. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
  1092. data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
  1093. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
  1094. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  1095. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1096. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  1097. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1098. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
  1099. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
  1100. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
  1101. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
  1102. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
  1103. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
  1104. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
  1105. data/third_party/cares/cares/{ares.h → include/ares.h} +73 -1
  1106. data/third_party/cares/cares/{ares_dns.h → include/ares_dns.h} +9 -0
  1107. data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  1108. data/third_party/cares/cares/{ares_version.h → include/ares_version.h} +3 -3
  1109. data/third_party/cares/cares/{ares__close_sockets.c → src/lib/ares__close_sockets.c} +2 -2
  1110. data/third_party/cares/cares/{ares__get_hostent.c → src/lib/ares__get_hostent.c} +1 -2
  1111. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1112. data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  1113. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1114. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1115. data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  1116. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1117. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1118. data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  1119. data/third_party/cares/cares/{ares_create_query.c → src/lib/ares_create_query.c} +8 -17
  1120. data/third_party/cares/cares/{ares_data.c → src/lib/ares_data.c} +18 -0
  1121. data/third_party/cares/cares/{ares_data.h → src/lib/ares_data.h} +2 -0
  1122. data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  1123. data/third_party/cares/cares/{ares_expand_name.c → src/lib/ares_expand_name.c} +114 -23
  1124. data/third_party/cares/cares/{ares_expand_string.c → src/lib/ares_expand_string.c} +2 -5
  1125. data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  1126. data/third_party/cares/cares/{ares_free_hostent.c → src/lib/ares_free_hostent.c} +6 -4
  1127. data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  1128. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  1129. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  1130. data/third_party/cares/cares/{ares_getenv.c → src/lib/ares_getenv.c} +0 -2
  1131. data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  1132. data/third_party/cares/cares/{ares_gethostbyaddr.c → src/lib/ares_gethostbyaddr.c} +2 -9
  1133. data/third_party/cares/cares/{ares_gethostbyname.c → src/lib/ares_gethostbyname.c} +25 -20
  1134. data/third_party/cares/cares/{ares_getnameinfo.c → src/lib/ares_getnameinfo.c} +4 -10
  1135. data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  1136. data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  1137. data/third_party/cares/cares/{ares_init.c → src/lib/ares_init.c} +79 -40
  1138. data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  1139. data/third_party/cares/cares/{ares_ipv6.h → src/lib/ares_ipv6.h} +7 -0
  1140. data/third_party/cares/cares/{ares_library_init.c → src/lib/ares_library_init.c} +7 -2
  1141. data/third_party/cares/cares/{ares_library_init.h → src/lib/ares_library_init.h} +1 -1
  1142. data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  1143. data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  1144. data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  1145. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  1146. data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  1147. data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  1148. data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  1149. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  1150. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  1151. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  1152. data/third_party/cares/cares/{ares_parse_mx_reply.c → src/lib/ares_parse_mx_reply.c} +2 -8
  1153. data/third_party/cares/cares/{ares_parse_naptr_reply.c → src/lib/ares_parse_naptr_reply.c} +2 -13
  1154. data/third_party/cares/cares/{ares_parse_ns_reply.c → src/lib/ares_parse_ns_reply.c} +5 -11
  1155. data/third_party/cares/cares/{ares_parse_ptr_reply.c → src/lib/ares_parse_ptr_reply.c} +53 -46
  1156. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  1157. data/third_party/cares/cares/{ares_parse_srv_reply.c → src/lib/ares_parse_srv_reply.c} +2 -13
  1158. data/third_party/cares/cares/{ares_parse_txt_reply.c → src/lib/ares_parse_txt_reply.c} +3 -9
  1159. data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  1160. data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  1161. data/third_party/cares/cares/{ares_private.h → src/lib/ares_private.h} +52 -11
  1162. data/third_party/cares/cares/{ares_process.c → src/lib/ares_process.c} +127 -52
  1163. data/third_party/cares/cares/{ares_query.c → src/lib/ares_query.c} +3 -9
  1164. data/third_party/cares/cares/{ares_search.c → src/lib/ares_search.c} +5 -7
  1165. data/third_party/cares/cares/{ares_send.c → src/lib/ares_send.c} +2 -8
  1166. data/third_party/cares/cares/{ares_setup.h → src/lib/ares_setup.h} +4 -1
  1167. data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  1168. data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  1169. data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  1170. data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  1171. data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  1172. data/third_party/cares/cares/{ares_strsplit.c → src/lib/ares_strsplit.c} +4 -0
  1173. data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  1174. data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  1175. data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  1176. data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  1177. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  1178. data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  1179. data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  1180. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  1181. data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  1182. data/third_party/cares/cares/{inet_net_pton.c → src/lib/inet_net_pton.c} +2 -8
  1183. data/third_party/cares/cares/{inet_ntop.c → src/lib/inet_ntop.c} +2 -8
  1184. data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  1185. data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
  1186. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  1187. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  1188. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  1189. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  1190. data/third_party/upb/upb/decode.c +542 -319
  1191. data/third_party/upb/upb/decode.h +43 -17
  1192. data/third_party/upb/upb/decode_fast.c +303 -301
  1193. data/third_party/upb/upb/decode_fast.h +18 -18
  1194. data/third_party/upb/upb/decode_internal.h +73 -56
  1195. data/third_party/upb/upb/def.c +1926 -1078
  1196. data/third_party/upb/upb/def.h +329 -288
  1197. data/third_party/upb/upb/def.hpp +129 -172
  1198. data/third_party/upb/upb/encode.c +208 -175
  1199. data/third_party/upb/upb/encode.h +15 -17
  1200. data/third_party/upb/upb/json_encode.c +776 -0
  1201. data/third_party/upb/upb/json_encode.h +62 -0
  1202. data/third_party/upb/upb/msg.c +142 -124
  1203. data/third_party/upb/upb/msg.h +39 -33
  1204. data/third_party/upb/upb/msg_internal.h +342 -280
  1205. data/third_party/upb/upb/port_def.inc +8 -0
  1206. data/third_party/upb/upb/port_undef.inc +1 -0
  1207. data/third_party/upb/upb/reflection.c +239 -199
  1208. data/third_party/upb/upb/reflection.h +87 -67
  1209. data/third_party/upb/upb/reflection.hpp +6 -6
  1210. data/third_party/upb/upb/table.c +231 -147
  1211. data/third_party/upb/upb/table_internal.h +129 -95
  1212. data/third_party/upb/upb/text_encode.c +113 -90
  1213. data/third_party/upb/upb/text_encode.h +10 -10
  1214. data/third_party/upb/upb/upb.c +111 -72
  1215. data/third_party/upb/upb/upb.h +157 -151
  1216. data/third_party/upb/upb/upb.hpp +31 -28
  1217. data/third_party/upb/upb/upb_internal.h +21 -11
  1218. data/third_party/xxhash/xxhash.h +607 -352
  1219. data/third_party/zlib/crc32.c +966 -292
  1220. data/third_party/zlib/crc32.h +9441 -436
  1221. data/third_party/zlib/deflate.c +78 -30
  1222. data/third_party/zlib/deflate.h +12 -15
  1223. data/third_party/zlib/gzguts.h +3 -2
  1224. data/third_party/zlib/gzlib.c +5 -3
  1225. data/third_party/zlib/gzread.c +5 -7
  1226. data/third_party/zlib/gzwrite.c +25 -13
  1227. data/third_party/zlib/infback.c +2 -1
  1228. data/third_party/zlib/inffast.c +14 -14
  1229. data/third_party/zlib/inflate.c +39 -8
  1230. data/third_party/zlib/inflate.h +3 -2
  1231. data/third_party/zlib/inftrees.c +3 -3
  1232. data/third_party/zlib/trees.c +27 -48
  1233. data/third_party/zlib/zlib.h +123 -100
  1234. data/third_party/zlib/zutil.c +2 -2
  1235. data/third_party/zlib/zutil.h +12 -9
  1236. metadata +440 -216
  1237. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
  1238. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -83
  1239. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -194
  1240. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -88
  1241. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -264
  1242. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -560
  1243. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -122
  1244. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -92
  1245. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -192
  1246. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -52
  1247. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -79
  1248. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -125
  1249. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  1250. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
  1251. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
  1252. data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
  1253. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -38
  1254. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -64
  1255. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -38
  1256. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -64
  1257. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -38
  1258. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -64
  1259. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -38
  1260. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -64
  1261. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -38
  1262. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -64
  1263. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +0 -102
  1264. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +0 -306
  1265. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +0 -56
  1266. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +0 -135
  1267. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +0 -115
  1268. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +0 -371
  1269. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -67
  1270. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
  1271. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -68
  1272. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
  1273. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -67
  1274. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
  1275. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -75
  1276. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
  1277. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -69
  1278. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
  1279. data/src/core/lib/compression/algorithm_metadata.h +0 -62
  1280. data/src/core/lib/compression/compression_args.cc +0 -140
  1281. data/src/core/lib/compression/compression_args.h +0 -58
  1282. data/src/core/lib/compression/stream_compression.cc +0 -81
  1283. data/src/core/lib/compression/stream_compression.h +0 -117
  1284. data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
  1285. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  1286. data/src/core/lib/compression/stream_compression_identity.cc +0 -91
  1287. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  1288. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1654
  1289. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  1290. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  1291. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  1292. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  1293. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  1294. data/src/core/lib/iomgr/pollset_custom.cc +0 -105
  1295. data/src/core/lib/iomgr/pollset_custom.h +0 -37
  1296. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -47
  1297. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  1298. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
  1299. data/src/core/lib/iomgr/resolve_address_custom.h +0 -44
  1300. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  1301. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -146
  1302. data/src/core/lib/iomgr/tcp_custom.cc +0 -350
  1303. data/src/core/lib/iomgr/tcp_custom.h +0 -85
  1304. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -457
  1305. data/src/core/lib/iomgr/timer_custom.cc +0 -96
  1306. data/src/core/lib/iomgr/timer_custom.h +0 -43
  1307. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +0 -173
  1308. data/src/core/lib/security/authorization/sdk_server_authz_filter.h +0 -67
  1309. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
  1310. data/src/core/lib/slice/slice_intern.cc +0 -367
  1311. data/src/core/lib/slice/slice_utils.h +0 -200
  1312. data/src/core/lib/slice/static_slice.cc +0 -377
  1313. data/src/core/lib/slice/static_slice.h +0 -300
  1314. data/src/core/lib/surface/init_secure.cc +0 -103
  1315. data/src/core/lib/transport/metadata.cc +0 -714
  1316. data/src/core/lib/transport/metadata.h +0 -449
  1317. data/src/core/lib/transport/metadata_batch.cc +0 -99
  1318. data/src/core/lib/transport/static_metadata.cc +0 -1032
  1319. data/src/core/lib/transport/static_metadata.h +0 -322
  1320. data/src/core/lib/transport/status_metadata.cc +0 -63
  1321. data/src/core/lib/transport/status_metadata.h +0 -48
  1322. data/third_party/cares/cares/ares_getopt.c +0 -122
  1323. data/third_party/cares/cares/ares_getopt.h +0 -53
  1324. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  1325. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  1326. 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,7 +1084,8 @@ 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
1090
  absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
1095
1091
  return;
@@ -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,20 +2441,31 @@ 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 {
2468
+ if (batch_ == nullptr) return {};
2431
2469
  Encoder encoder;
2432
2470
  batch_->Encode(&encoder);
2433
2471
  return encoder.Take();
@@ -2435,18 +2473,16 @@ class ClientChannel::LoadBalancedCall::Metadata
2435
2473
 
2436
2474
  absl::optional<absl::string_view> Lookup(absl::string_view key,
2437
2475
  std::string* buffer) const override {
2438
- return batch_->GetValue(key, buffer);
2476
+ if (batch_ == nullptr) return absl::nullopt;
2477
+ return batch_->GetStringValue(key, buffer);
2439
2478
  }
2440
2479
 
2441
2480
  private:
2442
2481
  class Encoder {
2443
2482
  public:
2444
- void Encode(grpc_mdelem md) {
2445
- auto key = StringViewFromSlice(GRPC_MDKEY(md));
2446
- if (key != ":path") {
2447
- out_.emplace_back(std::string(key),
2448
- std::string(StringViewFromSlice(GRPC_MDVALUE(md))));
2449
- }
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()));
2450
2486
  }
2451
2487
 
2452
2488
  template <class Which>
@@ -2456,7 +2492,11 @@ class ClientChannel::LoadBalancedCall::Metadata
2456
2492
  std::string(value_slice.as_string_view()));
2457
2493
  }
2458
2494
 
2459
- void Encode(GrpcTimeoutMetadata, grpc_millis) {}
2495
+ void Encode(GrpcTimeoutMetadata,
2496
+ const typename GrpcTimeoutMetadata::ValueType&) {}
2497
+ void Encode(HttpPathMetadata, const Slice&) {}
2498
+ void Encode(HttpMethodMetadata,
2499
+ const typename HttpMethodMetadata::ValueType&) {}
2460
2500
 
2461
2501
  std::vector<std::pair<std::string, std::string>> Take() {
2462
2502
  return std::move(out_);
@@ -2466,7 +2506,6 @@ class ClientChannel::LoadBalancedCall::Metadata
2466
2506
  std::vector<std::pair<std::string, std::string>> out_;
2467
2507
  };
2468
2508
 
2469
- LoadBalancedCall* lb_call_;
2470
2509
  grpc_metadata_batch* batch_;
2471
2510
  };
2472
2511
 
@@ -2505,7 +2544,8 @@ class ClientChannel::LoadBalancedCall::BackendMetricAccessor
2505
2544
  : lb_call_(lb_call) {}
2506
2545
 
2507
2546
  const BackendMetricData* GetBackendMetricData() override {
2508
- if (lb_call_->backend_metric_data_ == nullptr) {
2547
+ if (lb_call_->backend_metric_data_ == nullptr &&
2548
+ lb_call_->recv_trailing_metadata_ != nullptr) {
2509
2549
  if (const auto* md = lb_call_->recv_trailing_metadata_->get_pointer(
2510
2550
  XEndpointLoadMetricsBinMetadata())) {
2511
2551
  lb_call_->backend_metric_data_ =
@@ -2541,7 +2581,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
2541
2581
  ConfigSelector::CallDispatchController* call_dispatch_controller,
2542
2582
  bool is_transparent_retry)
2543
2583
  : InternallyRefCounted(
2544
- GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
2584
+ GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
2545
2585
  ? "LoadBalancedCall"
2546
2586
  : nullptr),
2547
2587
  chand_(chand),
@@ -2555,10 +2595,13 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
2555
2595
  on_call_destruction_complete_(on_call_destruction_complete),
2556
2596
  call_dispatch_controller_(call_dispatch_controller),
2557
2597
  call_attempt_tracer_(
2558
- 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
+ }
2559
2603
 
2560
2604
  ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
2561
- grpc_slice_unref_internal(path_);
2562
2605
  GRPC_ERROR_UNREF(cancel_error_);
2563
2606
  GRPC_ERROR_UNREF(failure_error_);
2564
2607
  if (backend_metric_data_ != nullptr) {
@@ -2576,6 +2619,12 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
2576
2619
  }
2577
2620
 
2578
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
+ }
2579
2628
  // Compute latency and report it to the tracer.
2580
2629
  if (call_attempt_tracer_ != nullptr) {
2581
2630
  gpr_timespec latency =
@@ -2602,7 +2651,7 @@ size_t ClientChannel::LoadBalancedCall::GetBatchIndex(
2602
2651
  void ClientChannel::LoadBalancedCall::PendingBatchesAdd(
2603
2652
  grpc_transport_stream_op_batch* batch) {
2604
2653
  const size_t idx = GetBatchIndex(batch);
2605
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2654
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2606
2655
  gpr_log(GPR_INFO,
2607
2656
  "chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
2608
2657
  chand_, this, idx);
@@ -2629,7 +2678,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
2629
2678
  GPR_ASSERT(error != GRPC_ERROR_NONE);
2630
2679
  GRPC_ERROR_UNREF(failure_error_);
2631
2680
  failure_error_ = error;
2632
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2681
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2633
2682
  size_t num_batches = 0;
2634
2683
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2635
2684
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2671,7 +2720,7 @@ void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner(
2671
2720
 
2672
2721
  // This is called via the call combiner, so access to calld is synchronized.
2673
2722
  void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
2674
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2723
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2675
2724
  size_t num_batches = 0;
2676
2725
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2677
2726
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2700,6 +2749,14 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
2700
2749
 
2701
2750
  void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2702
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
+ }
2703
2760
  // Handle call tracing.
2704
2761
  if (call_attempt_tracer_ != nullptr) {
2705
2762
  // Record send ops in tracer.
@@ -2763,7 +2820,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2763
2820
  // the channel's data plane mutex, which is more efficient (especially for
2764
2821
  // streaming calls).
2765
2822
  if (subchannel_call_ != nullptr) {
2766
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2823
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2767
2824
  gpr_log(GPR_INFO,
2768
2825
  "chand=%p lb_call=%p: starting batch on subchannel_call=%p",
2769
2826
  chand_, this, subchannel_call_.get());
@@ -2775,7 +2832,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2775
2832
  //
2776
2833
  // If we've previously been cancelled, immediately fail any new batches.
2777
2834
  if (GPR_UNLIKELY(cancel_error_ != GRPC_ERROR_NONE)) {
2778
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2835
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2779
2836
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
2780
2837
  chand_, this, grpc_error_std_string(cancel_error_).c_str());
2781
2838
  }
@@ -2793,7 +2850,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2793
2850
  // error to the caller when the first batch does get passed down.
2794
2851
  GRPC_ERROR_UNREF(cancel_error_);
2795
2852
  cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
2796
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2853
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2797
2854
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
2798
2855
  chand_, this, grpc_error_std_string(cancel_error_).c_str());
2799
2856
  }
@@ -2809,7 +2866,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2809
2866
  // For batches containing a send_initial_metadata op, acquire the
2810
2867
  // channel's data plane mutex to pick a subchannel.
2811
2868
  if (GPR_LIKELY(batch->send_initial_metadata)) {
2812
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2869
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2813
2870
  gpr_log(GPR_INFO,
2814
2871
  "chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
2815
2872
  chand_, this);
@@ -2817,7 +2874,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2817
2874
  PickSubchannel(this, GRPC_ERROR_NONE);
2818
2875
  } else {
2819
2876
  // For all other batches, release the call combiner.
2820
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2877
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2821
2878
  gpr_log(GPR_INFO,
2822
2879
  "chand=%p lb_call=%p: saved batch, yielding call combiner",
2823
2880
  chand_, this);
@@ -2830,6 +2887,12 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2830
2887
  void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
2831
2888
  void* arg, grpc_error_handle error) {
2832
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
+ }
2833
2896
  self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
2834
2897
  self->peer_string_);
2835
2898
  Closure::Run(DEBUG_LOCATION,
@@ -2840,6 +2903,11 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
2840
2903
  void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
2841
2904
  void* arg, grpc_error_handle error) {
2842
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
+ }
2843
2911
  if (error == GRPC_ERROR_NONE) {
2844
2912
  // recv_initial_metadata_flags is not populated for clients
2845
2913
  self->call_attempt_tracer_->RecordReceivedInitialMetadata(
@@ -2852,6 +2920,10 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
2852
2920
  void ClientChannel::LoadBalancedCall::RecvMessageReady(
2853
2921
  void* arg, grpc_error_handle error) {
2854
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
+ }
2855
2927
  if (*self->recv_message_ != nullptr) {
2856
2928
  self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
2857
2929
  }
@@ -2862,6 +2934,15 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
2862
2934
  void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2863
2935
  void* arg, grpc_error_handle error) {
2864
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
+ }
2865
2946
  // Check if we have a tracer or an LB callback to invoke.
2866
2947
  if (self->call_attempt_tracer_ != nullptr ||
2867
2948
  self->lb_subchannel_call_tracker_ != nullptr) {
@@ -2877,10 +2958,8 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2877
2958
  } else {
2878
2959
  // Get status from headers.
2879
2960
  const auto& md = *self->recv_trailing_metadata_;
2880
- const auto& fields = md.legacy_index()->named;
2881
- GPR_ASSERT(fields.grpc_status != nullptr);
2882
2961
  grpc_status_code code =
2883
- grpc_get_status_code_from_metadata(fields.grpc_status->md);
2962
+ md.get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
2884
2963
  if (code != GRPC_STATUS_OK) {
2885
2964
  absl::string_view message;
2886
2965
  if (const auto* grpc_message = md.get_pointer(GrpcMessageMetadata())) {
@@ -2889,22 +2968,7 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2889
2968
  status = absl::Status(static_cast<absl::StatusCode>(code), message);
2890
2969
  }
2891
2970
  }
2892
- // If we have a tracer, notify it.
2893
- if (self->call_attempt_tracer_ != nullptr) {
2894
- self->call_attempt_tracer_->RecordReceivedTrailingMetadata(
2895
- status, self->recv_trailing_metadata_,
2896
- *self->transport_stream_stats_);
2897
- }
2898
- // If the LB policy requested a callback for trailing metadata, invoke
2899
- // the callback.
2900
- if (self->lb_subchannel_call_tracker_ != nullptr) {
2901
- Metadata trailing_metadata(self, self->recv_trailing_metadata_);
2902
- BackendMetricAccessor backend_metric_accessor(self);
2903
- LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
2904
- status, &trailing_metadata, &backend_metric_accessor};
2905
- self->lb_subchannel_call_tracker_->Finish(args);
2906
- self->lb_subchannel_call_tracker_.reset();
2907
- }
2971
+ self->RecordCallCompletion(status);
2908
2972
  }
2909
2973
  // Chain to original callback.
2910
2974
  if (self->failure_error_ != GRPC_ERROR_NONE) {
@@ -2917,16 +2981,35 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2917
2981
  error);
2918
2982
  }
2919
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
+
2920
3003
  void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
2921
3004
  SubchannelCall::Args call_args = {
2922
- std::move(connected_subchannel_), pollent_, path_, /*start_time=*/0,
3005
+ std::move(connected_subchannel_), pollent_, path_.Ref(), /*start_time=*/0,
2923
3006
  deadline_, arena_,
2924
3007
  // TODO(roth): When we implement hedging support, we will probably
2925
3008
  // need to use a separate call context for each subchannel call.
2926
3009
  call_context_, call_combiner_};
2927
3010
  grpc_error_handle error = GRPC_ERROR_NONE;
2928
3011
  subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
2929
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3012
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2930
3013
  gpr_log(GPR_INFO,
2931
3014
  "chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
2932
3015
  this, subchannel_call_.get(), grpc_error_std_string(error).c_str());
@@ -2965,7 +3048,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
2965
3048
  auto* chand = lb_call->chand_;
2966
3049
  {
2967
3050
  MutexLock lock(&chand->data_plane_mu_);
2968
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3051
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2969
3052
  gpr_log(GPR_INFO,
2970
3053
  "chand=%p lb_call=%p: cancelling queued pick: "
2971
3054
  "error=%s self=%p calld->pick_canceller=%p",
@@ -2991,7 +3074,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
2991
3074
 
2992
3075
  void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
2993
3076
  if (!queued_pending_lb_pick_) return;
2994
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3077
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2995
3078
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
2996
3079
  chand_, this);
2997
3080
  }
@@ -3003,7 +3086,7 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
3003
3086
 
3004
3087
  void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
3005
3088
  if (queued_pending_lb_pick_) return;
3006
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3089
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3007
3090
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
3008
3091
  chand_, this);
3009
3092
  }
@@ -3024,7 +3107,7 @@ void ClientChannel::LoadBalancedCall::PickDone(void* arg,
3024
3107
  grpc_error_handle error) {
3025
3108
  auto* self = static_cast<LoadBalancedCall*>(arg);
3026
3109
  if (error != GRPC_ERROR_NONE) {
3027
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3110
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3028
3111
  gpr_log(GPR_INFO,
3029
3112
  "chand=%p lb_call=%p: failed to pick subchannel: error=%s",
3030
3113
  self->chand_, self, grpc_error_std_string(error).c_str());
@@ -3063,10 +3146,10 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3063
3146
  send_initial_metadata.send_initial_metadata_flags;
3064
3147
  // Perform LB pick.
3065
3148
  LoadBalancingPolicy::PickArgs pick_args;
3066
- pick_args.path = StringViewFromSlice(path_);
3149
+ pick_args.path = path_.as_string_view();
3067
3150
  LbCallState lb_call_state(this);
3068
3151
  pick_args.call_state = &lb_call_state;
3069
- Metadata initial_metadata(this, initial_metadata_batch);
3152
+ Metadata initial_metadata(initial_metadata_batch);
3070
3153
  pick_args.initial_metadata = &initial_metadata;
3071
3154
  auto result = chand_->picker_->Pick(pick_args);
3072
3155
  return HandlePickResult<bool>(
@@ -3074,7 +3157,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3074
3157
  // CompletePick
3075
3158
  [this](LoadBalancingPolicy::PickResult::Complete* complete_pick)
3076
3159
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3077
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3160
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3078
3161
  gpr_log(GPR_INFO,
3079
3162
  "chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
3080
3163
  chand_, this, complete_pick->subchannel.get());
@@ -3090,7 +3173,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3090
3173
  // yet seen that change and given us a new picker), then just
3091
3174
  // queue the pick. We'll try again as soon as we get a new picker.
3092
3175
  if (connected_subchannel_ == nullptr) {
3093
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3176
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3094
3177
  gpr_log(GPR_INFO,
3095
3178
  "chand=%p lb_call=%p: subchannel returned by LB picker "
3096
3179
  "has no connected subchannel; queueing pick",
@@ -3110,7 +3193,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3110
3193
  // QueuePick
3111
3194
  [this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/)
3112
3195
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3113
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3196
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3114
3197
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
3115
3198
  this);
3116
3199
  }
@@ -3121,7 +3204,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3121
3204
  [this, send_initial_metadata_flags,
3122
3205
  &error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
3123
3206
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3124
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3207
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3125
3208
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
3126
3209
  chand_, this, fail_pick->status.ToString().c_str());
3127
3210
  }
@@ -3145,7 +3228,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3145
3228
  // DropPick
3146
3229
  [this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick)
3147
3230
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3148
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3231
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3149
3232
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
3150
3233
  chand_, this, drop_pick->status.ToString().c_str());
3151
3234
  }