grpc 1.44.0.pre2 → 1.46.3

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 (1167) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +311 -191
  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 +26 -50
  7. data/include/grpc/impl/codegen/grpc_types.h +18 -21
  8. data/include/grpc/impl/codegen/port_platform.h +2 -2
  9. data/include/grpc/impl/codegen/slice.h +4 -1
  10. data/include/grpc/slice.h +0 -11
  11. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
  12. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
  13. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
  14. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +5 -5
  15. data/src/core/ext/filters/client_channel/backend_metric.cc +3 -3
  16. data/src/core/ext/filters/client_channel/backup_poller.cc +12 -8
  17. data/src/core/ext/filters/client_channel/channel_connectivity.cc +5 -5
  18. data/src/core/ext/filters/client_channel/client_channel.cc +242 -153
  19. data/src/core/ext/filters/client_channel/client_channel.h +32 -29
  20. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +5 -11
  21. data/src/core/ext/filters/client_channel/connector.h +1 -1
  22. data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -2
  23. data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
  24. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -22
  25. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -15
  26. data/src/core/ext/filters/client_channel/health/health_check_client.cc +124 -582
  27. data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
  28. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +9 -12
  29. data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
  30. data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +1 -0
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +68 -47
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +15 -15
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -4
  35. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +7 -3
  36. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +193 -148
  37. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -6
  38. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +120 -92
  39. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +88 -59
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +60 -52
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +51 -24
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +16 -8
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +245 -293
  44. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +7 -13
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +126 -278
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +18 -19
  47. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +62 -234
  48. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +8 -7
  49. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +82 -57
  50. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
  51. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
  52. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +35 -34
  53. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +135 -89
  54. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
  55. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
  56. data/src/core/ext/filters/client_channel/retry_filter.cc +236 -127
  57. data/src/core/ext/filters/client_channel/retry_service_config.cc +15 -17
  58. data/src/core/ext/filters/client_channel/retry_service_config.h +17 -11
  59. data/src/core/ext/filters/client_channel/retry_throttle.cc +9 -23
  60. data/src/core/ext/filters/client_channel/retry_throttle.h +11 -5
  61. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +7 -6
  62. data/src/core/ext/filters/client_channel/subchannel.cc +38 -41
  63. data/src/core/ext/filters/client_channel/subchannel.h +5 -4
  64. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
  65. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
  66. data/src/core/ext/filters/deadline/deadline_filter.cc +15 -14
  67. data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
  68. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +133 -367
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
  70. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  71. data/src/core/ext/filters/fault_injection/service_config_parser.h +9 -3
  72. data/src/core/ext/filters/http/client/http_client_filter.cc +79 -455
  73. data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
  74. data/src/core/ext/filters/http/client_authority_filter.cc +31 -79
  75. data/src/core/ext/filters/http/client_authority_filter.h +24 -5
  76. data/src/core/ext/filters/http/http_filters_plugin.cc +20 -18
  77. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +1 -0
  78. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +10 -2
  79. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -116
  80. data/src/core/ext/filters/message_size/message_size_filter.cc +26 -34
  81. data/src/core/ext/filters/message_size/message_size_filter.h +9 -2
  82. data/src/core/ext/filters/rbac/rbac_filter.cc +13 -8
  83. data/src/core/ext/filters/rbac/rbac_filter.h +2 -0
  84. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +6 -5
  85. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +6 -1
  86. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
  87. data/src/core/ext/filters/server_config_selector/server_config_selector.h +2 -2
  88. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +73 -200
  89. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +235 -0
  90. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +153 -10
  91. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -59
  92. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -2
  93. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -2
  94. data/src/core/ext/transport/chttp2/transport/flow_control.h +3 -3
  95. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -4
  96. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +5 -0
  97. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
  98. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +3 -8
  99. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
  100. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +15 -51
  101. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +2 -2
  102. data/src/core/ext/transport/chttp2/transport/internal.h +10 -8
  103. data/src/core/ext/transport/chttp2/transport/parsing.cc +11 -3
  104. data/src/core/ext/transport/chttp2/transport/writing.cc +34 -20
  105. data/src/core/ext/transport/inproc/inproc_transport.cc +16 -12
  106. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  107. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
  108. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  109. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
  110. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +182 -176
  111. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1248 -685
  112. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  113. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
  114. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  115. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
  116. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  117. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
  118. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  119. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
  120. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  121. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
  122. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  123. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
  124. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  125. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
  126. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +14 -12
  127. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +49 -16
  128. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +13 -11
  129. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +49 -23
  130. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +98 -96
  131. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +669 -386
  132. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +185 -173
  133. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1269 -664
  134. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +34 -26
  135. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +200 -91
  136. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +252 -238
  137. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1670 -827
  138. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +10 -8
  139. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +42 -24
  140. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +49 -27
  141. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +272 -99
  142. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  143. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
  144. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +54 -50
  145. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +354 -190
  146. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +11 -8
  147. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +45 -25
  148. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +157 -154
  149. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1068 -582
  150. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +87 -42
  151. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +525 -167
  152. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +9 -7
  153. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +38 -24
  154. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +11 -29
  155. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +41 -101
  156. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  157. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
  158. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +108 -104
  159. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +768 -410
  160. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +115 -84
  161. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +736 -349
  162. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +11 -9
  163. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +57 -31
  164. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +162 -108
  165. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +992 -397
  166. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +8 -6
  167. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +28 -17
  168. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +15 -13
  169. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +83 -49
  170. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +13 -11
  171. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +75 -34
  172. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +15 -13
  173. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +93 -49
  174. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +11 -9
  175. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +46 -26
  176. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +34 -32
  177. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +194 -109
  178. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +51 -48
  179. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +349 -190
  180. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +49 -47
  181. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +357 -188
  182. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +9 -7
  183. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +34 -21
  184. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +72 -61
  185. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +504 -260
  186. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +77 -69
  187. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +560 -301
  188. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +19 -15
  189. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +104 -49
  190. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +12 -10
  191. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +66 -41
  192. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  193. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
  194. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +58 -55
  195. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +413 -235
  196. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +62 -60
  197. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +406 -237
  198. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +82 -76
  199. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +562 -294
  200. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +37 -31
  201. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +271 -142
  202. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +503 -475
  203. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3642 -1901
  204. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +25 -19
  205. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +148 -72
  206. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
  207. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
  208. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  209. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
  210. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  211. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
  212. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +15 -13
  213. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +77 -46
  214. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  215. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
  216. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  217. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
  218. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  219. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
  220. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  221. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
  222. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  223. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  224. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  225. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
  226. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  227. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
  228. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +8 -6
  229. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +34 -24
  230. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +29 -27
  231. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +188 -113
  232. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +36 -34
  233. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +260 -132
  234. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +17 -14
  235. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +86 -49
  236. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +16 -14
  237. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +86 -43
  238. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +229 -198
  239. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1553 -734
  240. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +3 -1
  241. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -1
  242. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +87 -58
  243. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +554 -235
  244. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +26 -24
  245. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +156 -87
  246. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +98 -71
  247. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +622 -263
  248. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  249. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
  250. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +6 -4
  251. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +22 -16
  252. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +67 -65
  253. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +474 -256
  254. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +18 -16
  255. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +107 -62
  256. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +51 -49
  257. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +347 -186
  258. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  259. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
  260. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +20 -18
  261. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +124 -82
  262. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  263. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
  264. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +16 -14
  265. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +99 -57
  266. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +10 -8
  267. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +50 -31
  268. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +10 -8
  269. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +48 -27
  270. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +9 -7
  271. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +38 -24
  272. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +21 -19
  273. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +117 -69
  274. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +19 -17
  275. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +123 -65
  276. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +14 -12
  277. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +85 -53
  278. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +23 -21
  279. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +150 -83
  280. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +32 -30
  281. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +230 -146
  282. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +36 -34
  283. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +235 -131
  284. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  285. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
  286. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +3 -1
  287. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -1
  288. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  289. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
  290. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +13 -11
  291. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +62 -36
  292. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +19 -17
  293. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +98 -52
  294. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  295. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  296. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +10 -8
  297. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +40 -19
  298. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  299. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
  300. data/src/core/ext/upb-generated/google/api/annotations.upb.c +8 -6
  301. data/src/core/ext/upb-generated/google/api/annotations.upb.h +22 -6
  302. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +109 -103
  303. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +720 -382
  304. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +120 -112
  305. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +795 -402
  306. data/src/core/ext/upb-generated/google/api/http.upb.c +29 -27
  307. data/src/core/ext/upb-generated/google/api/http.upb.h +216 -115
  308. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  309. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
  310. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +9 -7
  311. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +38 -22
  312. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +291 -237
  313. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2076 -1030
  314. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +9 -7
  315. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +36 -20
  316. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +6 -4
  317. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +22 -16
  318. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +31 -29
  319. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +177 -93
  320. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +9 -7
  321. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +36 -20
  322. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +40 -38
  323. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +240 -149
  324. data/src/core/ext/upb-generated/google/rpc/status.upb.c +11 -9
  325. data/src/core/ext/upb-generated/google/rpc/status.upb.h +52 -30
  326. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  327. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
  328. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +21 -19
  329. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +103 -48
  330. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +102 -96
  331. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +685 -359
  332. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +16 -13
  333. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +76 -41
  334. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +12 -10
  335. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +56 -35
  336. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +57 -55
  337. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +383 -219
  338. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +22 -20
  339. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +115 -63
  340. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  341. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  342. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +36 -34
  343. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +189 -78
  344. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +14 -12
  345. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +53 -22
  346. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +7 -5
  347. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +15 -6
  348. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +14 -12
  349. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +55 -24
  350. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +13 -11
  351. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +49 -23
  352. data/src/core/ext/upb-generated/validate/validate.upb.c +339 -312
  353. data/src/core/ext/upb-generated/validate/validate.upb.h +2726 -1180
  354. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  355. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
  356. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  357. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
  358. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  359. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  360. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +34 -32
  361. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +171 -80
  362. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  363. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
  364. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +8 -6
  365. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +30 -19
  366. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +18 -16
  367. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +98 -55
  368. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +14 -12
  369. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +53 -30
  370. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  371. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
  372. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +12 -10
  373. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +55 -30
  374. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +20 -18
  375. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +130 -70
  376. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +12 -10
  377. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +58 -30
  378. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +23 -21
  379. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +101 -46
  380. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  381. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
  382. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  383. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
  384. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  385. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
  386. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +10 -8
  387. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +42 -24
  388. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  389. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  390. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  391. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  392. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +14 -12
  393. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +67 -67
  394. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  395. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  396. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  397. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  398. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  399. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  400. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  401. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  402. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  403. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  404. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  405. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  406. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  407. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  408. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +8 -6
  409. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
  410. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +8 -6
  411. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
  412. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +20 -17
  413. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
  414. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +248 -240
  415. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
  416. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +58 -51
  417. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
  418. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +385 -371
  419. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +76 -76
  420. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +14 -11
  421. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
  422. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +23 -16
  423. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
  424. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  425. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  426. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +15 -13
  427. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
  428. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +15 -12
  429. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
  430. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +85 -80
  431. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +73 -73
  432. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +138 -101
  433. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
  434. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +14 -12
  435. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
  436. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +22 -34
  437. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
  438. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  439. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  440. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +21 -18
  441. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
  442. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +177 -166
  443. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
  444. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +14 -12
  445. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
  446. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +250 -221
  447. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
  448. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +12 -9
  449. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
  450. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +14 -11
  451. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
  452. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +14 -11
  453. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
  454. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +18 -15
  455. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
  456. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +13 -11
  457. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
  458. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +18 -15
  459. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
  460. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +19 -16
  461. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +19 -19
  462. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +18 -15
  463. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
  464. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +14 -11
  465. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
  466. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +52 -45
  467. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +19 -19
  468. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +153 -147
  469. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
  470. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +19 -16
  471. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
  472. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +15 -12
  473. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
  474. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  475. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  476. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +17 -14
  477. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
  478. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +17 -14
  479. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +28 -28
  480. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +23 -21
  481. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +25 -25
  482. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +36 -27
  483. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
  484. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +826 -803
  485. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +160 -160
  486. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +52 -37
  487. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
  488. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  489. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  490. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  491. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  492. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  493. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  494. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +15 -12
  495. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
  496. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  497. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  498. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  499. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  500. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  501. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  502. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  503. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  504. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  505. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  506. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  507. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  508. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  509. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  510. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +15 -11
  511. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
  512. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +17 -14
  513. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
  514. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +18 -15
  515. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
  516. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +14 -11
  517. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +7 -7
  518. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +17 -13
  519. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
  520. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +197 -172
  521. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +63 -58
  522. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +15 -11
  523. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
  524. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +169 -140
  525. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +24 -19
  526. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +19 -16
  527. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
  528. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +217 -199
  529. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
  530. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  531. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  532. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +14 -11
  533. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
  534. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +17 -14
  535. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +22 -22
  536. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +16 -13
  537. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
  538. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +20 -17
  539. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
  540. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  541. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  542. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +13 -10
  543. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
  544. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  545. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  546. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +15 -12
  547. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
  548. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +15 -12
  549. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
  550. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +15 -12
  551. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
  552. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +15 -12
  553. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
  554. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +15 -12
  555. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
  556. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +15 -12
  557. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
  558. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +14 -12
  559. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
  560. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +16 -13
  561. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
  562. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +13 -10
  563. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
  564. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +14 -11
  565. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
  566. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  567. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  568. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +10 -8
  569. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
  570. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  571. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  572. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +12 -10
  573. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
  574. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +11 -8
  575. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
  576. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  577. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  578. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +11 -9
  579. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
  580. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  581. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  582. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +5 -5
  583. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
  584. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +6 -6
  585. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +40 -40
  586. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +6 -6
  587. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +43 -43
  588. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +3 -3
  589. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
  590. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  591. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  592. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +3 -3
  593. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
  594. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +3 -3
  595. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
  596. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +3 -3
  597. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
  598. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +3 -3
  599. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
  600. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +3 -3
  601. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
  602. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +3 -3
  603. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
  604. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +3 -3
  605. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
  606. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
  607. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
  608. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  609. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  610. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  611. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  612. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +4 -4
  613. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
  614. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +5 -5
  615. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
  616. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -4
  617. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
  618. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +4 -4
  619. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
  620. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +4 -4
  621. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
  622. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +6 -6
  623. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
  624. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  625. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  626. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  627. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  628. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  629. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  630. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +4 -4
  631. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +13 -13
  632. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  633. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  634. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +5 -5
  635. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
  636. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +7 -7
  637. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
  638. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +4 -4
  639. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
  640. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  641. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  642. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +6 -6
  643. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
  644. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +6 -6
  645. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
  646. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +6 -6
  647. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
  648. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  649. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  650. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  651. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  652. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  653. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  654. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +5 -5
  655. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +4 -4
  656. data/src/core/ext/xds/certificate_provider_store.cc +8 -0
  657. data/src/core/ext/xds/certificate_provider_store.h +9 -0
  658. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -4
  659. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  660. data/src/core/ext/xds/upb_utils.h +8 -6
  661. data/src/core/ext/xds/xds_api.cc +72 -35
  662. data/src/core/ext/xds/xds_api.h +4 -4
  663. data/src/core/ext/xds/xds_bootstrap.cc +37 -5
  664. data/src/core/ext/xds/xds_bootstrap.h +13 -0
  665. data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
  666. data/src/core/ext/xds/xds_certificate_provider.h +8 -0
  667. data/src/core/ext/xds/xds_channel_stack_modifier.cc +14 -17
  668. data/src/core/ext/xds/xds_channel_stack_modifier.h +4 -3
  669. data/src/core/ext/xds/xds_client.cc +220 -193
  670. data/src/core/ext/xds/xds_client.h +35 -19
  671. data/src/core/ext/xds/xds_client_stats.cc +15 -15
  672. data/src/core/ext/xds/xds_client_stats.h +5 -4
  673. data/src/core/ext/xds/xds_cluster.cc +18 -16
  674. data/src/core/ext/xds/xds_cluster.h +3 -6
  675. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  676. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  677. data/src/core/ext/xds/xds_common_types.cc +10 -10
  678. data/src/core/ext/xds/xds_common_types.h +8 -23
  679. data/src/core/ext/xds/xds_endpoint.cc +14 -7
  680. data/src/core/ext/xds/xds_endpoint.h +1 -1
  681. data/src/core/ext/xds/xds_http_fault_filter.cc +7 -7
  682. data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
  683. data/src/core/ext/xds/xds_http_filters.cc +6 -5
  684. data/src/core/ext/xds/xds_http_filters.h +4 -4
  685. data/src/core/ext/xds/xds_http_rbac_filter.cc +5 -5
  686. data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
  687. data/src/core/ext/xds/xds_listener.cc +15 -12
  688. data/src/core/ext/xds/xds_listener.h +1 -1
  689. data/src/core/ext/xds/xds_resource_type.h +1 -1
  690. data/src/core/ext/xds/xds_route_config.cc +175 -46
  691. data/src/core/ext/xds/xds_route_config.h +14 -11
  692. data/src/core/ext/xds/xds_routing.cc +1 -1
  693. data/src/core/ext/xds/xds_server_config_fetcher.cc +20 -24
  694. data/src/core/lib/avl/avl.h +68 -5
  695. data/src/core/lib/backoff/backoff.cc +7 -10
  696. data/src/core/lib/backoff/backoff.h +8 -8
  697. data/src/core/lib/channel/call_finalization.h +86 -0
  698. data/src/core/lib/channel/call_tracer.h +4 -1
  699. data/src/core/lib/channel/channel_args.cc +161 -22
  700. data/src/core/lib/channel/channel_args.h +210 -7
  701. data/src/core/lib/channel/channel_args_preconditioning.cc +3 -8
  702. data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
  703. data/src/core/lib/channel/channel_stack.cc +2 -3
  704. data/src/core/lib/channel/channel_stack.h +38 -5
  705. data/src/core/lib/channel/channel_stack_builder.cc +23 -266
  706. data/src/core/lib/channel/channel_stack_builder.h +118 -146
  707. data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
  708. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  709. data/src/core/lib/channel/channel_trace.cc +3 -6
  710. data/src/core/lib/channel/connected_channel.cc +9 -4
  711. data/src/core/lib/channel/connected_channel.h +2 -1
  712. data/src/core/lib/channel/context.h +11 -0
  713. data/src/core/lib/channel/handshaker.cc +1 -1
  714. data/src/core/lib/channel/handshaker.h +1 -1
  715. data/src/core/lib/channel/promise_based_filter.cc +1002 -0
  716. data/src/core/lib/channel/promise_based_filter.h +437 -0
  717. data/src/core/lib/compression/compression.cc +1 -1
  718. data/src/core/lib/compression/compression_internal.cc +2 -8
  719. data/src/core/lib/config/core_configuration.cc +8 -2
  720. data/src/core/lib/config/core_configuration.h +39 -0
  721. data/src/core/lib/debug/stats_data.cc +2 -6
  722. data/src/core/lib/debug/stats_data.h +18 -21
  723. data/src/core/{ext/filters/max_age/max_age_filter.h → lib/event_engine/default_event_engine_factory.cc} +11 -10
  724. data/src/core/lib/event_engine/event_engine.cc +23 -8
  725. data/src/core/lib/event_engine/event_engine_factory.h +3 -0
  726. data/src/core/lib/event_engine/memory_allocator.cc +9 -13
  727. data/src/core/lib/event_engine/{event_engine_factory.cc → resolved_address.cc} +10 -20
  728. data/src/core/lib/gpr/sync_posix.cc +1 -0
  729. data/src/core/lib/gpr/time.cc +2 -1
  730. data/src/core/lib/gpr/tls.h +1 -0
  731. data/src/core/lib/gpr/useful.h +14 -0
  732. data/src/core/lib/gprpp/bitset.h +12 -0
  733. data/src/core/lib/gprpp/capture.h +76 -0
  734. data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
  735. data/src/core/lib/gprpp/debug_location.h +2 -0
  736. data/src/core/lib/gprpp/match.h +73 -0
  737. data/src/core/lib/gprpp/overload.h +59 -0
  738. data/src/core/lib/gprpp/ref_counted.h +2 -0
  739. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  740. data/src/core/lib/gprpp/status_helper.cc +30 -14
  741. data/src/core/lib/gprpp/status_helper.h +4 -4
  742. data/src/core/lib/gprpp/time.cc +198 -0
  743. data/src/core/lib/gprpp/time.h +292 -0
  744. data/src/core/lib/http/format_request.cc +28 -25
  745. data/src/core/lib/http/format_request.h +7 -6
  746. data/src/core/lib/http/httpcli.cc +306 -229
  747. data/src/core/lib/http/httpcli.h +182 -77
  748. data/src/core/lib/http/httpcli_security_connector.cc +64 -75
  749. data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
  750. data/src/core/lib/http/parser.cc +80 -9
  751. data/src/core/lib/http/parser.h +15 -2
  752. data/src/core/lib/iomgr/buffer_list.h +5 -5
  753. data/src/core/lib/iomgr/error.cc +13 -12
  754. data/src/core/lib/iomgr/error.h +0 -5
  755. data/src/core/lib/iomgr/ev_apple.cc +6 -5
  756. data/src/core/lib/iomgr/ev_epoll1_linux.cc +8 -7
  757. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -7
  758. data/src/core/lib/iomgr/ev_posix.cc +9 -10
  759. data/src/core/lib/iomgr/ev_posix.h +1 -1
  760. data/src/core/lib/iomgr/event_engine/pollset.cc +2 -3
  761. data/src/core/lib/iomgr/event_engine/resolver.cc +1 -1
  762. data/src/core/lib/iomgr/event_engine/tcp.cc +4 -3
  763. data/src/core/lib/iomgr/event_engine/timer.cc +3 -4
  764. data/src/core/lib/iomgr/exec_ctx.cc +3 -88
  765. data/src/core/lib/iomgr/exec_ctx.h +7 -23
  766. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  767. data/src/core/lib/iomgr/iocp_windows.cc +9 -9
  768. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  769. data/src/core/lib/iomgr/polling_entity.h +6 -0
  770. data/src/core/lib/iomgr/pollset.cc +1 -1
  771. data/src/core/lib/iomgr/pollset.h +4 -4
  772. data/src/core/lib/iomgr/pollset_windows.cc +2 -2
  773. data/src/core/lib/iomgr/port.h +4 -9
  774. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -1
  775. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
  776. data/src/core/lib/iomgr/socket_utils_common_posix.cc +0 -17
  777. data/src/core/lib/iomgr/tcp_client.cc +1 -1
  778. data/src/core/lib/iomgr/tcp_client.h +3 -2
  779. data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -1
  780. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -4
  781. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  782. data/src/core/lib/iomgr/tcp_client_windows.cc +1 -1
  783. data/src/core/lib/iomgr/tcp_posix.cc +95 -36
  784. data/src/core/lib/iomgr/tcp_server_posix.cc +26 -17
  785. data/src/core/lib/iomgr/tcp_windows.cc +17 -10
  786. data/src/core/lib/iomgr/timer.cc +2 -2
  787. data/src/core/lib/iomgr/timer.h +11 -6
  788. data/src/core/lib/iomgr/timer_generic.cc +96 -77
  789. data/src/core/lib/iomgr/timer_manager.cc +15 -14
  790. data/src/core/lib/iomgr/work_serializer.cc +15 -10
  791. data/src/core/lib/json/json_util.cc +4 -4
  792. data/src/core/lib/json/json_util.h +5 -5
  793. data/src/core/lib/promise/activity.cc +14 -8
  794. data/src/core/lib/promise/activity.h +143 -131
  795. data/src/core/lib/promise/arena_promise.h +188 -0
  796. data/src/core/lib/promise/call_push_pull.h +144 -0
  797. data/src/core/lib/promise/detail/basic_seq.h +92 -3
  798. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  799. data/src/core/lib/promise/detail/status.h +2 -1
  800. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  801. data/src/core/lib/promise/latch.h +104 -0
  802. data/src/core/lib/promise/loop.h +34 -8
  803. data/src/core/lib/promise/poll.h +6 -0
  804. data/src/core/lib/promise/promise.h +95 -0
  805. data/src/core/lib/promise/seq.h +19 -1
  806. data/src/core/lib/promise/sleep.cc +74 -0
  807. data/src/core/lib/promise/sleep.h +66 -0
  808. data/src/core/lib/promise/try_seq.h +157 -0
  809. data/src/core/lib/resolver/resolver_factory.h +22 -26
  810. data/src/core/lib/resolver/resolver_registry.cc +98 -137
  811. data/src/core/lib/resolver/resolver_registry.h +59 -33
  812. data/src/core/lib/resource_quota/api.cc +5 -30
  813. data/src/core/lib/resource_quota/api.h +1 -1
  814. data/src/core/lib/resource_quota/memory_quota.cc +118 -94
  815. data/src/core/lib/resource_quota/memory_quota.h +100 -64
  816. data/src/core/lib/resource_quota/resource_quota.h +8 -0
  817. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  818. data/src/core/lib/security/authorization/evaluate_args.cc +1 -11
  819. data/src/core/lib/security/authorization/evaluate_args.h +0 -1
  820. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +106 -0
  821. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
  822. data/src/core/lib/security/authorization/matchers.cc +5 -5
  823. data/src/core/lib/security/authorization/matchers.h +2 -2
  824. data/src/core/lib/security/authorization/rbac_policy.cc +3 -3
  825. data/src/core/lib/security/authorization/rbac_policy.h +3 -2
  826. data/src/core/lib/security/context/security_context.h +8 -1
  827. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
  828. data/src/core/lib/security/credentials/alts/alts_credentials.h +10 -0
  829. data/src/core/lib/security/credentials/call_creds_util.cc +87 -0
  830. data/src/core/lib/security/credentials/call_creds_util.h +42 -0
  831. data/src/core/lib/security/credentials/channel_creds_registry.h +97 -0
  832. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
  833. data/src/core/lib/security/credentials/composite/composite_credentials.cc +24 -83
  834. data/src/core/lib/security/credentials/composite/composite_credentials.h +23 -11
  835. data/src/core/lib/security/credentials/credentials.cc +2 -3
  836. data/src/core/lib/security/credentials/credentials.h +70 -66
  837. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +46 -27
  838. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  839. data/src/core/lib/security/credentials/external/external_account_credentials.cc +49 -29
  840. data/src/core/lib/security/credentials/external/external_account_credentials.h +4 -3
  841. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -1
  842. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +33 -12
  843. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -0
  844. data/src/core/lib/security/credentials/fake/fake_credentials.cc +23 -28
  845. data/src/core/lib/security/credentials/fake/fake_credentials.h +16 -16
  846. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +19 -9
  847. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -3
  848. data/src/core/lib/security/credentials/iam/iam_credentials.cc +15 -19
  849. data/src/core/lib/security/credentials/iam/iam_credentials.h +14 -9
  850. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +25 -26
  851. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  852. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +23 -23
  853. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +13 -9
  854. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -30
  855. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  856. data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
  857. data/src/core/lib/security/credentials/local/local_credentials.h +10 -0
  858. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +128 -128
  859. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +57 -28
  860. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +96 -151
  861. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -28
  862. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +6 -4
  863. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -3
  864. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +49 -0
  865. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -0
  866. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +42 -3
  867. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +19 -0
  868. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -86
  869. data/src/core/lib/security/credentials/tls/tls_credentials.cc +9 -6
  870. data/src/core/lib/security/credentials/tls/tls_credentials.h +6 -0
  871. data/src/core/lib/security/credentials/xds/xds_credentials.cc +48 -50
  872. data/src/core/lib/security/credentials/xds/xds_credentials.h +36 -5
  873. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +8 -14
  874. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +1 -1
  875. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +4 -12
  876. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +0 -2
  877. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +6 -16
  878. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +4 -9
  879. data/src/core/lib/security/security_connector/local/local_security_connector.cc +10 -18
  880. data/src/core/lib/security/security_connector/security_connector.cc +3 -11
  881. data/src/core/lib/security/security_connector/security_connector.h +20 -20
  882. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +10 -13
  883. data/src/core/lib/security/security_connector/ssl_utils.cc +15 -7
  884. data/src/core/lib/security/security_connector/ssl_utils.h +8 -3
  885. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -16
  886. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +6 -6
  887. data/src/core/lib/security/transport/auth_filters.h +31 -5
  888. data/src/core/lib/security/transport/client_auth_filter.cc +90 -373
  889. data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
  890. data/src/core/lib/security/transport/secure_endpoint.h +1 -1
  891. data/src/core/lib/security/transport/security_handshaker.cc +20 -10
  892. data/src/core/lib/security/transport/server_auth_filter.cc +1 -0
  893. data/src/core/lib/service_config/service_config.h +6 -51
  894. data/src/core/lib/service_config/{service_config.cc → service_config_impl.cc} +19 -16
  895. data/src/core/lib/service_config/service_config_impl.h +125 -0
  896. data/src/core/lib/service_config/service_config_parser.cc +30 -26
  897. data/src/core/lib/service_config/service_config_parser.h +36 -27
  898. data/src/core/lib/slice/slice.cc +76 -181
  899. data/src/core/lib/slice/slice.h +28 -15
  900. data/src/core/lib/slice/slice_internal.h +12 -30
  901. data/src/core/lib/slice/slice_refcount.cc +18 -0
  902. data/src/core/lib/slice/slice_refcount.h +2 -72
  903. data/src/core/lib/slice/slice_refcount_base.h +16 -120
  904. data/src/core/lib/surface/builtins.cc +6 -6
  905. data/src/core/lib/surface/call.cc +1026 -899
  906. data/src/core/lib/surface/call.h +1 -15
  907. data/src/core/lib/surface/channel.cc +28 -32
  908. data/src/core/lib/surface/channel.h +6 -7
  909. data/src/core/lib/surface/channel_init.cc +2 -3
  910. data/src/core/lib/surface/channel_init.h +3 -7
  911. data/src/core/lib/surface/completion_queue.cc +10 -9
  912. data/src/core/lib/surface/init.cc +78 -7
  913. data/src/core/lib/surface/init.h +0 -2
  914. data/src/core/lib/surface/lame_client.cc +2 -1
  915. data/src/core/lib/surface/server.cc +14 -36
  916. data/src/core/lib/surface/server.h +4 -5
  917. data/src/core/lib/surface/version.cc +2 -2
  918. data/src/core/lib/transport/bdp_estimator.cc +9 -10
  919. data/src/core/lib/transport/bdp_estimator.h +2 -2
  920. data/src/core/lib/transport/byte_stream.cc +2 -0
  921. data/src/core/lib/transport/error_utils.cc +5 -3
  922. data/src/core/lib/transport/error_utils.h +2 -15
  923. data/src/core/lib/transport/metadata_batch.h +286 -104
  924. data/src/core/lib/transport/parsed_metadata.h +33 -17
  925. data/src/core/lib/transport/status_conversion.cc +2 -2
  926. data/src/core/lib/transport/status_conversion.h +1 -1
  927. data/src/core/lib/transport/timeout_encoding.cc +32 -29
  928. data/src/core/lib/transport/timeout_encoding.h +3 -3
  929. data/src/core/lib/transport/transport.cc +3 -1
  930. data/src/core/lib/transport/transport.h +102 -2
  931. data/src/core/lib/transport/transport_impl.h +14 -0
  932. data/src/core/lib/transport/transport_op_string.cc +5 -14
  933. data/src/core/lib/uri/uri_parser.cc +4 -0
  934. data/src/core/lib/uri/uri_parser.h +1 -0
  935. data/src/core/plugin_registry/grpc_plugin_registry.cc +21 -92
  936. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  937. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +26 -21
  938. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  939. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +21 -13
  940. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  941. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  942. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -2
  943. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  944. data/src/core/tsi/local_transport_security.cc +3 -11
  945. data/src/core/tsi/local_transport_security.h +1 -4
  946. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  947. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  948. data/src/core/tsi/ssl_transport_security.cc +127 -39
  949. data/src/core/tsi/ssl_transport_security.h +28 -2
  950. data/src/core/tsi/transport_security_interface.h +2 -0
  951. data/src/ruby/ext/grpc/extconf.rb +1 -1
  952. data/src/ruby/ext/grpc/rb_channel.c +5 -2
  953. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +18 -24
  954. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +27 -36
  955. data/src/ruby/ext/grpc/rb_server.c +7 -4
  956. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  957. data/src/ruby/lib/grpc/grpc.rb +1 -1
  958. data/src/ruby/lib/grpc/version.rb +1 -1
  959. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  960. data/src/ruby/pb/test/client.rb +769 -0
  961. data/src/ruby/pb/test/server.rb +252 -0
  962. data/src/ruby/pb/test/xds_client.rb +415 -0
  963. data/third_party/cares/cares/{ares.h → include/ares.h} +73 -1
  964. data/third_party/cares/cares/{ares_dns.h → include/ares_dns.h} +9 -0
  965. data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  966. data/third_party/cares/cares/{ares_version.h → include/ares_version.h} +3 -3
  967. data/third_party/cares/cares/{ares__close_sockets.c → src/lib/ares__close_sockets.c} +2 -2
  968. data/third_party/cares/cares/{ares__get_hostent.c → src/lib/ares__get_hostent.c} +1 -2
  969. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  970. data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  971. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  972. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  973. data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  974. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  975. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  976. data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  977. data/third_party/cares/cares/{ares_create_query.c → src/lib/ares_create_query.c} +8 -17
  978. data/third_party/cares/cares/{ares_data.c → src/lib/ares_data.c} +18 -0
  979. data/third_party/cares/cares/{ares_data.h → src/lib/ares_data.h} +2 -0
  980. data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  981. data/third_party/cares/cares/{ares_expand_name.c → src/lib/ares_expand_name.c} +114 -23
  982. data/third_party/cares/cares/{ares_expand_string.c → src/lib/ares_expand_string.c} +2 -5
  983. data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  984. data/third_party/cares/cares/{ares_free_hostent.c → src/lib/ares_free_hostent.c} +6 -4
  985. data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  986. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  987. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  988. data/third_party/cares/cares/{ares_getenv.c → src/lib/ares_getenv.c} +0 -2
  989. data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  990. data/third_party/cares/cares/{ares_gethostbyaddr.c → src/lib/ares_gethostbyaddr.c} +2 -9
  991. data/third_party/cares/cares/{ares_gethostbyname.c → src/lib/ares_gethostbyname.c} +25 -20
  992. data/third_party/cares/cares/{ares_getnameinfo.c → src/lib/ares_getnameinfo.c} +4 -10
  993. data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  994. data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  995. data/third_party/cares/cares/{ares_init.c → src/lib/ares_init.c} +79 -40
  996. data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  997. data/third_party/cares/cares/{ares_ipv6.h → src/lib/ares_ipv6.h} +7 -0
  998. data/third_party/cares/cares/{ares_library_init.c → src/lib/ares_library_init.c} +7 -2
  999. data/third_party/cares/cares/{ares_library_init.h → src/lib/ares_library_init.h} +1 -1
  1000. data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  1001. data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  1002. data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  1003. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  1004. data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  1005. data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  1006. data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  1007. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  1008. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  1009. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  1010. data/third_party/cares/cares/{ares_parse_mx_reply.c → src/lib/ares_parse_mx_reply.c} +2 -8
  1011. data/third_party/cares/cares/{ares_parse_naptr_reply.c → src/lib/ares_parse_naptr_reply.c} +2 -13
  1012. data/third_party/cares/cares/{ares_parse_ns_reply.c → src/lib/ares_parse_ns_reply.c} +5 -11
  1013. data/third_party/cares/cares/{ares_parse_ptr_reply.c → src/lib/ares_parse_ptr_reply.c} +53 -46
  1014. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  1015. data/third_party/cares/cares/{ares_parse_srv_reply.c → src/lib/ares_parse_srv_reply.c} +2 -13
  1016. data/third_party/cares/cares/{ares_parse_txt_reply.c → src/lib/ares_parse_txt_reply.c} +3 -9
  1017. data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  1018. data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  1019. data/third_party/cares/cares/{ares_private.h → src/lib/ares_private.h} +52 -11
  1020. data/third_party/cares/cares/{ares_process.c → src/lib/ares_process.c} +127 -52
  1021. data/third_party/cares/cares/{ares_query.c → src/lib/ares_query.c} +3 -9
  1022. data/third_party/cares/cares/{ares_search.c → src/lib/ares_search.c} +5 -7
  1023. data/third_party/cares/cares/{ares_send.c → src/lib/ares_send.c} +2 -8
  1024. data/third_party/cares/cares/{ares_setup.h → src/lib/ares_setup.h} +4 -1
  1025. data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  1026. data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  1027. data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  1028. data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  1029. data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  1030. data/third_party/cares/cares/{ares_strsplit.c → src/lib/ares_strsplit.c} +4 -0
  1031. data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  1032. data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  1033. data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  1034. data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  1035. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  1036. data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  1037. data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  1038. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  1039. data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  1040. data/third_party/cares/cares/{inet_net_pton.c → src/lib/inet_net_pton.c} +2 -8
  1041. data/third_party/cares/cares/{inet_ntop.c → src/lib/inet_ntop.c} +2 -8
  1042. data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  1043. data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
  1044. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  1045. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  1046. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  1047. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  1048. data/third_party/upb/upb/decode.c +542 -319
  1049. data/third_party/upb/upb/decode.h +43 -17
  1050. data/third_party/upb/upb/decode_fast.c +303 -301
  1051. data/third_party/upb/upb/decode_fast.h +18 -18
  1052. data/third_party/upb/upb/decode_internal.h +73 -56
  1053. data/third_party/upb/upb/def.c +1926 -1078
  1054. data/third_party/upb/upb/def.h +329 -288
  1055. data/third_party/upb/upb/def.hpp +129 -172
  1056. data/third_party/upb/upb/encode.c +208 -175
  1057. data/third_party/upb/upb/encode.h +15 -17
  1058. data/third_party/upb/upb/json_encode.c +776 -0
  1059. data/third_party/upb/upb/json_encode.h +62 -0
  1060. data/third_party/upb/upb/msg.c +142 -124
  1061. data/third_party/upb/upb/msg.h +39 -33
  1062. data/third_party/upb/upb/msg_internal.h +342 -280
  1063. data/third_party/upb/upb/port_def.inc +8 -0
  1064. data/third_party/upb/upb/port_undef.inc +1 -0
  1065. data/third_party/upb/upb/reflection.c +239 -199
  1066. data/third_party/upb/upb/reflection.h +87 -67
  1067. data/third_party/upb/upb/reflection.hpp +6 -6
  1068. data/third_party/upb/upb/table.c +231 -147
  1069. data/third_party/upb/upb/table_internal.h +129 -95
  1070. data/third_party/upb/upb/text_encode.c +113 -90
  1071. data/third_party/upb/upb/text_encode.h +10 -10
  1072. data/third_party/upb/upb/upb.c +111 -72
  1073. data/third_party/upb/upb/upb.h +157 -151
  1074. data/third_party/upb/upb/upb.hpp +31 -28
  1075. data/third_party/upb/upb/upb_internal.h +21 -11
  1076. data/third_party/zlib/crc32.c +966 -292
  1077. data/third_party/zlib/crc32.h +9441 -436
  1078. data/third_party/zlib/deflate.c +78 -30
  1079. data/third_party/zlib/deflate.h +12 -15
  1080. data/third_party/zlib/gzguts.h +3 -2
  1081. data/third_party/zlib/gzlib.c +5 -3
  1082. data/third_party/zlib/gzread.c +5 -7
  1083. data/third_party/zlib/gzwrite.c +25 -13
  1084. data/third_party/zlib/infback.c +2 -1
  1085. data/third_party/zlib/inffast.c +14 -14
  1086. data/third_party/zlib/inflate.c +39 -8
  1087. data/third_party/zlib/inflate.h +3 -2
  1088. data/third_party/zlib/inftrees.c +3 -3
  1089. data/third_party/zlib/trees.c +27 -48
  1090. data/third_party/zlib/zlib.h +123 -100
  1091. data/third_party/zlib/zutil.c +2 -2
  1092. data/third_party/zlib/zutil.h +12 -9
  1093. metadata +337 -185
  1094. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
  1095. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -83
  1096. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -264
  1097. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -560
  1098. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -122
  1099. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -92
  1100. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -192
  1101. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -52
  1102. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -79
  1103. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -125
  1104. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -36
  1105. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -38
  1106. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -64
  1107. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -38
  1108. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -64
  1109. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -38
  1110. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -64
  1111. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -38
  1112. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -64
  1113. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -38
  1114. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -64
  1115. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +0 -102
  1116. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +0 -306
  1117. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +0 -56
  1118. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +0 -135
  1119. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +0 -115
  1120. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +0 -371
  1121. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -67
  1122. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
  1123. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -68
  1124. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
  1125. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -67
  1126. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
  1127. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -75
  1128. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
  1129. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -69
  1130. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
  1131. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +0 -58
  1132. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +0 -55
  1133. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +0 -44
  1134. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +0 -40
  1135. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +0 -75
  1136. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +0 -55
  1137. data/src/core/ext/xds/xds_channel_creds.cc +0 -108
  1138. data/src/core/ext/xds/xds_channel_creds.h +0 -50
  1139. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1654
  1140. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  1141. data/src/core/lib/iomgr/iomgr_custom.cc +0 -82
  1142. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  1143. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  1144. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  1145. data/src/core/lib/iomgr/pollset_custom.cc +0 -105
  1146. data/src/core/lib/iomgr/pollset_custom.h +0 -37
  1147. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -47
  1148. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  1149. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -191
  1150. data/src/core/lib/iomgr/resolve_address_custom.h +0 -126
  1151. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  1152. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -146
  1153. data/src/core/lib/iomgr/tcp_custom.cc +0 -350
  1154. data/src/core/lib/iomgr/tcp_custom.h +0 -85
  1155. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -457
  1156. data/src/core/lib/iomgr/timer_custom.cc +0 -96
  1157. data/src/core/lib/iomgr/timer_custom.h +0 -43
  1158. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +0 -173
  1159. data/src/core/lib/security/authorization/sdk_server_authz_filter.h +0 -67
  1160. data/src/core/lib/slice/slice_intern.cc +0 -269
  1161. data/src/core/lib/slice/slice_utils.h +0 -200
  1162. data/src/core/lib/surface/init_secure.cc +0 -103
  1163. data/third_party/cares/cares/ares_getopt.c +0 -122
  1164. data/third_party/cares/cares/ares_getopt.h +0 -53
  1165. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  1166. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  1167. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
