grpc 1.28.0 → 1.37.0

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 (1541) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1734 -22357
  3. data/etc/roots.pem +257 -573
  4. data/include/grpc/compression.h +1 -1
  5. data/include/grpc/grpc.h +31 -9
  6. data/include/grpc/grpc_security.h +274 -180
  7. data/include/grpc/grpc_security_constants.h +4 -0
  8. data/include/grpc/impl/codegen/README.md +22 -0
  9. data/include/grpc/impl/codegen/atm_windows.h +4 -0
  10. data/include/grpc/impl/codegen/byte_buffer.h +1 -1
  11. data/include/grpc/impl/codegen/grpc_types.h +32 -30
  12. data/include/grpc/impl/codegen/log.h +0 -2
  13. data/include/grpc/impl/codegen/port_platform.h +36 -90
  14. data/include/grpc/impl/codegen/sync_windows.h +4 -0
  15. data/include/grpc/module.modulemap +24 -39
  16. data/include/grpc/slice_buffer.h +3 -3
  17. data/include/grpc/support/sync.h +3 -3
  18. data/include/grpc/support/time.h +7 -7
  19. data/src/core/ext/filters/client_channel/backend_metric.cc +16 -12
  20. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
  21. data/src/core/ext/filters/client_channel/client_channel.cc +3845 -2414
  22. data/src/core/ext/filters/client_channel/client_channel.h +1 -7
  23. data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
  24. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
  25. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -3
  26. data/src/core/ext/filters/client_channel/config_selector.cc +58 -0
  27. data/src/core/ext/filters/client_channel/config_selector.h +133 -0
  28. data/src/core/ext/filters/client_channel/dynamic_filters.cc +191 -0
  29. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  30. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +26 -122
  31. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
  32. data/src/core/ext/filters/client_channel/health/health_check_client.cc +25 -30
  33. data/src/core/ext/filters/client_channel/health/health_check_client.h +7 -7
  34. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +15 -16
  35. data/src/core/ext/filters/client_channel/http_proxy.cc +44 -34
  36. data/src/core/ext/filters/client_channel/lb_policy.cc +28 -20
  37. data/src/core/ext/filters/client_channel/lb_policy.h +50 -38
  38. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +96 -0
  39. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +101 -0
  40. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +20 -11
  41. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  42. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +481 -510
  43. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +76 -0
  44. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +37 -0
  45. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
  46. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +6 -41
  47. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  48. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
  49. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
  50. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
  51. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +24 -18
  52. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +922 -0
  53. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
  54. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
  55. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +11 -10
  56. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +18 -46
  57. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +744 -0
  58. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +520 -134
  59. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -26
  60. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
  61. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +795 -0
  62. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +722 -0
  63. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1384 -0
  64. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +18 -8
  65. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
  66. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +12 -10
  67. data/src/core/ext/filters/client_channel/resolver.cc +9 -10
  68. data/src/core/ext/filters/client_channel/resolver.h +10 -20
  69. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +111 -110
  70. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +4 -34
  71. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +22 -24
  72. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +15 -13
  73. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +82 -123
  74. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +642 -184
  75. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +10 -3
  76. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  77. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  78. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +61 -61
  79. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +102 -108
  80. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -5
  81. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +377 -0
  82. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +38 -31
  83. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +829 -46
  84. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
  85. data/src/core/ext/filters/client_channel/resolver_factory.h +8 -8
  86. data/src/core/ext/filters/client_channel/resolver_registry.cc +55 -52
  87. data/src/core/ext/filters/client_channel/resolver_registry.h +10 -10
  88. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +47 -93
  89. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +30 -26
  90. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
  91. data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
  92. data/src/core/ext/filters/client_channel/server_address.cc +132 -13
  93. data/src/core/ext/filters/client_channel/server_address.h +80 -32
  94. data/src/core/ext/filters/client_channel/service_config.cc +114 -149
  95. data/src/core/ext/filters/client_channel/service_config.h +33 -100
  96. data/src/core/ext/filters/client_channel/service_config_call_data.h +86 -0
  97. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
  98. data/src/core/ext/filters/client_channel/service_config_parser.cc +89 -0
  99. data/src/core/ext/filters/client_channel/service_config_parser.h +92 -0
  100. data/src/core/ext/filters/client_channel/subchannel.cc +211 -230
  101. data/src/core/ext/filters/client_channel/subchannel.h +116 -118
  102. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
  103. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
  104. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -10
  105. data/src/core/ext/filters/client_idle/client_idle_filter.cc +1 -1
  106. data/src/core/ext/filters/deadline/deadline_filter.cc +87 -79
  107. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  108. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +495 -0
  109. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
  110. data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
  111. data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
  112. data/src/core/ext/filters/http/client/http_client_filter.cc +29 -34
  113. data/src/core/ext/filters/http/client_authority_filter.cc +10 -10
  114. data/src/core/ext/filters/http/http_filters_plugin.cc +34 -15
  115. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
  116. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +399 -0
  117. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
  118. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  119. data/src/core/ext/filters/max_age/max_age_filter.cc +38 -34
  120. data/src/core/ext/filters/message_size/message_size_filter.cc +64 -90
  121. data/src/core/ext/filters/message_size/message_size_filter.h +12 -5
  122. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +1 -1
  123. data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
  124. data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
  125. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
  126. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +19 -2
  127. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +23 -10
  128. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
  129. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +37 -49
  130. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +803 -355
  131. data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
  132. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +13 -3
  133. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +19 -18
  134. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +65 -21
  135. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  136. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
  137. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +343 -347
  138. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +13 -1
  139. data/src/core/ext/transport/chttp2/transport/flow_control.cc +36 -33
  140. data/src/core/ext/transport/chttp2/transport/flow_control.h +27 -19
  141. data/src/core/ext/transport/chttp2/transport/frame_data.cc +14 -13
  142. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +6 -7
  143. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
  144. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
  145. data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
  146. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
  147. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
  148. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -9
  149. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -4
  150. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +15 -18
  151. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
  152. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +30 -17
  153. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
  154. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +37 -37
  155. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  156. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
  157. data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
  158. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  159. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  160. data/src/core/ext/transport/chttp2/transport/internal.h +38 -23
  161. data/src/core/ext/transport/chttp2/transport/parsing.cc +52 -74
  162. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  163. data/src/core/ext/transport/chttp2/transport/writing.cc +30 -28
  164. data/src/core/ext/transport/inproc/inproc_transport.cc +106 -33
  165. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
  166. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
  167. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -1
  168. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  169. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +10 -4
  170. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +243 -0
  171. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +865 -0
  172. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
  173. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
  174. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
  175. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +253 -0
  176. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +453 -0
  177. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1801 -0
  178. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
  179. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +77 -0
  180. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +56 -0
  181. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +364 -0
  182. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
  183. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +428 -0
  184. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
  185. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +88 -0
  186. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +334 -0
  187. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1066 -0
  188. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
  189. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +388 -0
  190. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
  191. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +78 -0
  192. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
  193. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +149 -0
  194. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
  195. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +839 -0
  196. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
  197. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +767 -0
  198. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
  199. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +88 -0
  200. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +182 -0
  201. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +755 -0
  202. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +27 -0
  203. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +65 -0
  204. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +34 -0
  205. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +95 -0
  206. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +42 -0
  207. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +126 -0
  208. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +90 -0
  209. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +243 -0
  210. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
  211. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +305 -0
  212. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
  213. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +367 -0
  214. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
  215. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +73 -0
  216. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +130 -0
  217. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +557 -0
  218. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +159 -0
  219. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +623 -0
  220. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +40 -0
  221. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +107 -0
  222. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
  223. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
  224. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
  225. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
  226. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +178 -0
  227. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +662 -0
  228. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +65 -0
  229. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +237 -0
  230. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +941 -0
  231. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3790 -0
  232. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
  233. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +159 -0
  234. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +49 -0
  235. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +122 -0
  236. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
  237. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
  238. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
  239. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
  240. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
  241. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
  242. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
  243. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
  244. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +362 -0
  245. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1488 -0
  246. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +19 -0
  247. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +35 -0
  248. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +113 -0
  249. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +458 -0
  250. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +73 -0
  251. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +219 -0
  252. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +146 -0
  253. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +621 -0
  254. data/src/core/ext/upb-generated/envoy/{api/v2/rds.upb.c → service/cluster/v3/cds.upb.c} +7 -9
  255. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +56 -0
  256. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +25 -0
  257. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +56 -0
  258. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +146 -0
  259. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +499 -0
  260. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +27 -0
  261. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +56 -0
  262. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +27 -0
  263. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +56 -0
  264. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +54 -0
  265. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +151 -0
  266. data/src/core/ext/upb-generated/envoy/{api/v2/srds.upb.c → service/route/v3/rds.upb.c} +7 -7
  267. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +56 -0
  268. data/src/core/ext/upb-generated/envoy/{api/v2/cds.upb.c → service/route/v3/srds.upb.c} +7 -7
  269. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +56 -0
  270. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
  271. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
  272. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
  273. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +128 -0
  274. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
  275. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
  276. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
  277. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +84 -0
  278. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
  279. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +78 -0
  280. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
  281. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +166 -0
  282. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
  283. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +146 -0
  284. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
  285. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
  286. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
  287. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +207 -0
  288. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
  289. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +301 -0
  290. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
  291. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +283 -0
  292. data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +3 -2
  293. data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +9 -9
  294. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
  295. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +99 -0
  296. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
  297. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +130 -0
  298. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +30 -0
  299. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +68 -0
  300. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  301. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
  302. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +830 -0
  303. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +251 -0
  304. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +871 -0
  305. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  306. data/src/core/ext/upb-generated/google/api/http.upb.h +52 -32
  307. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  308. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +12 -6
  309. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +107 -106
  310. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +691 -496
  311. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  312. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +12 -6
  313. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  314. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +8 -2
  315. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +5 -5
  316. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +55 -57
  317. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  318. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +12 -6
  319. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
  320. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +82 -28
  321. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  322. data/src/core/ext/upb-generated/google/rpc/status.upb.h +17 -10
  323. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +5 -5
  324. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +40 -45
  325. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +43 -43
  326. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +236 -184
  327. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
  328. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +29 -13
  329. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  330. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +19 -7
  331. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
  332. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +122 -62
  333. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  334. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +30 -12
  335. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
  336. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +64 -0
  337. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -1
  338. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  339. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +71 -0
  340. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
  341. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +60 -0
  342. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +9 -9
  343. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +48 -68
  344. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
  345. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
  346. data/src/core/ext/upb-generated/validate/validate.upb.c +71 -70
  347. data/src/core/ext/upb-generated/validate/validate.upb.h +732 -586
  348. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
  349. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
  350. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
  351. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
  352. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
  353. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
  354. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
  355. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
  356. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
  357. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
  358. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
  359. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
  360. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
  361. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  362. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
  363. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  364. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  365. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  366. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +251 -0
  367. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  368. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
  369. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
  370. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  371. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  372. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +543 -0
  373. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  374. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  375. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  376. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +136 -0
  377. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  378. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  379. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  380. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  381. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  382. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +272 -0
  383. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +135 -0
  384. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
  385. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  386. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  387. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  388. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  389. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  390. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  391. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  392. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  393. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  394. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  395. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  396. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +231 -0
  397. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +85 -0
  398. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +43 -0
  399. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  400. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  401. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  402. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +68 -0
  403. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  404. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +107 -0
  405. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  406. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  407. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  408. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  409. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  410. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  411. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  412. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +195 -0
  413. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
  414. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +193 -0
  415. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  416. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +59 -0
  417. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  418. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
  419. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  420. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
  421. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
  422. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +101 -0
  423. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  424. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +944 -0
  425. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +290 -0
  426. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  427. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  428. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +61 -0
  429. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  430. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
  431. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  432. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
  433. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  434. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
  435. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  436. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
  437. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  438. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +505 -0
  439. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
  440. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +44 -0
  441. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  442. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +170 -0
  443. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  444. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +97 -0
  445. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  446. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +246 -0
  447. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  448. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  449. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  450. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  451. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  452. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +142 -0
  453. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
  454. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +73 -0
  455. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  456. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +72 -0
  457. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  458. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +80 -0
  459. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  460. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +80 -0
  461. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  462. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  463. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  464. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
  465. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
  466. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  467. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  468. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
  469. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  470. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  471. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  472. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  473. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  474. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
  475. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  476. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +69 -0
  477. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  478. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
  479. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  480. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  481. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  482. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  483. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  484. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  485. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  486. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  487. data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -10
  488. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  489. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  490. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  491. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  492. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  493. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  494. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  495. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  496. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  497. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  498. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +39 -0
  499. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  500. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  501. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  502. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +40 -0
  503. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  504. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  505. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  506. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  507. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  508. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +40 -0
  509. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  510. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  511. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  512. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  513. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  514. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  515. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  516. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  517. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  518. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  519. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  520. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  521. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  522. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  523. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  524. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
  525. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
  526. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +310 -0
  527. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  528. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
  529. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  530. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
  531. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  532. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
  533. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  534. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
  535. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  536. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
  537. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  538. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
  539. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  540. data/src/core/ext/xds/certificate_provider_factory.h +61 -0
  541. data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
  542. data/src/core/ext/xds/certificate_provider_registry.h +57 -0
  543. data/src/core/ext/xds/certificate_provider_store.cc +87 -0
  544. data/src/core/ext/xds/certificate_provider_store.h +112 -0
  545. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
  546. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
  547. data/src/core/ext/xds/xds_api.cc +3791 -0
  548. data/src/core/ext/xds/xds_api.h +671 -0
  549. data/src/core/ext/xds/xds_bootstrap.cc +555 -0
  550. data/src/core/ext/xds/xds_bootstrap.h +120 -0
  551. data/src/core/ext/xds/xds_certificate_provider.cc +405 -0
  552. data/src/core/ext/xds/xds_certificate_provider.h +151 -0
  553. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +9 -6
  554. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +983 -773
  555. data/src/core/ext/xds/xds_client.h +365 -0
  556. data/src/core/ext/xds/xds_client_stats.cc +159 -0
  557. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +80 -40
  558. data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
  559. data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
  560. data/src/core/ext/xds/xds_http_filters.cc +114 -0
  561. data/src/core/ext/xds/xds_http_filters.h +130 -0
  562. data/src/core/ext/xds/xds_server_config_fetcher.cc +532 -0
  563. data/src/core/lib/channel/channel_args.cc +24 -22
  564. data/src/core/lib/channel/channel_args.h +3 -2
  565. data/src/core/lib/channel/channel_stack.cc +12 -0
  566. data/src/core/lib/channel/channel_stack.h +27 -13
  567. data/src/core/lib/channel/channel_trace.cc +6 -8
  568. data/src/core/lib/channel/channel_trace.h +1 -1
  569. data/src/core/lib/channel/channelz.cc +137 -97
  570. data/src/core/lib/channel/channelz.h +47 -26
  571. data/src/core/lib/channel/channelz_registry.cc +34 -15
  572. data/src/core/lib/channel/channelz_registry.h +3 -1
  573. data/src/core/lib/channel/connected_channel.cc +7 -5
  574. data/src/core/lib/channel/context.h +1 -1
  575. data/src/core/lib/channel/handshaker.cc +15 -59
  576. data/src/core/lib/channel/handshaker.h +7 -22
  577. data/src/core/lib/channel/handshaker_registry.cc +5 -17
  578. data/src/core/lib/channel/status_util.cc +14 -5
  579. data/src/core/lib/channel/status_util.h +5 -0
  580. data/src/core/lib/compression/compression.cc +8 -4
  581. data/src/core/lib/compression/compression_args.cc +3 -2
  582. data/src/core/lib/compression/compression_internal.cc +10 -5
  583. data/src/core/lib/compression/compression_internal.h +2 -1
  584. data/src/core/lib/compression/message_compress.cc +5 -1
  585. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  586. data/src/core/lib/debug/stats.cc +21 -27
  587. data/src/core/lib/debug/stats.h +5 -3
  588. data/src/core/lib/debug/stats_data.cc +1 -0
  589. data/src/core/lib/debug/stats_data.h +13 -13
  590. data/src/core/lib/gpr/alloc.cc +3 -2
  591. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  592. data/src/core/lib/gpr/log.cc +59 -17
  593. data/src/core/lib/gpr/log_linux.cc +23 -9
  594. data/src/core/lib/gpr/log_posix.cc +19 -7
  595. data/src/core/lib/gpr/log_windows.cc +18 -4
  596. data/src/core/lib/gpr/murmur_hash.cc +1 -1
  597. data/src/core/lib/gpr/spinlock.h +12 -5
  598. data/src/core/lib/gpr/string.cc +33 -55
  599. data/src/core/lib/gpr/string.h +9 -24
  600. data/src/core/lib/gpr/sync.cc +4 -4
  601. data/src/core/lib/gpr/sync_abseil.cc +5 -6
  602. data/src/core/lib/gpr/sync_posix.cc +2 -8
  603. data/src/core/lib/gpr/sync_windows.cc +2 -2
  604. data/src/core/lib/gpr/time.cc +16 -12
  605. data/src/core/lib/gpr/time_posix.cc +1 -1
  606. data/src/core/lib/gpr/time_precise.cc +5 -2
  607. data/src/core/lib/gpr/time_precise.h +6 -2
  608. data/src/core/lib/gpr/tls.h +4 -0
  609. data/src/core/lib/gpr/tls_msvc.h +2 -0
  610. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  611. data/src/core/lib/gpr/useful.h +5 -4
  612. data/src/core/lib/gprpp/arena.h +3 -2
  613. data/src/core/lib/gprpp/atomic.h +9 -9
  614. data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
  615. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  616. data/src/core/lib/gprpp/examine_stack.h +46 -0
  617. data/src/core/lib/gprpp/fork.cc +3 -3
  618. data/src/core/lib/gprpp/global_config_env.cc +8 -6
  619. data/src/core/lib/gprpp/host_port.cc +29 -35
  620. data/src/core/lib/gprpp/host_port.h +14 -17
  621. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  622. data/src/core/lib/gprpp/mpscq.cc +2 -2
  623. data/src/core/lib/gprpp/orphanable.h +4 -8
  624. data/src/core/lib/gprpp/ref_counted.h +91 -68
  625. data/src/core/lib/gprpp/ref_counted_ptr.h +173 -7
  626. data/src/core/lib/gprpp/stat.h +38 -0
  627. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  628. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  629. data/src/core/lib/gprpp/sync.h +129 -40
  630. data/src/core/lib/gprpp/thd.h +3 -3
  631. data/src/core/lib/gprpp/thd_posix.cc +42 -37
  632. data/src/core/lib/gprpp/thd_windows.cc +3 -1
  633. data/src/core/lib/gprpp/time_util.cc +77 -0
  634. data/src/core/lib/gprpp/time_util.h +42 -0
  635. data/src/core/lib/http/format_request.cc +46 -65
  636. data/src/core/lib/http/httpcli.cc +16 -14
  637. data/src/core/lib/http/httpcli.h +4 -6
  638. data/src/core/lib/http/httpcli_security_connector.cc +13 -13
  639. data/src/core/lib/http/parser.cc +47 -27
  640. data/src/core/lib/http/parser.h +2 -3
  641. data/src/core/lib/iomgr/buffer_list.h +23 -22
  642. data/src/core/lib/iomgr/call_combiner.cc +8 -5
  643. data/src/core/lib/iomgr/call_combiner.h +3 -2
  644. data/src/core/lib/iomgr/cfstream_handle.cc +6 -4
  645. data/src/core/lib/iomgr/closure.h +2 -3
  646. data/src/core/lib/iomgr/combiner.cc +2 -1
  647. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  648. data/src/core/lib/iomgr/endpoint.cc +5 -1
  649. data/src/core/lib/iomgr/endpoint.h +8 -4
  650. data/src/core/lib/iomgr/endpoint_cfstream.cc +38 -14
  651. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  652. data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
  653. data/src/core/lib/iomgr/error.cc +23 -21
  654. data/src/core/lib/iomgr/error.h +1 -2
  655. data/src/core/lib/iomgr/error_cfstream.cc +9 -8
  656. data/src/core/lib/iomgr/error_internal.h +1 -1
  657. data/src/core/lib/iomgr/ev_apple.cc +359 -0
  658. data/src/core/lib/iomgr/ev_apple.h +43 -0
  659. data/src/core/lib/iomgr/ev_epoll1_linux.cc +46 -43
  660. data/src/core/lib/iomgr/ev_epollex_linux.cc +46 -45
  661. data/src/core/lib/iomgr/ev_poll_posix.cc +18 -15
  662. data/src/core/lib/iomgr/ev_posix.cc +5 -6
  663. data/src/core/lib/iomgr/exec_ctx.cc +7 -3
  664. data/src/core/lib/iomgr/exec_ctx.h +26 -10
  665. data/src/core/lib/iomgr/executor.cc +2 -1
  666. data/src/core/lib/iomgr/executor.h +1 -1
  667. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  668. data/src/core/lib/iomgr/executor/threadpool.h +4 -4
  669. data/src/core/lib/iomgr/iomgr.cc +1 -1
  670. data/src/core/lib/iomgr/iomgr_posix.cc +0 -1
  671. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -21
  672. data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
  673. data/src/core/lib/iomgr/load_file.h +1 -1
  674. data/src/core/lib/iomgr/lockfree_event.cc +19 -14
  675. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  676. data/src/core/lib/iomgr/parse_address.cc +322 -0
  677. data/src/core/lib/iomgr/parse_address.h +77 -0
  678. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
  679. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
  680. data/src/core/lib/iomgr/pollset_set_custom.cc +11 -11
  681. data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
  682. data/src/core/lib/iomgr/port.h +2 -21
  683. data/src/core/lib/iomgr/python_util.h +46 -0
  684. data/src/core/lib/iomgr/resolve_address.cc +4 -4
  685. data/src/core/lib/iomgr/resolve_address.h +4 -6
  686. data/src/core/lib/iomgr/resolve_address_custom.cc +42 -57
  687. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  688. data/src/core/lib/iomgr/resolve_address_posix.cc +11 -16
  689. data/src/core/lib/iomgr/resolve_address_windows.cc +16 -25
  690. data/src/core/lib/iomgr/resource_quota.cc +39 -38
  691. data/src/core/lib/iomgr/sockaddr_utils.cc +161 -44
  692. data/src/core/lib/iomgr/sockaddr_utils.h +40 -19
  693. data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
  694. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  695. data/src/core/lib/iomgr/socket_mutator.cc +3 -2
  696. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  697. data/src/core/lib/iomgr/socket_utils_common_posix.cc +103 -81
  698. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  699. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  700. data/src/core/lib/iomgr/tcp_client.cc +3 -3
  701. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -18
  702. data/src/core/lib/iomgr/tcp_client_custom.cc +13 -15
  703. data/src/core/lib/iomgr/tcp_client_posix.cc +31 -37
  704. data/src/core/lib/iomgr/tcp_client_windows.cc +10 -11
  705. data/src/core/lib/iomgr/tcp_custom.cc +56 -36
  706. data/src/core/lib/iomgr/tcp_custom.h +1 -1
  707. data/src/core/lib/iomgr/tcp_posix.cc +48 -29
  708. data/src/core/lib/iomgr/tcp_server.cc +3 -4
  709. data/src/core/lib/iomgr/tcp_server.h +7 -5
  710. data/src/core/lib/iomgr/tcp_server_custom.cc +39 -45
  711. data/src/core/lib/iomgr/tcp_server_posix.cc +38 -44
  712. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
  713. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -8
  714. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
  715. data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
  716. data/src/core/lib/iomgr/tcp_uv.cc +5 -4
  717. data/src/core/lib/iomgr/tcp_windows.cc +26 -10
  718. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  719. data/src/core/lib/iomgr/timer_custom.cc +5 -5
  720. data/src/core/lib/iomgr/timer_generic.cc +20 -20
  721. data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
  722. data/src/core/lib/iomgr/timer_heap.h +2 -3
  723. data/src/core/lib/iomgr/timer_manager.cc +3 -3
  724. data/src/core/lib/iomgr/udp_server.cc +33 -38
  725. data/src/core/lib/iomgr/udp_server.h +6 -4
  726. data/src/core/lib/iomgr/unix_sockets_posix.cc +36 -30
  727. data/src/core/lib/iomgr/unix_sockets_posix.h +8 -1
  728. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +12 -2
  729. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
  730. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  731. data/src/core/lib/json/json.h +15 -4
  732. data/src/core/lib/json/json_reader.cc +33 -30
  733. data/src/core/lib/json/json_util.cc +58 -0
  734. data/src/core/lib/json/json_util.h +204 -0
  735. data/src/core/lib/json/json_writer.cc +15 -13
  736. data/src/core/lib/matchers/matchers.cc +339 -0
  737. data/src/core/lib/matchers/matchers.h +160 -0
  738. data/src/core/lib/security/context/security_context.cc +4 -3
  739. data/src/core/lib/security/context/security_context.h +3 -1
  740. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
  741. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  742. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  743. data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
  744. data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
  745. data/src/core/lib/security/credentials/credentials.cc +7 -91
  746. data/src/core/lib/security/credentials/credentials.h +18 -66
  747. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
  748. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
  749. data/src/core/lib/security/credentials/external/aws_request_signer.cc +213 -0
  750. data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
  751. data/src/core/lib/security/credentials/external/external_account_credentials.cc +497 -0
  752. data/src/core/lib/security/credentials/external/external_account_credentials.h +120 -0
  753. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +135 -0
  754. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +48 -0
  755. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +213 -0
  756. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +58 -0
  757. data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -2
  758. data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
  759. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
  760. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +90 -67
  761. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
  762. data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
  763. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
  764. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -4
  765. data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
  766. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
  767. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +13 -0
  768. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +13 -19
  769. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  770. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
  771. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  772. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +109 -97
  773. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +14 -7
  774. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +20 -7
  775. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
  776. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +27 -6
  777. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +12 -2
  778. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +346 -0
  779. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +213 -0
  780. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +399 -0
  781. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +138 -0
  782. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +78 -140
  783. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +74 -167
  784. data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -13
  785. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
  786. data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
  787. data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
  788. data/src/core/lib/security/credentials/xds/xds_credentials.cc +244 -0
  789. data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
  790. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -7
  791. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +27 -32
  792. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
  793. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +87 -0
  794. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  795. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
  796. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  797. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
  798. data/src/core/lib/security/security_connector/security_connector.cc +6 -3
  799. data/src/core/lib/security/security_connector/security_connector.h +6 -4
  800. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +42 -40
  801. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
  802. data/src/core/lib/security/security_connector/ssl_utils.cc +100 -27
  803. data/src/core/lib/security/security_connector/ssl_utils.h +37 -31
  804. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +394 -284
  805. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +108 -42
  806. data/src/core/lib/security/transport/auth_filters.h +0 -5
  807. data/src/core/lib/security/transport/client_auth_filter.cc +11 -11
  808. data/src/core/lib/security/transport/secure_endpoint.cc +9 -3
  809. data/src/core/lib/security/transport/security_handshaker.cc +36 -8
  810. data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
  811. data/src/core/lib/security/util/json_util.cc +12 -13
  812. data/src/core/lib/security/util/json_util.h +1 -0
  813. data/src/core/lib/slice/slice.cc +45 -5
  814. data/src/core/lib/slice/slice_buffer.cc +2 -1
  815. data/src/core/lib/slice/slice_intern.cc +13 -16
  816. data/src/core/lib/slice/slice_internal.h +17 -2
  817. data/src/core/lib/slice/slice_utils.h +9 -0
  818. data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
  819. data/src/core/lib/surface/call.cc +95 -88
  820. data/src/core/lib/surface/call.h +2 -1
  821. data/src/core/lib/surface/call_details.cc +8 -8
  822. data/src/core/lib/surface/call_log_batch.cc +50 -58
  823. data/src/core/lib/surface/channel.cc +86 -72
  824. data/src/core/lib/surface/channel.h +54 -7
  825. data/src/core/lib/surface/channel_init.cc +1 -1
  826. data/src/core/lib/surface/channel_ping.cc +2 -3
  827. data/src/core/lib/surface/completion_queue.cc +64 -63
  828. data/src/core/lib/surface/completion_queue.h +16 -16
  829. data/src/core/lib/surface/event_string.cc +18 -25
  830. data/src/core/lib/surface/event_string.h +3 -1
  831. data/src/core/lib/surface/init.cc +45 -29
  832. data/src/core/lib/surface/init_secure.cc +1 -4
  833. data/src/core/lib/surface/lame_client.cc +47 -54
  834. data/src/core/lib/surface/lame_client.h +5 -0
  835. data/src/core/lib/surface/server.cc +1309 -1300
  836. data/src/core/lib/surface/server.h +469 -45
  837. data/src/core/lib/surface/validate_metadata.h +3 -0
  838. data/src/core/lib/surface/version.cc +2 -2
  839. data/src/core/lib/transport/authority_override.cc +40 -0
  840. data/src/core/lib/transport/authority_override.h +37 -0
  841. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  842. data/src/core/lib/transport/bdp_estimator.h +2 -1
  843. data/src/core/lib/transport/byte_stream.h +10 -5
  844. data/src/core/lib/transport/connectivity_state.cc +23 -17
  845. data/src/core/lib/transport/connectivity_state.h +31 -15
  846. data/src/core/lib/transport/error_utils.cc +13 -0
  847. data/src/core/lib/transport/error_utils.h +7 -1
  848. data/src/core/lib/transport/metadata.cc +19 -5
  849. data/src/core/lib/transport/metadata.h +2 -2
  850. data/src/core/lib/transport/metadata_batch.cc +27 -0
  851. data/src/core/lib/transport/metadata_batch.h +20 -7
  852. data/src/core/lib/transport/static_metadata.cc +296 -277
  853. data/src/core/lib/transport/static_metadata.h +81 -74
  854. data/src/core/lib/transport/status_conversion.cc +6 -14
  855. data/src/core/lib/transport/status_metadata.cc +4 -3
  856. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  857. data/src/core/lib/transport/transport.cc +7 -6
  858. data/src/core/lib/transport/transport.h +24 -10
  859. data/src/core/lib/transport/transport_op_string.cc +61 -102
  860. data/src/core/lib/uri/uri_parser.cc +135 -258
  861. data/src/core/lib/uri/uri_parser.h +60 -23
  862. data/src/core/plugin_registry/grpc_plugin_registry.cc +65 -12
  863. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  864. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  865. data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
  866. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +49 -38
  867. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
  868. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +98 -48
  869. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
  870. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -3
  871. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  872. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  873. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
  874. data/src/core/tsi/fake_transport_security.cc +27 -20
  875. data/src/core/tsi/local_transport_security.cc +5 -1
  876. data/src/core/tsi/local_transport_security.h +6 -7
  877. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
  878. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  879. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
  880. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -4
  881. data/src/core/tsi/ssl_transport_security.cc +226 -105
  882. data/src/core/tsi/ssl_transport_security.h +28 -16
  883. data/src/core/tsi/ssl_types.h +0 -2
  884. data/src/core/tsi/transport_security.cc +10 -8
  885. data/src/core/tsi/transport_security.h +6 -9
  886. data/src/core/tsi/transport_security_grpc.h +2 -3
  887. data/src/core/tsi/transport_security_interface.h +9 -4
  888. data/src/ruby/bin/math_services_pb.rb +4 -4
  889. data/src/ruby/ext/grpc/extconf.rb +15 -4
  890. data/src/ruby/ext/grpc/rb_call.c +12 -3
  891. data/src/ruby/ext/grpc/rb_call.h +4 -0
  892. data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
  893. data/src/ruby/ext/grpc/rb_channel.c +10 -1
  894. data/src/ruby/ext/grpc/rb_channel_credentials.c +20 -1
  895. data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
  896. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  897. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  898. data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
  899. data/src/ruby/ext/grpc/rb_grpc.c +4 -0
  900. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +44 -18
  901. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +83 -44
  902. data/src/ruby/ext/grpc/rb_server.c +13 -1
  903. data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
  904. data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
  905. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
  906. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
  907. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
  908. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
  909. data/src/ruby/lib/grpc/errors.rb +103 -42
  910. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  911. data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
  912. data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
  913. data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
  914. data/src/ruby/lib/grpc/generic/service.rb +5 -4
  915. data/src/ruby/lib/grpc/structs.rb +1 -1
  916. data/src/ruby/lib/grpc/version.rb +1 -1
  917. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  918. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
  919. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +51 -0
  920. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +61 -11
  921. data/src/ruby/spec/call_spec.rb +1 -1
  922. data/src/ruby/spec/channel_credentials_spec.rb +42 -0
  923. data/src/ruby/spec/channel_spec.rb +17 -6
  924. data/src/ruby/spec/client_auth_spec.rb +27 -1
  925. data/src/ruby/spec/debug_message_spec.rb +134 -0
  926. data/src/ruby/spec/errors_spec.rb +1 -1
  927. data/src/ruby/spec/generic/active_call_spec.rb +21 -10
  928. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  929. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  930. data/src/ruby/spec/generic/service_spec.rb +2 -0
  931. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  932. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
  933. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  934. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  935. data/src/ruby/spec/pb/codegen/package_option_spec.rb +29 -7
  936. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  937. data/src/ruby/spec/server_spec.rb +22 -0
  938. data/src/ruby/spec/support/services.rb +10 -4
  939. data/src/ruby/spec/testdata/ca.pem +18 -13
  940. data/src/ruby/spec/testdata/client.key +26 -14
  941. data/src/ruby/spec/testdata/client.pem +18 -12
  942. data/src/ruby/spec/testdata/server1.key +26 -14
  943. data/src/ruby/spec/testdata/server1.pem +20 -14
  944. data/src/ruby/spec/user_agent_spec.rb +74 -0
  945. data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
  946. data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
  947. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  948. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  949. data/third_party/abseil-cpp/absl/base/config.h +60 -17
  950. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
  951. data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
  952. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +166 -0
  953. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  954. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
  955. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
  956. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  957. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  958. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  959. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
  960. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
  961. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
  962. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
  963. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
  964. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
  965. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  966. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  967. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  968. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
  969. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  970. data/third_party/abseil-cpp/absl/base/macros.h +36 -109
  971. data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
  972. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  973. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  974. data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
  975. data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
  976. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  977. data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
  978. data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
  979. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
  980. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
  981. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
  982. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
  983. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  984. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +270 -0
  985. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +321 -0
  986. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
  987. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
  988. data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
  989. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
  990. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
  991. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
  992. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
  993. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  994. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1945 -0
  995. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  996. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
  997. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
  998. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +196 -0
  999. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
  1000. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +89 -0
  1001. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
  1002. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
  1003. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  1004. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
  1005. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
  1006. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +149 -0
  1007. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
  1008. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  1009. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
  1010. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  1011. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
  1012. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  1013. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  1014. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
  1015. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  1016. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  1017. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  1018. data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
  1019. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  1020. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  1021. data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
  1022. data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
  1023. data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
  1024. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
  1025. data/third_party/abseil-cpp/absl/hash/internal/hash.h +996 -0
  1026. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  1027. data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
  1028. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  1029. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  1030. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
  1031. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
  1032. data/third_party/abseil-cpp/absl/status/status.cc +445 -0
  1033. data/third_party/abseil-cpp/absl/status/status.h +817 -0
  1034. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
  1035. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  1036. data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
  1037. data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
  1038. data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
  1039. data/third_party/abseil-cpp/absl/strings/cord.cc +1998 -0
  1040. data/third_party/abseil-cpp/absl/strings/cord.h +1276 -0
  1041. data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
  1042. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  1043. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  1044. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  1045. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  1046. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +173 -0
  1047. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
  1048. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
  1049. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
  1050. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
  1051. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
  1052. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  1053. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  1054. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
  1055. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
  1056. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  1057. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
  1058. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
  1059. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
  1060. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  1061. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  1062. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  1063. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  1064. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
  1065. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  1066. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  1067. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  1068. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  1069. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  1070. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
  1071. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
  1072. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  1073. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  1074. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
  1075. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  1076. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
  1077. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +249 -0
  1078. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  1079. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  1080. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +492 -0
  1081. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
  1082. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2739 -0
  1083. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1065 -0
  1084. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  1085. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  1086. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  1087. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  1088. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  1089. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  1090. data/third_party/abseil-cpp/absl/time/duration.cc +953 -0
  1091. data/third_party/abseil-cpp/absl/time/format.cc +160 -0
  1092. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  1093. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +632 -0
  1094. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +386 -0
  1095. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  1096. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  1097. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  1098. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  1099. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1029 -0
  1100. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  1101. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  1102. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +113 -0
  1103. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  1104. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +965 -0
  1105. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +137 -0
  1106. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +309 -0
  1107. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  1108. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  1109. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  1110. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  1111. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  1112. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +116 -0
  1113. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  1114. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  1115. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  1116. data/third_party/abseil-cpp/absl/time/time.h +1583 -0
  1117. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  1118. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  1119. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  1120. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  1121. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  1122. data/third_party/abseil-cpp/absl/types/variant.h +861 -0
  1123. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  1124. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  1125. data/third_party/boringssl-with-bazel/err_data.c +759 -707
  1126. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +6 -6
  1127. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
  1128. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
  1129. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +6 -13
  1130. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1131. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  1132. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +5 -3
  1133. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
  1134. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +15 -20
  1135. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +30 -0
  1136. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
  1137. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
  1138. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
  1139. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  1140. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
  1141. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +39 -85
  1142. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +5 -16
  1143. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
  1144. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
  1145. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
  1146. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  1147. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1148. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
  1149. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1150. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
  1151. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
  1152. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
  1153. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  1154. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +87 -0
  1155. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
  1156. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  1157. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +18 -7
  1158. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  1159. data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
  1160. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
  1161. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
  1162. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
  1163. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
  1164. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
  1165. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  1166. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
  1167. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
  1168. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +19 -43
  1169. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  1170. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
  1171. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  1172. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +385 -0
  1173. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -0
  1174. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
  1175. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
  1176. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
  1177. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
  1178. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  1179. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
  1180. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  1181. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -2
  1182. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  1183. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
  1184. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
  1185. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +34 -13
  1186. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
  1187. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
  1188. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +21 -13
  1189. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
  1190. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  1191. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +149 -211
  1192. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
  1193. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
  1194. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +301 -117
  1195. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +22 -28
  1196. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
  1197. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
  1198. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +434 -161
  1199. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
  1200. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +18 -25
  1201. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
  1202. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +104 -122
  1203. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -0
  1204. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  1205. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
  1206. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
  1207. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
  1208. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  1209. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
  1210. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
  1211. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
  1212. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  1213. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  1214. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  1215. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +69 -5
  1216. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +162 -55
  1217. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -121
  1218. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
  1219. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +5 -0
  1220. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +73 -40
  1221. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +122 -55
  1222. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +217 -2
  1223. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
  1224. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +532 -0
  1225. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +246 -0
  1226. data/third_party/boringssl-with-bazel/src/crypto/mem.c +47 -16
  1227. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
  1228. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
  1229. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
  1230. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
  1231. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  1232. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  1233. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
  1234. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  1235. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +4 -0
  1236. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
  1237. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  1238. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
  1239. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
  1240. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +318 -0
  1241. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1399 -0
  1242. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +858 -0
  1243. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  1244. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +7 -7
  1245. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
  1246. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
  1247. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  1248. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
  1249. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
  1250. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  1251. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +21 -37
  1252. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +27 -21
  1253. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
  1254. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +1 -1
  1255. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
  1256. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +89 -11
  1257. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +7 -4
  1258. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  1259. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +4 -4
  1260. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +62 -44
  1261. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +67 -25
  1262. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +13 -11
  1263. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
  1264. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +22 -17
  1265. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +38 -17
  1266. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
  1267. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  1268. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
  1269. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
  1270. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +68 -9
  1271. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  1272. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  1273. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
  1274. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  1275. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
  1276. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +25 -24
  1277. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
  1278. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +32 -28
  1279. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -2
  1280. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
  1281. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
  1282. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  1283. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  1284. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
  1285. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +2 -2
  1286. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +126 -40
  1287. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -7
  1288. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
  1289. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
  1290. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  1291. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +54 -0
  1292. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +662 -556
  1293. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
  1294. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -7
  1295. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  1296. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  1297. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
  1298. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +25 -0
  1299. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  1300. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +10 -5
  1301. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  1302. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +82 -20
  1303. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +11 -0
  1304. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
  1305. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +15 -0
  1306. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
  1307. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
  1308. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +85 -3
  1309. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
  1310. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  1311. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  1312. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +6 -17
  1313. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
  1314. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
  1315. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
  1316. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +359 -120
  1317. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +33 -10
  1318. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +310 -0
  1319. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1140 -755
  1320. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
  1321. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +593 -440
  1322. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  1323. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
  1324. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
  1325. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
  1326. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +181 -57
  1327. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +45 -26
  1328. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +43 -45
  1329. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +32 -10
  1330. data/third_party/boringssl-with-bazel/src/ssl/internal.h +160 -80
  1331. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
  1332. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -3
  1333. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
  1334. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +77 -8
  1335. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +7 -6
  1336. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
  1337. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +131 -15
  1338. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
  1339. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +50 -15
  1340. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
  1341. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
  1342. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
  1343. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +53 -30
  1344. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +636 -100
  1345. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +2 -3
  1346. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +187 -68
  1347. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +71 -90
  1348. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +247 -73
  1349. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
  1350. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  1351. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
  1352. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
  1353. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
  1354. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
  1355. data/third_party/re2/re2/bitmap256.h +117 -0
  1356. data/third_party/re2/re2/bitstate.cc +385 -0
  1357. data/third_party/re2/re2/compile.cc +1279 -0
  1358. data/third_party/re2/re2/dfa.cc +2130 -0
  1359. data/third_party/re2/re2/filtered_re2.cc +121 -0
  1360. data/third_party/re2/re2/filtered_re2.h +109 -0
  1361. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  1362. data/third_party/re2/re2/nfa.cc +713 -0
  1363. data/third_party/re2/re2/onepass.cc +623 -0
  1364. data/third_party/re2/re2/parse.cc +2464 -0
  1365. data/third_party/re2/re2/perl_groups.cc +119 -0
  1366. data/third_party/re2/re2/pod_array.h +55 -0
  1367. data/third_party/re2/re2/prefilter.cc +710 -0
  1368. data/third_party/re2/re2/prefilter.h +108 -0
  1369. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  1370. data/third_party/re2/re2/prefilter_tree.h +139 -0
  1371. data/third_party/re2/re2/prog.cc +988 -0
  1372. data/third_party/re2/re2/prog.h +436 -0
  1373. data/third_party/re2/re2/re2.cc +1362 -0
  1374. data/third_party/re2/re2/re2.h +1002 -0
  1375. data/third_party/re2/re2/regexp.cc +980 -0
  1376. data/third_party/re2/re2/regexp.h +659 -0
  1377. data/third_party/re2/re2/set.cc +154 -0
  1378. data/third_party/re2/re2/set.h +80 -0
  1379. data/third_party/re2/re2/simplify.cc +657 -0
  1380. data/third_party/re2/re2/sparse_array.h +392 -0
  1381. data/third_party/re2/re2/sparse_set.h +264 -0
  1382. data/third_party/re2/re2/stringpiece.cc +65 -0
  1383. data/third_party/re2/re2/stringpiece.h +210 -0
  1384. data/third_party/re2/re2/tostring.cc +351 -0
  1385. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  1386. data/third_party/re2/re2/unicode_casefold.h +78 -0
  1387. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  1388. data/third_party/re2/re2/unicode_groups.h +67 -0
  1389. data/third_party/re2/re2/walker-inl.h +246 -0
  1390. data/third_party/re2/util/benchmark.h +156 -0
  1391. data/third_party/re2/util/flags.h +26 -0
  1392. data/third_party/re2/util/logging.h +109 -0
  1393. data/third_party/re2/util/malloc_counter.h +19 -0
  1394. data/third_party/re2/util/mix.h +41 -0
  1395. data/third_party/re2/util/mutex.h +148 -0
  1396. data/third_party/re2/util/pcre.cc +1025 -0
  1397. data/third_party/re2/util/pcre.h +681 -0
  1398. data/third_party/re2/util/rune.cc +260 -0
  1399. data/third_party/re2/util/strutil.cc +149 -0
  1400. data/third_party/re2/util/strutil.h +21 -0
  1401. data/third_party/re2/util/test.h +50 -0
  1402. data/third_party/re2/util/utf.h +44 -0
  1403. data/third_party/re2/util/util.h +42 -0
  1404. data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
  1405. data/third_party/upb/upb/decode.c +604 -511
  1406. data/third_party/upb/upb/decode.h +20 -1
  1407. data/third_party/upb/upb/decode.int.h +163 -0
  1408. data/third_party/upb/upb/decode_fast.c +1040 -0
  1409. data/third_party/upb/upb/decode_fast.h +126 -0
  1410. data/third_party/upb/upb/def.c +2178 -0
  1411. data/third_party/upb/upb/def.h +315 -0
  1412. data/third_party/upb/upb/def.hpp +439 -0
  1413. data/third_party/upb/upb/encode.c +311 -211
  1414. data/third_party/upb/upb/encode.h +27 -2
  1415. data/third_party/upb/upb/msg.c +215 -70
  1416. data/third_party/upb/upb/msg.h +558 -14
  1417. data/third_party/upb/upb/port_def.inc +105 -63
  1418. data/third_party/upb/upb/port_undef.inc +10 -7
  1419. data/third_party/upb/upb/reflection.c +408 -0
  1420. data/third_party/upb/upb/reflection.h +168 -0
  1421. data/third_party/upb/upb/table.c +73 -269
  1422. data/third_party/upb/upb/table.int.h +25 -57
  1423. data/third_party/upb/upb/text_encode.c +421 -0
  1424. data/third_party/upb/upb/text_encode.h +38 -0
  1425. data/third_party/upb/upb/upb.c +138 -135
  1426. data/third_party/upb/upb/upb.h +119 -146
  1427. data/third_party/upb/upb/upb.hpp +88 -0
  1428. data/third_party/upb/upb/upb.int.h +29 -0
  1429. data/third_party/xxhash/xxhash.h +5443 -0
  1430. metadata +686 -160
  1431. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
  1432. data/src/core/ext/filters/client_channel/parse_address.cc +0 -237
  1433. data/src/core/ext/filters/client_channel/parse_address.h +0 -53
  1434. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
  1435. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -65
  1436. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -359
  1437. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -122
  1438. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1779
  1439. data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
  1440. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +0 -347
  1441. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -87
  1442. data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
  1443. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -104
  1444. data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -274
  1445. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +0 -116
  1446. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -246
  1447. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -905
  1448. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
  1449. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -390
  1450. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1411
  1451. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -73
  1452. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
  1453. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -34
  1454. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  1455. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -54
  1456. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
  1457. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -111
  1458. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
  1459. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -292
  1460. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -847
  1461. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -95
  1462. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
  1463. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -196
  1464. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
  1465. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -168
  1466. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -658
  1467. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -35
  1468. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  1469. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -132
  1470. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -436
  1471. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -128
  1472. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
  1473. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +0 -30
  1474. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
  1475. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -91
  1476. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
  1477. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -17
  1478. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
  1479. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -88
  1480. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -258
  1481. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -111
  1482. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
  1483. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +0 -30
  1484. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
  1485. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -104
  1486. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -383
  1487. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -17
  1488. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
  1489. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -144
  1490. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
  1491. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -42
  1492. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
  1493. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
  1494. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -62
  1495. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
  1496. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -17
  1497. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
  1498. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -793
  1499. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2936
  1500. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -58
  1501. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
  1502. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
  1503. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -227
  1504. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
  1505. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -296
  1506. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1072
  1507. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -32
  1508. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  1509. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +0 -23
  1510. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
  1511. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -52
  1512. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -130
  1513. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -47
  1514. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -108
  1515. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -52
  1516. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  1517. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -87
  1518. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  1519. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -38
  1520. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
  1521. data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -49
  1522. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
  1523. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +0 -28
  1524. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
  1525. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -88
  1526. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
  1527. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  1528. data/src/core/lib/gprpp/map.h +0 -59
  1529. data/src/core/lib/gprpp/string_view.h +0 -60
  1530. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  1531. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  1532. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  1533. data/src/core/lib/slice/slice_hash_table.h +0 -199
  1534. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  1535. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
  1536. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
  1537. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  1538. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
  1539. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
  1540. data/third_party/upb/upb/generated_util.h +0 -105
  1541. data/third_party/upb/upb/port.c +0 -26
