grpc 1.31.1 → 1.32.0.pre1

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 (431) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +595 -15723
  3. data/include/grpc/grpc_security.h +31 -14
  4. data/include/grpc/impl/codegen/README.md +22 -0
  5. data/include/grpc/impl/codegen/port_platform.h +6 -1
  6. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
  7. data/src/core/ext/filters/client_channel/client_channel.cc +64 -20
  8. data/src/core/ext/filters/client_channel/client_channel.h +1 -1
  9. data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
  10. data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -1
  11. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -3
  12. data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
  13. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -4
  14. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +20 -13
  15. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
  18. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -13
  19. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +29 -10
  20. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +5 -4
  21. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +20 -9
  22. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +18 -12
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +22 -14
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +18 -9
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +54 -56
  26. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
  27. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  28. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  29. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  30. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  31. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +363 -14
  32. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -1
  33. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +5 -4
  34. data/src/core/ext/filters/client_channel/server_address.cc +40 -7
  35. data/src/core/ext/filters/client_channel/server_address.h +42 -4
  36. data/src/core/ext/filters/client_channel/subchannel.cc +64 -23
  37. data/src/core/ext/filters/client_channel/subchannel.h +16 -4
  38. data/src/core/ext/filters/max_age/max_age_filter.cc +2 -1
  39. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
  40. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +18 -1
  41. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
  42. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +19 -25
  43. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -1
  44. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -2
  45. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +6 -6
  46. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -2
  47. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +239 -277
  48. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -1
  49. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
  50. data/src/core/ext/transport/chttp2/transport/internal.h +5 -1
  51. data/src/core/ext/transport/chttp2/transport/parsing.cc +1 -28
  52. data/src/core/ext/transport/chttp2/transport/writing.cc +6 -5
  53. data/src/core/ext/transport/inproc/inproc_transport.cc +12 -12
  54. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +224 -0
  55. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +700 -0
  56. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
  57. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
  58. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +380 -0
  59. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1378 -0
  60. data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/filter.upb.c +8 -8
  61. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
  62. data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/outlier_detection.upb.c +8 -8
  63. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
  64. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +112 -0
  65. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +334 -0
  66. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/backoff.upb.c +8 -8
  67. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
  68. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +309 -0
  69. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
  70. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +96 -0
  71. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +328 -0
  72. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
  73. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
  74. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +195 -0
  75. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +634 -0
  76. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
  77. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
  78. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/http_uri.upb.c +8 -8
  79. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
  80. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +152 -0
  81. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +536 -0
  82. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
  83. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
  84. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +6 -6
  85. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
  86. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
  87. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
  88. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
  89. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
  90. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
  91. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
  92. data/src/core/ext/upb-generated/envoy/config/listener/{v2 → v3}/api_listener.upb.c +8 -8
  93. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
  94. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +108 -0
  95. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +401 -0
  96. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +138 -0
  97. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +490 -0
  98. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
  99. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
  100. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +174 -0
  101. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +599 -0
  102. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
  103. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
  104. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +773 -0
  105. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2855 -0
  106. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +59 -0
  107. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +135 -0
  108. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
  109. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
  110. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +312 -0
  111. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1125 -0
  112. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
  113. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
  114. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +111 -0
  115. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +401 -0
  116. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +72 -0
  117. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +198 -0
  118. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +105 -0
  119. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +388 -0
  120. data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +5 -6
  121. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
  122. data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +5 -4
  123. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
  124. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +129 -0
  125. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +386 -0
  126. data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +5 -6
  127. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
  128. data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +5 -6
  129. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
  130. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
  131. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
  132. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +5 -6
  133. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
  134. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +5 -6
  135. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
  136. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
  137. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
  138. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
  139. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
  140. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
  141. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
  142. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
  143. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
  144. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
  145. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +127 -0
  146. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
  147. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
  148. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
  149. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
  150. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
  151. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
  152. data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
  153. data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +8 -8
  154. data/src/core/ext/upb-generated/envoy/type/{percent.upb.c → v3/percent.upb.c} +9 -8
  155. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
  156. data/src/core/ext/upb-generated/envoy/type/{range.upb.c → v3/range.upb.c} +12 -11
  157. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
  158. data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +6 -5
  159. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
  160. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
  161. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
  162. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +36 -36
  163. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +1 -1
  164. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
  165. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
  166. data/src/core/ext/upb-generated/validate/validate.upb.c +11 -11
  167. data/src/core/ext/upb-generated/validate/validate.upb.h +1 -1
  168. data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.cc +1045 -767
  169. data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.h +114 -99
  170. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +44 -2
  171. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +8 -3
  172. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel.h +4 -4
  173. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +3 -3
  174. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_secure.cc +2 -5
  175. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +85 -417
  176. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +12 -45
  177. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +2 -2
  178. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +3 -3
  179. data/src/core/lib/channel/channelz.cc +14 -15
  180. data/src/core/lib/channel/channelz.h +1 -1
  181. data/src/core/lib/channel/channelz_registry.cc +3 -1
  182. data/src/core/lib/gpr/sync_posix.cc +2 -8
  183. data/src/core/lib/iomgr/endpoint.cc +5 -1
  184. data/src/core/lib/iomgr/endpoint.h +7 -3
  185. data/src/core/lib/iomgr/endpoint_cfstream.cc +32 -11
  186. data/src/core/lib/iomgr/ev_posix.cc +0 -2
  187. data/src/core/lib/iomgr/iomgr.cc +0 -10
  188. data/src/core/lib/iomgr/iomgr.h +0 -10
  189. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +1 -1
  190. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +3 -3
  191. data/src/core/lib/iomgr/sockaddr_utils.cc +2 -1
  192. data/src/core/lib/iomgr/sockaddr_utils.h +2 -1
  193. data/src/core/lib/iomgr/tcp_custom.cc +32 -16
  194. data/src/core/lib/iomgr/tcp_posix.cc +31 -13
  195. data/src/core/lib/iomgr/tcp_windows.cc +26 -10
  196. data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
  197. data/src/core/lib/security/authorization/authorization_engine.h +84 -0
  198. data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
  199. data/src/core/lib/security/authorization/evaluate_args.h +59 -0
  200. data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
  201. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +42 -0
  202. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +68 -0
  203. data/src/core/lib/security/authorization/mock_cel/cel_value.h +93 -0
  204. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
  205. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +56 -0
  206. data/src/core/lib/security/authorization/mock_cel/statusor.h +50 -0
  207. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -38
  208. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -2
  209. data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
  210. data/src/core/lib/surface/call.cc +12 -12
  211. data/src/core/lib/surface/call.h +2 -1
  212. data/src/core/lib/surface/channel.cc +28 -20
  213. data/src/core/lib/surface/channel.h +12 -2
  214. data/src/core/lib/surface/completion_queue.cc +10 -272
  215. data/src/core/lib/surface/completion_queue.h +0 -8
  216. data/src/core/lib/surface/init.cc +1 -3
  217. data/src/core/lib/surface/server.cc +1066 -1244
  218. data/src/core/lib/surface/server.h +363 -87
  219. data/src/core/lib/surface/version.cc +2 -2
  220. data/src/core/lib/transport/authority_override.cc +38 -0
  221. data/src/core/lib/transport/authority_override.h +32 -0
  222. data/src/core/lib/transport/connectivity_state.cc +18 -13
  223. data/src/core/lib/transport/connectivity_state.h +18 -6
  224. data/src/core/lib/transport/error_utils.cc +13 -0
  225. data/src/core/lib/transport/error_utils.h +6 -0
  226. data/src/core/lib/transport/static_metadata.cc +295 -276
  227. data/src/core/lib/transport/static_metadata.h +80 -73
  228. data/src/core/lib/transport/transport.h +7 -0
  229. data/src/core/lib/uri/uri_parser.cc +23 -21
  230. data/src/core/lib/uri/uri_parser.h +3 -1
  231. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +22 -0
  232. data/src/core/tsi/ssl_transport_security.cc +3 -9
  233. data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
  234. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -2
  235. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -4
  236. data/src/ruby/lib/grpc/version.rb +1 -1
  237. data/src/ruby/spec/channel_credentials_spec.rb +10 -0
  238. data/src/ruby/spec/generic/active_call_spec.rb +19 -8
  239. data/third_party/abseil-cpp/absl/algorithm/container.h +1727 -0
  240. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +161 -0
  241. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
  242. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
  243. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  244. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  245. data/third_party/abseil-cpp/absl/container/fixed_array.h +515 -0
  246. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
  247. data/third_party/abseil-cpp/absl/container/internal/common.h +202 -0
  248. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +440 -0
  249. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +146 -0
  250. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +191 -0
  251. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  252. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +269 -0
  253. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +297 -0
  254. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
  255. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +49 -0
  256. data/third_party/abseil-cpp/absl/container/internal/layout.h +741 -0
  257. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
  258. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1882 -0
  259. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +138 -0
  260. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  261. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1895 -0
  262. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  263. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
  264. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
  265. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +192 -0
  266. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +125 -0
  267. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +70 -0
  268. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +99 -0
  269. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
  270. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  271. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +85 -0
  272. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
  273. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +128 -0
  274. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +194 -0
  275. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  276. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
  277. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  278. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +25 -0
  279. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  280. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1480 -0
  281. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  282. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  283. data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
  284. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  285. data/third_party/abseil-cpp/absl/hash/hash.h +324 -0
  286. data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
  287. data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
  288. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
  289. data/third_party/abseil-cpp/absl/hash/internal/hash.h +988 -0
  290. data/third_party/abseil-cpp/absl/status/status.cc +447 -0
  291. data/third_party/abseil-cpp/absl/status/status.h +428 -0
  292. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +43 -0
  293. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  294. data/third_party/abseil-cpp/absl/strings/cord.cc +2019 -0
  295. data/third_party/abseil-cpp/absl/strings/cord.h +1121 -0
  296. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +151 -0
  297. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  298. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  299. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
  300. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
  301. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  302. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  303. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
  304. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  305. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
  306. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +261 -0
  307. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  308. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  309. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +484 -0
  310. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
  311. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2728 -0
  312. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1056 -0
  313. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  314. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  315. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  316. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  317. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  318. data/third_party/abseil-cpp/absl/types/variant.h +861 -0
  319. data/third_party/boringssl-with-bazel/err_data.c +263 -257
  320. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +16 -0
  321. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +456 -0
  322. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +192 -0
  323. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
  324. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +52 -0
  325. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
  326. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +39 -7
  327. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -3
  328. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +11 -0
  329. data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -0
  330. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
  331. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +10 -0
  332. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +34 -9
  333. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -0
  334. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  335. data/third_party/upb/upb/decode.c +64 -15
  336. data/third_party/upb/upb/encode.c +2 -2
  337. data/third_party/upb/upb/msg.h +2 -2
  338. data/third_party/upb/upb/port_def.inc +1 -1
  339. data/third_party/upb/upb/table.c +0 -11
  340. data/third_party/upb/upb/table.int.h +0 -9
  341. data/third_party/upb/upb/upb.c +16 -14
  342. data/third_party/upb/upb/upb.h +26 -0
  343. data/third_party/upb/upb/upb.hpp +2 -0
  344. metadata +257 -155
  345. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  346. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -34
  347. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  348. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -429
  349. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  350. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -198
  351. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  352. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -388
  353. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -52
  354. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  355. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1453
  356. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  357. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -226
  358. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  359. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -323
  360. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  361. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -334
  362. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -79
  363. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  364. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -891
  365. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  366. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -328
  367. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  368. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -71
  369. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  370. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -649
  371. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  372. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -693
  373. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  374. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  375. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -536
  376. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -88
  377. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  378. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -386
  379. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -52
  380. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  381. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -224
  382. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  383. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -32
  384. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  385. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -273
  386. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  387. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -332
  388. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -52
  389. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  390. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -415
  391. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  392. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -32
  393. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  394. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -538
  395. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  396. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -111
  397. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -52
  398. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  399. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -204
  400. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  401. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -32
  402. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  403. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2984
  404. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  405. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -135
  406. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -52
  407. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  408. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -732
  409. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  410. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1167
  411. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  412. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  413. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  414. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -49
  415. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  416. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -136
  417. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  418. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -145
  419. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  420. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  421. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  422. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  423. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -86
  424. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -111
  425. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -61
  426. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  427. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -250
  428. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  429. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  430. data/src/core/lib/slice/slice_hash_table.h +0 -199
  431. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