@@ -54,6 +54,7 @@
54
54
  #include "src/core/ext/filters/deadline/deadline_filter.h"
55
55
  #include "src/core/lib/backoff/backoff.h"
56
56
  #include "src/core/lib/channel/channel_args.h"
57
+ #include "src/core/lib/channel/channel_stack.h"
57
58
  #include "src/core/lib/channel/connected_channel.h"
58
59
  #include "src/core/lib/channel/status_util.h"
59
60
  #include "src/core/lib/gpr/string.h"
@@ -63,8 +64,8 @@
63
64
  #include "src/core/lib/iomgr/work_serializer.h"
64
65
  #include "src/core/lib/profiling/timers.h"
65
66
  #include "src/core/lib/resolver/resolver_registry.h"
66
- #include "src/core/lib/service_config/service_config.h"
67
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"
@@ -85,8 +86,9 @@ using internal::ClientChannelGlobalParsedConfig;
85
86
  using internal::ClientChannelMethodParsedConfig;
86
87
  using internal::ClientChannelServiceConfigParser;
87
88
 
89
+ TraceFlag grpc_client_channel_trace(false, "client_channel");
88
90
  TraceFlag grpc_client_channel_call_trace(false, "client_channel_call");
89
- TraceFlag grpc_client_channel_routing_trace(false, "client_channel_routing");
91
+ TraceFlag grpc_client_channel_lb_call_trace(false, "client_channel_lb_call");
90
92
 
