grpc 1.45.0 → 1.46.2

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

Potentially problematic release.


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

Files changed (513) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +36 -29
  3. data/include/grpc/impl/codegen/grpc_types.h +7 -13
  4. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +309 -0
  5. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +122 -0
  6. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.cc +1 -1
  7. data/src/core/ext/filters/{client_idle → channel_idle}/idle_filter_state.h +3 -3
  8. data/src/core/ext/filters/client_channel/client_channel.cc +163 -96
  9. data/src/core/ext/filters/client_channel/client_channel.h +2 -0
  10. data/src/core/ext/filters/client_channel/health/health_check_client.cc +124 -581
  11. data/src/core/ext/filters/client_channel/health/health_check_client.h +24 -160
  12. data/src/core/ext/filters/client_channel/http_proxy.cc +88 -110
  13. data/src/core/ext/filters/client_channel/http_proxy.h +17 -0
  14. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +182 -142
  15. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -6
  16. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +1 -10
  17. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +87 -58
  18. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +51 -48
  19. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -7
  20. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +229 -284
  21. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +92 -257
  22. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +51 -221
  23. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +201 -0
  24. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +106 -0
  25. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +102 -55
  26. data/src/core/ext/filters/client_channel/retry_filter.cc +18 -3
  27. data/src/core/ext/filters/client_channel/subchannel.cc +5 -5
  28. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +544 -0
  29. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +214 -0
  30. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +127 -367
  31. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +24 -1
  32. data/src/core/ext/filters/http/client/http_client_filter.cc +78 -458
  33. data/src/core/ext/filters/http/client/http_client_filter.h +21 -4
  34. data/src/core/ext/filters/http/client_authority_filter.cc +17 -22
  35. data/src/core/ext/filters/http/client_authority_filter.h +6 -5
  36. data/src/core/ext/filters/http/http_filters_plugin.cc +9 -6
  37. data/src/core/ext/filters/http/server/http_server_filter.cc +2 -116
  38. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +2 -8
  39. data/src/core/ext/filters/server_config_selector/server_config_selector.h +2 -2
  40. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +73 -201
  41. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -1
  42. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +5 -4
  43. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -28
  44. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
  45. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -6
  46. data/src/core/ext/transport/chttp2/transport/internal.h +4 -2
  47. data/src/core/ext/transport/chttp2/transport/parsing.cc +8 -0
  48. data/src/core/ext/transport/chttp2/transport/writing.cc +24 -13
  49. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +27 -24
  50. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +143 -63
  51. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +37 -35
  52. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +177 -77
  53. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +115 -111
  54. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +547 -207
  55. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +5 -5
  56. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +26 -13
  57. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +5 -5
  58. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +23 -9
  59. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +7 -7
  60. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +18 -0
  61. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +4 -4
  62. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +13 -4
  63. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +4 -4
  64. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +9 -0
  65. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +49 -46
  66. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +217 -78
  67. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +3 -3
  68. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +10 -2
  69. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +12 -12
  70. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +40 -8
  71. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +5 -5
  72. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +20 -2
  73. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +55 -55
  74. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +289 -110
  75. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +133 -125
  76. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +656 -267
  77. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +24 -18
  78. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +96 -23
  79. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +185 -173
  80. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +860 -309
  81. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
  82. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +10 -2
  83. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +44 -24
  84. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +165 -40
  85. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +72 -63
  86. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +433 -174
  87. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +33 -31
  88. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +154 -52
  89. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +5 -4
  90. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +14 -4
  91. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +89 -89
  92. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +460 -166
  93. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +76 -33
  94. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +379 -69
  95. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +2 -2
  96. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +14 -6
  97. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +5 -25
  98. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +10 -91
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +5 -5
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +26 -13
  101. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +70 -68
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +369 -131
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +94 -65
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +447 -161
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +27 -11
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +104 -85
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +378 -113
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +2 -2
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +3 -0
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +6 -6
  112. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +30 -13
  113. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +7 -7
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +43 -16
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +58 -24
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +14 -4
  119. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +18 -18
  120. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +100 -43
  121. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +31 -30
  122. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +171 -71
  123. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
  124. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +196 -95
  125. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
  126. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +7 -2
  127. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +53 -46
  128. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +284 -129
  129. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +56 -50
  130. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +337 -146
  131. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +13 -11
  132. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +49 -14
  133. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +4 -4
  134. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +14 -4
  135. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +5 -5
  136. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +20 -4
  137. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +33 -32
  138. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +205 -86
  139. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +34 -34
  140. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +175 -74
  141. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +56 -52
  142. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +370 -146
  143. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +27 -23
  144. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +173 -74
  145. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +362 -341
  146. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2056 -845
  147. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +11 -11
  148. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +49 -16
  149. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +56 -50
  150. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +293 -111
  151. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +3 -3
  152. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -0
  153. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +3 -3
  154. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +10 -2
  155. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +5 -5
  156. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +26 -10
  157. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +5 -5
  158. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +27 -12
  159. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +17 -16
  160. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +83 -36
  161. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +2 -2
  162. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +7 -2
  163. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +8 -8
  164. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +46 -17
  165. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +9 -9
  166. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +38 -12
  167. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +7 -7
  168. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +30 -10
  169. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +2 -2
  170. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +10 -6
  171. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +15 -15
  172. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +71 -28
  173. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +25 -25
  174. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +149 -65
  175. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +8 -7
  176. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +30 -12
  177. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
  178. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +42 -15
  179. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +173 -144
  180. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +898 -323
  181. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +51 -45
  182. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +261 -116
  183. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +13 -13
  184. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +70 -25
  185. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +80 -55
  186. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +410 -124
  187. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +5 -5
  188. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +23 -9
  189. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  190. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +44 -44
  191. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +261 -122
  192. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +8 -8
  193. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +47 -21
  194. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +32 -32
  195. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +175 -66
  196. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +4 -4
  197. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +17 -6
  198. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
  199. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +38 -17
  200. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +8 -8
  201. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +12 -0
  202. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +7 -7
  203. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +43 -18
  204. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +3 -3
  205. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +20 -9
  206. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +3 -3
  207. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +24 -9
  208. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +2 -2
  209. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +14 -6
  210. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +8 -8
  211. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +40 -16
  212. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +9 -9
  213. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +70 -25
  214. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +5 -5
  215. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +37 -18
  216. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +12 -12
  217. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +81 -30
  218. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +16 -16
  219. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +76 -30
  220. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +20 -20
  221. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +90 -30
  222. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +7 -7
  223. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +28 -10
  224. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +2 -2
  225. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +3 -0
  226. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +5 -5
  227. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +13 -4
  228. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +9 -9
  229. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -0
  230. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +4 -4
  231. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +9 -0
  232. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +5 -5
  233. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +17 -4
  234. data/src/core/ext/upb-generated/google/api/annotations.upb.c +3 -3
  235. data/src/core/ext/upb-generated/google/api/annotations.upb.h +17 -2
  236. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +70 -66
  237. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +410 -162
  238. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +80 -74
  239. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +440 -158
  240. data/src/core/ext/upb-generated/google/api/http.upb.c +17 -17
  241. data/src/core/ext/upb-generated/google/api/http.upb.h +116 -43
  242. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +4 -4
  243. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +19 -7
  244. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +3 -3
  245. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -0
  246. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +163 -162
  247. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1157 -435
  248. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +3 -3
  249. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +10 -4
  250. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  251. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
  252. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +108 -40
  253. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +3 -3
  254. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +10 -4
  255. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +18 -18
  256. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -0
  257. data/src/core/ext/upb-generated/google/rpc/status.upb.c +4 -4
  258. data/src/core/ext/upb-generated/google/rpc/status.upb.h +19 -7
  259. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +15 -15
  260. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +65 -22
  261. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
  262. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +49 -12
  263. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +69 -65
  264. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +364 -149
  265. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -7
  266. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +20 -4
  267. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +4 -4
  268. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -0
  269. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
  270. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +150 -58
  271. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +11 -11
  272. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +51 -18
  273. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  274. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  275. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +22 -22
  276. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +97 -10
  277. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +6 -6
  278. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +23 -2
  279. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +3 -3
  280. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +10 -2
  281. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +6 -6
  282. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +27 -6
  283. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +5 -5
  284. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +20 -2
  285. data/src/core/ext/upb-generated/validate/validate.upb.c +261 -250
  286. data/src/core/ext/upb-generated/validate/validate.upb.h +1836 -663
  287. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +22 -22
  288. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +97 -10
  289. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +6 -6
  290. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +23 -2
  291. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +3 -3
  292. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +10 -2
  293. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +18 -18
  294. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +70 -10
  295. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +5 -5
  296. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +20 -2
  297. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +2 -2
  298. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +3 -0
  299. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +8 -8
  300. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +38 -12
  301. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +5 -5
  302. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +27 -10
  303. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +3 -3
  304. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +10 -2
  305. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
  306. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +21 -8
  307. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +10 -10
  308. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +71 -30
  309. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +5 -5
  310. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +16 -2
  311. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +12 -12
  312. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +69 -26
  313. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +43 -39
  314. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +255 -103
  315. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +4 -4
  316. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +19 -8
  317. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +9 -9
  318. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +70 -25
  319. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +3 -3
  320. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +10 -2
  321. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +50 -46
  322. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +195 -185
  323. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +16 -12
  324. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +129 -94
  325. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +10 -0
  326. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +18 -33
  327. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +0 -5
  328. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +163 -155
  329. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +5 -0
  330. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +141 -138
  331. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +26 -20
  332. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +738 -730
  333. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +271 -251
  334. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
  335. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +207 -193
  336. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -0
  337. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  338. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  339. data/src/core/ext/xds/certificate_provider_store.cc +8 -0
  340. data/src/core/ext/xds/certificate_provider_store.h +9 -0
  341. data/src/core/ext/xds/xds_api.cc +20 -0
  342. data/src/core/ext/xds/xds_certificate_provider.cc +2 -0
  343. data/src/core/ext/xds/xds_certificate_provider.h +8 -0
  344. data/src/core/ext/xds/xds_client.cc +83 -93
  345. data/src/core/ext/xds/xds_client.h +11 -4
  346. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  347. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  348. data/src/core/ext/xds/xds_common_types.cc +9 -9
  349. data/src/core/ext/xds/xds_common_types.h +3 -3
  350. data/src/core/ext/xds/xds_endpoint.cc +12 -5
  351. data/src/core/ext/xds/xds_http_fault_filter.cc +1 -1
  352. data/src/core/ext/xds/xds_listener.cc +1 -1
  353. data/src/core/ext/xds/xds_route_config.cc +162 -25
  354. data/src/core/ext/xds/xds_route_config.h +13 -10
  355. data/src/core/ext/xds/xds_server_config_fetcher.cc +17 -22
  356. data/src/core/lib/avl/avl.h +68 -5
  357. data/src/core/lib/channel/call_tracer.h +4 -1
  358. data/src/core/lib/channel/channel_args.cc +138 -59
  359. data/src/core/lib/channel/channel_args.h +210 -9
  360. data/src/core/lib/channel/channel_args_preconditioning.cc +3 -9
  361. data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
  362. data/src/core/lib/channel/channel_stack.h +2 -5
  363. data/src/core/lib/channel/channel_stack_builder.cc +0 -65
  364. data/src/core/lib/channel/channel_stack_builder.h +27 -6
  365. data/src/core/lib/channel/channel_stack_builder_impl.cc +102 -0
  366. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  367. data/src/core/lib/channel/connected_channel.h +1 -0
  368. data/src/core/lib/channel/promise_based_filter.cc +495 -162
  369. data/src/core/lib/channel/promise_based_filter.h +55 -41
  370. data/src/core/lib/compression/compression_internal.cc +1 -7
  371. data/src/core/lib/debug/stats_data.cc +2 -6
  372. data/src/core/lib/debug/stats_data.h +18 -21
  373. data/src/core/lib/gpr/tls.h +1 -0
  374. data/src/core/lib/gprpp/bitset.h +12 -0
  375. data/src/core/lib/gprpp/cpp_impl_of.h +4 -0
  376. data/src/core/lib/gprpp/match.h +73 -0
  377. data/src/core/lib/gprpp/overload.h +59 -0
  378. data/src/core/lib/gprpp/ref_counted.h +2 -0
  379. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  380. data/src/core/lib/gprpp/status_helper.cc +18 -2
  381. data/src/core/lib/gprpp/time.cc +12 -0
  382. data/src/core/lib/gprpp/time.h +1 -1
  383. data/src/core/lib/http/format_request.cc +1 -2
  384. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  385. data/src/core/lib/http/parser.cc +80 -9
  386. data/src/core/lib/http/parser.h +14 -1
  387. data/src/core/lib/iomgr/ev_posix.cc +6 -7
  388. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  389. data/src/core/lib/iomgr/port.h +0 -2
  390. data/src/core/lib/iomgr/tcp_client_posix.cc +2 -2
  391. data/src/core/lib/iomgr/tcp_posix.cc +93 -35
  392. data/src/core/lib/iomgr/tcp_server_posix.cc +26 -17
  393. data/src/core/lib/json/json_util.h +3 -3
  394. data/src/core/lib/promise/call_push_pull.h +144 -0
  395. data/src/core/lib/promise/detail/status.h +2 -1
  396. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  397. data/src/core/lib/promise/latch.h +104 -0
  398. data/src/core/lib/resource_quota/api.cc +5 -30
  399. data/src/core/lib/resource_quota/api.h +1 -1
  400. data/src/core/lib/resource_quota/resource_quota.h +8 -0
  401. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  402. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -12
  403. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +5 -6
  404. data/src/core/lib/security/context/security_context.h +8 -1
  405. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
  406. data/src/core/lib/security/credentials/alts/alts_credentials.h +4 -0
  407. data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
  408. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  409. data/src/core/lib/security/credentials/composite/composite_credentials.cc +15 -10
  410. data/src/core/lib/security/credentials/composite/composite_credentials.h +9 -8
  411. data/src/core/lib/security/credentials/credentials.h +16 -33
  412. data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -12
  413. data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -5
  414. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -0
  415. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
  416. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -4
  417. data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
  418. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +22 -29
  419. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  420. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -3
  421. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +6 -2
  422. data/src/core/lib/security/credentials/local/local_credentials.cc +6 -6
  423. data/src/core/lib/security/credentials/local/local_credentials.h +4 -0
  424. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -9
  425. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -6
  426. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -6
  427. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +8 -6
  428. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +6 -4
  429. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -0
  430. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +49 -0
  431. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -0
  432. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +42 -3
  433. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +66 -95
  434. data/src/core/lib/security/credentials/tls/tls_credentials.cc +9 -6
  435. data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -5
  436. data/src/core/lib/security/credentials/xds/xds_credentials.cc +48 -50
  437. data/src/core/lib/security/credentials/xds/xds_credentials.h +31 -5
  438. data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
  439. data/src/core/lib/security/security_connector/security_connector.h +9 -0
  440. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -2
  441. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -2
  442. data/src/core/lib/security/transport/auth_filters.h +7 -7
  443. data/src/core/lib/security/transport/client_auth_filter.cc +28 -20
  444. data/src/core/lib/security/transport/secure_endpoint.cc +198 -129
  445. data/src/core/lib/security/transport/secure_endpoint.h +1 -1
  446. data/src/core/lib/security/transport/security_handshaker.cc +6 -4
  447. data/src/core/lib/surface/call.cc +1023 -903
  448. data/src/core/lib/surface/call.h +0 -14
  449. data/src/core/lib/surface/channel.cc +4 -3
  450. data/src/core/lib/surface/channel_init.cc +2 -3
  451. data/src/core/lib/surface/channel_init.h +2 -6
  452. data/src/core/lib/surface/init.cc +1 -1
  453. data/src/core/lib/surface/server.cc +3 -14
  454. data/src/core/lib/surface/server.h +1 -2
  455. data/src/core/lib/surface/version.cc +2 -2
  456. data/src/core/lib/transport/byte_stream.cc +2 -0
  457. data/src/core/lib/transport/metadata_batch.h +12 -8
  458. data/src/core/lib/transport/transport.h +20 -5
  459. data/src/core/lib/transport/transport_impl.h +4 -3
  460. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -4
  461. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -2
  462. data/src/core/tsi/ssl_transport_security.cc +75 -38
  463. data/src/core/tsi/ssl_transport_security.h +8 -2
  464. data/src/core/tsi/transport_security_interface.h +2 -0
  465. data/src/ruby/ext/grpc/extconf.rb +1 -1
  466. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  467. data/src/ruby/lib/grpc/grpc.rb +1 -1
  468. data/src/ruby/lib/grpc/version.rb +1 -1
  469. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  470. data/src/ruby/pb/test/client.rb +769 -0
  471. data/src/ruby/pb/test/server.rb +252 -0
  472. data/src/ruby/pb/test/xds_client.rb +415 -0
  473. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  474. data/third_party/upb/upb/decode.c +32 -16
  475. data/third_party/upb/upb/def.c +118 -55
  476. data/third_party/upb/upb/def.h +12 -3
  477. data/third_party/upb/upb/encode.c +14 -8
  478. data/third_party/upb/upb/json_encode.c +776 -0
  479. data/third_party/upb/upb/json_encode.h +62 -0
  480. data/third_party/upb/upb/msg.c +5 -7
  481. data/third_party/upb/upb/msg.h +1 -2
  482. data/third_party/upb/upb/msg_internal.h +49 -36
  483. data/third_party/upb/upb/port_def.inc +8 -0
  484. data/third_party/upb/upb/port_undef.inc +1 -0
  485. data/third_party/upb/upb/table.c +10 -6
  486. data/third_party/upb/upb/table_internal.h +2 -0
  487. data/third_party/upb/upb/upb.h +41 -11
  488. data/third_party/zlib/crc32.c +966 -292
  489. data/third_party/zlib/crc32.h +9441 -436
  490. data/third_party/zlib/deflate.c +78 -30
  491. data/third_party/zlib/deflate.h +12 -15
  492. data/third_party/zlib/gzguts.h +3 -2
  493. data/third_party/zlib/gzlib.c +5 -3
  494. data/third_party/zlib/gzread.c +5 -7
  495. data/third_party/zlib/gzwrite.c +25 -13
  496. data/third_party/zlib/infback.c +2 -1
  497. data/third_party/zlib/inffast.c +14 -14
  498. data/third_party/zlib/inflate.c +39 -8
  499. data/third_party/zlib/inflate.h +3 -2
  500. data/third_party/zlib/inftrees.c +3 -3
  501. data/third_party/zlib/trees.c +27 -48
  502. data/third_party/zlib/zlib.h +123 -100
  503. data/third_party/zlib/zutil.c +2 -2
  504. data/third_party/zlib/zutil.h +12 -9
  505. metadata +66 -45
  506. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -201
  507. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -566
  508. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  509. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1657
  510. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  511. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  512. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  513. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