@@ -1,1754 +0,0 @@
1
- /*
2
- *
3
- * Copyright 2018 gRPC authors.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- *
17
- */
18
-
19
- #include <grpc/support/port_platform.h>
20
-
21
- #include "src/core/lib/iomgr/sockaddr.h"
22
- #include "src/core/lib/iomgr/socket_utils.h"
23
-
24
- #include <inttypes.h>
25
- #include <limits.h>
26
- #include <string.h>
27
-
28
- #include "absl/types/optional.h"
29
-
30
- #include <grpc/grpc.h>
31
- #include <grpc/support/alloc.h>
32
- #include <grpc/support/string_util.h>
33
- #include <grpc/support/time.h>
34
-
35
- #include "src/core/ext/filters/client_channel/client_channel.h"
36
- #include "src/core/ext/filters/client_channel/lb_policy.h"
37
- #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
38
- #include "src/core/ext/filters/client_channel/lb_policy/xds/xds.h"
39
- #include "src/core/ext/filters/client_channel/lb_policy_factory.h"
40
- #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
41
- #include "src/core/ext/filters/client_channel/parse_address.h"
42
- #include "src/core/ext/filters/client_channel/server_address.h"
43
- #include "src/core/ext/filters/client_channel/service_config.h"
44
- #include "src/core/ext/filters/client_channel/xds/xds_client.h"
45
- #include "src/core/ext/filters/client_channel/xds/xds_client_stats.h"
46
- #include "src/core/lib/backoff/backoff.h"
47
- #include "src/core/lib/channel/channel_args.h"
48
- #include "src/core/lib/channel/channel_stack.h"
49
- #include "src/core/lib/gpr/string.h"
50
- #include "src/core/lib/gprpp/manual_constructor.h"
51
- #include "src/core/lib/gprpp/map.h"
52
- #include "src/core/lib/gprpp/memory.h"
53
- #include "src/core/lib/gprpp/orphanable.h"
54
- #include "src/core/lib/gprpp/ref_counted_ptr.h"
55
- #include "src/core/lib/gprpp/sync.h"
56
- #include "src/core/lib/iomgr/combiner.h"
57
- #include "src/core/lib/iomgr/sockaddr.h"
58
- #include "src/core/lib/iomgr/sockaddr_utils.h"
59
- #include "src/core/lib/iomgr/timer.h"
60
- #include "src/core/lib/slice/slice_hash_table.h"
61
- #include "src/core/lib/slice/slice_internal.h"
62
- #include "src/core/lib/slice/slice_string_helpers.h"
63
- #include "src/core/lib/surface/call.h"
64
- #include "src/core/lib/surface/channel.h"
65
- #include "src/core/lib/surface/channel_init.h"
66
- #include "src/core/lib/transport/static_metadata.h"
67
-
68
- #define GRPC_XDS_DEFAULT_FALLBACK_TIMEOUT_MS 10000
69
- #define GRPC_XDS_DEFAULT_LOCALITY_RETENTION_INTERVAL_MS (15 * 60 * 1000)
70
- #define GRPC_XDS_DEFAULT_FAILOVER_TIMEOUT_MS 10000
71
-
72
- namespace grpc_core {
73
-
74
- TraceFlag grpc_lb_xds_trace(false, "xds_lb");
75
-
76
- namespace {
77
-
78
- constexpr char kXds[] = "xds_experimental";
79
-
80
- class XdsConfig : public LoadBalancingPolicy::Config {
81
- public:
82
- XdsConfig(RefCountedPtr<LoadBalancingPolicy::Config> child_policy,
83
- RefCountedPtr<LoadBalancingPolicy::Config> fallback_policy,
84
- std::string eds_service_name,
85
- absl::optional<std::string> lrs_load_reporting_server_name)
86
- : child_policy_(std::move(child_policy)),
87
- fallback_policy_(std::move(fallback_policy)),
88
- eds_service_name_(std::move(eds_service_name)),
89
- lrs_load_reporting_server_name_(
90
- std::move(lrs_load_reporting_server_name)) {}
91
-
92
- const char* name() const override { return kXds; }
93
-
94
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
95
- return child_policy_;
96
- }
97
-
98
- RefCountedPtr<LoadBalancingPolicy::Config> fallback_policy() const {
99
- return fallback_policy_;
100
- }
101
-
102
- const char* eds_service_name() const {
103
- return eds_service_name_.empty() ? nullptr : eds_service_name_.c_str();
104
- };
105
-
106
- const absl::optional<std::string>& lrs_load_reporting_server_name() const {
107
- return lrs_load_reporting_server_name_;
108
- };
109
-
110
- private:
111
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy_;
112
- RefCountedPtr<LoadBalancingPolicy::Config> fallback_policy_;
113
- std::string eds_service_name_;
114
- absl::optional<std::string> lrs_load_reporting_server_name_;
115
- };
116
-
117
- class XdsLb : public LoadBalancingPolicy {
118
- public:
119
- explicit XdsLb(Args args);
120
-
121
- const char* name() const override { return kXds; }
122
-
123
- void UpdateLocked(UpdateArgs args) override;
124
- void ResetBackoffLocked() override;
125
-
126
- private:
127
- class EndpointWatcher;
128
-
129
- // A simple wrapper to convert the picker returned from a locality's child
130
- // policy as a unique_ptr<> to a RefCountedPtr<>. This allows it to be
131
- // referenced by both the picker and the locality.
132
- class RefCountedEndpointPicker : public RefCounted<RefCountedEndpointPicker> {
133
- public:
134
- explicit RefCountedEndpointPicker(std::unique_ptr<SubchannelPicker> picker)
135
- : picker_(std::move(picker)) {}
136
- PickResult Pick(PickArgs args) { return picker_->Pick(std::move(args)); }
137
-
138
- private:
139
- std::unique_ptr<SubchannelPicker> picker_;
140
- };
141
-
142
- // A picker that wraps the RefCountedEndpointPicker and performs load
143
- // reporting for the locality.
144
- class LoadReportingPicker : public RefCounted<LoadReportingPicker> {
145
- public:
146
- LoadReportingPicker(RefCountedPtr<RefCountedEndpointPicker> picker,
147
- RefCountedPtr<XdsClusterLocalityStats> locality_stats)
148
- : picker_(std::move(picker)),
149
- locality_stats_(std::move(locality_stats)) {}
150
-
151
- PickResult Pick(PickArgs args);
152
-
153
- RefCountedEndpointPicker* picker() const { return picker_.get(); }
154
- XdsClusterLocalityStats* locality_stats() const {
155
- return locality_stats_.get();
156
- }
157
-
158
- private:
159
- RefCountedPtr<RefCountedEndpointPicker> picker_;
160
- RefCountedPtr<XdsClusterLocalityStats> locality_stats_;
161
- };
162
-
163
- // A picker that uses a stateless weighting algorithm to pick the locality
164
- // to use for each request.
165
- class LocalityPicker : public SubchannelPicker {
166
- public:
167
- // Maintains a weighted list of pickers from each locality that is in ready
168
- // state. The first element in the pair represents the end of a range
169
- // proportional to the locality's weight. The start of the range is the
170
- // previous value in the vector and is 0 for the first element.
171
- using PickerList =
172
- InlinedVector<std::pair<uint32_t, RefCountedPtr<LoadReportingPicker>>,
173
- 1>;
174
- LocalityPicker(XdsLb* xds_policy, PickerList pickers)
175
- : drop_stats_(xds_policy->drop_stats_),
176
- drop_config_(xds_policy->drop_config_),
177
- pickers_(std::move(pickers)) {}
178
-
179
- PickResult Pick(PickArgs args) override;
180
-
181
- private:
182
- // Calls the picker of the locality that the key falls within.
183
- PickResult PickFromLocality(const uint32_t key, PickArgs args);
184
-
185
- RefCountedPtr<XdsClusterDropStats> drop_stats_;
186
- RefCountedPtr<XdsApi::DropConfig> drop_config_;
187
- PickerList pickers_;
188
- };
189
-
190
- class FallbackHelper : public ChannelControlHelper {
191
- public:
192
- explicit FallbackHelper(RefCountedPtr<XdsLb> parent)
193
- : parent_(std::move(parent)) {}
194
-
195
- ~FallbackHelper() { parent_.reset(DEBUG_LOCATION, "FallbackHelper"); }
196
-
197
- RefCountedPtr<SubchannelInterface> CreateSubchannel(
198
- const grpc_channel_args& args) override;
199
- void UpdateState(grpc_connectivity_state state,
200
- std::unique_ptr<SubchannelPicker> picker) override;
201
- void RequestReresolution() override;
202
- void AddTraceEvent(TraceSeverity severity, StringView message) override;
203
-
204
- private:
205
- RefCountedPtr<XdsLb> parent_;
206
- };
207
-
208
- // Each LocalityMap holds a ref to the XdsLb.
209
- class LocalityMap : public InternallyRefCounted<LocalityMap> {
210
- public:
211
- // Each Locality holds a ref to the LocalityMap it is in.
212
- class Locality : public InternallyRefCounted<Locality> {
213
- public:
214
- Locality(RefCountedPtr<LocalityMap> locality_map,
215
- RefCountedPtr<XdsLocalityName> name);
216
- ~Locality();
217
-
218
- void UpdateLocked(uint32_t locality_weight, ServerAddressList serverlist,
219
- bool update_locality_stats);
220
- void ShutdownLocked();
221
- void ResetBackoffLocked();
222
- void DeactivateLocked();
223
- void Orphan() override;
224
-
225
- uint32_t weight() const { return weight_; }
226
-
227
- grpc_connectivity_state connectivity_state() const {
228
- return connectivity_state_;
229
- }
230
-
231
- RefCountedPtr<LoadReportingPicker> GetLoadReportingPicker() {
232
- // Recreate load reporting picker if stats object has changed.
233
- if (load_reporting_picker_ == nullptr ||
234
- load_reporting_picker_->picker() != picker_wrapper_.get() ||
235
- load_reporting_picker_->locality_stats() != stats_.get()) {
236
- load_reporting_picker_ =
237
- MakeRefCounted<LoadReportingPicker>(picker_wrapper_, stats_);
238
- }
239
- return load_reporting_picker_;
240
- }
241
-
242
- void set_locality_map(RefCountedPtr<LocalityMap> locality_map) {
243
- locality_map_ = std::move(locality_map);
244
- }
245
-
246
- private:
247
- class Helper : public ChannelControlHelper {
248
- public:
249
- explicit Helper(RefCountedPtr<Locality> locality)
250
- : locality_(std::move(locality)) {}
251
-
252
- ~Helper() { locality_.reset(DEBUG_LOCATION, "Helper"); }
253
-
254
- RefCountedPtr<SubchannelInterface> CreateSubchannel(
255
- const grpc_channel_args& args) override;
256
- void UpdateState(grpc_connectivity_state state,
257
- std::unique_ptr<SubchannelPicker> picker) override;
258
- // This is a no-op, because we get the addresses from the xds
259
- // client, which is a watch-based API.
260
- void RequestReresolution() override {}
261
- void AddTraceEvent(TraceSeverity severity, StringView message) override;
262
-
263
- private:
264
- RefCountedPtr<Locality> locality_;
265
- };
266
-
267
- // Methods for dealing with the child policy.
268
- OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
269
- const grpc_channel_args* args);
270
- grpc_channel_args* CreateChildPolicyArgsLocked(
271
- const grpc_channel_args* args);
272
-
273
- void UpdateLocalityStats();
274
-
275
- static void OnDelayedRemovalTimer(void* arg, grpc_error* error);
276
- static void OnDelayedRemovalTimerLocked(void* arg, grpc_error* error);
277
-
278
- XdsLb* xds_policy() const { return locality_map_->xds_policy(); }
279
-
280
- // The owning locality map.
281
- RefCountedPtr<LocalityMap> locality_map_;
282
-
283
- RefCountedPtr<XdsLocalityName> name_;
284
- RefCountedPtr<XdsClusterLocalityStats> stats_;
285
- OrphanablePtr<LoadBalancingPolicy> child_policy_;
286
- RefCountedPtr<RefCountedEndpointPicker> picker_wrapper_;
287
- RefCountedPtr<LoadReportingPicker> load_reporting_picker_;
288
- grpc_connectivity_state connectivity_state_ = GRPC_CHANNEL_IDLE;
289
- uint32_t weight_;
290
-
291
- // States for delayed removal.
292
- grpc_timer delayed_removal_timer_;
293
- grpc_closure on_delayed_removal_timer_;
294
- bool delayed_removal_timer_callback_pending_ = false;
295
- bool shutdown_ = false;
296
- };
297
-
298
- LocalityMap(RefCountedPtr<XdsLb> xds_policy, uint32_t priority);
299
-
300
- ~LocalityMap() { xds_policy_.reset(DEBUG_LOCATION, "LocalityMap"); }
301
-
302
- void UpdateLocked(
303
- const XdsApi::PriorityListUpdate::LocalityMap& priority_update,
304
- bool update_locality_stats);
305
- void ResetBackoffLocked();
306
- void UpdateXdsPickerLocked();
307
- OrphanablePtr<Locality> ExtractLocalityLocked(
308
- const RefCountedPtr<XdsLocalityName>& name);
309
- void DeactivateLocked();
310
- // Returns true if this locality map becomes the currently used one (i.e.,
311
- // its priority is selected) after reactivation.
312
- bool MaybeReactivateLocked();
313
- void MaybeCancelFailoverTimerLocked();
314
-
315
- void Orphan() override;
316
-
317
- XdsLb* xds_policy() const { return xds_policy_.get(); }
318
- uint32_t priority() const { return priority_; }
319
- grpc_connectivity_state connectivity_state() const {
320
- return connectivity_state_;
321
- }
322
- bool failover_timer_callback_pending() const {
323
- return failover_timer_callback_pending_;
324
- }
325
-
326
- private:
327
- void OnLocalityStateUpdateLocked();
328
- void UpdateConnectivityStateLocked();
329
- static void OnDelayedRemovalTimer(void* arg, grpc_error* error);
330
- static void OnFailoverTimer(void* arg, grpc_error* error);
331
- static void OnDelayedRemovalTimerLocked(void* arg, grpc_error* error);
332
- static void OnFailoverTimerLocked(void* arg, grpc_error* error);
333
-
334
- const XdsApi::PriorityListUpdate& priority_list_update() const {
335
- return xds_policy_->priority_list_update_;
336
- }
337
- const XdsApi::PriorityListUpdate::LocalityMap* locality_map_update() const {
338
- return xds_policy_->priority_list_update_.Find(priority_);
339
- }
340
-
341
- RefCountedPtr<XdsLb> xds_policy_;
342
-
343
- std::map<RefCountedPtr<XdsLocalityName>, OrphanablePtr<Locality>,
344
- XdsLocalityName::Less>
345
- localities_;
346
- const uint32_t priority_;
347
- grpc_connectivity_state connectivity_state_ = GRPC_CHANNEL_IDLE;
348
-
349
- // States for delayed removal.
350
- grpc_timer delayed_removal_timer_;
351
- grpc_closure on_delayed_removal_timer_;
352
- bool delayed_removal_timer_callback_pending_ = false;
353
-
354
- // States of failover.
355
- grpc_timer failover_timer_;
356
- grpc_closure on_failover_timer_;
357
- bool failover_timer_callback_pending_ = false;
358
- };
359
-
360
- ~XdsLb();
361
-
362
- void ShutdownLocked() override;
363
-
364
- const char* eds_service_name() const {
365
- if (config_ != nullptr && config_->eds_service_name() != nullptr) {
366
- return config_->eds_service_name();
367
- }
368
- return server_name_.c_str();
369
- }
370
-
371
- XdsClient* xds_client() const {
372
- return xds_client_from_channel_ != nullptr ? xds_client_from_channel_.get()
373
- : xds_client_.get();
374
- }
375
-
376
- void UpdatePrioritiesLocked(bool update_locality_stats);
377
- void UpdateXdsPickerLocked();
378
- void MaybeCreateLocalityMapLocked(uint32_t priority);
379
- void FailoverOnConnectionFailureLocked();
380
- void FailoverOnDisconnectionLocked(uint32_t failed_priority);
381
- void SwitchToHigherPriorityLocked(uint32_t priority);
382
- void DeactivatePrioritiesLowerThan(uint32_t priority);
383
- OrphanablePtr<LocalityMap::Locality> ExtractLocalityLocked(
384
- const RefCountedPtr<XdsLocalityName>& name, uint32_t exclude_priority);
385
- // Callers should make sure the priority list is non-empty.
386
- uint32_t LowestPriority() const {
387
- return static_cast<uint32_t>(priorities_.size()) - 1;
388
- }
389
- bool Contains(uint32_t priority) { return priority < priorities_.size(); }
390
-
391
- // Methods for dealing with fallback state.
392
- void MaybeCancelFallbackAtStartupChecks();
393
- static void OnFallbackTimer(void* arg, grpc_error* error);
394
- static void OnFallbackTimerLocked(void* arg, grpc_error* error);
395
- void UpdateFallbackPolicyLocked();
396
- OrphanablePtr<LoadBalancingPolicy> CreateFallbackPolicyLocked(
397
- const grpc_channel_args* args);
398
- void MaybeExitFallbackMode();
399
-
400
- // Server name from target URI.
401
- std::string server_name_;
402
-
403
- // Current channel args and config from the resolver.
404
- const grpc_channel_args* args_ = nullptr;
405
- RefCountedPtr<XdsConfig> config_;
406
-
407
- // Internal state.
408
- bool shutting_down_ = false;
409
-
410
- // The xds client and endpoint watcher.
411
- // If we get the XdsClient from the channel, we store it in
412
- // xds_client_from_channel_; if we create it ourselves, we store it in
413
- // xds_client_.
414
- RefCountedPtr<XdsClient> xds_client_from_channel_;
415
- OrphanablePtr<XdsClient> xds_client_;
416
- // A pointer to the endpoint watcher, to be used when cancelling the watch.
417
- // Note that this is not owned, so this pointer must never be derefernced.
418
- EndpointWatcher* endpoint_watcher_ = nullptr;
419
-
420
- // Whether the checks for fallback at startup are ALL pending. There are
421
- // several cases where this can be reset:
422
- // 1. The fallback timer fires, we enter fallback mode.
423
- // 2. Before the fallback timer fires, the endpoint watcher reports an
424
- // error, we enter fallback mode.
425
- // 3. Before the fallback timer fires, if any child policy in the locality map
426
- // becomes READY, we cancel the fallback timer.
427
- bool fallback_at_startup_checks_pending_ = false;
428
- // Timeout in milliseconds for before using fallback backend addresses.
429
- // 0 means not using fallback.
430
- const grpc_millis lb_fallback_timeout_ms_;
431
- // The backend addresses from the resolver.
432
- ServerAddressList fallback_backend_addresses_;
433
- // Fallback timer.
434
- grpc_timer lb_fallback_timer_;
435
- grpc_closure lb_on_fallback_;
436
-
437
- // Non-null iff we are in fallback mode.
438
- OrphanablePtr<LoadBalancingPolicy> fallback_policy_;
439
-
440
- const grpc_millis locality_retention_interval_ms_;
441
- const grpc_millis locality_map_failover_timeout_ms_;
442
- // The list of locality maps, indexed by priority. P0 is the highest
443
- // priority.
444
- InlinedVector<OrphanablePtr<LocalityMap>, 2> priorities_;
445
- // The priority that is being used.
446
- uint32_t current_priority_ = UINT32_MAX;
447
- // The update for priority_list_.
448
- XdsApi::PriorityListUpdate priority_list_update_;
449
-
450
- // The config for dropping calls.
451
- RefCountedPtr<XdsApi::DropConfig> drop_config_;
452
-
453
- // Drop stats for client-side load reporting.
454
- RefCountedPtr<XdsClusterDropStats> drop_stats_;
455
- };
456
-
457
- //
458
- // XdsLb::LoadReportingPicker
459
- //
460
-
461
- LoadBalancingPolicy::PickResult XdsLb::LoadReportingPicker::Pick(
462
- LoadBalancingPolicy::PickArgs args) {
463
- // Forward the pick to the picker returned from the child policy.
464
- PickResult result = picker_->Pick(args);
465
- if (result.type != PickResult::PICK_COMPLETE ||
466
- result.subchannel == nullptr || locality_stats_ == nullptr) {
467
- return result;
468
- }
469
- // Record a call started.
470
- locality_stats_->AddCallStarted();
471
- // Intercept the recv_trailing_metadata op to record call completion.
472
- XdsClusterLocalityStats* locality_stats =
473
- locality_stats_->Ref(DEBUG_LOCATION, "LocalityStats+call").release();
474
- result.recv_trailing_metadata_ready =
475
- // Note: This callback does not run in either the control plane
476
- // combiner or in the data plane mutex.
477
- [locality_stats](grpc_error* error, MetadataInterface* /*metadata*/,
478
- CallState* /*call_state*/) {
479
- const bool call_failed = error != GRPC_ERROR_NONE;
480
- locality_stats->AddCallFinished(call_failed);
481
- locality_stats->Unref(DEBUG_LOCATION, "LocalityStats+call");
482
- };
483
- return result;
484
- }
485
-
486
- //
487
- // XdsLb::LocalityPicker
488
- //
489
-
490
- XdsLb::PickResult XdsLb::LocalityPicker::Pick(PickArgs args) {
491
- // Handle drop.
492
- const std::string* drop_category;
493
- if (drop_config_->ShouldDrop(&drop_category)) {
494
- if (drop_stats_ != nullptr) drop_stats_->AddCallDropped(*drop_category);
495
- PickResult result;
496
- result.type = PickResult::PICK_COMPLETE;
497
- return result;
498
- }
499
- // If we didn't drop, we better have some localities to pick from.
500
- if (pickers_.empty()) { // Should never happen.
501
- PickResult result;
502
- result.type = PickResult::PICK_FAILED;
503
- result.error =
504
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
505
- "xds picker not given any localities"),
506
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_INTERNAL);
507
- return result;
508
- }
509
- // Generate a random number in [0, total weight).
510
- const uint32_t key = rand() % pickers_[pickers_.size() - 1].first;
511
- // Forward pick to whichever locality maps to the range in which the
512
- // random number falls in.
513
- return PickFromLocality(key, args);
514
- }
515
-
516
- XdsLb::PickResult XdsLb::LocalityPicker::PickFromLocality(const uint32_t key,
517
- PickArgs args) {
518
- size_t mid = 0;
519
- size_t start_index = 0;
520
- size_t end_index = pickers_.size() - 1;
521
- size_t index = 0;
522
- while (end_index > start_index) {
523
- mid = (start_index + end_index) / 2;
524
- if (pickers_[mid].first > key) {
525
- end_index = mid;
526
- } else if (pickers_[mid].first < key) {
527
- start_index = mid + 1;
528
- } else {
529
- index = mid + 1;
530
- break;
531
- }
532
- }
533
- if (index == 0) index = start_index;
534
- GPR_ASSERT(pickers_[index].first > key);
535
- return pickers_[index].second->Pick(args);
536
- }
537
-
538
- //
539
- // XdsLb::FallbackHelper
540
- //
541
-
542
- RefCountedPtr<SubchannelInterface> XdsLb::FallbackHelper::CreateSubchannel(
543
- const grpc_channel_args& args) {
544
- if (parent_->shutting_down_) return nullptr;
545
- return parent_->channel_control_helper()->CreateSubchannel(args);
546
- }
547
-
548
- void XdsLb::FallbackHelper::UpdateState(
549
- grpc_connectivity_state state, std::unique_ptr<SubchannelPicker> picker) {
550
- if (parent_->shutting_down_) return;
551
- parent_->channel_control_helper()->UpdateState(state, std::move(picker));
552
- }
553
-
554
- void XdsLb::FallbackHelper::RequestReresolution() {
555
- if (parent_->shutting_down_) return;
556
- parent_->channel_control_helper()->RequestReresolution();
557
- }
558
-
559
- void XdsLb::FallbackHelper::AddTraceEvent(TraceSeverity severity,
560
- StringView message) {
561
- if (parent_->shutting_down_) return;
562
- parent_->channel_control_helper()->AddTraceEvent(severity, message);
563
- }
564
-
565
- //
566
- // XdsLb::EndpointWatcher
567
- //
568
-
569
- class XdsLb::EndpointWatcher : public XdsClient::EndpointWatcherInterface {
570
- public:
571
- explicit EndpointWatcher(RefCountedPtr<XdsLb> xds_policy)
572
- : xds_policy_(std::move(xds_policy)) {}
573
-
574
- ~EndpointWatcher() { xds_policy_.reset(DEBUG_LOCATION, "EndpointWatcher"); }
575
-
576
- void OnEndpointChanged(XdsApi::EdsUpdate update) override {
577
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
578
- gpr_log(GPR_INFO, "[xdslb %p] Received EDS update from xds client",
579
- xds_policy_.get());
580
- }
581
- // If the balancer tells us to drop all the calls, we should exit fallback
582
- // mode immediately.
583
- if (update.drop_config->drop_all()) xds_policy_->MaybeExitFallbackMode();
584
- // Update the drop config.
585
- const bool drop_config_changed =
586
- xds_policy_->drop_config_ == nullptr ||
587
- *xds_policy_->drop_config_ != *update.drop_config;
588
- xds_policy_->drop_config_ = std::move(update.drop_config);
589
- // Ignore identical locality update.
590
- if (xds_policy_->priority_list_update_ == update.priority_list_update) {
591
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
592
- gpr_log(GPR_INFO,
593
- "[xdslb %p] Incoming locality update identical to current, "
594
- "ignoring. (drop_config_changed=%d)",
595
- xds_policy_.get(), drop_config_changed);
596
- }
597
- if (drop_config_changed) {
598
- xds_policy_->UpdateXdsPickerLocked();
599
- }
600
- return;
601
- }
602
- // Update the priority list.
603
- xds_policy_->priority_list_update_ = std::move(update.priority_list_update);
604
- xds_policy_->UpdatePrioritiesLocked(false /*update_locality_stats*/);
605
- }
606
-
607
- void OnError(grpc_error* error) override {
608
- // If the fallback-at-startup checks are pending, go into fallback mode
609
- // immediately. This short-circuits the timeout for the
610
- // fallback-at-startup case.
611
- if (xds_policy_->fallback_at_startup_checks_pending_) {
612
- gpr_log(GPR_INFO,
613
- "[xdslb %p] xds watcher reported error; entering fallback "
614
- "mode: %s",
615
- xds_policy_.get(), grpc_error_string(error));
616
- xds_policy_->fallback_at_startup_checks_pending_ = false;
617
- grpc_timer_cancel(&xds_policy_->lb_fallback_timer_);
618
- xds_policy_->UpdateFallbackPolicyLocked();
619
- // If the xds call failed, request re-resolution.
620
- // TODO(roth): We check the error string contents here to
621
- // differentiate between the xds call failing and the xds channel
622
- // going into TRANSIENT_FAILURE. This is a pretty ugly hack,
623
- // but it's okay for now, since we're not yet sure whether we will
624
- // continue to support the current fallback functionality. If we
625
- // decide to keep the fallback approach, then we should either
626
- // find a cleaner way to expose the difference between these two
627
- // cases or decide that we're okay re-resolving in both cases.
628
- // Note that even if we do keep the current fallback functionality,
629
- // this re-resolution will only be necessary if we are going to be
630
- // using this LB policy with resolvers other than the xds resolver.
631
- if (strstr(grpc_error_string(error), "xds call failed")) {
632
- xds_policy_->channel_control_helper()->RequestReresolution();
633
- }
634
- } else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
635
- gpr_log(GPR_INFO, "[xdslb %p] xds watcher reported error (ignoring): %s",
636
- xds_policy_.get(), grpc_error_string(error));
637
- }
638
- GRPC_ERROR_UNREF(error);
639
- }
640
-
641
- private:
642
- RefCountedPtr<XdsLb> xds_policy_;
643
- };
644
-
645
- //
646
- // ctor and dtor
647
- //
648
-
649
- XdsLb::XdsLb(Args args)
650
- : LoadBalancingPolicy(std::move(args)),
651
- xds_client_from_channel_(XdsClient::GetFromChannelArgs(*args.args)),
652
- lb_fallback_timeout_ms_(grpc_channel_args_find_integer(
653
- args.args, GRPC_ARG_XDS_FALLBACK_TIMEOUT_MS,
654
- {GRPC_XDS_DEFAULT_FALLBACK_TIMEOUT_MS, 0, INT_MAX})),
655
- locality_retention_interval_ms_(grpc_channel_args_find_integer(
656
- args.args, GRPC_ARG_LOCALITY_RETENTION_INTERVAL_MS,
657
- {GRPC_XDS_DEFAULT_LOCALITY_RETENTION_INTERVAL_MS, 0, INT_MAX})),
658
- locality_map_failover_timeout_ms_(grpc_channel_args_find_integer(
659
- args.args, GRPC_ARG_XDS_FAILOVER_TIMEOUT_MS,
660
- {GRPC_XDS_DEFAULT_FAILOVER_TIMEOUT_MS, 0, INT_MAX})) {
661
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
662
- gpr_log(GPR_INFO, "[xdslb %p] created -- xds client from channel: %p", this,
663
- xds_client_from_channel_.get());
664
- }
665
- // Record server name.
666
- const grpc_arg* arg = grpc_channel_args_find(args.args, GRPC_ARG_SERVER_URI);
667
- const char* server_uri = grpc_channel_arg_get_string(arg);
668
- GPR_ASSERT(server_uri != nullptr);
669
- grpc_uri* uri = grpc_uri_parse(server_uri, true);
670
- GPR_ASSERT(uri->path[0] != '\0');
671
- server_name_ = uri->path[0] == '/' ? uri->path + 1 : uri->path;
672
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
673
- gpr_log(GPR_INFO, "[xdslb %p] server name from channel: %s", this,
674
- server_name_.c_str());
675
- }
676
- grpc_uri_destroy(uri);
677
- }
678
-
679
- XdsLb::~XdsLb() {
680
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
681
- gpr_log(GPR_INFO, "[xdslb %p] destroying xds LB policy", this);
682
- }
683
- grpc_channel_args_destroy(args_);
684
- }
685
-
686
- void XdsLb::ShutdownLocked() {
687
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
688
- gpr_log(GPR_INFO, "[xdslb %p] shutting down", this);
689
- }
690
- shutting_down_ = true;
691
- MaybeCancelFallbackAtStartupChecks();
692
- priorities_.clear();
693
- drop_stats_.reset();
694
- if (fallback_policy_ != nullptr) {
695
- grpc_pollset_set_del_pollset_set(fallback_policy_->interested_parties(),
696
- interested_parties());
697
- fallback_policy_.reset();
698
- }
699
- // Cancel the endpoint watch here instead of in our dtor if we are using the
700
- // XdsResolver, because the watcher holds a ref to us and we might not be
701
- // destroying the Xds client leading to a situation where the Xds lb policy is
702
- // never destroyed.
703
- if (xds_client_from_channel_ != nullptr) {
704
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
705
- gpr_log(GPR_INFO, "[xdslb %p] cancelling watch for %s", this,
706
- eds_service_name());
707
- }
708
- xds_client()->CancelEndpointDataWatch(StringView(eds_service_name()),
709
- endpoint_watcher_);
710
- xds_client_from_channel_.reset();
711
- }
712
- xds_client_.reset();
713
- }
714
-
715
- //
716
- // public methods
717
- //
718
-
719
- void XdsLb::ResetBackoffLocked() {
720
- // When the XdsClient is instantiated in the resolver instead of in this
721
- // LB policy, this is done via the resolver, so we don't need to do it
722
- // for xds_client_from_channel_ here.
723
- if (xds_client_ != nullptr) xds_client_->ResetBackoff();
724
- for (size_t i = 0; i < priorities_.size(); ++i) {
725
- priorities_[i]->ResetBackoffLocked();
726
- }
727
- if (fallback_policy_ != nullptr) {
728
- fallback_policy_->ResetBackoffLocked();
729
- }
730
- }
731
-
732
- void XdsLb::UpdateLocked(UpdateArgs args) {
733
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
734
- gpr_log(GPR_INFO, "[xdslb %p] Received update", this);
735
- }
736
- const bool is_initial_update = args_ == nullptr;
737
- // Update config.
738
- auto old_config = std::move(config_);
739
- config_ = std::move(args.config);
740
- // Update fallback address list.
741
- fallback_backend_addresses_ = std::move(args.addresses);
742
- // Update args.
743
- grpc_channel_args_destroy(args_);
744
- args_ = args.args;
745
- args.args = nullptr;
746
- // Update the existing fallback policy. The fallback policy config and/or the
747
- // fallback addresses may be new.
748
- if (fallback_policy_ != nullptr) UpdateFallbackPolicyLocked();
749
- if (is_initial_update) {
750
- // Initialize XdsClient.
751
- if (xds_client_from_channel_ == nullptr) {
752
- grpc_error* error = GRPC_ERROR_NONE;
753
- xds_client_ = MakeOrphanable<XdsClient>(
754
- combiner(), interested_parties(), StringView(eds_service_name()),
755
- nullptr /* service config watcher */, *args_, &error);
756
- // TODO(roth): If we decide that we care about fallback mode, add
757
- // proper error handling here.
758
- GPR_ASSERT(error == GRPC_ERROR_NONE);
759
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
760
- gpr_log(GPR_INFO, "[xdslb %p] Created xds client %p", this,
761
- xds_client_.get());
762
- }
763
- }
764
- // Start fallback-at-startup checks.
765
- grpc_millis deadline = ExecCtx::Get()->Now() + lb_fallback_timeout_ms_;
766
- Ref(DEBUG_LOCATION, "on_fallback_timer").release(); // Held by closure
767
- GRPC_CLOSURE_INIT(&lb_on_fallback_, &XdsLb::OnFallbackTimer, this,
768
- grpc_schedule_on_exec_ctx);
769
- fallback_at_startup_checks_pending_ = true;
770
- grpc_timer_init(&lb_fallback_timer_, deadline, &lb_on_fallback_);
771
- }
772
- // Update drop stats for load reporting if needed.
773
- if (is_initial_update || config_->lrs_load_reporting_server_name() !=
774
- old_config->lrs_load_reporting_server_name()) {
775
- drop_stats_.reset();
776
- if (config_->lrs_load_reporting_server_name().has_value()) {
777
- drop_stats_ = xds_client()->AddClusterDropStats(
778
- config_->lrs_load_reporting_server_name().value(),
779
- // TODO(roth): We currently hard-code the assumption that
780
- // cluster name and EDS service name are the same. Fix this
781
- // as part of refectoring this LB policy.
782
- eds_service_name(), eds_service_name());
783
- }
784
- }
785
- // On the initial update, create the endpoint watcher.
786
- if (is_initial_update) {
787
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
788
- gpr_log(GPR_INFO, "[xdslb %p] starting watch for %s", this,
789
- eds_service_name());
790
- }
791
- auto watcher = absl::make_unique<EndpointWatcher>(
792
- Ref(DEBUG_LOCATION, "EndpointWatcher"));
793
- endpoint_watcher_ = watcher.get();
794
- xds_client()->WatchEndpointData(StringView(eds_service_name()),
795
- std::move(watcher));
796
- } else {
797
- // Update priority list.
798
- // Note that this comes after updating drop_stats_, since we want that
799
- // to be used by any new picker we create here.
800
- // No need to do this on the initial update, since there won't be any
801
- // priorities to update yet.
802
- const bool update_locality_stats =
803
- config_->lrs_load_reporting_server_name() !=
804
- old_config->lrs_load_reporting_server_name();
805
- UpdatePrioritiesLocked(update_locality_stats);
806
- }
807
- }
808
-
809
- //
810
- // fallback-related methods
811
- //
812
-
813
- void XdsLb::MaybeCancelFallbackAtStartupChecks() {
814
- if (!fallback_at_startup_checks_pending_) return;
815
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
816
- gpr_log(GPR_INFO, "[xdslb %p] Cancelling fallback timer", this);
817
- }
818
- grpc_timer_cancel(&lb_fallback_timer_);
819
- fallback_at_startup_checks_pending_ = false;
820
- }
821
-
822
- void XdsLb::OnFallbackTimer(void* arg, grpc_error* error) {
823
- XdsLb* xdslb_policy = static_cast<XdsLb*>(arg);
824
- xdslb_policy->combiner()->Run(
825
- GRPC_CLOSURE_INIT(&xdslb_policy->lb_on_fallback_,
826
- &XdsLb::OnFallbackTimerLocked, xdslb_policy, nullptr),
827
- GRPC_ERROR_REF(error));
828
- }
829
-
830
- void XdsLb::OnFallbackTimerLocked(void* arg, grpc_error* error) {
831
- XdsLb* xdslb_policy = static_cast<XdsLb*>(arg);
832
- // If some fallback-at-startup check is done after the timer fires but before
833
- // this callback actually runs, don't fall back.
834
- if (xdslb_policy->fallback_at_startup_checks_pending_ &&
835
- !xdslb_policy->shutting_down_ && error == GRPC_ERROR_NONE) {
836
- gpr_log(GPR_INFO,
837
- "[xdslb %p] Child policy not ready after fallback timeout; "
838
- "entering fallback mode",
839
- xdslb_policy);
840
- xdslb_policy->fallback_at_startup_checks_pending_ = false;
841
- xdslb_policy->UpdateFallbackPolicyLocked();
842
- }
843
- xdslb_policy->Unref(DEBUG_LOCATION, "on_fallback_timer");
844
- }
845
-
846
- void XdsLb::UpdateFallbackPolicyLocked() {
847
- if (shutting_down_) return;
848
- // Create policy if needed.
849
- if (fallback_policy_ == nullptr) {
850
- fallback_policy_ = CreateFallbackPolicyLocked(args_);
851
- GPR_ASSERT(fallback_policy_ != nullptr);
852
- }
853
- // Perform update.
854
- UpdateArgs update_args;
855
- update_args.addresses = fallback_backend_addresses_;
856
- update_args.config = config_->fallback_policy();
857
- update_args.args = grpc_channel_args_copy(args_);
858
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
859
- gpr_log(GPR_INFO, "[xdslb %p] Updating fallback child policy handler %p",
860
- this, fallback_policy_.get());
861
- }
862
- fallback_policy_->UpdateLocked(std::move(update_args));
863
- }
864
-
865
- OrphanablePtr<LoadBalancingPolicy> XdsLb::CreateFallbackPolicyLocked(
866
- const grpc_channel_args* args) {
867
- LoadBalancingPolicy::Args lb_policy_args;
868
- lb_policy_args.combiner = combiner();
869
- lb_policy_args.args = args;
870
- lb_policy_args.channel_control_helper =
871
- absl::make_unique<FallbackHelper>(Ref(DEBUG_LOCATION, "FallbackHelper"));
872
- OrphanablePtr<LoadBalancingPolicy> lb_policy =
873
- MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
874
- &grpc_lb_xds_trace);
875
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
876
- gpr_log(GPR_INFO,
877
- "[xdslb %p] Created new fallback child policy handler (%p)", this,
878
- lb_policy.get());
879
- }
880
- // Add the xDS's interested_parties pollset_set to that of the newly created
881
- // child policy. This will make the child policy progress upon activity on xDS
882
- // LB, which in turn is tied to the application's call.
883
- grpc_pollset_set_add_pollset_set(lb_policy->interested_parties(),
884
- interested_parties());
885
- return lb_policy;
886
- }
887
-
888
- void XdsLb::MaybeExitFallbackMode() {
889
- if (fallback_policy_ == nullptr) return;
890
- gpr_log(GPR_INFO, "[xdslb %p] Exiting fallback mode", this);
891
- fallback_policy_.reset();
892
- }
893
-
894
- //
895
- // priority list-related methods
896
- //
897
-
898
- void XdsLb::UpdatePrioritiesLocked(bool update_locality_stats) {
899
- // 1. Remove from the priority list the priorities that are not in the update.
900
- DeactivatePrioritiesLowerThan(priority_list_update_.LowestPriority());
901
- // 2. Update all the existing priorities.
902
- for (uint32_t priority = 0; priority < priorities_.size(); ++priority) {
903
- LocalityMap* locality_map = priorities_[priority].get();
904
- const auto* locality_map_update = priority_list_update_.Find(priority);
905
- // If we have more current priorities than exist in the update, stop here.
906
- if (locality_map_update == nullptr) break;
907
- // Propagate locality_map_update.
908
- // TODO(juanlishen): Find a clean way to skip duplicate update for a
909
- // priority.
910
- locality_map->UpdateLocked(*locality_map_update, update_locality_stats);
911
- }
912
- // 3. Only create a new locality map if all the existing ones have failed.
913
- if (priorities_.empty() ||
914
- !priorities_[priorities_.size() - 1]->failover_timer_callback_pending()) {
915
- const uint32_t new_priority = static_cast<uint32_t>(priorities_.size());
916
- // Create a new locality map. Note that in some rare cases (e.g., the
917
- // locality map reports TRANSIENT_FAILURE synchronously due to subchannel
918
- // sharing), the following invocation may result in multiple locality maps
919
- // to be created.
920
- MaybeCreateLocalityMapLocked(new_priority);
921
- }
922
- // 4. If we updated locality stats and we already have at least one
923
- // priority, update the picker to start using the new stats object(s).
924
- if (update_locality_stats && !priorities_.empty()) {
925
- UpdateXdsPickerLocked();
926
- }
927
- }
928
-
929
- void XdsLb::UpdateXdsPickerLocked() {
930
- // If we are in fallback mode, don't generate an xds picker from localities.
931
- if (fallback_policy_ != nullptr) return;
932
- // If we're dropping all calls, report READY, even though we won't
933
- // have a selected priority.
934
- if (drop_config_ != nullptr && drop_config_->drop_all()) {
935
- channel_control_helper()->UpdateState(
936
- GRPC_CHANNEL_READY,
937
- absl::make_unique<LocalityPicker>(this, LocalityPicker::PickerList{}));
938
- return;
939
- }
940
- // If we don't have a selected priority, report TRANSIENT_FAILURE.
941
- if (current_priority_ == UINT32_MAX) {
942
- if (fallback_policy_ == nullptr) {
943
- grpc_error* error = grpc_error_set_int(
944
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("no ready locality map"),
945
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
946
- channel_control_helper()->UpdateState(
947
- GRPC_CHANNEL_TRANSIENT_FAILURE,
948
- absl::make_unique<TransientFailurePicker>(error));
949
- }
950
- return;
951
- }
952
- priorities_[current_priority_]->UpdateXdsPickerLocked();
953
- }
954
-
955
- void XdsLb::MaybeCreateLocalityMapLocked(uint32_t priority) {
956
- // Exhausted priorities in the update.
957
- if (!priority_list_update_.Contains(priority)) return;
958
- auto new_locality_map =
959
- new LocalityMap(Ref(DEBUG_LOCATION, "LocalityMap"), priority);
960
- priorities_.emplace_back(OrphanablePtr<LocalityMap>(new_locality_map));
961
- new_locality_map->UpdateLocked(*priority_list_update_.Find(priority),
962
- false /*update_locality_stats*/);
963
- }
964
-
965
- void XdsLb::FailoverOnConnectionFailureLocked() {
966
- const uint32_t failed_priority = LowestPriority();
967
- // If we're failing over from the lowest priority, report TRANSIENT_FAILURE.
968
- if (failed_priority == priority_list_update_.LowestPriority()) {
969
- UpdateXdsPickerLocked();
970
- }
971
- MaybeCreateLocalityMapLocked(failed_priority + 1);
972
- }
973
-
974
- void XdsLb::FailoverOnDisconnectionLocked(uint32_t failed_priority) {
975
- current_priority_ = UINT32_MAX;
976
- for (uint32_t next_priority = failed_priority + 1;
977
- next_priority <= priority_list_update_.LowestPriority();
978
- ++next_priority) {
979
- if (!Contains(next_priority)) {
980
- MaybeCreateLocalityMapLocked(next_priority);
981
- return;
982
- }
983
- if (priorities_[next_priority]->MaybeReactivateLocked()) return;
984
- }
985
- }
986
-
987
- void XdsLb::SwitchToHigherPriorityLocked(uint32_t priority) {
988
- current_priority_ = priority;
989
- DeactivatePrioritiesLowerThan(current_priority_);
990
- UpdateXdsPickerLocked();
991
- }
992
-
993
- void XdsLb::DeactivatePrioritiesLowerThan(uint32_t priority) {
994
- if (priorities_.empty()) return;
995
- // Deactivate the locality maps from the lowest priority.
996
- for (uint32_t p = LowestPriority(); p > priority; --p) {
997
- if (locality_retention_interval_ms_ == 0) {
998
- priorities_.pop_back();
999
- } else {
1000
- priorities_[p]->DeactivateLocked();
1001
- }
1002
- }
1003
- }
1004
-
1005
- OrphanablePtr<XdsLb::LocalityMap::Locality> XdsLb::ExtractLocalityLocked(
1006
- const RefCountedPtr<XdsLocalityName>& name, uint32_t exclude_priority) {
1007
- for (uint32_t priority = 0; priority < priorities_.size(); ++priority) {
1008
- if (priority == exclude_priority) continue;
1009
- LocalityMap* locality_map = priorities_[priority].get();
1010
- auto locality = locality_map->ExtractLocalityLocked(name);
1011
- if (locality != nullptr) {
1012
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1013
- gpr_log(GPR_INFO,
1014
- "[xdslb %p] moving locality %p %s to new priority (%" PRIu32
1015
- " -> %" PRIu32 ")",
1016
- this, locality.get(), name->AsHumanReadableString(),
1017
- exclude_priority, priority);
1018
- }
1019
- return locality;
1020
- }
1021
- }
1022
- return nullptr;
1023
- }
1024
-
1025
- //
1026
- // XdsLb::LocalityMap
1027
- //
1028
-
1029
- XdsLb::LocalityMap::LocalityMap(RefCountedPtr<XdsLb> xds_policy,
1030
- uint32_t priority)
1031
- : xds_policy_(std::move(xds_policy)), priority_(priority) {
1032
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1033
- gpr_log(GPR_INFO, "[xdslb %p] Creating priority %" PRIu32,
1034
- xds_policy_.get(), priority_);
1035
- }
1036
- GRPC_CLOSURE_INIT(&on_failover_timer_, OnFailoverTimer, this,
1037
- grpc_schedule_on_exec_ctx);
1038
- // Start the failover timer.
1039
- Ref(DEBUG_LOCATION, "LocalityMap+OnFailoverTimerLocked").release();
1040
- grpc_timer_init(
1041
- &failover_timer_,
1042
- ExecCtx::Get()->Now() + xds_policy_->locality_map_failover_timeout_ms_,
1043
- &on_failover_timer_);
1044
- failover_timer_callback_pending_ = true;
1045
- // This is the first locality map ever created, report CONNECTING.
1046
- if (priority_ == 0 && xds_policy_->fallback_policy_ == nullptr) {
1047
- xds_policy_->channel_control_helper()->UpdateState(
1048
- GRPC_CHANNEL_CONNECTING,
1049
- absl::make_unique<QueuePicker>(
1050
- xds_policy_->Ref(DEBUG_LOCATION, "QueuePicker")));
1051
- }
1052
- }
1053
-
1054
- void XdsLb::LocalityMap::UpdateLocked(
1055
- const XdsApi::PriorityListUpdate::LocalityMap& priority_update,
1056
- bool update_locality_stats) {
1057
- if (xds_policy_->shutting_down_) return;
1058
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1059
- gpr_log(GPR_INFO, "[xdslb %p] Start Updating priority %" PRIu32,
1060
- xds_policy(), priority_);
1061
- }
1062
- // Maybe reactivate the locality map in case all the active locality maps have
1063
- // failed.
1064
- MaybeReactivateLocked();
1065
- // Remove (later) the localities not in priority_update.
1066
- for (auto iter = localities_.begin(); iter != localities_.end();) {
1067
- const auto& name = iter->first;
1068
- Locality* locality = iter->second.get();
1069
- if (priority_update.Contains(name)) {
1070
- ++iter;
1071
- continue;
1072
- }
1073
- if (xds_policy()->locality_retention_interval_ms_ == 0) {
1074
- iter = localities_.erase(iter);
1075
- } else {
1076
- locality->DeactivateLocked();
1077
- ++iter;
1078
- }
1079
- }
1080
- // Add or update the localities in priority_update.
1081
- for (const auto& p : priority_update.localities) {
1082
- const auto& name = p.first;
1083
- const auto& locality_update = p.second;
1084
- OrphanablePtr<Locality>& locality = localities_[name];
1085
- if (locality == nullptr) {
1086
- // Move from another locality map if possible.
1087
- locality = xds_policy_->ExtractLocalityLocked(name, priority_);
1088
- if (locality != nullptr) {
1089
- locality->set_locality_map(
1090
- Ref(DEBUG_LOCATION, "LocalityMap+Locality_move"));
1091
- } else {
1092
- locality = MakeOrphanable<Locality>(
1093
- Ref(DEBUG_LOCATION, "LocalityMap+Locality"), name);
1094
- }
1095
- }
1096
- // Keep a copy of serverlist in the update so that we can compare it
1097
- // with the future ones.
1098
- locality->UpdateLocked(locality_update.lb_weight,
1099
- locality_update.serverlist, update_locality_stats);
1100
- }
1101
- // If this is the current priority and we removed all of the READY
1102
- // localities, go into state CONNECTING.
1103
- // TODO(roth): Ideally, we should model this as a graceful policy
1104
- // switch: we should keep using the old localities for a short period
1105
- // of time, long enough to give the new localities a chance to get
1106
- // connected. As part of refactoring this policy, we should try to
1107
- // fix that.
1108
- if (priority_ == xds_policy()->current_priority_) {
1109
- bool found_ready = false;
1110
- for (auto& p : localities_) {
1111
- const auto& locality_name = p.first;
1112
- Locality* locality = p.second.get();
1113
- if (!locality_map_update()->Contains(locality_name)) continue;
1114
- if (locality->connectivity_state() == GRPC_CHANNEL_READY) {
1115
- found_ready = true;
1116
- break;
1117
- }
1118
- }
1119
- if (!found_ready) {
1120
- xds_policy_->channel_control_helper()->UpdateState(
1121
- GRPC_CHANNEL_CONNECTING,
1122
- absl::make_unique<QueuePicker>(
1123
- xds_policy_->Ref(DEBUG_LOCATION, "QueuePicker")));
1124
- xds_policy_->current_priority_ = UINT32_MAX;
1125
- }
1126
- }
1127
- }
1128
-
1129
- void XdsLb::LocalityMap::ResetBackoffLocked() {
1130
- for (auto& p : localities_) p.second->ResetBackoffLocked();
1131
- }
1132
-
1133
- void XdsLb::LocalityMap::UpdateXdsPickerLocked() {
1134
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1135
- gpr_log(GPR_INFO, "[xdslb %p] constructing new picker", xds_policy());
1136
- }
1137
- // Construct a new xds picker which maintains a map of all locality pickers
1138
- // that are ready. Each locality is represented by a portion of the range
1139
- // proportional to its weight, such that the total range is the sum of the
1140
- // weights of all localities.
1141
- LocalityPicker::PickerList picker_list;
1142
- uint32_t end = 0;
1143
- for (auto& p : localities_) {
1144
- const auto& locality_name = p.first;
1145
- Locality* locality = p.second.get();
1146
- // Skip the localities that are not in the latest locality map update.
1147
- const auto* locality_update = locality_map_update();
1148
- if (locality_update == nullptr) continue;
1149
- if (!locality_update->Contains(locality_name)) continue;
1150
- if (locality->connectivity_state() != GRPC_CHANNEL_READY) continue;
1151
- end += locality->weight();
1152
- picker_list.push_back(
1153
- std::make_pair(end, locality->GetLoadReportingPicker()));
1154
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1155
- gpr_log(GPR_INFO, "[xdslb %p] locality=%s weight=%d picker=%p",
1156
- xds_policy(), locality_name->AsHumanReadableString(),
1157
- locality->weight(), picker_list.back().second.get());
1158
- }
1159
- }
1160
- xds_policy()->channel_control_helper()->UpdateState(
1161
- GRPC_CHANNEL_READY,
1162
- absl::make_unique<LocalityPicker>(xds_policy(), std::move(picker_list)));
1163
- }
1164
-
1165
- OrphanablePtr<XdsLb::LocalityMap::Locality>
1166
- XdsLb::LocalityMap::ExtractLocalityLocked(
1167
- const RefCountedPtr<XdsLocalityName>& name) {
1168
- for (auto iter = localities_.begin(); iter != localities_.end(); ++iter) {
1169
- const auto& name_in_map = iter->first;
1170
- if (*name_in_map == *name) {
1171
- auto locality = std::move(iter->second);
1172
- localities_.erase(iter);
1173
- return locality;
1174
- }
1175
- }
1176
- return nullptr;
1177
- }
1178
-
1179
- void XdsLb::LocalityMap::DeactivateLocked() {
1180
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1181
- gpr_log(GPR_INFO, "[xdslb %p] deactivating priority %" PRIu32, xds_policy(),
1182
- priority_);
1183
- }
1184
- // If already deactivated, don't do it again.
1185
- if (delayed_removal_timer_callback_pending_) return;
1186
- MaybeCancelFailoverTimerLocked();
1187
- // Start a timer to delete the locality.
1188
- Ref(DEBUG_LOCATION, "LocalityMap+timer").release();
1189
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1190
- gpr_log(GPR_INFO,
1191
- "[xdslb %p] Will remove priority %" PRIu32 " in %" PRId64 " ms.",
1192
- xds_policy(), priority_,
1193
- xds_policy()->locality_retention_interval_ms_);
1194
- }
1195
- GRPC_CLOSURE_INIT(&on_delayed_removal_timer_, OnDelayedRemovalTimer, this,
1196
- grpc_schedule_on_exec_ctx);
1197
- grpc_timer_init(
1198
- &delayed_removal_timer_,
1199
- ExecCtx::Get()->Now() + xds_policy()->locality_retention_interval_ms_,
1200
- &on_delayed_removal_timer_);
1201
- delayed_removal_timer_callback_pending_ = true;
1202
- }
1203
-
1204
- bool XdsLb::LocalityMap::MaybeReactivateLocked() {
1205
- // Don't reactivate a priority that is not higher than the current one.
1206
- if (priority_ >= xds_policy_->current_priority_) return false;
1207
- // Reactivate this priority by cancelling deletion timer.
1208
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1209
- gpr_log(GPR_INFO, "[xdslb %p] reactivating priority %" PRIu32, xds_policy(),
1210
- priority_);
1211
- }
1212
- if (delayed_removal_timer_callback_pending_) {
1213
- grpc_timer_cancel(&delayed_removal_timer_);
1214
- }
1215
- // Switch to this higher priority if it's READY.
1216
- if (connectivity_state_ != GRPC_CHANNEL_READY) return false;
1217
- xds_policy_->SwitchToHigherPriorityLocked(priority_);
1218
- return true;
1219
- }
1220
-
1221
- void XdsLb::LocalityMap::MaybeCancelFailoverTimerLocked() {
1222
- if (failover_timer_callback_pending_) grpc_timer_cancel(&failover_timer_);
1223
- }
1224
-
1225
- void XdsLb::LocalityMap::Orphan() {
1226
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1227
- gpr_log(GPR_INFO, "[xdslb %p] Priority %" PRIu32 " orphaned.", xds_policy(),
1228
- priority_);
1229
- }
1230
- MaybeCancelFailoverTimerLocked();
1231
- if (delayed_removal_timer_callback_pending_) {
1232
- grpc_timer_cancel(&delayed_removal_timer_);
1233
- }
1234
- localities_.clear();
1235
- Unref(DEBUG_LOCATION, "LocalityMap+Orphan");
1236
- }
1237
-
1238
- void XdsLb::LocalityMap::OnLocalityStateUpdateLocked() {
1239
- UpdateConnectivityStateLocked();
1240
- // Ignore priorities not in priority_list_update.
1241
- if (!priority_list_update().Contains(priority_)) return;
1242
- const uint32_t current_priority = xds_policy_->current_priority_;
1243
- // Ignore lower-than-current priorities.
1244
- if (priority_ > current_priority) return;
1245
- // Maybe update fallback state.
1246
- if (connectivity_state_ == GRPC_CHANNEL_READY) {
1247
- xds_policy_->MaybeCancelFallbackAtStartupChecks();
1248
- xds_policy_->MaybeExitFallbackMode();
1249
- }
1250
- // Update is for a higher-than-current priority. (Special case: update is for
1251
- // any active priority if there is no current priority.)
1252
- if (priority_ < current_priority) {
1253
- if (connectivity_state_ == GRPC_CHANNEL_READY) {
1254
- MaybeCancelFailoverTimerLocked();
1255
- // If a higher-than-current priority becomes READY, switch to use it.
1256
- xds_policy_->SwitchToHigherPriorityLocked(priority_);
1257
- } else if (connectivity_state_ == GRPC_CHANNEL_TRANSIENT_FAILURE) {
1258
- // If a higher-than-current priority becomes TRANSIENT_FAILURE, only
1259
- // handle it if it's the priority that is still in failover timeout.
1260
- if (failover_timer_callback_pending_) {
1261
- MaybeCancelFailoverTimerLocked();
1262
- xds_policy_->FailoverOnConnectionFailureLocked();
1263
- }
1264
- }
1265
- return;
1266
- }
1267
- // Update is for current priority.
1268
- if (connectivity_state_ != GRPC_CHANNEL_READY) {
1269
- // Fail over if it's no longer READY.
1270
- xds_policy_->FailoverOnDisconnectionLocked(priority_);
1271
- }
1272
- // At this point, one of the following things has happened to the current
1273
- // priority.
1274
- // 1. It remained the same (but received picker update from its localities).
1275
- // 2. It changed to a lower priority due to failover.
1276
- // 3. It became invalid because failover didn't yield a READY priority.
1277
- // In any case, update the xds picker.
1278
- xds_policy_->UpdateXdsPickerLocked();
1279
- }
1280
-
1281
- void XdsLb::LocalityMap::UpdateConnectivityStateLocked() {
1282
- size_t num_ready = 0;
1283
- size_t num_connecting = 0;
1284
- size_t num_idle = 0;
1285
- size_t num_transient_failures = 0;
1286
- for (const auto& p : localities_) {
1287
- const auto& locality_name = p.first;
1288
- const Locality* locality = p.second.get();
1289
- // Skip the localities that are not in the latest locality map update.
1290
- if (!locality_map_update()->Contains(locality_name)) continue;
1291
- switch (locality->connectivity_state()) {
1292
- case GRPC_CHANNEL_READY: {
1293
- ++num_ready;
1294
- break;
1295
- }
1296
- case GRPC_CHANNEL_CONNECTING: {
1297
- ++num_connecting;
1298
- break;
1299
- }
1300
- case GRPC_CHANNEL_IDLE: {
1301
- ++num_idle;
1302
- break;
1303
- }
1304
- case GRPC_CHANNEL_TRANSIENT_FAILURE: {
1305
- ++num_transient_failures;
1306
- break;
1307
- }
1308
- default:
1309
- GPR_UNREACHABLE_CODE(return );
1310
- }
1311
- }
1312
- if (num_ready > 0) {
1313
- connectivity_state_ = GRPC_CHANNEL_READY;
1314
- } else if (num_connecting > 0) {
1315
- connectivity_state_ = GRPC_CHANNEL_CONNECTING;
1316
- } else if (num_idle > 0) {
1317
- connectivity_state_ = GRPC_CHANNEL_IDLE;
1318
- } else {
1319
- connectivity_state_ = GRPC_CHANNEL_TRANSIENT_FAILURE;
1320
- }
1321
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1322
- gpr_log(GPR_INFO,
1323
- "[xdslb %p] Priority %" PRIu32 " (%p) connectivity changed to %s",
1324
- xds_policy(), priority_, this,
1325
- ConnectivityStateName(connectivity_state_));
1326
- }
1327
- }
1328
-
1329
- void XdsLb::LocalityMap::OnDelayedRemovalTimer(void* arg, grpc_error* error) {
1330
- LocalityMap* self = static_cast<LocalityMap*>(arg);
1331
- self->xds_policy_->combiner()->Run(
1332
- GRPC_CLOSURE_INIT(&self->on_delayed_removal_timer_,
1333
- OnDelayedRemovalTimerLocked, self, nullptr),
1334
- GRPC_ERROR_REF(error));
1335
- }
1336
-
1337
- void XdsLb::LocalityMap::OnDelayedRemovalTimerLocked(void* arg,
1338
- grpc_error* error) {
1339
- LocalityMap* self = static_cast<LocalityMap*>(arg);
1340
- self->delayed_removal_timer_callback_pending_ = false;
1341
- if (error == GRPC_ERROR_NONE && !self->xds_policy_->shutting_down_) {
1342
- const bool keep = self->priority_list_update().Contains(self->priority_) &&
1343
- self->priority_ <= self->xds_policy_->current_priority_;
1344
- if (!keep) {
1345
- // This check is to make sure we always delete the locality maps from
1346
- // the lowest priority even if the closures of the back-to-back timers
1347
- // are not run in FIFO order.
1348
- // TODO(juanlishen): Eliminate unnecessary maintenance overhead for some
1349
- // deactivated locality maps when out-of-order closures are run.
1350
- // TODO(juanlishen): Check the timer implementation to see if this
1351
- // defense is necessary.
1352
- if (self->priority_ == self->xds_policy_->LowestPriority()) {
1353
- self->xds_policy_->priorities_.pop_back();
1354
- } else {
1355
- gpr_log(GPR_ERROR,
1356
- "[xdslb %p] Priority %" PRIu32
1357
- " is not the lowest priority (highest numeric value) but is "
1358
- "attempted to be deleted.",
1359
- self->xds_policy(), self->priority_);
1360
- }
1361
- }
1362
- }
1363
- self->Unref(DEBUG_LOCATION, "LocalityMap+timer");
1364
- }
1365
-
1366
- void XdsLb::LocalityMap::OnFailoverTimer(void* arg, grpc_error* error) {
1367
- LocalityMap* self = static_cast<LocalityMap*>(arg);
1368
- self->xds_policy_->combiner()->Run(
1369
- GRPC_CLOSURE_INIT(&self->on_failover_timer_, OnFailoverTimerLocked, self,
1370
- nullptr),
1371
- GRPC_ERROR_REF(error));
1372
- }
1373
-
1374
- void XdsLb::LocalityMap::OnFailoverTimerLocked(void* arg, grpc_error* error) {
1375
- LocalityMap* self = static_cast<LocalityMap*>(arg);
1376
- self->failover_timer_callback_pending_ = false;
1377
- if (error == GRPC_ERROR_NONE && !self->xds_policy_->shutting_down_) {
1378
- self->xds_policy_->FailoverOnConnectionFailureLocked();
1379
- }
1380
- self->Unref(DEBUG_LOCATION, "LocalityMap+OnFailoverTimerLocked");
1381
- }
1382
-
1383
- //
1384
- // XdsLb::LocalityMap::Locality
1385
- //
1386
-
1387
- XdsLb::LocalityMap::Locality::Locality(RefCountedPtr<LocalityMap> locality_map,
1388
- RefCountedPtr<XdsLocalityName> name)
1389
- : locality_map_(std::move(locality_map)), name_(std::move(name)) {
1390
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1391
- gpr_log(GPR_INFO, "[xdslb %p] created Locality %p for %s", xds_policy(),
1392
- this, name_->AsHumanReadableString());
1393
- }
1394
- // Initialize locality stats if load reporting is enabled.
1395
- UpdateLocalityStats();
1396
- }
1397
-
1398
- XdsLb::LocalityMap::Locality::~Locality() {
1399
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1400
- gpr_log(GPR_INFO, "[xdslb %p] Locality %p %s: destroying locality",
1401
- xds_policy(), this, name_->AsHumanReadableString());
1402
- }
1403
- locality_map_.reset(DEBUG_LOCATION, "Locality");
1404
- }
1405
-
1406
- void XdsLb::LocalityMap::Locality::UpdateLocalityStats() {
1407
- stats_.reset();
1408
- if (xds_policy()->config_->lrs_load_reporting_server_name().has_value()) {
1409
- stats_ = xds_policy()->xds_client()->AddClusterLocalityStats(
1410
- xds_policy()->config_->lrs_load_reporting_server_name().value(),
1411
- // TODO(roth): We currently hard-code the assumption that
1412
- // cluster name and EDS service name are the same. Fix this
1413
- // as part of refectoring this LB policy.
1414
- xds_policy()->eds_service_name(), xds_policy()->eds_service_name(),
1415
- name_);
1416
- }
1417
- }
1418
-
1419
- grpc_channel_args* XdsLb::LocalityMap::Locality::CreateChildPolicyArgsLocked(
1420
- const grpc_channel_args* args_in) {
1421
- const grpc_arg args_to_add[] = {
1422
- // A channel arg indicating if the target is a backend inferred from a
1423
- // grpclb load balancer.
1424
- grpc_channel_arg_integer_create(
1425
- const_cast<char*>(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_XDS_LOAD_BALANCER),
1426
- 1),
1427
- // Inhibit client-side health checking, since the balancer does
1428
- // this for us.
1429
- grpc_channel_arg_integer_create(
1430
- const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1),
1431
- };
1432
- return grpc_channel_args_copy_and_add(args_in, args_to_add,
1433
- GPR_ARRAY_SIZE(args_to_add));
1434
- }
1435
-
1436
- OrphanablePtr<LoadBalancingPolicy>
1437
- XdsLb::LocalityMap::Locality::CreateChildPolicyLocked(
1438
- const grpc_channel_args* args) {
1439
- LoadBalancingPolicy::Args lb_policy_args;
1440
- lb_policy_args.combiner = xds_policy()->combiner();
1441
- lb_policy_args.args = args;
1442
- lb_policy_args.channel_control_helper =
1443
- absl::make_unique<Helper>(this->Ref(DEBUG_LOCATION, "Helper"));
1444
- OrphanablePtr<LoadBalancingPolicy> lb_policy =
1445
- MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
1446
- &grpc_lb_xds_trace);
1447
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1448
- gpr_log(GPR_INFO,
1449
- "[xdslb %p] Locality %p %s: Created new child policy handler (%p)",
1450
- xds_policy(), this, name_->AsHumanReadableString(),
1451
- lb_policy.get());
1452
- }
1453
- // Add the xDS's interested_parties pollset_set to that of the newly created
1454
- // child policy. This will make the child policy progress upon activity on
1455
- // xDS LB, which in turn is tied to the application's call.
1456
- grpc_pollset_set_add_pollset_set(lb_policy->interested_parties(),
1457
- xds_policy()->interested_parties());
1458
- return lb_policy;
1459
- }
1460
-
1461
- void XdsLb::LocalityMap::Locality::UpdateLocked(uint32_t locality_weight,
1462
- ServerAddressList serverlist,
1463
- bool update_locality_stats) {
1464
- if (xds_policy()->shutting_down_) return;
1465
- // Update locality weight.
1466
- weight_ = locality_weight;
1467
- if (delayed_removal_timer_callback_pending_) {
1468
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1469
- gpr_log(GPR_INFO, "[xdslb %p] Locality %p %s: reactivating", xds_policy(),
1470
- this, name_->AsHumanReadableString());
1471
- }
1472
- grpc_timer_cancel(&delayed_removal_timer_);
1473
- }
1474
- // Update locality stats.
1475
- if (update_locality_stats) UpdateLocalityStats();
1476
- // Construct update args.
1477
- UpdateArgs update_args;
1478
- update_args.addresses = std::move(serverlist);
1479
- update_args.config = xds_policy()->config_->child_policy();
1480
- update_args.args = CreateChildPolicyArgsLocked(xds_policy()->args_);
1481
- // Create child policy if needed.
1482
- if (child_policy_ == nullptr) {
1483
- child_policy_ = CreateChildPolicyLocked(update_args.args);
1484
- GPR_ASSERT(child_policy_ != nullptr);
1485
- }
1486
- // Update the policy.
1487
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1488
- gpr_log(GPR_INFO,
1489
- "[xdslb %p] Locality %p %s: Updating child policy handler %p",
1490
- xds_policy(), this, name_->AsHumanReadableString(),
1491
- child_policy_.get());
1492
- }
1493
- child_policy_->UpdateLocked(std::move(update_args));
1494
- }
1495
-
1496
- void XdsLb::LocalityMap::Locality::ShutdownLocked() {
1497
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1498
- gpr_log(GPR_INFO, "[xdslb %p] Locality %p %s: shutting down locality",
1499
- xds_policy(), this, name_->AsHumanReadableString());
1500
- }
1501
- stats_.reset();
1502
- // Remove the child policy's interested_parties pollset_set from the
1503
- // xDS policy.
1504
- grpc_pollset_set_del_pollset_set(child_policy_->interested_parties(),
1505
- xds_policy()->interested_parties());
1506
- child_policy_.reset();
1507
- // Drop our ref to the child's picker, in case it's holding a ref to
1508
- // the child.
1509
- load_reporting_picker_.reset();
1510
- picker_wrapper_.reset();
1511
- if (delayed_removal_timer_callback_pending_) {
1512
- grpc_timer_cancel(&delayed_removal_timer_);
1513
- }
1514
- shutdown_ = true;
1515
- }
1516
-
1517
- void XdsLb::LocalityMap::Locality::ResetBackoffLocked() {
1518
- child_policy_->ResetBackoffLocked();
1519
- }
1520
-
1521
- void XdsLb::LocalityMap::Locality::Orphan() {
1522
- ShutdownLocked();
1523
- Unref();
1524
- }
1525
-
1526
- void XdsLb::LocalityMap::Locality::DeactivateLocked() {
1527
- // If already deactivated, don't do that again.
1528
- if (weight_ == 0) return;
1529
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1530
- gpr_log(GPR_INFO, "[xdslb %p] Locality %p %s: deactivating", xds_policy(),
1531
- this, name_->AsHumanReadableString());
1532
- }
1533
- // Set the locality weight to 0 so that future xds picker won't contain this
1534
- // locality.
1535
- weight_ = 0;
1536
- // Start a timer to delete the locality.
1537
- Ref(DEBUG_LOCATION, "Locality+timer").release();
1538
- GRPC_CLOSURE_INIT(&on_delayed_removal_timer_, OnDelayedRemovalTimer, this,
1539
- grpc_schedule_on_exec_ctx);
1540
- grpc_timer_init(
1541
- &delayed_removal_timer_,
1542
- ExecCtx::Get()->Now() + xds_policy()->locality_retention_interval_ms_,
1543
- &on_delayed_removal_timer_);
1544
- delayed_removal_timer_callback_pending_ = true;
1545
- }
1546
-
1547
- void XdsLb::LocalityMap::Locality::OnDelayedRemovalTimer(void* arg,
1548
- grpc_error* error) {
1549
- Locality* self = static_cast<Locality*>(arg);
1550
- self->xds_policy()->combiner()->Run(
1551
- GRPC_CLOSURE_INIT(&self->on_delayed_removal_timer_,
1552
- OnDelayedRemovalTimerLocked, self, nullptr),
1553
- GRPC_ERROR_REF(error));
1554
- }
1555
-
1556
- void XdsLb::LocalityMap::Locality::OnDelayedRemovalTimerLocked(
1557
- void* arg, grpc_error* error) {
1558
- Locality* self = static_cast<Locality*>(arg);
1559
- self->delayed_removal_timer_callback_pending_ = false;
1560
- if (error == GRPC_ERROR_NONE && !self->shutdown_ && self->weight_ == 0) {
1561
- self->locality_map_->localities_.erase(self->name_);
1562
- }
1563
- self->Unref(DEBUG_LOCATION, "Locality+timer");
1564
- }
1565
-
1566
- //
1567
- // XdsLb::LocalityMap::Locality::Helper
1568
- //
1569
-
1570
- RefCountedPtr<SubchannelInterface>
1571
- XdsLb::LocalityMap::Locality::Helper::CreateSubchannel(
1572
- const grpc_channel_args& args) {
1573
- if (locality_->xds_policy()->shutting_down_) return nullptr;
1574
- return locality_->xds_policy()->channel_control_helper()->CreateSubchannel(
1575
- args);
1576
- }
1577
-
1578
- void XdsLb::LocalityMap::Locality::Helper::UpdateState(
1579
- grpc_connectivity_state state, std::unique_ptr<SubchannelPicker> picker) {
1580
- if (locality_->xds_policy()->shutting_down_) return;
1581
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_trace)) {
1582
- gpr_log(GPR_INFO,
1583
- "[xdslb %p helper %p] child policy handler %p reports state=%s",
1584
- locality_->xds_policy(), this, locality_->child_policy_.get(),
1585
- ConnectivityStateName(state));
1586
- }
1587
- // Cache the state and picker in the locality.
1588
- locality_->connectivity_state_ = state;
1589
- locality_->picker_wrapper_ =
1590
- MakeRefCounted<RefCountedEndpointPicker>(std::move(picker));
1591
- // Notify the locality map.
1592
- locality_->locality_map_->OnLocalityStateUpdateLocked();
1593
- }
1594
-
1595
- void XdsLb::LocalityMap::Locality::Helper::AddTraceEvent(TraceSeverity severity,
1596
- StringView message) {
1597
- if (locality_->xds_policy()->shutting_down_) return;
1598
- locality_->xds_policy()->channel_control_helper()->AddTraceEvent(severity,
1599
- message);
1600
- }
1601
-
1602
- //
1603
- // factory
1604
- //
1605
-
1606
- class XdsFactory : public LoadBalancingPolicyFactory {
1607
- public:
1608
- OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
1609
- LoadBalancingPolicy::Args args) const override {
1610
- return MakeOrphanable<XdsChildHandler>(std::move(args), &grpc_lb_xds_trace);
1611
- }
1612
-
1613
- const char* name() const override { return kXds; }
1614
-
1615
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
1616
- const Json& json, grpc_error** error) const override {
1617
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
1618
- if (json.type() == Json::Type::JSON_NULL) {
1619
- // xds was mentioned as a policy in the deprecated loadBalancingPolicy
1620
- // field or in the client API.
1621
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1622
- "field:loadBalancingPolicy error:xds policy requires configuration. "
1623
- "Please use loadBalancingConfig field of service config instead.");
1624
- return nullptr;
1625
- }
1626
- std::vector<grpc_error*> error_list;
1627
- // Child policy.
1628
- Json json_tmp;
1629
- const Json* child_policy_json;
1630
- auto it = json.object_value().find("childPolicy");
1631
- if (it == json.object_value().end()) {
1632
- json_tmp = Json::Array{Json::Object{
1633
- {"round_robin", Json::Object()},
1634
- }};
1635
- child_policy_json = &json_tmp;
1636
- } else {
1637
- child_policy_json = &it->second;
1638
- }
1639
- grpc_error* parse_error = GRPC_ERROR_NONE;
1640
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy =
1641
- LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
1642
- *child_policy_json, &parse_error);
1643
- if (child_policy == nullptr) {
1644
- GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
1645
- std::vector<grpc_error*> child_errors;
1646
- child_errors.push_back(parse_error);
1647
- error_list.push_back(
1648
- GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
1649
- }
1650
- // Fallback policy.
1651
- const Json* fallback_policy_json;
1652
- it = json.object_value().find("fallbackPolicy");
1653
- if (it == json.object_value().end()) {
1654
- json_tmp = Json::Array{Json::Object{
1655
- {"round_robin", Json::Object()},
1656
- }};
1657
- fallback_policy_json = &json_tmp;
1658
- } else {
1659
- fallback_policy_json = &it->second;
1660
- }
1661
- RefCountedPtr<LoadBalancingPolicy::Config> fallback_policy =
1662
- LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
1663
- *fallback_policy_json, &parse_error);
1664
- if (fallback_policy == nullptr) {
1665
- GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
1666
- std::vector<grpc_error*> child_errors;
1667
- child_errors.push_back(parse_error);
1668
- error_list.push_back(
1669
- GRPC_ERROR_CREATE_FROM_VECTOR("field:fallbackPolicy", &child_errors));
1670
- }
1671
- // EDS service name.
1672
- const char* eds_service_name = nullptr;
1673
- it = json.object_value().find("edsServiceName");
1674
- if (it != json.object_value().end()) {
1675
- if (it->second.type() != Json::Type::STRING) {
1676
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1677
- "field:edsServiceName error:type should be string"));
1678
- } else {
1679
- eds_service_name = it->second.string_value().c_str();
1680
- }
1681
- }
1682
- // LRS load reporting server name.
1683
- const char* lrs_load_reporting_server_name = nullptr;
1684
- it = json.object_value().find("lrsLoadReportingServerName");
1685
- if (it != json.object_value().end()) {
1686
- if (it->second.type() != Json::Type::STRING) {
1687
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1688
- "field:lrsLoadReportingServerName error:type should be string"));
1689
- } else {
1690
- lrs_load_reporting_server_name = it->second.string_value().c_str();
1691
- }
1692
- }
1693
- if (error_list.empty()) {
1694
- absl::optional<std::string> optional_lrs_load_reporting_server_name;
1695
- if (lrs_load_reporting_server_name != nullptr) {
1696
- optional_lrs_load_reporting_server_name.emplace(
1697
- std::string(lrs_load_reporting_server_name));
1698
- }
1699
- return MakeRefCounted<XdsConfig>(
1700
- std::move(child_policy), std::move(fallback_policy),
1701
- eds_service_name == nullptr ? "" : eds_service_name,
1702
- std::move(optional_lrs_load_reporting_server_name));
1703
- } else {
1704
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("Xds Parser", &error_list);
1705
- return nullptr;
1706
- }
1707
- }
1708
-
1709
- private:
1710
- class XdsChildHandler : public ChildPolicyHandler {
1711
- public:
1712
- XdsChildHandler(Args args, TraceFlag* tracer)
1713
- : ChildPolicyHandler(std::move(args), tracer) {}
1714
-
1715
- bool ConfigChangeRequiresNewPolicyInstance(
1716
- LoadBalancingPolicy::Config* old_config,
1717
- LoadBalancingPolicy::Config* new_config) const override {
1718
- GPR_ASSERT(old_config->name() == kXds);
1719
- GPR_ASSERT(new_config->name() == kXds);
1720
- XdsConfig* old_xds_config = static_cast<XdsConfig*>(old_config);
1721
- XdsConfig* new_xds_config = static_cast<XdsConfig*>(new_config);
1722
- const char* old_eds_service_name =
1723
- old_xds_config->eds_service_name() == nullptr
1724
- ? ""
1725
- : old_xds_config->eds_service_name();
1726
- const char* new_eds_service_name =
1727
- new_xds_config->eds_service_name() == nullptr
1728
- ? ""
1729
- : new_xds_config->eds_service_name();
1730
- return strcmp(old_eds_service_name, new_eds_service_name) != 0;
1731
- }
1732
-
1733
- OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
1734
- const char* name, LoadBalancingPolicy::Args args) const override {
1735
- return MakeOrphanable<XdsLb>(std::move(args));
1736
- }
1737
- };
1738
- };
1739
-
1740
- } // namespace
1741
-
1742
- } // namespace grpc_core
1743
-
1744
- //
1745
- // Plugin registration
1746
- //
1747
-
1748
- void grpc_lb_policy_xds_init() {
1749
- grpc_core::LoadBalancingPolicyRegistry::Builder::
1750
- RegisterLoadBalancingPolicyFactory(
1751
- absl::make_unique<grpc_core::XdsFactory>());
1752
- }
1753
-
1754
- void grpc_lb_policy_xds_shutdown() {}