91
93
  //
92
94
  // ClientChannel::CallData definition
@@ -175,8 +177,6 @@ class ClientChannel::CallData {
175
177
 
176
178
  static void RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
177
179
  void* arg, grpc_error_handle error);
178
- void InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
179
- grpc_transport_stream_op_batch* batch);
180
180
 
181
181
  void CreateDynamicCall(grpc_call_element* elem);
182
182
 
@@ -190,7 +190,7 @@ class ClientChannel::CallData {
190
190
 
191
191
  grpc_slice path_; // Request path.
192
192
  gpr_cycle_counter call_start_time_;
193
- grpc_millis deadline_;
193
+ Timestamp deadline_;
194
194
  Arena* arena_;
195
195
  grpc_call_stack* owning_call_;
196
196
  CallCombiner* call_combiner_;
@@ -233,6 +233,7 @@ class ClientChannel::CallData {
233
233
 
234
234
  const grpc_channel_filter ClientChannel::kFilterVtable = {
235
235
  ClientChannel::CallData::StartTransportStreamOpBatch,
236
+ nullptr,
236
237
  ClientChannel::StartTransportOp,
237
238
  sizeof(ClientChannel::CallData),
238
239
  ClientChannel::CallData::Init,
@@ -353,7 +354,7 @@ class DynamicTerminationFilter::CallData {
353
354
  args, pollent, nullptr,
354
355
  service_config_call_data->call_dispatch_controller(),
355
356
  /*is_transparent_retry=*/false);
356
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
357
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
357
358
  gpr_log(GPR_INFO,
358
359
  "chand=%p dynamic_termination_calld=%p: create lb_call=%p", chand,
359
360
  client_channel, calld->lb_call_.get());
@@ -372,7 +373,7 @@ class DynamicTerminationFilter::CallData {
372
373
  ~CallData() { grpc_slice_unref_internal(path_); }
373
374
 
374
375
  grpc_slice path_; // Request path.
375
- grpc_millis deadline_;
376
+ Timestamp deadline_;
376
377
  Arena* arena_;
377
378
  grpc_call_stack* owning_call_;
378
379
  CallCombiner* call_combiner_;
@@ -383,6 +384,7 @@ class DynamicTerminationFilter::CallData {
383
384
 
384
385
  const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
385
386
  DynamicTerminationFilter::CallData::StartTransportStreamOpBatch,
387
+ nullptr,
386
388
  DynamicTerminationFilter::StartTransportOp,
387
389
  sizeof(DynamicTerminationFilter::CallData),
388
390
  DynamicTerminationFilter::CallData::Init,
@@ -408,14 +410,14 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
408
410
  }
409
411
 
410
412
  ~ResolverResultHandler() override {
411
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
413
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
412
414
  gpr_log(GPR_INFO, "chand=%p: resolver shutdown complete", chand_);
413
415
  }
414
416
  GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ResolverResultHandler");
415
417
  }
416
418
 
417
419
  void ReportResult(Resolver::Result result) override
418
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
420
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
419
421
  chand_->OnResolverResultChangedLocked(std::move(result));
420
422
  }
421
423
 
@@ -439,14 +441,13 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
439
441
  public:
440
442
  SubchannelWrapper(ClientChannel* chand, RefCountedPtr<Subchannel> subchannel,
441
443
  absl::optional<std::string> health_check_service_name)
442
- : SubchannelInterface(
443
- GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
444
- ? "SubchannelWrapper"
445
- : nullptr),
444
+ : SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
445
+ ? "SubchannelWrapper"
446
+ : nullptr),
446
447
  chand_(chand),
447
448
  subchannel_(std::move(subchannel)),
448
449
  health_check_service_name_(std::move(health_check_service_name)) {
449
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
450
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
450
451
  gpr_log(GPR_INFO,
451
452
  "chand=%p: creating subchannel wrapper %p for subchannel %p",
452
453
  chand, this, subchannel_.get());
@@ -468,7 +469,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
468
469
  }
469
470
 
470
471
  ~SubchannelWrapper() override {
471
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
472
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
472
473
  gpr_log(GPR_INFO,
473
474
  "chand=%p: destroying subchannel wrapper %p for subchannel %p",
474
475
  chand_, this, subchannel_.get());
@@ -497,7 +498,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
497
498
  void WatchConnectivityState(
498
499
  grpc_connectivity_state initial_state,
499
500
  std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
500
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
501
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
501
502
  auto& watcher_wrapper = watcher_map_[watcher.get()];
502
503
  GPR_ASSERT(watcher_wrapper == nullptr);
503
504
  watcher_wrapper = new WatcherWrapper(std::move(watcher),
@@ -510,7 +511,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
510
511
  }
511
512
 
512
513
  void CancelConnectivityStateWatch(ConnectivityStateWatcherInterface* watcher)
513
- override ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
514
+ override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
514
515
  auto it = watcher_map_.find(watcher);
515
516
  GPR_ASSERT(it != watcher_map_.end());
516
517
  subchannel_->CancelConnectivityStateWatch(health_check_service_name_,
@@ -563,15 +564,15 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
563
564
  ~WatcherWrapper() override {
564
565
  auto* parent = parent_.release(); // ref owned by lambda
565
566
  parent->chand_->work_serializer_->Run(
566
- [parent]()
567
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_->chand_->work_serializer_) {
568
- parent->Unref(DEBUG_LOCATION, "WatcherWrapper");
569
- },
567
+ [parent]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
568
+ *parent_->chand_->work_serializer_) {
569
+ parent->Unref(DEBUG_LOCATION, "WatcherWrapper");
570
+ },
570
571
  DEBUG_LOCATION);
571
572
  }
572
573
 
573
574
  void OnConnectivityStateChange() override {
574
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
575
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
575
576
  gpr_log(GPR_INFO,
576
577
  "chand=%p: connectivity change for subchannel wrapper %p "
577
578
  "subchannel %p; hopping into work_serializer",
@@ -579,11 +580,11 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
579
580
  }
580
581
  Ref().release(); // ref owned by lambda
581
582
  parent_->chand_->work_serializer_->Run(
582
- [this]()
583
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_->chand_->work_serializer_) {
584
- ApplyUpdateInControlPlaneWorkSerializer();
585
- Unref();
586
- },
583
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
584
+ *parent_->chand_->work_serializer_) {
585
+ ApplyUpdateInControlPlaneWorkSerializer();
586
+ Unref();
587
+ },
587
588
  DEBUG_LOCATION);
588
589
  }