@@ -23,8 +23,6 @@
23
23
 
24
24
  // Channel arg key for the list of balancer addresses.
25
25
  #define GRPC_ARG_GRPCLB_BALANCER_ADDRESSES "grpc.grpclb_balancer_addresses"
26
- // Channel arg key for a string indicating an address's balancer name.
27
- #define GRPC_ARG_ADDRESS_BALANCER_NAME "grpc.address_balancer_name"
28
26
 
29
27
  namespace grpc_core {
30
28
 
@@ -75,15 +73,4 @@ const ServerAddressList* FindGrpclbBalancerAddressesInChannelArgs(
75
73
  &args, const_cast<char*>(GRPC_ARG_GRPCLB_BALANCER_ADDRESSES));
76
74
  }
77
75
 
78
- grpc_arg CreateGrpclbBalancerNameArg(const char* balancer_name) {
79
- return grpc_channel_arg_string_create(
80
- const_cast<char*>(GRPC_ARG_ADDRESS_BALANCER_NAME),
81
- const_cast<char*>(balancer_name));
82
- }
83
-
84
- const char* FindGrpclbBalancerNameInChannelArgs(const grpc_channel_args& args) {
85
- return grpc_channel_args_find_string(
86
- &args, const_cast<char*>(GRPC_ARG_ADDRESS_BALANCER_NAME));
87
- }
88
-
89
76
  } // namespace grpc_core