@@ -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"
@@ -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
 
@@ -354,7 +354,7 @@ class DynamicTerminationFilter::CallData {
354
354
  args, pollent, nullptr,
355
355
  service_config_call_data->call_dispatch_controller(),
356
356
  /*is_transparent_retry=*/false);
357
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
357
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
358
358
  gpr_log(GPR_INFO,
359
359
  "chand=%p dynamic_termination_calld=%p: create lb_call=%p", chand,
360
360
  client_channel, calld->lb_call_.get());
@@ -410,7 +410,7 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
410
410
  }
411
411
 
412
412
  ~ResolverResultHandler() override {
413
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
413
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
414
414
  gpr_log(GPR_INFO, "chand=%p: resolver shutdown complete", chand_);
415
415
  }
416
416
  GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ResolverResultHandler");
@@ -441,14 +441,13 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
441
441
  public:
442
442
  SubchannelWrapper(ClientChannel* chand, RefCountedPtr<Subchannel> subchannel,
443
443
  absl::optional<std::string> health_check_service_name)
444
- : SubchannelInterface(
445
- GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
446
- ? "SubchannelWrapper"
447
- : nullptr),
444
+ : SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
445
+ ? "SubchannelWrapper"
446
+ : nullptr),
448
447
  chand_(chand),