589
590
 
@@ -605,8 +606,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
605
606
 
606
607
  private:
607
608
  void ApplyUpdateInControlPlaneWorkSerializer()
608
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(parent_->chand_->work_serializer_) {
609
- 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)) {
610
611
  gpr_log(GPR_INFO,
611
612
  "chand=%p: processing connectivity change in work serializer "
612
613
  "for subchannel wrapper %p subchannel %p "
@@ -623,7 +624,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
623
624
  &new_keepalive_time)) {
624
625
  if (new_keepalive_time > parent_->chand_->keepalive_time_) {
625
626
  parent_->chand_->keepalive_time_ = new_keepalive_time;
626
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
627
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
627
628
  gpr_log(GPR_INFO, "chand=%p: throttling keepalive time to %d",
628
629
  parent_->chand_, parent_->chand_->keepalive_time_);
629
630
  }
@@ -665,7 +666,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
665
666
  // CancelConnectivityStateWatch() with its watcher, we know the
666
667
  // corresponding WrapperWatcher to cancel on the underlying subchannel.
667
668
  std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_
668
- ABSL_GUARDED_BY(&ClientChannel::work_serializer_);
669
+ ABSL_GUARDED_BY(*chand_->work_serializer_);
669
670
  };
670
671
 
671
672
  //