@@ -30,9 +30,6 @@ grpc_arg CreateGrpclbBalancerAddressesArg(
30
30
  const ServerAddressList* FindGrpclbBalancerAddressesInChannelArgs(
31
31
  const grpc_channel_args& args);
32
32
 
33
- grpc_arg CreateGrpclbBalancerNameArg(const char* balancer_name);
34
- const char* FindGrpclbBalancerNameInChannelArgs(const grpc_channel_args& args);
35
-
36
33
  } // namespace grpc_core
37
34
 
38
35
  #endif /* \
@@ -35,50 +35,14 @@
35
35
  #include "src/core/lib/gpr/string.h"
36
36
  #include "src/core/lib/iomgr/sockaddr_utils.h"
37
37
  #include "src/core/lib/security/credentials/credentials.h"
38
- #include "src/core/lib/security/transport/target_authority_table.h"
39
38
  #include "src/core/lib/slice/slice_internal.h"
40
39
 
41
40
  namespace grpc_core {
42
41
 
43
- namespace {
44
-
45
- int BalancerNameCmp(const grpc_core::UniquePtr<char>& a,
46
- const grpc_core::UniquePtr<char>& b) {
47
- return strcmp(a.get(), b.get());
48
- }
49
-
50
- RefCountedPtr<TargetAuthorityTable> CreateTargetAuthorityTable(
51
- const ServerAddressList& addresses) {
52
- TargetAuthorityTable::Entry* target_authority_entries =
53
- static_cast<TargetAuthorityTable::Entry*>(
54
- gpr_zalloc(sizeof(*target_authority_entries) * addresses.size()));
55
- for (size_t i = 0; i < addresses.size(); ++i) {
56
- std::string addr_str =
57
- grpc_sockaddr_to_string(&addresses[i].address(), true);
58
- target_authority_entries[i].key =
59
- grpc_slice_from_copied_string(addr_str.c_str());
60
- const char* balancer_name =
61
- FindGrpclbBalancerNameInChannelArgs(*addresses[i].args());
62
- target_authority_entries[i].value.reset(gpr_strdup(balancer_name));
63
- }
64
- RefCountedPtr<TargetAuthorityTable> target_authority_table =
65
- TargetAuthorityTable::Create(addresses.size(), target_authority_entries,
66
- BalancerNameCmp);
67
- gpr_free(target_authority_entries);
68
- return target_authority_table;
69
- }
70
-
71
- } // namespace
72
-
73
42
  grpc_channel_args* ModifyGrpclbBalancerChannelArgs(
74
43
  const ServerAddressList& addresses, grpc_channel_args* args) {
75
44
  absl::InlinedVector<const char*, 1> args_to_remove;
76
- absl::InlinedVector<grpc_arg, 2> args_to_add;
77
- // Add arg for targets info table.
78
- RefCountedPtr<TargetAuthorityTable> target_authority_table =
79
- CreateTargetAuthorityTable(addresses);
80
- args_to_add.emplace_back(
81
- CreateTargetAuthorityTableChannelArg(target_authority_table.get()));
45
+ absl::InlinedVector<grpc_arg, 1> args_to_add;
82
46
  // Substitute the channel credentials with a version without call
83
47
  // credentials: the load balancer is not necessarily trusted to handle
84
48
  // bearer token credentials.
@@ -30,6 +30,7 @@
30
30
  #include "src/core/lib/gprpp/sync.h"
31
31
  #include "src/core/lib/iomgr/sockaddr_utils.h"
32
32
  #include "src/core/lib/transport/connectivity_state.h"
33
+ #include "src/core/lib/transport/error_utils.h"
33
34
 
34
35
  namespace grpc_core {
35
36
 
@@ -200,7 +201,7 @@ void PickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() {
200
201
  grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty update"),
201
202
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
202
203
  channel_control_helper()->UpdateState(
203
- GRPC_CHANNEL_TRANSIENT_FAILURE,
204
+ GRPC_CHANNEL_TRANSIENT_FAILURE, grpc_error_to_absl_status(error),
204
205
  absl::make_unique<TransientFailurePicker>(error));
205
206
  return;
206
207
  }
@@ -318,12 +319,13 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
318
319
  "selected subchannel failed; switching to pending update"),
319
320
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
320
321
  p->channel_control_helper()->UpdateState(
321
- GRPC_CHANNEL_TRANSIENT_FAILURE,
322
+ GRPC_CHANNEL_TRANSIENT_FAILURE, grpc_error_to_absl_status(error),
322
323
  absl::make_unique<TransientFailurePicker>(error));
323
324
  } else {
324
325
  p->channel_control_helper()->UpdateState(
325
- GRPC_CHANNEL_CONNECTING, absl::make_unique<QueuePicker>(p->Ref(
326
- DEBUG_LOCATION, "QueuePicker")));
326
+ GRPC_CHANNEL_CONNECTING, absl::Status(),
327
+ absl::make_unique<QueuePicker>(
328
+ p->Ref(DEBUG_LOCATION, "QueuePicker")));
327
329
  }