449
448
  subchannel_(std::move(subchannel)),
450
449
  health_check_service_name_(std::move(health_check_service_name)) {
451
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
450
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
452
451
  gpr_log(GPR_INFO,
453
452
  "chand=%p: creating subchannel wrapper %p for subchannel %p",
454
453
  chand, this, subchannel_.get());
@@ -470,7 +469,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
470
469
  }
471
470
 
472
471
  ~SubchannelWrapper() override {
473
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
472
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
474
473
  gpr_log(GPR_INFO,
475
474
  "chand=%p: destroying subchannel wrapper %p for subchannel %p",
476
475
  chand_, this, subchannel_.get());
@@ -573,7 +572,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
573
572
  }
574
573
 
575
574
  void OnConnectivityStateChange() override {
576
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
575
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
577
576
  gpr_log(GPR_INFO,
578
577
  "chand=%p: connectivity change for subchannel wrapper %p "
579
578
  "subchannel %p; hopping into work_serializer",
@@ -608,7 +607,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
608
607
  private:
609
608
  void ApplyUpdateInControlPlaneWorkSerializer()
610
609
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
611
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
610
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
612
611
  gpr_log(GPR_INFO,
613
612
  "chand=%p: processing connectivity change in work serializer "
614
613
  "for subchannel wrapper %p subchannel %p "
@@ -625,7 +624,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
625
624
  &new_keepalive_time)) {
626
625
  if (new_keepalive_time > parent_->chand_->keepalive_time_) {
627
626
  parent_->chand_->keepalive_time_ = new_keepalive_time;
628
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
627
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
629
628
  gpr_log(GPR_INFO, "chand=%p: throttling keepalive time to %d",
630
629
  parent_->chand_, parent_->chand_->keepalive_time_);
631
630
  }
@@ -934,7 +933,7 @@ class ClientChannel::ClientChannelControlHelper
934
933
  std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) override
935
934
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
936
935
  if (chand_->resolver_ == nullptr) return; // Shutting down.
937
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
936
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
938
937
  const char* extra = chand_->disconnect_error_ == GRPC_ERROR_NONE
939
938
  ? ""
940
939
  : " (ignoring -- channel shutting down)";
@@ -952,7 +951,7 @@ class ClientChannel::ClientChannelControlHelper
952
951
  void RequestReresolution() override
953
952
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
954
953
  if (chand_->resolver_ == nullptr) return; // Shutting down.
955
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
954
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
956
955
  gpr_log(GPR_INFO, "chand=%p: started name re-resolving", chand_);
957
956
  }