@@ -695,7 +696,7 @@ ClientChannel::ExternalConnectivityWatcher::ExternalConnectivityWatcher(
695
696
  }
696
697
  // Pass the ref from creating the object to Start().
697
698
  chand_->work_serializer_->Run(
698
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
699
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
699
700
  // The ref is passed to AddWatcherLocked().
700
701
  AddWatcherLocked();
701
702
  },
@@ -745,7 +746,7 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
745
746
  // automatically remove all watchers in that case.
746
747
  if (state != GRPC_CHANNEL_SHUTDOWN) {
747
748
  chand_->work_serializer_->Run(
748
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
749
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
749
750
  RemoveWatcherLocked();
750
751
  },
751
752
  DEBUG_LOCATION);
@@ -761,7 +762,7 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
761
762
  ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_CANCELLED);
762
763
  // Hop back into the work_serializer to clean up.
763
764
  chand_->work_serializer_->Run(
764
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
765
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
765
766
  RemoveWatcherLocked();
766
767
  },
767
768
  DEBUG_LOCATION);
@@ -792,7 +793,7 @@ class ClientChannel::ConnectivityWatcherAdder {
792
793
  watcher_(std::move(watcher)) {
793
794
  GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherAdder");
794
795
  chand_->work_serializer_->Run(
795
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
796
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
796
797
  AddWatcherLocked();
797
798
  },
798
799
  DEBUG_LOCATION);
@@ -800,7 +801,7 @@ class ClientChannel::ConnectivityWatcherAdder {
800
801
 
801
802
  private:
802
803
  void AddWatcherLocked()
803
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
804
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
804
805
  chand_->state_tracker_.AddWatcher(initial_state_, std::move(watcher_));
805
806
  GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ConnectivityWatcherAdder");
806
807
  delete this;
@@ -822,7 +823,7 @@ class ClientChannel::ConnectivityWatcherRemover {
822
823
  : chand_(chand), watcher_(watcher) {
823
824
  GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherRemover");
824
825
  chand_->work_serializer_->Run(
825
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
826
+ [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
826
827
  RemoveWatcherLocked();
827
828
  },
828
829
  DEBUG_LOCATION);
@@ -830,7 +831,7 @@ class ClientChannel::ConnectivityWatcherRemover {
830
831
 
831
832
  private:
832
833
  void RemoveWatcherLocked()
833
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
834
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
834
835
  chand_->state_tracker_.RemoveWatcher(watcher_);
835
836
  GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_,
836
837
  "ConnectivityWatcherRemover");
@@ -859,7 +860,7 @@ class ClientChannel::ClientChannelControlHelper
859
860
 
860
861
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
861
862
  ServerAddress address, const grpc_channel_args& args) override
862
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
863
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
863
864
  if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
864
865
  // Determine health check service name.
865
866
  absl::optional<std::string> health_check_service_name;
@@ -930,9 +931,9 @@ class ClientChannel::ClientChannelControlHelper
930
931
  void UpdateState(
931
932
  grpc_connectivity_state state, const absl::Status& status,
932
933
  std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) override
933
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
934
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
934
935
  if (chand_->resolver_ == nullptr) return; // Shutting down.
935
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
936
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
936
937
  const char* extra = chand_->disconnect_error_ == GRPC_ERROR_NONE
937
938
  ? ""
938
939
  : " (ignoring -- channel shutting down)";
@@ -948,9 +949,9 @@ class ClientChannel::ClientChannelControlHelper
948
949
  }
949
950
 
950
951
  void RequestReresolution() override
951
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
952
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
952
953
  if (chand_->resolver_ == nullptr) return; // Shutting down.
953
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
954
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
954
955
  gpr_log(GPR_INFO, "chand=%p: started name re-resolving", chand_);
955
956
  }
956
957
  chand_->resolver_->RequestReresolutionLocked();
@@ -961,7 +962,7 @@ class ClientChannel::ClientChannelControlHelper
961
962
  }
962
963
 
963
964
  void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