328
330
  } else {
329
331
  if (connectivity_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
@@ -338,20 +340,22 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
338
340
  p->selected_ = nullptr;
339
341
  p->subchannel_list_.reset();
340
342
  p->channel_control_helper()->UpdateState(
341
- GRPC_CHANNEL_IDLE, absl::make_unique<QueuePicker>(
342
- p->Ref(DEBUG_LOCATION, "QueuePicker")));
343
+ GRPC_CHANNEL_IDLE, absl::Status(),
344
+ absl::make_unique<QueuePicker>(
345
+ p->Ref(DEBUG_LOCATION, "QueuePicker")));
343
346
  } else {
344
347
  // This is unlikely but can happen when a subchannel has been asked
345
348
  // to reconnect by a different channel and this channel has dropped
346
349
  // some connectivity state notifications.
347
350
  if (connectivity_state == GRPC_CHANNEL_READY) {
348
351
  p->channel_control_helper()->UpdateState(
349
- GRPC_CHANNEL_READY,
352
+ GRPC_CHANNEL_READY, absl::Status(),
350
353
  absl::make_unique<Picker>(subchannel()->Ref()));
351
354
  } else { // CONNECTING
352
355
  p->channel_control_helper()->UpdateState(
353
- connectivity_state, absl::make_unique<QueuePicker>(
354
- p->Ref(DEBUG_LOCATION, "QueuePicker")));
356
+ connectivity_state, absl::Status(),
357
+ absl::make_unique<QueuePicker>(
358
+ p->Ref(DEBUG_LOCATION, "QueuePicker")));
355
359
  }
356
360
  }
357
361
  }
@@ -394,7 +398,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
394
398
  "failed to connect to all addresses"),
395
399
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
396
400
  p->channel_control_helper()->UpdateState(
397
- GRPC_CHANNEL_TRANSIENT_FAILURE,
401
+ GRPC_CHANNEL_TRANSIENT_FAILURE, grpc_error_to_absl_status(error),
398
402
  absl::make_unique<TransientFailurePicker>(error));
399
403
  }
400
404
  }