958
957
  chand_->resolver_->RequestReresolutionLocked();
@@ -1041,7 +1040,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1041
1040
  work_serializer_(std::make_shared<WorkSerializer>()),
1042
1041
  state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
1043
1042
  subchannel_pool_(GetSubchannelPool(args->channel_args)) {
1044
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1043
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1045
1044
  gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
1046
1045
  this, owning_stack_);
1047
1046
  }
@@ -1116,7 +1115,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1116
1115
  }
1117
1116
 
1118
1117
  ClientChannel::~ClientChannel() {
1119
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1118
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1120
1119
  gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
1121
1120
  }
1122
1121
  DestroyResolverAndLbPolicyLocked();
@@ -1203,7 +1202,7 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
1203
1202
  void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1204
1203
  // Handle race conditions.
1205
1204
  if (resolver_ == nullptr) return;
1206
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1205
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1207
1206
  gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
1208
1207
  }
1209
1208
  // We only want to trace the address resolution in the follow cases:
@@ -1236,14 +1235,14 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1236
1235
  RefCountedPtr<ServiceConfig> service_config;
1237
1236
  RefCountedPtr<ConfigSelector> config_selector;
1238
1237
  if (!result.service_config.ok()) {
1239
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1238
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1240
1239
  gpr_log(GPR_INFO, "chand=%p: resolver returned service config error: %s",
1241
1240
  this, result.service_config.status().ToString().c_str());
1242
1241
  }