964
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand_->work_serializer_) {
965
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
965
966
  if (chand_->resolver_ == nullptr) return; // Shutting down.
966
967
  if (chand_->channelz_node_ != nullptr) {
967
968
  chand_->channelz_node_->AddTraceEvent(
@@ -1034,10 +1035,12 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1034
1035
  ClientChannelFactory::GetFromChannelArgs(args->channel_args)),
1035
1036
  channelz_node_(GetChannelzNode(args->channel_args)),
1036
1037
  interested_parties_(grpc_pollset_set_create()),
1038
+ service_config_parser_index_(
1039
+ internal::ClientChannelServiceConfigParser::ParserIndex()),
1037
1040
  work_serializer_(std::make_shared<WorkSerializer>()),
1038
1041
  state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
1039
1042
  subchannel_pool_(GetSubchannelPool(args->channel_args)) {
1040
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1043
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1041
1044
  gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
1042
1045
  this, owning_stack_);
1043
1046
  }
@@ -1056,7 +1059,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1056
1059
  if (service_config_json == nullptr) service_config_json = "{}";
1057
1060
  *error = GRPC_ERROR_NONE;
1058
1061
  default_service_config_ =
1059
- ServiceConfig::Create(args->channel_args, service_config_json, error);
1062
+ ServiceConfigImpl::Create(args->channel_args, service_config_json, error);
1060
1063
  if (*error != GRPC_ERROR_NONE) {
1061
1064
  default_service_config_.reset();
1062
1065
  return;
@@ -1081,7 +1084,8 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1081
1084
  }
1082
1085
  // Make sure the URI to resolve is valid, so that we know that
1083
1086
  // resolver creation will succeed later.
1084
- if (!ResolverRegistry::IsValidTarget(uri_to_resolve_)) {
1087
+ if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
1088
+ uri_to_resolve_)) {
1085
1089
  *error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
1086
1090
  absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
1087
1091
  return;
@@ -1100,7 +1104,9 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1100
1104
  const char* default_authority =
1101
1105
  grpc_channel_args_find_string(channel_args_, GRPC_ARG_DEFAULT_AUTHORITY);
1102
1106
  if (default_authority == nullptr) {
1103
- default_authority_ = ResolverRegistry::GetDefaultAuthority(server_uri);
1107
+ default_authority_ =
1108
+ CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
1109
+ server_uri);
1104
1110
  } else {
1105
1111
  default_authority_ = default_authority;
1106
1112
  }
@@ -1109,7 +1115,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1109
1115
  }
1110
1116
 
1111
1117
  ClientChannel::~ClientChannel() {
1112
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1118
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1113
1119
  gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
1114
1120
  }
1115
1121
  DestroyResolverAndLbPolicyLocked();
@@ -1148,6 +1154,24 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
1148
1154
  } else {
1149
1155
  policy_name = grpc_channel_args_find_string(resolver_result.args,
1150
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
+ }
1151
1175
  }
1152
1176
  // Use pick_first if nothing was specified and we didn't select grpclb
1153
1177
  // above.
@@ -1165,12 +1189,9 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
1165
1189
  // already verified that the policy does not require a config.
1166
1190
  // - One of the hard-coded values here, all of which are known to not
1167
1191
  // require a config.
1168
- // - A channel arg, in which case the application did something that
1169
- // is a misuse of our API.
1170
- // In the first two cases, these assertions will always be true. In
1171
- // the last case, this is probably fine for now.
1172
- // TODO(roth): If the last case becomes a problem, add better error
1173
- // 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
1174
1195
  GPR_ASSERT(lb_policy_config != nullptr);
1175
1196
  GPR_ASSERT(parse_error == GRPC_ERROR_NONE);
1176
1197
  return lb_policy_config;
@@ -1181,7 +1202,7 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
1181
1202
  void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1182
1203
  // Handle race conditions.
1183
1204
  if (resolver_ == nullptr) return;
1184
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1205
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1185
1206
  gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
1186
1207
  }
1187
1208
  // We only want to trace the address resolution in the follow cases:
@@ -1214,14 +1235,14 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1214
1235
  RefCountedPtr<ServiceConfig> service_config;
1215
1236
  RefCountedPtr<ConfigSelector> config_selector;
1216
1237
  if (!result.service_config.ok()) {
1217
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1238
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1218
1239
  gpr_log(GPR_INFO, "chand=%p: resolver returned service config error: %s",
1219
1240
  this, result.service_config.status().ToString().c_str());
1220
1241
  }
1221
1242
  // If the service config was invalid, then fallback to the
1222
1243
  // previously returned service config.
1223
1244
  if (saved_service_config_ != nullptr) {
1224
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1245
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1225
1246
  gpr_log(GPR_INFO,
1226
1247
  "chand=%p: resolver returned invalid service config. "
1227
1248
  "Continuing to use previous service config.",
@@ -1238,7 +1259,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1238
1259
  }
1239
1260
  } else if (*result.service_config == nullptr) {
1240
1261
  // Resolver did not return any service config.
1241
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1262
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1242
1263
  gpr_log(GPR_INFO,
1243
1264
  "chand=%p: resolver returned no service config. Using default "
1244
1265
  "service config for channel.",
@@ -1258,7 +1279,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1258
1279
  const internal::ClientChannelGlobalParsedConfig* parsed_service_config =
1259
1280
  static_cast<const internal::ClientChannelGlobalParsedConfig*>(
1260
1281
  service_config->GetGlobalParsedConfig(
1261
- internal::ClientChannelServiceConfigParser::ParserIndex()));
1282
+ service_config_parser_index_));
1262
1283
  // Choose LB policy config.
1263
1284
  RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config =
1264
1285
  ChooseLbPolicy(result, parsed_service_config);
@@ -1275,7 +1296,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1275
1296
  UpdateServiceConfigInControlPlaneLocked(std::move(service_config),
1276
1297
  std::move(config_selector),
1277
1298
  lb_policy_config->name());
1278
- } else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1299
+ } else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1279
1300
  gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
1280
1301
  }
1281
1302
  // Create or update LB policy, as needed.
@@ -1306,7 +1327,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1306
1327
 
1307
1328
  void ClientChannel::OnResolverErrorLocked(absl::Status status) {
1308
1329
  if (resolver_ == nullptr) return;
1309
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1330
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1310
1331
  gpr_log(GPR_INFO, "chand=%p: resolver transient failure: %s", this,
1311
1332
  status.ToString().c_str());
1312
1333
  }
@@ -1365,7 +1386,7 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
1365
1386
  lb_policy_ = CreateLbPolicyLocked(*update_args.args);
1366
1387
  }
1367
1388
  // Update the policy.
1368
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1389
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1369
1390
  gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
1370
1391
  lb_policy_.get());
1371
1392
  }
@@ -1382,8 +1403,8 @@ OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
1382
1403
  lb_policy_args.args = &args;
1383
1404
  OrphanablePtr<LoadBalancingPolicy> lb_policy =
1384
1405
  MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
1385
- &grpc_client_channel_routing_trace);
1386
- 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)) {
1387
1408
  gpr_log(GPR_INFO, "chand=%p: created new LB policy %p", this,
1388
1409
  lb_policy.get());
1389
1410
  }
@@ -1418,26 +1439,24 @@ void ClientChannel::RemoveResolverQueuedCall(ResolverQueuedCall* to_remove,
1418
1439
 
1419
1440
  void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
1420
1441
  RefCountedPtr<ServiceConfig> service_config,
1421
- RefCountedPtr<ConfigSelector> config_selector, const char* lb_policy_name) {
1422
- UniquePtr<char> service_config_json(
1423
- gpr_strdup(service_config->json_string().c_str()));
1424
- 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)) {
1425
1445
  gpr_log(GPR_INFO,
1426
1446
  "chand=%p: resolver returned updated service config: \"%s\"", this,
1427
- service_config_json.get());
1447
+ service_config_json.c_str());
1428
1448
  }
1429
1449
  // Save service config.
1430
1450
  saved_service_config_ = std::move(service_config);
1431
1451
  // Swap out the data used by GetChannelInfo().
1432
- UniquePtr<char> lb_policy_name_owned(gpr_strdup(lb_policy_name));
1433
1452
  {
1434
1453
  MutexLock lock(&info_mu_);
1435
- info_lb_policy_name_ = std::move(lb_policy_name_owned);
1454
+ info_lb_policy_name_ = std::move(lb_policy_name);
1436
1455
  info_service_config_json_ = std::move(service_config_json);
1437
1456
  }
1438
1457
  // Save config selector.
1439
1458
  saved_config_selector_ = std::move(config_selector);
1440
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1459
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1441
1460
  gpr_log(GPR_INFO, "chand=%p: using ConfigSelector %p", this,
1442
1461
  saved_config_selector_.get());
1443
1462
  }
@@ -1448,7 +1467,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1448
1467
  RefCountedPtr<ServiceConfig> service_config = saved_service_config_;
1449
1468
  // Grab ref to config selector. Use default if resolver didn't supply one.
1450
1469
  RefCountedPtr<ConfigSelector> config_selector = saved_config_selector_;
1451
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1470
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1452
1471
  gpr_log(GPR_INFO, "chand=%p: switching to ConfigSelector %p", this,
1453
1472
  saved_config_selector_.get());
1454
1473
  }
@@ -1519,10 +1538,10 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1519
1538
  }
1520
1539
 
1521
1540
  void ClientChannel::CreateResolverLocked() {
1522
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1541
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1523
1542
  gpr_log(GPR_INFO, "chand=%p: starting name resolution", this);
1524
1543
  }
1525
- resolver_ = ResolverRegistry::CreateResolver(
1544
+ resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
1526
1545
  uri_to_resolve_.c_str(), channel_args_, interested_parties_,
1527
1546
  work_serializer_, absl::make_unique<ResolverResultHandler>(this));
1528
1547
  // Since the validity of the args was checked when the channel was created,
@@ -1532,20 +1551,20 @@ void ClientChannel::CreateResolverLocked() {
1532
1551
  GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
1533
1552
  absl::make_unique<LoadBalancingPolicy::QueuePicker>(nullptr));
1534
1553
  resolver_->StartLocked();
1535
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1554
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1536
1555
  gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
1537
1556
  }
1538
1557
  }
1539
1558
 
1540
1559
  void ClientChannel::DestroyResolverAndLbPolicyLocked() {
1541
1560
  if (resolver_ != nullptr) {
1542
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1561
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1543
1562
  gpr_log(GPR_INFO, "chand=%p: shutting down resolver=%p", this,
1544
1563
  resolver_.get());
1545
1564
  }
1546
1565
  resolver_.reset();
1547
1566
  if (lb_policy_ != nullptr) {
1548
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1567
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1549
1568
  gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
1550
1569
  lb_policy_.get());
1551
1570
  }
@@ -1661,7 +1680,7 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
1661
1680
  &result,
1662
1681
  // Complete pick.
1663
1682
  [op](LoadBalancingPolicy::PickResult::Complete* complete_pick)
1664
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::work_serializer_) {
1683
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*ClientChannel::work_serializer_) {
1665
1684
  SubchannelWrapper* subchannel = static_cast<SubchannelWrapper*>(
1666
1685
  complete_pick->subchannel.get());
1667
1686
  RefCountedPtr<ConnectedSubchannel> connected_subchannel =
@@ -1713,7 +1732,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
1713
1732
  }
1714
1733
  // Disconnect or enter IDLE.
1715
1734
  if (op->disconnect_with_error != GRPC_ERROR_NONE) {
1716
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
1735
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1717
1736
  gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
1718
1737
  grpc_error_std_string(op->disconnect_with_error).c_str());
1719
1738
  }