@@ -406,8 +410,9 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
406
410
  // Only update connectivity state in case 1.
407
411
  if (subchannel_list() == p->subchannel_list_.get()) {
408
412
  p->channel_control_helper()->UpdateState(
409
- GRPC_CHANNEL_CONNECTING, absl::make_unique<QueuePicker>(p->Ref(
410
- DEBUG_LOCATION, "QueuePicker")));
413
+ GRPC_CHANNEL_CONNECTING, absl::Status(),
414
+ absl::make_unique<QueuePicker>(
415
+ p->Ref(DEBUG_LOCATION, "QueuePicker")));
411
416
  }
412
417
  break;
413
418
  }
@@ -446,7 +451,8 @@ void PickFirst::PickFirstSubchannelData::ProcessUnselectedReadyLocked() {
446
451
  }
447
452
  p->selected_ = this;
448
453
  p->channel_control_helper()->UpdateState(
449
- GRPC_CHANNEL_READY, absl::make_unique<Picker>(subchannel()->Ref()));
454
+ GRPC_CHANNEL_READY, absl::Status(),
455
+ absl::make_unique<Picker>(subchannel()->Ref()));
450
456
  for (size_t i = 0; i < subchannel_list()->num_subchannels(); ++i) {
451
457
  if (i != Index()) {
452
458
  subchannel_list()->subchannel(i)->ShutdownLocked();
@@ -20,6 +20,7 @@
20
20
  #include <limits.h>
21
21
 
22
22
  #include "absl/strings/str_cat.h"
23
+ #include "absl/strings/str_format.h"
23
24
 
24
25
  #include <grpc/grpc.h>
25
26
 
@@ -33,6 +34,7 @@
33
34
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
34
35
  #include "src/core/lib/iomgr/timer.h"
35
36
  #include "src/core/lib/iomgr/work_serializer.h"
37
+ #include "src/core/lib/transport/error_utils.h"
36
38
 
37
39
  namespace grpc_core {
38
40
 
@@ -113,6 +115,11 @@ class PriorityLb : public LoadBalancingPolicy {
113
115
  grpc_connectivity_state connectivity_state() const {
114
116
  return connectivity_state_;
115
117
  }
118
+
119
+ const absl::Status& connectivity_status() const {
120
+ return connectivity_status_;
121
+ }
122
+
116
123
  bool failover_timer_callback_pending() const {
117
124
  return failover_timer_callback_pending_;
118
125
  }
@@ -150,6 +157,7 @@ class PriorityLb : public LoadBalancingPolicy {
150
157
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
151
158
  const grpc_channel_args& args) override;
152
159
  void UpdateState(grpc_connectivity_state state,
160
+ const absl::Status& status,
153
161
  std::unique_ptr<SubchannelPicker> picker) override;
154
162
  void RequestReresolution() override;
155
163
  void AddTraceEvent(TraceSeverity severity,
@@ -164,7 +172,7 @@ class PriorityLb : public LoadBalancingPolicy {
164
172
  const grpc_channel_args* args);
165
173
 
166
174
  void OnConnectivityStateUpdateLocked(
167
- grpc_connectivity_state state,
175
+ grpc_connectivity_state state, const absl::Status& status,
168
176
  std::unique_ptr<SubchannelPicker> picker);
169
177
 
170
178
  void StartFailoverTimerLocked();
@@ -180,6 +188,7 @@ class PriorityLb : public LoadBalancingPolicy {
180
188
  OrphanablePtr<LoadBalancingPolicy> child_policy_;
181
189
 
182
190
  grpc_connectivity_state connectivity_state_ = GRPC_CHANNEL_CONNECTING;
191
+ absl::Status connectivity_status_;
183
192
  RefCountedPtr<RefCountedPicker> picker_wrapper_;
184
193
 
185
194
  // States for delayed removal.
@@ -334,6 +343,7 @@ void PriorityLb::HandleChildConnectivityStateChangeLocked(
334
343
  // If it's still READY or IDLE, we stick with this child, so pass
335
344
  // the new picker up to our parent.
336
345
  channel_control_helper()->UpdateState(child->connectivity_state(),
346
+ child->connectivity_status(),
337
347
  child->GetPicker());
338
348
  } else {
339
349
  // If it's no longer READY or IDLE, we should stop using it.
@@ -380,6 +390,7 @@ void PriorityLb::HandleChildConnectivityStateChangeLocked(
380
390
  // The current priority has returned a new picker, so pass it up to
381
391
  // our parent.
382
392
  channel_control_helper()->UpdateState(child->connectivity_state(),
393
+ child->connectivity_status(),
383
394
  child->GetPicker());
384
395
  }
385
396
 
@@ -409,7 +420,7 @@ void PriorityLb::TryNextPriorityLocked(bool report_connecting) {
409
420
  if (child == nullptr) {
410
421
  if (report_connecting) {
411
422
  channel_control_helper()->UpdateState(
412
- GRPC_CHANNEL_CONNECTING,
423
+ GRPC_CHANNEL_CONNECTING, absl::Status(),
413
424
  absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
414
425
  }
415
426
  child = MakeOrphanable<ChildPriority>(
@@ -436,7 +447,7 @@ void PriorityLb::TryNextPriorityLocked(bool report_connecting) {
436
447
  }
437
448
  if (report_connecting) {
438
449
  channel_control_helper()->UpdateState(
439
- GRPC_CHANNEL_CONNECTING,
450
+ GRPC_CHANNEL_CONNECTING, absl::Status(),
440
451
  absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
441
452
  }
442
453
  return;
@@ -456,7 +467,7 @@ void PriorityLb::TryNextPriorityLocked(bool report_connecting) {
456
467
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("no ready priority"),
457
468
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
458
469
  channel_control_helper()->UpdateState(
459
- GRPC_CHANNEL_TRANSIENT_FAILURE,
470
+ GRPC_CHANNEL_TRANSIENT_FAILURE, grpc_error_to_absl_status(error),
460
471
  absl::make_unique<TransientFailurePicker>(error));
461
472
  }
462
473
 
@@ -476,6 +487,7 @@ void PriorityLb::SelectPriorityLocked(uint32_t priority) {
476
487
  // Update picker.
477
488
  auto& child = children_[config_->priorities()[priority]];
478
489
  channel_control_helper()->UpdateState(child->connectivity_state(),
490
+ child->connectivity_status(),
479
491
  child->GetPicker());
480
492
  }
481
493
 
@@ -584,15 +596,18 @@ void PriorityLb::ChildPriority::ResetBackoffLocked() {
584
596
  }
585
597
 
586
598
  void PriorityLb::ChildPriority::OnConnectivityStateUpdateLocked(
587
- grpc_connectivity_state state, std::unique_ptr<SubchannelPicker> picker) {
599
+ grpc_connectivity_state state, const absl::Status& status,
600
+ std::unique_ptr<SubchannelPicker> picker) {
588
601
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
589
602
  gpr_log(GPR_INFO,
590
- "[priority_lb %p] child %s (%p): state update: %s, picker %p",
603
+ "[priority_lb %p] child %s (%p): state update: %s (%s) picker %p",
591
604
  priority_policy_.get(), name_.c_str(), this,
592
- ConnectivityStateName(state), picker.get());
605
+ ConnectivityStateName(state), status.ToString().c_str(),
606
+ picker.get());
593
607
  }
594
608
  // Store the state and picker.
595
609
  connectivity_state_ = state;
610
+ connectivity_status_ = status;
596
611
  picker_wrapper_ = MakeRefCounted<RefCountedPicker>(std::move(picker));
597
612
  // If READY or TRANSIENT_FAILURE, cancel failover timer.
598
613
  if (state == GRPC_CHANNEL_READY || state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
@@ -646,7 +661,10 @@ void PriorityLb::ChildPriority::OnFailoverTimerLocked(grpc_error* error) {
646
661
  priority_policy_.get(), name_.c_str(), this);
647
662
  }
648
663
  failover_timer_callback_pending_ = false;
649
- OnConnectivityStateUpdateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE, nullptr);
664
+ OnConnectivityStateUpdateLocked(
665
+ GRPC_CHANNEL_TRANSIENT_FAILURE,
666
+ absl::Status(absl::StatusCode::kUnavailable, "failover timer fired"),
667
+ nullptr);
650
668
  }
651
669
  Unref(DEBUG_LOCATION, "ChildPriority+OnFailoverTimerLocked");
652
670
  GRPC_ERROR_UNREF(error);
@@ -725,10 +743,11 @@ PriorityLb::ChildPriority::Helper::CreateSubchannel(
725
743
  }
726
744
 
727
745
  void PriorityLb::ChildPriority::Helper::UpdateState(
728
- grpc_connectivity_state state, std::unique_ptr<SubchannelPicker> picker) {
746
+ grpc_connectivity_state state, const absl::Status& status,
747
+ std::unique_ptr<SubchannelPicker> picker) {
729
748
  if (priority_->priority_policy_->shutting_down_) return;
730
749
  // Notify the priority.
731
- priority_->OnConnectivityStateUpdateLocked(state, std::move(picker));
750
+ priority_->OnConnectivityStateUpdateLocked(state, status, std::move(picker));
732
751
  }
733
752
 
734
753
  void PriorityLb::ChildPriority::Helper::AddTraceEvent(
@@ -40,6 +40,7 @@
40
40
  #include "src/core/lib/gprpp/sync.h"
41
41
  #include "src/core/lib/iomgr/sockaddr_utils.h"
42
42
  #include "src/core/lib/transport/connectivity_state.h"
43
+ #include "src/core/lib/transport/error_utils.h"
43
44
  #include "src/core/lib/transport/static_metadata.h"
44
45
 
45
46
  namespace grpc_core {
@@ -322,11 +323,11 @@ void RoundRobin::RoundRobinSubchannelList::
322
323
  if (num_ready_ > 0) {
323
324
  /* 1) READY */
324
325
  p->channel_control_helper()->UpdateState(
325
- GRPC_CHANNEL_READY, absl::make_unique<Picker>(p, this));
326
+ GRPC_CHANNEL_READY, absl::Status(), absl::make_unique<Picker>(p, this));
326
327
  } else if (num_connecting_ > 0) {
327
328
  /* 2) CONNECTING */
328
329
  p->channel_control_helper()->UpdateState(
329
- GRPC_CHANNEL_CONNECTING,
330
+ GRPC_CHANNEL_CONNECTING, absl::Status(),
330
331
  absl::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
331
332
  } else if (num_transient_failure_ == num_subchannels()) {
332
333
  /* 3) TRANSIENT_FAILURE */
@@ -335,7 +336,7 @@ void RoundRobin::RoundRobinSubchannelList::
335
336
  "connections to all backends failing"),
336
337
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
337
338
  p->channel_control_helper()->UpdateState(
338
- GRPC_CHANNEL_TRANSIENT_FAILURE,
339
+ GRPC_CHANNEL_TRANSIENT_FAILURE, grpc_error_to_absl_status(error),
339
340
  absl::make_unique<TransientFailurePicker>(error));
340
341
  }
341
342
  }
@@ -452,7 +453,7 @@ void RoundRobin::UpdateLocked(UpdateArgs args) {
452
453
  grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty update"),
453
454
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
454
455
  channel_control_helper()->UpdateState(
455
- GRPC_CHANNEL_TRANSIENT_FAILURE,
456
+ GRPC_CHANNEL_TRANSIENT_FAILURE, grpc_error_to_absl_status(error),
456
457
  absl::make_unique<TransientFailurePicker>(error));
457
458
  subchannel_list_ = std::move(latest_pending_subchannel_list_);
458
459
  } else if (subchannel_list_ == nullptr) {
@@ -36,6 +36,7 @@
36
36
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
37
37
  #include "src/core/lib/iomgr/timer.h"
38
38
  #include "src/core/lib/iomgr/work_serializer.h"
39
+ #include "src/core/lib/transport/error_utils.h"
39
40
 
40
41
  namespace grpc_core {
41
42
 
@@ -146,6 +147,7 @@ class WeightedTargetLb : public LoadBalancingPolicy {
146
147
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
147
148
  const grpc_channel_args& args) override;
148
149
  void UpdateState(grpc_connectivity_state state,
150
+ const absl::Status& status,
149
151
  std::unique_ptr<SubchannelPicker> picker) override;
150
152
  void RequestReresolution() override;
151
153
  void AddTraceEvent(TraceSeverity severity,
@@ -160,7 +162,7 @@ class WeightedTargetLb : public LoadBalancingPolicy {
160
162
  const grpc_channel_args* args);
161
163
 
162
164
  void OnConnectivityStateUpdateLocked(
163
- grpc_connectivity_state state,
165
+ grpc_connectivity_state state, const absl::Status& status,
164
166
  std::unique_ptr<SubchannelPicker> picker);
165
167
 
166
168
  static void OnDelayedRemovalTimer(void* arg, grpc_error* error);
@@ -374,6 +376,7 @@ void WeightedTargetLb::UpdateStateLocked() {
374
376
  this, ConnectivityStateName(connectivity_state));
375
377
  }
376
378
  std::unique_ptr<SubchannelPicker> picker;
379
+ absl::Status status;
377
380
  switch (connectivity_state) {
378
381
  case GRPC_CHANNEL_READY:
379
382
  picker = absl::make_unique<WeightedPicker>(std::move(picker_list));
@@ -384,11 +387,15 @@ void WeightedTargetLb::UpdateStateLocked() {
384
387
  absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker"));
385
388
  break;
386
389
  default:
387
- picker = absl::make_unique<TransientFailurePicker>(
390
+ grpc_error* error = grpc_error_set_int(
388
391
  GRPC_ERROR_CREATE_FROM_STATIC_STRING(
389
- "weighted_target: all children report state TRANSIENT_FAILURE"));
392
+ "weighted_target: all children report state TRANSIENT_FAILURE"),
393
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
394
+ status = grpc_error_to_absl_status(error);
395
+ picker = absl::make_unique<TransientFailurePicker>(error);
390
396
  }
391
- channel_control_helper()->UpdateState(connectivity_state, std::move(picker));
397
+ channel_control_helper()->UpdateState(connectivity_state, status,
398
+ std::move(picker));
392
399
  }
393
400
 
394
401
  //
@@ -507,15 +514,17 @@ void WeightedTargetLb::WeightedChild::ResetBackoffLocked() {
507
514
  }
508
515
 
509
516
  void WeightedTargetLb::WeightedChild::OnConnectivityStateUpdateLocked(
510
- grpc_connectivity_state state, std::unique_ptr<SubchannelPicker> picker) {
517
+ grpc_connectivity_state state, const absl::Status& status,
518
+ std::unique_ptr<SubchannelPicker> picker) {
511
519
  // Cache the picker in the WeightedChild.
512
520
  picker_wrapper_ = MakeRefCounted<ChildPickerWrapper>(std::move(picker));
513
521
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_weighted_target_trace)) {
514
522
  gpr_log(GPR_INFO,
515
523
  "[weighted_target_lb %p] WeightedChild %p %s: connectivity "
516
- "state update: state=%s picker_wrapper=%p",
524
+ "state update: state=%s (%s) picker_wrapper=%p",
517
525
  weighted_target_policy_.get(), this, name_.c_str(),
518
- ConnectivityStateName(state), picker_wrapper_.get());
526
+ ConnectivityStateName(state), status.ToString().c_str(),
527
+ picker_wrapper_.get());
519
528
  }
520
529
  // If the child reports IDLE, immediately tell it to exit idle.
521
530
  if (state == GRPC_CHANNEL_IDLE) child_policy_->ExitIdleLocked();
@@ -588,9 +597,11 @@ WeightedTargetLb::WeightedChild::Helper::CreateSubchannel(
588
597
  }
589
598
 
590
599
  void WeightedTargetLb::WeightedChild::Helper::UpdateState(
591
- grpc_connectivity_state state, std::unique_ptr<SubchannelPicker> picker) {
600
+ grpc_connectivity_state state, const absl::Status& status,
601
+ std::unique_ptr<SubchannelPicker> picker) {
592
602
  if (weighted_child_->weighted_target_policy_->shutting_down_) return;
593
- weighted_child_->OnConnectivityStateUpdateLocked(state, std::move(picker));
603
+ weighted_child_->OnConnectivityStateUpdateLocked(state, status,
604
+ std::move(picker));
594
605
  }
595
606
 
596
607
  void WeightedTargetLb::WeightedChild::Helper::RequestReresolution() {
@@ -24,11 +24,12 @@
24
24
  #include "src/core/ext/filters/client_channel/lb_policy_factory.h"
25
25
  #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
26
26
  #include "src/core/ext/filters/client_channel/service_config.h"
27
- #include "src/core/ext/filters/client_channel/xds/xds_client.h"
27
+ #include "src/core/ext/xds/xds_client.h"
28
28
  #include "src/core/lib/channel/channel_args.h"
29
29
  #include "src/core/lib/gprpp/memory.h"
30
30
  #include "src/core/lib/gprpp/orphanable.h"
31
31
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
32
+ #include "src/core/lib/transport/error_utils.h"
32
33
 
33
34
  namespace grpc_core {
34
35
 
@@ -79,7 +80,7 @@ class CdsLb : public LoadBalancingPolicy {
79
80
  explicit Helper(RefCountedPtr<CdsLb> parent) : parent_(std::move(parent)) {}
80
81
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
81
82
  const grpc_channel_args& args) override;
82
- void UpdateState(grpc_connectivity_state state,
83
+ void UpdateState(grpc_connectivity_state state, const absl::Status& status,
83
84
  std::unique_ptr<SubchannelPicker> picker) override;
84
85
  void RequestReresolution() override;
85
86
  void AddTraceEvent(TraceSeverity severity,
@@ -209,7 +210,7 @@ void CdsLb::ClusterWatcher::OnError(grpc_error* error) {
209
210
  // we keep running with the data we had previously.
210
211
  if (parent_->child_policy_ == nullptr) {
211
212
  parent_->channel_control_helper()->UpdateState(
212
- GRPC_CHANNEL_TRANSIENT_FAILURE,
213
+ GRPC_CHANNEL_TRANSIENT_FAILURE, grpc_error_to_absl_status(error),
213
214
  absl::make_unique<TransientFailurePicker>(error));
214
215
  } else {
215
216
  GRPC_ERROR_UNREF(error);
@@ -221,13 +222,15 @@ void CdsLb::ClusterWatcher::OnResourceDoesNotExist() {
221
222
  "[cdslb %p] CDS resource for %s does not exist -- reporting "
222
223
  "TRANSIENT_FAILURE",
223
224
  parent_.get(), parent_->config_->cluster().c_str());
225
+ grpc_error* error = grpc_error_set_int(
226
+ GRPC_ERROR_CREATE_FROM_COPIED_STRING(
227
+ absl::StrCat("CDS resource \"", parent_->config_->cluster(),
228
+ "\" does not exist")
229
+ .c_str()),
230
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
224
231
  parent_->channel_control_helper()->UpdateState(
225
- GRPC_CHANNEL_TRANSIENT_FAILURE,
226
- absl::make_unique<TransientFailurePicker>(
227
- GRPC_ERROR_CREATE_FROM_COPIED_STRING(
228
- absl::StrCat("CDS resource \"", parent_->config_->cluster(),
229
- "\" does not exist")
230
- .c_str())));
232
+ GRPC_CHANNEL_TRANSIENT_FAILURE, grpc_error_to_absl_status(error),
233
+ absl::make_unique<TransientFailurePicker>(error));
231
234
  parent_->MaybeDestroyChildPolicyLocked();
232
235
  }
233
236
 
@@ -242,13 +245,16 @@ RefCountedPtr<SubchannelInterface> CdsLb::Helper::CreateSubchannel(
242
245
  }
243
246
 
244
247
  void CdsLb::Helper::UpdateState(grpc_connectivity_state state,
248
+ const absl::Status& status,
245
249
  std::unique_ptr<SubchannelPicker> picker) {
246
250
  if (parent_->shutting_down_ || parent_->child_policy_ == nullptr) return;
247
251
  if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
248
- gpr_log(GPR_INFO, "[cdslb %p] state updated by child: %s", this,
249
- ConnectivityStateName(state));
252
+ gpr_log(GPR_INFO,
253
+ "[cdslb %p] state updated by child: %s message_state: (%s)", this,
254
+ ConnectivityStateName(state), status.ToString().c_str());
250
255
  }
251
- parent_->channel_control_helper()->UpdateState(state, std::move(picker));
256
+ parent_->channel_control_helper()->UpdateState(state, status,
257
+ std::move(picker));
252
258
  }
253
259
 
254
260
  void CdsLb::Helper::RequestReresolution() {