1243
1242
  // If the service config was invalid, then fallback to the
1244
1243
  // previously returned service config.
1245
1244
  if (saved_service_config_ != nullptr) {
1246
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1245
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1247
1246
  gpr_log(GPR_INFO,
1248
1247
  "chand=%p: resolver returned invalid service config. "
1249
1248
  "Continuing to use previous service config.",
@@ -1260,7 +1259,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1260
1259
  }
1261
1260
  } else if (*result.service_config == nullptr) {
1262
1261
  // Resolver did not return any service config.
1263
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1262
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1264
1263
  gpr_log(GPR_INFO,
1265
1264
  "chand=%p: resolver returned no service config. Using default "
1266
1265
  "service config for channel.",
@@ -1297,7 +1296,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1297
1296
  UpdateServiceConfigInControlPlaneLocked(std::move(service_config),
1298
1297
  std::move(config_selector),
1299
1298
  lb_policy_config->name());
1300
- } else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1299
+ } else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1301
1300
  gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
1302
1301
  }
1303
1302
  // Create or update LB policy, as needed.
@@ -1328,7 +1327,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
1328
1327
 
1329
1328
  void ClientChannel::OnResolverErrorLocked(absl::Status status) {
1330
1329
  if (resolver_ == nullptr) return;
1331
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1330
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1332
1331
  gpr_log(GPR_INFO, "chand=%p: resolver transient failure: %s", this,
1333
1332
  status.ToString().c_str());
1334
1333
  }
@@ -1387,7 +1386,7 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
1387
1386
  lb_policy_ = CreateLbPolicyLocked(*update_args.args);
1388
1387
  }
1389
1388
  // Update the policy.
1390
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1389
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1391
1390
  gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
1392
1391
  lb_policy_.get());
1393
1392
  }
@@ -1404,8 +1403,8 @@ OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
1404
1403
  lb_policy_args.args = &args;
1405
1404
  OrphanablePtr<LoadBalancingPolicy> lb_policy =
1406
1405
  MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
1407
- &grpc_client_channel_routing_trace);
1408
- 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)) {
1409
1408
  gpr_log(GPR_INFO, "chand=%p: created new LB policy %p", this,
1410
1409
  lb_policy.get());
1411
1410
  }
@@ -1442,7 +1441,7 @@ void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
1442
1441
  RefCountedPtr<ServiceConfig> service_config,
1443
1442
  RefCountedPtr<ConfigSelector> config_selector, std::string lb_policy_name) {
1444
1443
  std::string service_config_json(service_config->json_string());
1445
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1444
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1446
1445
  gpr_log(GPR_INFO,
1447
1446
  "chand=%p: resolver returned updated service config: \"%s\"", this,
1448
1447
  service_config_json.c_str());
@@ -1457,7 +1456,7 @@ void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
1457
1456
  }
1458
1457
  // Save config selector.
1459
1458
  saved_config_selector_ = std::move(config_selector);
1460
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1459
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1461
1460
  gpr_log(GPR_INFO, "chand=%p: using ConfigSelector %p", this,
1462
1461
  saved_config_selector_.get());
1463
1462
  }
@@ -1468,7 +1467,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1468
1467
  RefCountedPtr<ServiceConfig> service_config = saved_service_config_;
1469
1468
  // Grab ref to config selector. Use default if resolver didn't supply one.
1470
1469
  RefCountedPtr<ConfigSelector> config_selector = saved_config_selector_;
1471
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1470
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1472
1471
  gpr_log(GPR_INFO, "chand=%p: switching to ConfigSelector %p", this,
1473
1472
  saved_config_selector_.get());
1474
1473
  }
@@ -1539,7 +1538,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1539
1538
  }
1540
1539
 
1541
1540
  void ClientChannel::CreateResolverLocked() {
1542
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1541
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1543
1542
  gpr_log(GPR_INFO, "chand=%p: starting name resolution", this);
1544
1543
  }
1545
1544
  resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
@@ -1552,20 +1551,20 @@ void ClientChannel::CreateResolverLocked() {
1552
1551
  GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
1553
1552
  absl::make_unique<LoadBalancingPolicy::QueuePicker>(nullptr));
1554
1553
  resolver_->StartLocked();
1555
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1554
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1556
1555
  gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
1557
1556
  }
1558
1557
  }
1559
1558
 
1560
1559
  void ClientChannel::DestroyResolverAndLbPolicyLocked() {
1561
1560
  if (resolver_ != nullptr) {
1562
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1561
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1563
1562
  gpr_log(GPR_INFO, "chand=%p: shutting down resolver=%p", this,
1564
1563
  resolver_.get());
1565
1564
  }
1566
1565
  resolver_.reset();
1567
1566
  if (lb_policy_ != nullptr) {
1568
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1567
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1569
1568
  gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
1570
1569
  lb_policy_.get());
1571
1570
  }
@@ -1733,7 +1732,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
1733
1732
  }
1734
1733
  // Disconnect or enter IDLE.
1735
1734
  if (op->disconnect_with_error != GRPC_ERROR_NONE) {
1736
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
1735
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1737
1736
  gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
1738
1737
  grpc_error_std_string(op->disconnect_with_error).c_str());
1739
1738
  }
@@ -1911,6 +1910,11 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
1911
1910
  GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
1912
1911
  CallData* calld = static_cast<CallData*>(elem->call_data);
1913
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
+ }
1914
1918
  if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
1915
1919
  grpc_deadline_state_client_start_transport_stream_op_batch(elem, batch);
1916
1920
  }
@@ -1918,8 +1922,13 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
1918
1922
  // in case we wind up failing the call before we get down to the retry
1919
1923
  // or LB call layer.
1920
1924
  if (batch->recv_trailing_metadata) {
1921
- calld->InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
1922
- 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_;
1923
1932
  }
1924
1933
  // If we already have a dynamic call, pass the batch down to it.