@@ -1753,7 +1772,7 @@ void ClientChannel::StartTransportOp(grpc_channel_element* elem,
1753
1772
  // Pop into control plane work_serializer for remaining ops.
1754
1773
  GRPC_CHANNEL_STACK_REF(chand->owning_stack_, "start_transport_op");
1755
1774
  chand->work_serializer_->Run(
1756
- [chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
1775
+ [chand, op]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
1757
1776
  chand->StartTransportOpLocked(op);
1758
1777
  },
1759
1778
  DEBUG_LOCATION);
@@ -1764,11 +1783,11 @@ void ClientChannel::GetChannelInfo(grpc_channel_element* elem,
1764
1783
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
1765
1784
  MutexLock lock(&chand->info_mu_);
1766
1785
  if (info->lb_policy_name != nullptr) {
1767
- *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());
1768
1787
  }
1769
1788
  if (info->service_config_json != nullptr) {
1770
1789
  *info->service_config_json =
1771
- gpr_strdup(chand->info_service_config_json_.get());
1790
+ gpr_strdup(chand->info_service_config_json_.c_str());
1772
1791
  }
1773
1792
  }
1774
1793
 
@@ -1815,7 +1834,7 @@ grpc_connectivity_state ClientChannel::CheckConnectivityState(
1815
1834
  if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
1816
1835
  GRPC_CHANNEL_STACK_REF(owning_stack_, "TryToConnect");
1817
1836
  work_serializer_->Run([this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
1818
- work_serializer_) { TryToConnectLocked(); },
1837
+ *work_serializer_) { TryToConnectLocked(); },
1819
1838
  DEBUG_LOCATION);
1820
1839
  }
1821
1840
  return out;
@@ -1842,7 +1861,7 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
1842
1861
  : deadline_state_(elem, args,
1843
1862
  GPR_LIKELY(chand.deadline_checking_enabled_)
1844
1863
  ? args.deadline
1845
- : GRPC_MILLIS_INF_FUTURE),
1864
+ : Timestamp::InfFuture()),
1846
1865
  path_(grpc_slice_ref_internal(args.path)),
1847
1866
  call_start_time_(args.start_time),
1848
1867
  deadline_(args.deadline),
@@ -1891,6 +1910,11 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
1891
1910
  GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
1892
1911
  CallData* calld = static_cast<CallData*>(elem->call_data);
1893
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
+ }
1894
1918
  if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
1895
1919
  grpc_deadline_state_client_start_transport_stream_op_batch(elem, batch);
1896
1920
  }
@@ -1898,8 +1922,13 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
1898
1922
  // in case we wind up failing the call before we get down to the retry
1899
1923
  // or LB call layer.
1900
1924
  if (batch->recv_trailing_metadata) {
1901
- calld->InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
1902
- 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_;
1903
1932
  }
1904
1933
  // If we already have a dynamic call, pass the batch down to it.
1905
1934
  // Note that once we have done so, we do not need to acquire the channel's
@@ -2124,7 +2153,7 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
2124
2153
  auto* calld = static_cast<CallData*>(self->elem_->call_data);
2125
2154
  {
2126
2155
  MutexLock lock(&chand->resolution_mu_);
2127
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2156
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2128
2157
  gpr_log(GPR_INFO,
2129
2158
  "chand=%p calld=%p: cancelling resolver queued pick: "
2130
2159
  "error=%s self=%p calld->resolver_pick_canceller=%p",
@@ -2151,7 +2180,7 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
2151
2180
  grpc_call_element* elem) {
2152
2181
  if (!queued_pending_resolver_result_) return;
2153
2182
  auto* chand = static_cast<ClientChannel*>(elem->channel_data);
2154
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2183
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2155
2184
  gpr_log(GPR_INFO,
2156
2185
  "chand=%p calld=%p: removing from resolver queued picks list",
2157
2186
  chand, this);
@@ -2166,7 +2195,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
2166
2195
  grpc_call_element* elem) {
2167
2196
  if (queued_pending_resolver_result_) return;
2168
2197
  auto* chand = static_cast<ClientChannel*>(elem->channel_data);
2169
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2198
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2170
2199
  gpr_log(GPR_INFO, "chand=%p calld=%p: adding to resolver queued picks list",
2171
2200
  chand, this);
2172
2201
  }
@@ -2180,7 +2209,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
2180
2209
  grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2181
2210
  grpc_call_element* elem, grpc_metadata_batch* initial_metadata) {
2182
2211
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2183
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2212
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2184
2213
  gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
2185
2214
  chand, this);
2186
2215
  }
@@ -2203,13 +2232,14 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2203
2232
  // Apply our own method params to the call.
2204
2233
  auto* method_params = static_cast<ClientChannelMethodParsedConfig*>(
2205
2234
  service_config_call_data->GetMethodParsedConfig(
2206
- internal::ClientChannelServiceConfigParser::ParserIndex()));
2235
+ chand->service_config_parser_index_));
2207
2236
  if (method_params != nullptr) {
2208
2237
  // If the deadline from the service config is shorter than the one
2209
2238
  // from the client API, reset the deadline timer.
2210
- if (chand->deadline_checking_enabled_ && method_params->timeout() != 0) {
2211
- const grpc_millis per_method_deadline =
2212
- 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_) +
2213
2243
  method_params->timeout();
2214
2244
  if (per_method_deadline < deadline_) {
2215
2245
  deadline_ = per_method_deadline;
@@ -2240,30 +2270,27 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2240
2270
  void ClientChannel::CallData::
2241
2271
  RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
2242
2272
  void* arg, grpc_error_handle error) {
2243
- 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);
2244
2276
  auto* service_config_call_data =
2245
2277
  static_cast<ClientChannelServiceConfigCallData*>(
2246
- 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
+ }
2247
2286
  if (service_config_call_data != nullptr) {
2248
2287
  service_config_call_data->call_dispatch_controller()->Commit();
2249
2288
  }
2250
2289
  // Chain to original callback.
2251
- Closure::Run(DEBUG_LOCATION, self->original_recv_trailing_metadata_ready_,
2290
+ Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
2252
2291
  GRPC_ERROR_REF(error));
2253
2292
  }
2254
2293
 
2255
- void ClientChannel::CallData::
2256
- InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
2257
- grpc_transport_stream_op_batch* batch) {
2258
- original_recv_trailing_metadata_ready_ =
2259
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
2260
- GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
2261
- RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
2262
- this, nullptr);
2263
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
2264
- &recv_trailing_metadata_ready_;
2265
- }
2266
-
2267
2294
  void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
2268
2295
  grpc_error_handle error) {
2269
2296
  // TODO(roth): Does this callback need to hold a ref to the call stack?
@@ -2277,7 +2304,7 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
2277
2304
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2278
2305
  CallData* calld = static_cast<CallData*>(elem->call_data);
2279
2306
  if (error != GRPC_ERROR_NONE) {
2280
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2307
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2281
2308
  gpr_log(GPR_INFO,
2282
2309
  "chand=%p calld=%p: error applying config to call: error=%s",
2283
2310
  chand, calld, grpc_error_std_string(error).c_str());
@@ -2309,6 +2336,9 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2309
2336
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2310
2337
  // If we're still in IDLE, we need to start resolving.
2311
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
+ }
2312
2342
  // Bounce into the control plane work serializer to start resolving,
2313
2343
  // in case we are still in IDLE state. Since we are holding on to the
2314
2344
  // resolution mutex here, we offload it on the ExecCtx so that we don't
@@ -2321,7 +2351,7 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2321
2351
  auto* chand = static_cast<ClientChannel*>(arg);
2322
2352
  chand->work_serializer_->Run(
2323
2353
  [chand]()
2324
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(chand->work_serializer_) {
2354
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand->work_serializer_) {
2325
2355
  chand->CheckConnectivityState(/*try_to_connect=*/true);
2326
2356
  GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_,
2327
2357
  "CheckResolutionLocked");
@@ -2346,6 +2376,10 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2346
2376
  absl::Status resolver_error = chand->resolver_transient_failure_error_;
2347
2377
  if (!resolver_error.ok() && (send_initial_metadata_flags &
2348
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
+ }
2349
2383
  MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
2350
2384
  *error = absl_status_to_grpc_error(resolver_error);
2351
2385
  return true;
@@ -2353,6 +2387,10 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2353
2387
  // Either the resolver has not yet returned a result, or it has
2354
2388
  // returned transient failure but the call is wait_for_ready. In
2355
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
+ }
2356
2394
  MaybeAddCallToResolverQueuedCallsLocked(elem);
2357
2395
  return false;
2358
2396
  }
@@ -2377,7 +2415,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
2377
2415
  call_combiner_};
2378
2416
  grpc_error_handle error = GRPC_ERROR_NONE;
2379
2417
  DynamicFilters* channel_stack = args.channel_stack.get();
2380
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2418
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2381
2419
  gpr_log(
2382
2420
  GPR_INFO,
2383
2421
  "chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
@@ -2385,7 +2423,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
2385
2423
  }
2386
2424
  dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