1925
1934
  // Note that once we have done so, we do not need to acquire the channel's
@@ -2144,7 +2153,7 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
2144
2153
  auto* calld = static_cast<CallData*>(self->elem_->call_data);
2145
2154
  {
2146
2155
  MutexLock lock(&chand->resolution_mu_);
2147
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2156
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2148
2157
  gpr_log(GPR_INFO,
2149
2158
  "chand=%p calld=%p: cancelling resolver queued pick: "
2150
2159
  "error=%s self=%p calld->resolver_pick_canceller=%p",
@@ -2171,7 +2180,7 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
2171
2180
  grpc_call_element* elem) {
2172
2181
  if (!queued_pending_resolver_result_) return;
2173
2182
  auto* chand = static_cast<ClientChannel*>(elem->channel_data);
2174
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2183
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2175
2184
  gpr_log(GPR_INFO,
2176
2185
  "chand=%p calld=%p: removing from resolver queued picks list",
2177
2186
  chand, this);
@@ -2186,7 +2195,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
2186
2195
  grpc_call_element* elem) {
2187
2196
  if (queued_pending_resolver_result_) return;
2188
2197
  auto* chand = static_cast<ClientChannel*>(elem->channel_data);
2189
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2198
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2190
2199
  gpr_log(GPR_INFO, "chand=%p calld=%p: adding to resolver queued picks list",
2191
2200
  chand, this);
2192
2201
  }
@@ -2200,7 +2209,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
2200
2209
  grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2201
2210
  grpc_call_element* elem, grpc_metadata_batch* initial_metadata) {
2202
2211
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2203
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2212
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2204
2213
  gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
2205
2214
  chand, this);
2206
2215
  }
@@ -2261,30 +2270,27 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2261
2270
  void ClientChannel::CallData::
2262
2271
  RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
2263
2272
  void* arg, grpc_error_handle error) {
2264
- 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);
2265
2276
  auto* service_config_call_data =
2266
2277
  static_cast<ClientChannelServiceConfigCallData*>(
2267
- 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
+ }
2268
2286
  if (service_config_call_data != nullptr) {
2269
2287
  service_config_call_data->call_dispatch_controller()->Commit();
2270
2288
  }
2271
2289
  // Chain to original callback.
2272
- Closure::Run(DEBUG_LOCATION, self->original_recv_trailing_metadata_ready_,
2290
+ Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
2273
2291
  GRPC_ERROR_REF(error));
2274
2292
  }
2275
2293
 
2276
- void ClientChannel::CallData::
2277
- InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
2278
- grpc_transport_stream_op_batch* batch) {
2279
- original_recv_trailing_metadata_ready_ =
2280
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
2281
- GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
2282
- RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
2283
- this, nullptr);
2284
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
2285
- &recv_trailing_metadata_ready_;
2286
- }
2287
-
2288
2294
  void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
2289
2295
  grpc_error_handle error) {
2290
2296
  // TODO(roth): Does this callback need to hold a ref to the call stack?
@@ -2298,7 +2304,7 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
2298
2304
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2299
2305
  CallData* calld = static_cast<CallData*>(elem->call_data);
2300
2306
  if (error != GRPC_ERROR_NONE) {
2301
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2307
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2302
2308
  gpr_log(GPR_INFO,
2303
2309
  "chand=%p calld=%p: error applying config to call: error=%s",
2304
2310
  chand, calld, grpc_error_std_string(error).c_str());
@@ -2330,6 +2336,9 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2330
2336
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2331
2337
  // If we're still in IDLE, we need to start resolving.
2332
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
+ }
2333
2342
  // Bounce into the control plane work serializer to start resolving,
2334
2343
  // in case we are still in IDLE state. Since we are holding on to the
2335
2344
  // resolution mutex here, we offload it on the ExecCtx so that we don't
@@ -2367,6 +2376,10 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2367
2376
  absl::Status resolver_error = chand->resolver_transient_failure_error_;
2368
2377
  if (!resolver_error.ok() && (send_initial_metadata_flags &
2369
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
+ }
2370
2383
  MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
2371
2384
  *error = absl_status_to_grpc_error(resolver_error);
2372
2385
  return true;
@@ -2374,6 +2387,10 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2374
2387
  // Either the resolver has not yet returned a result, or it has
2375
2388
  // returned transient failure but the call is wait_for_ready. In
2376
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
+ }
2377
2394
  MaybeAddCallToResolverQueuedCallsLocked(elem);
2378
2395
  return false;
2379
2396
  }
@@ -2398,7 +2415,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
2398
2415
  call_combiner_};
2399
2416
  grpc_error_handle error = GRPC_ERROR_NONE;
2400
2417
  DynamicFilters* channel_stack = args.channel_stack.get();
2401
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2418
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2402
2419
  gpr_log(
2403
2420
  GPR_INFO,
2404
2421
  "chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
@@ -2406,7 +2423,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
2406
2423
  }
2407
2424
  dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