2387
2425
  if (error != GRPC_ERROR_NONE) {
2388
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2426
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2389
2427
  gpr_log(GPR_INFO,
2390
2428
  "chand=%p calld=%p: failed to create dynamic call: error=%s",
2391
2429
  chand, this, grpc_error_std_string(error).c_str());
@@ -2406,6 +2444,7 @@ class ClientChannel::LoadBalancedCall::Metadata
2406
2444
  explicit Metadata(grpc_metadata_batch* batch) : batch_(batch) {}
2407
2445
 
2408
2446
  void Add(absl::string_view key, absl::string_view value) override {
2447
+ if (batch_ == nullptr) return;
2409
2448
  // Gross, egregious hack to support legacy grpclb behavior.
2410
2449
  // TODO(ctiller): Use a promise context for this once that plumbing is done.
2411
2450
  if (key == GrpcLbClientStatsMetadata::key()) {
@@ -2426,6 +2465,7 @@ class ClientChannel::LoadBalancedCall::Metadata
2426
2465
 
2427
2466
  std::vector<std::pair<std::string, std::string>> TestOnlyCopyToVector()
2428
2467
  override {
2468
+ if (batch_ == nullptr) return {};
2429
2469
  Encoder encoder;
2430
2470
  batch_->Encode(&encoder);
2431
2471
  return encoder.Take();
@@ -2433,6 +2473,7 @@ class ClientChannel::LoadBalancedCall::Metadata
2433
2473
 
2434
2474
  absl::optional<absl::string_view> Lookup(absl::string_view key,
2435
2475
  std::string* buffer) const override {
2476
+ if (batch_ == nullptr) return absl::nullopt;
2436
2477
  return batch_->GetStringValue(key, buffer);
2437
2478
  }
2438
2479
 
@@ -2451,7 +2492,8 @@ class ClientChannel::LoadBalancedCall::Metadata
2451
2492
  std::string(value_slice.as_string_view()));
2452
2493
  }
2453
2494
 
2454
- void Encode(GrpcTimeoutMetadata, grpc_millis) {}
2495
+ void Encode(GrpcTimeoutMetadata,
2496
+ const typename GrpcTimeoutMetadata::ValueType&) {}
2455
2497
  void Encode(HttpPathMetadata, const Slice&) {}
2456
2498
  void Encode(HttpMethodMetadata,
2457
2499
  const typename HttpMethodMetadata::ValueType&) {}
@@ -2502,7 +2544,8 @@ class ClientChannel::LoadBalancedCall::BackendMetricAccessor
2502
2544
  : lb_call_(lb_call) {}
2503
2545
 
2504
2546
  const BackendMetricData* GetBackendMetricData() override {
2505
- if (lb_call_->backend_metric_data_ == nullptr) {
2547
+ if (lb_call_->backend_metric_data_ == nullptr &&
2548
+ lb_call_->recv_trailing_metadata_ != nullptr) {
2506
2549
  if (const auto* md = lb_call_->recv_trailing_metadata_->get_pointer(
2507
2550
  XEndpointLoadMetricsBinMetadata())) {
2508
2551
  lb_call_->backend_metric_data_ =
@@ -2538,7 +2581,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
2538
2581
  ConfigSelector::CallDispatchController* call_dispatch_controller,
2539
2582
  bool is_transparent_retry)
2540
2583
  : InternallyRefCounted(
2541
- GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
2584
+ GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
2542
2585
  ? "LoadBalancedCall"
2543
2586
  : nullptr),
2544
2587
  chand_(chand),
@@ -2552,7 +2595,11 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
2552
2595
  on_call_destruction_complete_(on_call_destruction_complete),
2553
2596
  call_dispatch_controller_(call_dispatch_controller),
2554
2597
  call_attempt_tracer_(
2555
- 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
+ }
2556
2603
 
2557
2604
  ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
2558
2605
  GRPC_ERROR_UNREF(cancel_error_);
@@ -2572,6 +2619,12 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
2572
2619
  }
2573
2620
 
2574
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
+ }
2575
2628
  // Compute latency and report it to the tracer.
2576
2629
  if (call_attempt_tracer_ != nullptr) {
2577
2630
  gpr_timespec latency =
@@ -2598,7 +2651,7 @@ size_t ClientChannel::LoadBalancedCall::GetBatchIndex(
2598
2651
  void ClientChannel::LoadBalancedCall::PendingBatchesAdd(
2599
2652
  grpc_transport_stream_op_batch* batch) {
2600
2653
  const size_t idx = GetBatchIndex(batch);
2601
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2654
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2602
2655
  gpr_log(GPR_INFO,
2603
2656
  "chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
2604
2657
  chand_, this, idx);
@@ -2625,7 +2678,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
2625
2678
  GPR_ASSERT(error != GRPC_ERROR_NONE);
2626
2679
  GRPC_ERROR_UNREF(failure_error_);
2627
2680
  failure_error_ = error;
2628
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2681
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2629
2682
  size_t num_batches = 0;
2630
2683
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2631
2684
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2667,7 +2720,7 @@ void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner(
2667
2720
 
2668
2721
  // This is called via the call combiner, so access to calld is synchronized.
2669
2722
  void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
2670
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2723
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2671
2724
  size_t num_batches = 0;
2672
2725
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2673
2726
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2696,6 +2749,14 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
2696
2749
 
2697
2750
  void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2698
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
+ }
2699
2760
  // Handle call tracing.
2700
2761
  if (call_attempt_tracer_ != nullptr) {
2701
2762
  // Record send ops in tracer.
@@ -2759,7 +2820,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2759
2820
  // the channel's data plane mutex, which is more efficient (especially for
2760
2821
  // streaming calls).
2761
2822
  if (subchannel_call_ != nullptr) {
2762
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2823
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2763
2824
  gpr_log(GPR_INFO,
2764
2825
  "chand=%p lb_call=%p: starting batch on subchannel_call=%p",
2765
2826
  chand_, this, subchannel_call_.get());
@@ -2771,7 +2832,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2771
2832
  //
2772
2833
  // If we've previously been cancelled, immediately fail any new batches.
2773
2834
  if (GPR_UNLIKELY(cancel_error_ != GRPC_ERROR_NONE)) {
2774
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2835
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2775
2836
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
2776
2837
  chand_, this, grpc_error_std_string(cancel_error_).c_str());
2777
2838
  }
@@ -2789,7 +2850,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2789
2850
  // error to the caller when the first batch does get passed down.
2790
2851
  GRPC_ERROR_UNREF(cancel_error_);
2791
2852
  cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
2792
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2853
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2793
2854
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
2794
2855
  chand_, this, grpc_error_std_string(cancel_error_).c_str());
2795
2856
  }
@@ -2805,7 +2866,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2805
2866
  // For batches containing a send_initial_metadata op, acquire the
2806
2867
  // channel's data plane mutex to pick a subchannel.
2807
2868
  if (GPR_LIKELY(batch->send_initial_metadata)) {
2808
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2869
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2809
2870
  gpr_log(GPR_INFO,
2810
2871
  "chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
2811
2872
  chand_, this);
@@ -2813,7 +2874,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2813
2874
  PickSubchannel(this, GRPC_ERROR_NONE);
2814
2875
  } else {
2815
2876
  // For all other batches, release the call combiner.
2816
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2877
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2817
2878
  gpr_log(GPR_INFO,
2818
2879
  "chand=%p lb_call=%p: saved batch, yielding call combiner",
2819
2880
  chand_, this);
@@ -2826,6 +2887,12 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2826
2887
  void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
2827
2888
  void* arg, grpc_error_handle error) {
2828
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
+ }
2829
2896
  self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
2830
2897
  self->peer_string_);
2831
2898
  Closure::Run(DEBUG_LOCATION,
@@ -2836,6 +2903,11 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
2836
2903
  void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
2837
2904
  void* arg, grpc_error_handle error) {
2838
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
+ }
2839
2911
  if (error == GRPC_ERROR_NONE) {
2840
2912
  // recv_initial_metadata_flags is not populated for clients
2841
2913
  self->call_attempt_tracer_->RecordReceivedInitialMetadata(
@@ -2848,6 +2920,10 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
2848
2920
  void ClientChannel::LoadBalancedCall::RecvMessageReady(
2849
2921
  void* arg, grpc_error_handle error) {
2850
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
+ }
2851
2927
  if (*self->recv_message_ != nullptr) {
2852
2928
  self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
2853
2929
  }
@@ -2858,6 +2934,15 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
2858
2934
  void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2859
2935
  void* arg, grpc_error_handle error) {
2860
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
+ }
2861
2946
  // Check if we have a tracer or an LB callback to invoke.
2862
2947
  if (self->call_attempt_tracer_ != nullptr ||
2863
2948
  self->lb_subchannel_call_tracker_ != nullptr) {
@@ -2883,22 +2968,7 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2883
2968
  status = absl::Status(static_cast<absl::StatusCode>(code), message);
2884
2969
  }
2885
2970
  }
2886
- // If we have a tracer, notify it.
2887
- if (self->call_attempt_tracer_ != nullptr) {
2888
- self->call_attempt_tracer_->RecordReceivedTrailingMetadata(
2889
- status, self->recv_trailing_metadata_,
2890
- *self->transport_stream_stats_);
2891
- }
2892
- // If the LB policy requested a callback for trailing metadata, invoke
2893
- // the callback.
2894
- if (self->lb_subchannel_call_tracker_ != nullptr) {
2895
- Metadata trailing_metadata(self->recv_trailing_metadata_);
2896
- BackendMetricAccessor backend_metric_accessor(self);
2897
- LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
2898
- status, &trailing_metadata, &backend_metric_accessor};
2899
- self->lb_subchannel_call_tracker_->Finish(args);
2900
- self->lb_subchannel_call_tracker_.reset();
2901
- }
2971
+ self->RecordCallCompletion(status);
2902
2972
  }
2903
2973
  // Chain to original callback.
2904
2974
  if (self->failure_error_ != GRPC_ERROR_NONE) {
@@ -2911,6 +2981,25 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2911
2981
  error);
2912
2982
  }
2913
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
+
2914
3003
  void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
2915
3004
  SubchannelCall::Args call_args = {
2916
3005
  std::move(connected_subchannel_), pollent_, path_.Ref(), /*start_time=*/0,
@@ -2920,7 +3009,7 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
2920
3009
  call_context_, call_combiner_};
2921
3010
  grpc_error_handle error = GRPC_ERROR_NONE;
2922
3011
  subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
2923
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3012
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2924
3013
  gpr_log(GPR_INFO,
2925
3014
  "chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
2926
3015
  this, subchannel_call_.get(), grpc_error_std_string(error).c_str());
@@ -2959,7 +3048,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
2959
3048
  auto* chand = lb_call->chand_;
2960
3049
  {
2961
3050
  MutexLock lock(&chand->data_plane_mu_);
2962
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3051
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2963
3052
  gpr_log(GPR_INFO,
2964
3053
  "chand=%p lb_call=%p: cancelling queued pick: "
2965
3054
  "error=%s self=%p calld->pick_canceller=%p",
@@ -2985,7 +3074,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
2985
3074
 
2986
3075
  void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
2987
3076
  if (!queued_pending_lb_pick_) return;
2988
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3077
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2989
3078
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
2990
3079
  chand_, this);
2991
3080
  }
@@ -2997,7 +3086,7 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
2997
3086
 
2998
3087
  void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
2999
3088
  if (queued_pending_lb_pick_) return;
3000
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3089
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3001
3090
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
3002
3091
  chand_, this);
3003
3092
  }
@@ -3018,7 +3107,7 @@ void ClientChannel::LoadBalancedCall::PickDone(void* arg,
3018
3107
  grpc_error_handle error) {
3019
3108
  auto* self = static_cast<LoadBalancedCall*>(arg);
3020
3109
  if (error != GRPC_ERROR_NONE) {
3021
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3110
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3022
3111
  gpr_log(GPR_INFO,
3023
3112
  "chand=%p lb_call=%p: failed to pick subchannel: error=%s",
3024
3113
  self->chand_, self, grpc_error_std_string(error).c_str());
@@ -3068,7 +3157,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3068
3157
  // CompletePick
3069
3158
  [this](LoadBalancingPolicy::PickResult::Complete* complete_pick)
3070
3159
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3071
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3160
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3072
3161
  gpr_log(GPR_INFO,
3073
3162
  "chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
3074
3163
  chand_, this, complete_pick->subchannel.get());
@@ -3084,7 +3173,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3084
3173
  // yet seen that change and given us a new picker), then just
3085
3174
  // queue the pick. We'll try again as soon as we get a new picker.
3086
3175
  if (connected_subchannel_ == nullptr) {
3087
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3176
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3088
3177
  gpr_log(GPR_INFO,
3089
3178
  "chand=%p lb_call=%p: subchannel returned by LB picker "
3090
3179
  "has no connected subchannel; queueing pick",
@@ -3104,7 +3193,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3104
3193
  // QueuePick
3105
3194
  [this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/)
3106
3195
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3107
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3196
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3108
3197
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
3109
3198
  this);
3110
3199
  }
@@ -3115,7 +3204,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3115
3204
  [this, send_initial_metadata_flags,
3116
3205
  &error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
3117
3206
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3118
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3207
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3119
3208
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
3120
3209
  chand_, this, fail_pick->status.ToString().c_str());
3121
3210
  }
@@ -3139,7 +3228,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3139
3228
  // DropPick
3140
3229
  [this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick)
3141
3230
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3142
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3231
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3143
3232
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
3144
3233
  chand_, this, drop_pick->status.ToString().c_str());
3145
3234
  }