2408
2425
  if (error != GRPC_ERROR_NONE) {
2409
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
2426
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2410
2427
  gpr_log(GPR_INFO,
2411
2428
  "chand=%p calld=%p: failed to create dynamic call: error=%s",
2412
2429
  chand, this, grpc_error_std_string(error).c_str());
@@ -2427,6 +2444,7 @@ class ClientChannel::LoadBalancedCall::Metadata
2427
2444
  explicit Metadata(grpc_metadata_batch* batch) : batch_(batch) {}
2428
2445
 
2429
2446
  void Add(absl::string_view key, absl::string_view value) override {
2447
+ if (batch_ == nullptr) return;
2430
2448
  // Gross, egregious hack to support legacy grpclb behavior.
2431
2449
  // TODO(ctiller): Use a promise context for this once that plumbing is done.
2432
2450
  if (key == GrpcLbClientStatsMetadata::key()) {
@@ -2447,6 +2465,7 @@ class ClientChannel::LoadBalancedCall::Metadata
2447
2465
 
2448
2466
  std::vector<std::pair<std::string, std::string>> TestOnlyCopyToVector()
2449
2467
  override {
2468
+ if (batch_ == nullptr) return {};
2450
2469
  Encoder encoder;
2451
2470
  batch_->Encode(&encoder);
2452
2471
  return encoder.Take();
@@ -2454,6 +2473,7 @@ class ClientChannel::LoadBalancedCall::Metadata
2454
2473
 
2455
2474
  absl::optional<absl::string_view> Lookup(absl::string_view key,
2456
2475
  std::string* buffer) const override {
2476
+ if (batch_ == nullptr) return absl::nullopt;
2457
2477
  return batch_->GetStringValue(key, buffer);
2458
2478
  }
2459
2479
 
@@ -2524,7 +2544,8 @@ class ClientChannel::LoadBalancedCall::BackendMetricAccessor
2524
2544
  : lb_call_(lb_call) {}
2525
2545
 
2526
2546
  const BackendMetricData* GetBackendMetricData() override {
2527
- if (lb_call_->backend_metric_data_ == nullptr) {
2547
+ if (lb_call_->backend_metric_data_ == nullptr &&
2548
+ lb_call_->recv_trailing_metadata_ != nullptr) {
2528
2549
  if (const auto* md = lb_call_->recv_trailing_metadata_->get_pointer(
2529
2550
  XEndpointLoadMetricsBinMetadata())) {
2530
2551
  lb_call_->backend_metric_data_ =
@@ -2560,7 +2581,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
2560
2581
  ConfigSelector::CallDispatchController* call_dispatch_controller,
2561
2582
  bool is_transparent_retry)
2562
2583
  : InternallyRefCounted(
2563
- GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
2584
+ GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
2564
2585
  ? "LoadBalancedCall"
2565
2586
  : nullptr),
2566
2587
  chand_(chand),
@@ -2574,7 +2595,11 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
2574
2595
  on_call_destruction_complete_(on_call_destruction_complete),
2575
2596
  call_dispatch_controller_(call_dispatch_controller),
2576
2597
  call_attempt_tracer_(
2577
- 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
+ }
2578
2603
 
2579
2604
  ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
2580
2605
  GRPC_ERROR_UNREF(cancel_error_);
@@ -2594,6 +2619,12 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
2594
2619
  }
2595
2620
 
2596
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
+ }
2597
2628
  // Compute latency and report it to the tracer.
2598
2629
  if (call_attempt_tracer_ != nullptr) {
2599
2630
  gpr_timespec latency =
@@ -2620,7 +2651,7 @@ size_t ClientChannel::LoadBalancedCall::GetBatchIndex(
2620
2651
  void ClientChannel::LoadBalancedCall::PendingBatchesAdd(
2621
2652
  grpc_transport_stream_op_batch* batch) {
2622
2653
  const size_t idx = GetBatchIndex(batch);
2623
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2654
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2624
2655
  gpr_log(GPR_INFO,
2625
2656
  "chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
2626
2657
  chand_, this, idx);
@@ -2647,7 +2678,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
2647
2678
  GPR_ASSERT(error != GRPC_ERROR_NONE);
2648
2679
  GRPC_ERROR_UNREF(failure_error_);
2649
2680
  failure_error_ = error;
2650
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2681
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2651
2682
  size_t num_batches = 0;
2652
2683
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2653
2684
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2689,7 +2720,7 @@ void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner(
2689
2720
 
2690
2721
  // This is called via the call combiner, so access to calld is synchronized.
2691
2722
  void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
2692
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2723
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2693
2724
  size_t num_batches = 0;
2694
2725
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2695
2726
  if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2718,6 +2749,14 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
2718
2749
 
2719
2750
  void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2720
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
+ }
2721
2760
  // Handle call tracing.
2722
2761
  if (call_attempt_tracer_ != nullptr) {
2723
2762
  // Record send ops in tracer.
@@ -2781,7 +2820,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2781
2820
  // the channel's data plane mutex, which is more efficient (especially for
2782
2821
  // streaming calls).
2783
2822
  if (subchannel_call_ != nullptr) {
2784
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2823
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2785
2824
  gpr_log(GPR_INFO,
2786
2825
  "chand=%p lb_call=%p: starting batch on subchannel_call=%p",
2787
2826
  chand_, this, subchannel_call_.get());
@@ -2793,7 +2832,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2793
2832
  //
2794
2833
  // If we've previously been cancelled, immediately fail any new batches.
2795
2834
  if (GPR_UNLIKELY(cancel_error_ != GRPC_ERROR_NONE)) {
2796
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2835
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2797
2836
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
2798
2837
  chand_, this, grpc_error_std_string(cancel_error_).c_str());
2799
2838
  }
@@ -2811,7 +2850,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2811
2850
  // error to the caller when the first batch does get passed down.
2812
2851
  GRPC_ERROR_UNREF(cancel_error_);
2813
2852
  cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
2814
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2853
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2815
2854
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
2816
2855
  chand_, this, grpc_error_std_string(cancel_error_).c_str());
2817
2856
  }
@@ -2827,7 +2866,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2827
2866
  // For batches containing a send_initial_metadata op, acquire the
2828
2867
  // channel's data plane mutex to pick a subchannel.
2829
2868
  if (GPR_LIKELY(batch->send_initial_metadata)) {
2830
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2869
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2831
2870
  gpr_log(GPR_INFO,
2832
2871
  "chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
2833
2872
  chand_, this);
@@ -2835,7 +2874,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2835
2874
  PickSubchannel(this, GRPC_ERROR_NONE);
2836
2875
  } else {
2837
2876
  // For all other batches, release the call combiner.
2838
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2877
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2839
2878
  gpr_log(GPR_INFO,
2840
2879
  "chand=%p lb_call=%p: saved batch, yielding call combiner",
2841
2880
  chand_, this);
@@ -2848,6 +2887,12 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2848
2887
  void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
2849
2888
  void* arg, grpc_error_handle error) {
2850
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
+ }
2851
2896
  self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
2852
2897
  self->peer_string_);
2853
2898
  Closure::Run(DEBUG_LOCATION,
@@ -2858,6 +2903,11 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
2858
2903
  void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
2859
2904
  void* arg, grpc_error_handle error) {
2860
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
+ }
2861
2911
  if (error == GRPC_ERROR_NONE) {
2862
2912
  // recv_initial_metadata_flags is not populated for clients
2863
2913
  self->call_attempt_tracer_->RecordReceivedInitialMetadata(
@@ -2870,6 +2920,10 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
2870
2920
  void ClientChannel::LoadBalancedCall::RecvMessageReady(
2871
2921
  void* arg, grpc_error_handle error) {
2872
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
+ }
2873
2927
  if (*self->recv_message_ != nullptr) {
2874
2928
  self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
2875
2929
  }
@@ -2880,6 +2934,15 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
2880
2934
  void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2881
2935
  void* arg, grpc_error_handle error) {
2882
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
+ }
2883
2946
  // Check if we have a tracer or an LB callback to invoke.
2884
2947
  if (self->call_attempt_tracer_ != nullptr ||
2885
2948
  self->lb_subchannel_call_tracker_ != nullptr) {
@@ -2905,22 +2968,7 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2905
2968
  status = absl::Status(static_cast<absl::StatusCode>(code), message);
2906
2969
  }
2907
2970
  }
2908
- // If we have a tracer, notify it.
2909
- if (self->call_attempt_tracer_ != nullptr) {
2910
- self->call_attempt_tracer_->RecordReceivedTrailingMetadata(
2911
- status, self->recv_trailing_metadata_,
2912
- *self->transport_stream_stats_);
2913
- }
2914
- // If the LB policy requested a callback for trailing metadata, invoke
2915
- // the callback.
2916
- if (self->lb_subchannel_call_tracker_ != nullptr) {
2917
- Metadata trailing_metadata(self->recv_trailing_metadata_);
2918
- BackendMetricAccessor backend_metric_accessor(self);
2919
- LoadBalancingPolicy::SubchannelCallTrackerInterface::FinishArgs args = {
2920
- status, &trailing_metadata, &backend_metric_accessor};
2921
- self->lb_subchannel_call_tracker_->Finish(args);
2922
- self->lb_subchannel_call_tracker_.reset();
2923
- }
2971
+ self->RecordCallCompletion(status);
2924
2972
  }
2925
2973
  // Chain to original callback.
2926
2974
  if (self->failure_error_ != GRPC_ERROR_NONE) {
@@ -2933,6 +2981,25 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2933
2981
  error);
2934
2982
  }
2935
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
+
2936
3003
  void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
2937
3004
  SubchannelCall::Args call_args = {
2938
3005
  std::move(connected_subchannel_), pollent_, path_.Ref(), /*start_time=*/0,
@@ -2942,7 +3009,7 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
2942
3009
  call_context_, call_combiner_};
2943
3010
  grpc_error_handle error = GRPC_ERROR_NONE;
2944
3011
  subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
2945
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3012
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2946
3013
  gpr_log(GPR_INFO,
2947
3014
  "chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
2948
3015
  this, subchannel_call_.get(), grpc_error_std_string(error).c_str());
@@ -2981,7 +3048,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
2981
3048
  auto* chand = lb_call->chand_;
2982
3049
  {
2983
3050
  MutexLock lock(&chand->data_plane_mu_);
2984
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3051
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2985
3052
  gpr_log(GPR_INFO,
2986
3053
  "chand=%p lb_call=%p: cancelling queued pick: "
2987
3054
  "error=%s self=%p calld->pick_canceller=%p",
@@ -3007,7 +3074,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
3007
3074
 
3008
3075
  void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
3009
3076
  if (!queued_pending_lb_pick_) return;
3010
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3077
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3011
3078
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
3012
3079
  chand_, this);
3013
3080
  }
@@ -3019,7 +3086,7 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
3019
3086
 
3020
3087
  void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
3021
3088
  if (queued_pending_lb_pick_) return;
3022
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3089
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3023
3090
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
3024
3091
  chand_, this);
3025
3092
  }
@@ -3040,7 +3107,7 @@ void ClientChannel::LoadBalancedCall::PickDone(void* arg,
3040
3107
  grpc_error_handle error) {
3041
3108
  auto* self = static_cast<LoadBalancedCall*>(arg);
3042
3109
  if (error != GRPC_ERROR_NONE) {
3043
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3110
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3044
3111
  gpr_log(GPR_INFO,
3045
3112
  "chand=%p lb_call=%p: failed to pick subchannel: error=%s",
3046
3113
  self->chand_, self, grpc_error_std_string(error).c_str());
@@ -3090,7 +3157,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3090
3157
  // CompletePick
3091
3158
  [this](LoadBalancingPolicy::PickResult::Complete* complete_pick)
3092
3159
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3093
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3160
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3094
3161
  gpr_log(GPR_INFO,
3095
3162
  "chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
3096
3163
  chand_, this, complete_pick->subchannel.get());
@@ -3106,7 +3173,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3106
3173
  // yet seen that change and given us a new picker), then just
3107
3174
  // queue the pick. We'll try again as soon as we get a new picker.
3108
3175
  if (connected_subchannel_ == nullptr) {
3109
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3176
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3110
3177
  gpr_log(GPR_INFO,
3111
3178
  "chand=%p lb_call=%p: subchannel returned by LB picker "
3112
3179
  "has no connected subchannel; queueing pick",
@@ -3126,7 +3193,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3126
3193
  // QueuePick
3127
3194
  [this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/)
3128
3195
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3129
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3196
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3130
3197
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
3131
3198
  this);
3132
3199
  }
@@ -3137,7 +3204,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3137
3204
  [this, send_initial_metadata_flags,
3138
3205
  &error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
3139
3206
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3140
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3207
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3141
3208
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
3142
3209
  chand_, this, fail_pick->status.ToString().c_str());
3143
3210
  }
@@ -3161,7 +3228,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3161
3228
  // DropPick
3162
3229
  [this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick)
3163
3230
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
3164
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
3231
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3165
3232
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
3166
3233
  chand_, this, drop_pick->status.ToString().c_str());
3167
3234
  }