grpc 1.37.1 → 1.38.0.pre1

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

Potentially problematic release.


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

Files changed (544) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +64 -58
  3. data/include/grpc/event_engine/README.md +38 -0
  4. data/include/grpc/event_engine/channel_args.h +28 -0
  5. data/include/grpc/event_engine/event_engine.h +336 -0
  6. data/include/grpc/event_engine/port.h +39 -0
  7. data/include/grpc/event_engine/slice_allocator.h +81 -0
  8. data/include/grpc/grpc.h +2 -2
  9. data/include/grpc/grpc_security_constants.h +14 -0
  10. data/include/grpc/impl/codegen/grpc_types.h +11 -0
  11. data/include/grpc/impl/codegen/port_platform.h +5 -0
  12. data/include/grpc/module.modulemap +14 -14
  13. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  14. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  15. data/src/core/ext/filters/client_channel/client_channel.cc +628 -3101
  16. data/src/core/ext/filters/client_channel/client_channel.h +489 -55
  17. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  18. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  20. data/src/core/ext/filters/client_channel/connector.h +1 -1
  21. data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
  22. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  23. data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
  24. data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
  25. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  26. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
  34. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
  35. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +84 -61
  41. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  42. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  43. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  54. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -9
  55. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  56. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  57. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -11
  58. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  59. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +43 -28
  60. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  61. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  62. data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
  63. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  64. data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
  65. data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
  66. data/src/core/ext/filters/client_channel/server_address.cc +1 -1
  67. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  68. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  69. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  70. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  71. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  72. data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
  73. data/src/core/ext/filters/client_channel/subchannel.h +7 -6
  74. data/src/core/ext/filters/client_idle/client_idle_filter.cc +16 -15
  75. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  76. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
  77. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  78. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  79. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
  80. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  81. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  82. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  83. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  84. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  85. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  86. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  87. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
  88. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  89. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  90. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
  91. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
  92. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
  93. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
  94. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  95. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  96. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -2
  97. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  98. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -116
  99. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  100. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  101. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  102. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
  103. data/src/core/ext/transport/chttp2/transport/frame_data.cc +8 -8
  104. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  105. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
  106. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  107. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  108. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  109. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  110. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  111. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
  112. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  113. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  114. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  115. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
  116. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
  117. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  118. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  119. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  120. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  121. data/src/core/ext/transport/chttp2/transport/internal.h +31 -27
  122. data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
  123. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  124. data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
  125. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  126. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  127. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  128. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  129. data/src/core/ext/xds/xds_api.cc +101 -93
  130. data/src/core/ext/xds/xds_api.h +6 -6
  131. data/src/core/ext/xds/xds_bootstrap.cc +97 -159
  132. data/src/core/ext/xds/xds_bootstrap.h +19 -24
  133. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  134. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  135. data/src/core/ext/xds/xds_channel_args.h +5 -2
  136. data/src/core/ext/xds/xds_client.cc +310 -178
  137. data/src/core/ext/xds/xds_client.h +41 -27
  138. data/src/core/ext/xds/xds_client_stats.h +3 -2
  139. data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
  140. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  141. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  142. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +3 -20
  143. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +6 -11
  144. data/src/core/lib/channel/channel_stack.cc +10 -9
  145. data/src/core/lib/channel/channel_stack.h +10 -9
  146. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  147. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  148. data/src/core/lib/channel/channelz.cc +21 -13
  149. data/src/core/lib/channel/connected_channel.cc +4 -4
  150. data/src/core/lib/channel/handshaker.cc +7 -6
  151. data/src/core/lib/channel/handshaker.h +5 -5
  152. data/src/core/lib/event_engine/slice_allocator.cc +59 -0
  153. data/src/core/lib/event_engine/sockaddr.cc +38 -0
  154. data/src/core/lib/gprpp/ref_counted.h +28 -14
  155. data/src/core/lib/gprpp/status_helper.cc +407 -0
  156. data/src/core/lib/gprpp/status_helper.h +180 -0
  157. data/src/core/lib/http/httpcli.cc +11 -11
  158. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  159. data/src/core/lib/http/parser.cc +16 -16
  160. data/src/core/lib/http/parser.h +4 -4
  161. data/src/core/lib/iomgr/buffer_list.cc +7 -9
  162. data/src/core/lib/iomgr/buffer_list.h +4 -5
  163. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  164. data/src/core/lib/iomgr/call_combiner.h +12 -14
  165. data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
  166. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  167. data/src/core/lib/iomgr/closure.h +7 -6
  168. data/src/core/lib/iomgr/combiner.cc +14 -12
  169. data/src/core/lib/iomgr/combiner.h +2 -2
  170. data/src/core/lib/iomgr/endpoint.cc +1 -1
  171. data/src/core/lib/iomgr/endpoint.h +2 -2
  172. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  173. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  174. data/src/core/lib/iomgr/error.cc +167 -61
  175. data/src/core/lib/iomgr/error.h +217 -106
  176. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  177. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  178. data/src/core/lib/iomgr/error_internal.h +5 -1
  179. data/src/core/lib/iomgr/ev_apple.cc +5 -5
  180. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  181. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  182. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  183. data/src/core/lib/iomgr/ev_posix.cc +9 -8
  184. data/src/core/lib/iomgr/ev_posix.h +9 -9
  185. data/src/core/lib/iomgr/exec_ctx.cc +4 -4
  186. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  187. data/src/core/lib/iomgr/executor.cc +8 -8
  188. data/src/core/lib/iomgr/executor.h +2 -2
  189. data/src/core/lib/iomgr/iomgr.cc +1 -1
  190. data/src/core/lib/iomgr/iomgr.h +1 -1
  191. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  192. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  193. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  194. data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
  195. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  196. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  197. data/src/core/lib/iomgr/load_file.cc +4 -4
  198. data/src/core/lib/iomgr/load_file.h +2 -2
  199. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  200. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  201. data/src/core/lib/iomgr/pollset.cc +5 -5
  202. data/src/core/lib/iomgr/pollset.h +9 -9
  203. data/src/core/lib/iomgr/pollset_custom.cc +5 -5
  204. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  205. data/src/core/lib/iomgr/port.h +1 -1
  206. data/src/core/lib/iomgr/python_util.h +1 -1
  207. data/src/core/lib/iomgr/resolve_address.cc +3 -3
  208. data/src/core/lib/iomgr/resolve_address.h +6 -6
  209. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  210. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  211. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  212. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  213. data/src/core/lib/iomgr/resource_quota.cc +11 -10
  214. data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
  215. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  216. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  217. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  218. data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
  219. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  220. data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
  221. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  222. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  223. data/src/core/lib/iomgr/tcp_posix.cc +36 -34
  224. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  225. data/src/core/lib/iomgr/tcp_server.h +12 -11
  226. data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
  227. data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
  228. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  229. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
  230. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  231. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  232. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  233. data/src/core/lib/iomgr/tcp_uv.cc +25 -23
  234. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  235. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  236. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  237. data/src/core/lib/iomgr/timer_custom.h +1 -1
  238. data/src/core/lib/iomgr/timer_generic.cc +6 -6
  239. data/src/core/lib/iomgr/udp_server.cc +21 -20
  240. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  241. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  242. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  243. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  244. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  245. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  246. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  247. data/src/core/lib/iomgr/work_serializer.h +17 -1
  248. data/src/core/lib/json/json.h +1 -1
  249. data/src/core/lib/json/json_reader.cc +4 -4
  250. data/src/core/lib/matchers/matchers.cc +39 -39
  251. data/src/core/lib/matchers/matchers.h +28 -28
  252. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  253. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  254. data/src/core/lib/security/credentials/credentials.h +2 -2
  255. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  256. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  257. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  258. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  259. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  260. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  261. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  262. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  263. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  264. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  265. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  266. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  267. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
  268. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  269. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  270. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  271. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  272. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  273. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  274. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  275. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  276. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  277. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  278. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  279. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  280. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
  281. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  282. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  283. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  284. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  285. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  286. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  287. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  288. data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
  289. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  290. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  291. data/src/core/lib/security/security_connector/ssl_utils.cc +22 -4
  292. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  293. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
  294. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  295. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  296. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  297. data/src/core/lib/security/transport/security_handshaker.cc +33 -32
  298. data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
  299. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  300. data/src/core/lib/security/transport/tsi_error.h +2 -1
  301. data/src/core/lib/security/util/json_util.cc +2 -2
  302. data/src/core/lib/security/util/json_util.h +1 -1
  303. data/src/core/lib/surface/call.cc +46 -45
  304. data/src/core/lib/surface/call.h +2 -2
  305. data/src/core/lib/surface/channel.cc +6 -6
  306. data/src/core/lib/surface/channel.h +3 -2
  307. data/src/core/lib/surface/channel_ping.cc +1 -1
  308. data/src/core/lib/surface/completion_queue.cc +46 -47
  309. data/src/core/lib/surface/completion_queue.h +2 -1
  310. data/src/core/lib/surface/lame_client.cc +11 -11
  311. data/src/core/lib/surface/lame_client.h +1 -1
  312. data/src/core/lib/surface/server.cc +28 -22
  313. data/src/core/lib/surface/server.h +16 -15
  314. data/src/core/lib/surface/validate_metadata.cc +7 -7
  315. data/src/core/lib/surface/validate_metadata.h +3 -2
  316. data/src/core/lib/surface/version.cc +4 -2
  317. data/src/core/lib/transport/byte_stream.cc +5 -5
  318. data/src/core/lib/transport/byte_stream.h +8 -8
  319. data/src/core/lib/transport/connectivity_state.cc +1 -1
  320. data/src/core/lib/transport/error_utils.cc +19 -8
  321. data/src/core/lib/transport/error_utils.h +11 -5
  322. data/src/core/lib/transport/metadata_batch.cc +37 -37
  323. data/src/core/lib/transport/metadata_batch.h +19 -18
  324. data/src/core/lib/transport/transport.cc +4 -3
  325. data/src/core/lib/transport/transport.h +4 -4
  326. data/src/core/lib/transport/transport_op_string.cc +5 -5
  327. data/src/core/tsi/alts/crypt/gsec.h +4 -0
  328. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
  329. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  330. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  331. data/src/core/tsi/ssl_transport_security.cc +32 -14
  332. data/src/core/tsi/ssl_transport_security.h +3 -4
  333. data/src/ruby/bin/math_services_pb.rb +1 -1
  334. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  335. data/src/ruby/lib/grpc/version.rb +1 -1
  336. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  337. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  338. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  339. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  340. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  341. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  342. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  343. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  344. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  345. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  346. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  347. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  348. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  349. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  350. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  351. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  352. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  353. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  354. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  355. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  356. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  357. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  358. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  359. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  360. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  361. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  362. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  363. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  364. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  365. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  366. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  367. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  368. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  369. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  370. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  371. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  372. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  373. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  374. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  375. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  376. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  377. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  378. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  379. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  380. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  381. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  382. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  383. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  384. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  385. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  386. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  387. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  388. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  389. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  390. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  391. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  392. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  393. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  394. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  395. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  396. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  397. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  398. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  399. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  400. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  401. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  402. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  403. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  404. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  405. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  406. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  407. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  408. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  409. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  410. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  411. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  412. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  413. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  414. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  415. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  416. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  417. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  418. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  420. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  421. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  422. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  423. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  424. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  425. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  426. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  427. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  428. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  429. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  430. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  431. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  432. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  433. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  434. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  435. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  436. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  437. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  438. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  439. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  440. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  441. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  442. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  443. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  444. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  445. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  446. data/third_party/boringssl-with-bazel/err_data.c +477 -461
  447. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  448. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
  449. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  450. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  451. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  452. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  453. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  454. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  455. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  456. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  457. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  458. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  459. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  460. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
  461. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  462. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  463. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
  464. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  465. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  466. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  467. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  468. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  469. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
  470. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
  471. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  472. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  473. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  474. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  475. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  476. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  477. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  478. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  479. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  480. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
  481. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
  482. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
  483. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
  484. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
  485. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  486. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  487. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  488. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
  489. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  490. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  491. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  504. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  505. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  506. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  507. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
  508. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  509. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
  511. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  512. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  513. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
  514. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  515. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
  516. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  517. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  518. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
  519. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  520. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  521. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +185 -17
  522. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  523. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -121
  524. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
  525. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
  526. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
  527. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
  528. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
  529. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
  530. data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
  531. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
  532. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  533. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  534. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
  535. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +98 -64
  536. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
  537. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
  538. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  539. metadata +68 -45
  540. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  541. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  542. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  543. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  544. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
@@ -76,7 +76,7 @@ extern void (*grpc_cancel_ares_request_locked)(grpc_ares_request* request);
76
76
 
77
77
  /* Initialize gRPC ares wrapper. Must be called at least once before
78
78
  grpc_resolve_address_ares(). */
79
- grpc_error* grpc_ares_init(void);
79
+ grpc_error_handle grpc_ares_init(void);
80
80
 
81
81
  /* Uninitialized gRPC ares wrapper. If there was more than one previous call to
82
82
  grpc_ares_init(), this function uninitializes the gRPC ares wrapper only if
@@ -25,8 +25,8 @@
25
25
 
26
26
  #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
27
27
  #include "src/core/ext/filters/client_channel/server_address.h"
28
+ #include "src/core/lib/address_utils/parse_address.h"
28
29
  #include "src/core/lib/gpr/string.h"
29
- #include "src/core/lib/iomgr/parse_address.h"
30
30
 
31
31
  bool grpc_ares_query_ipv6() {
32
32
  /* The libuv grpc code currently does not have the code to probe for this,
@@ -25,8 +25,8 @@
25
25
 
26
26
  #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
27
27
  #include "src/core/ext/filters/client_channel/server_address.h"
28
+ #include "src/core/lib/address_utils/parse_address.h"
28
29
  #include "src/core/lib/gpr/string.h"
29
- #include "src/core/lib/iomgr/parse_address.h"
30
30
  #include "src/core/lib/iomgr/socket_windows.h"
31
31
 
32
32
  bool grpc_ares_query_ipv6() { return grpc_ipv6_loopback_available(); }
@@ -68,10 +68,10 @@ class NativeDnsResolver : public Resolver {
68
68
  void MaybeStartResolvingLocked();
69
69
  void StartResolvingLocked();
70
70
 
71
- static void OnNextResolution(void* arg, grpc_error* error);
72
- void OnNextResolutionLocked(grpc_error* error);
73
- static void OnResolved(void* arg, grpc_error* error);
74
- void OnResolvedLocked(grpc_error* error);
71
+ static void OnNextResolution(void* arg, grpc_error_handle error);
72
+ void OnNextResolutionLocked(grpc_error_handle error);
73
+ static void OnResolved(void* arg, grpc_error_handle error);
74
+ void OnResolvedLocked(grpc_error_handle error);
75
75
 
76
76
  /// name to resolve
77
77
  std::string name_to_resolve_;
@@ -148,14 +148,14 @@ void NativeDnsResolver::ShutdownLocked() {
148
148
  }
149
149
  }
150
150
 
151
- void NativeDnsResolver::OnNextResolution(void* arg, grpc_error* error) {
151
+ void NativeDnsResolver::OnNextResolution(void* arg, grpc_error_handle error) {
152
152
  NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
153
153
  GRPC_ERROR_REF(error); // ref owned by lambda
154
154
  r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
155
155
  DEBUG_LOCATION);
156
156
  }
157
157
 
158
- void NativeDnsResolver::OnNextResolutionLocked(grpc_error* error) {
158
+ void NativeDnsResolver::OnNextResolutionLocked(grpc_error_handle error) {
159
159
  have_next_resolution_timer_ = false;
160
160
  if (error == GRPC_ERROR_NONE && !resolving_) {
161
161
  StartResolvingLocked();
@@ -164,14 +164,14 @@ void NativeDnsResolver::OnNextResolutionLocked(grpc_error* error) {
164
164
  GRPC_ERROR_UNREF(error);
165
165
  }
166
166
 
167
- void NativeDnsResolver::OnResolved(void* arg, grpc_error* error) {
167
+ void NativeDnsResolver::OnResolved(void* arg, grpc_error_handle error) {
168
168
  NativeDnsResolver* r = static_cast<NativeDnsResolver*>(arg);
169
169
  GRPC_ERROR_REF(error); // owned by lambda
170
170
  r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); },
171
171
  DEBUG_LOCATION);
172
172
  }
173
173
 
174
- void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
174
+ void NativeDnsResolver::OnResolvedLocked(grpc_error_handle error) {
175
175
  GPR_ASSERT(resolving_);
176
176
  resolving_ = false;
177
177
  if (shutdown_) {
@@ -194,7 +194,7 @@ void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
194
194
  backoff_.Reset();
195
195
  } else {
196
196
  gpr_log(GPR_INFO, "dns resolution failed (will retry): %s",
197
- grpc_error_string(error));
197
+ grpc_error_std_string(error).c_str());
198
198
  // Return transient error.
199
199
  std::string error_message =
200
200
  absl::StrCat("DNS resolution failed for service: ", name_to_resolve_);
@@ -203,6 +203,10 @@ void NativeDnsResolver::OnResolvedLocked(grpc_error* error) {
203
203
  &error, 1),
204
204
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
205
205
  // Set up for retry.
206
+ // InvalidateNow to avoid getting stuck re-initializing this timer
207
+ // in a loop while draining the currently-held WorkSerializer.
208
+ // Also see https://github.com/grpc/grpc/issues/26079.
209
+ ExecCtx::Get()->InvalidateNow();
206
210
  grpc_millis next_try = backoff_.NextAttemptTime();
207
211
  grpc_millis timeout = next_try - ExecCtx::Get()->Now();
208
212
  GPR_ASSERT(!have_next_resolution_timer_);
@@ -229,6 +233,10 @@ void NativeDnsResolver::MaybeStartResolvingLocked() {
229
233
  // can start the next resolution.
230
234
  if (have_next_resolution_timer_) return;
231
235
  if (last_resolution_timestamp_ >= 0) {
236
+ // InvalidateNow to avoid getting stuck re-initializing this timer
237
+ // in a loop while draining the currently-held WorkSerializer.
238
+ // Also see https://github.com/grpc/grpc/issues/26079.
239
+ ExecCtx::Get()->InvalidateNow();
232
240
  const grpc_millis earliest_next_resolution =
233
241
  last_resolution_timestamp_ + min_time_between_resolutions_;
234
242
  const grpc_millis ms_until_next_resolution =
@@ -30,11 +30,11 @@
30
30
 
31
31
  #include "src/core/ext/filters/client_channel/resolver_registry.h"
32
32
  #include "src/core/ext/filters/client_channel/server_address.h"
33
+ #include "src/core/lib/address_utils/parse_address.h"
33
34
  #include "src/core/lib/channel/channel_args.h"
34
35
  #include "src/core/lib/gpr/string.h"
35
36
  #include "src/core/lib/gpr/useful.h"
36
37
  #include "src/core/lib/iomgr/closure.h"
37
- #include "src/core/lib/iomgr/parse_address.h"
38
38
  #include "src/core/lib/iomgr/resolve_address.h"
39
39
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
40
40
  #include "src/core/lib/iomgr/work_serializer.h"
@@ -313,48 +313,40 @@ void FakeResolverResponseGenerator::SetFakeResolver(
313
313
 
314
314
  namespace {
315
315
 
316
- static void* response_generator_arg_copy(void* p) {
317
- FakeResolverResponseGenerator* generator =
318
- static_cast<FakeResolverResponseGenerator*>(p);
319
- // TODO(roth): We currently deal with this ref manually. Once the
320
- // new channel args code is converted to C++, find a way to track this ref
321
- // in a cleaner way.
322
- RefCountedPtr<FakeResolverResponseGenerator> copy = generator->Ref();
323
- copy.release();
316
+ void* ResponseGeneratorChannelArgCopy(void* p) {
317
+ auto* generator = static_cast<FakeResolverResponseGenerator*>(p);
318
+ generator->Ref().release();
324
319
  return p;
325
320
  }
326
321
 
327
- static void response_generator_arg_destroy(void* p) {
328
- FakeResolverResponseGenerator* generator =
329
- static_cast<FakeResolverResponseGenerator*>(p);
322
+ void ResponseGeneratorChannelArgDestroy(void* p) {
323
+ auto* generator = static_cast<FakeResolverResponseGenerator*>(p);
330
324
  generator->Unref();
331
325
  }
332
326
 
333
- static int response_generator_cmp(void* a, void* b) { return GPR_ICMP(a, b); }
334
-
335
- static const grpc_arg_pointer_vtable response_generator_arg_vtable = {
336
- response_generator_arg_copy, response_generator_arg_destroy,
337
- response_generator_cmp};
327
+ int ResponseGeneratorChannelArgCmp(void* a, void* b) { return GPR_ICMP(a, b); }
338
328
 
339
329
  } // namespace
340
330
 
331
+ const grpc_arg_pointer_vtable
332
+ FakeResolverResponseGenerator::kChannelArgPointerVtable = {
333
+ ResponseGeneratorChannelArgCopy, ResponseGeneratorChannelArgDestroy,
334
+ ResponseGeneratorChannelArgCmp};
335
+
341
336
  grpc_arg FakeResolverResponseGenerator::MakeChannelArg(
342
337
  FakeResolverResponseGenerator* generator) {
343
- grpc_arg arg;
344
- arg.type = GRPC_ARG_POINTER;
345
- arg.key = const_cast<char*>(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR);
346
- arg.value.pointer.p = generator;
347
- arg.value.pointer.vtable = &response_generator_arg_vtable;
348
- return arg;
338
+ return grpc_channel_arg_pointer_create(
339
+ const_cast<char*>(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR), generator,
340
+ &kChannelArgPointerVtable);
349
341
  }
350
342
 
351
343
  RefCountedPtr<FakeResolverResponseGenerator>
352
344
  FakeResolverResponseGenerator::GetFromArgs(const grpc_channel_args* args) {
353
- const grpc_arg* arg =
354
- grpc_channel_args_find(args, GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR);
355
- if (arg == nullptr || arg->type != GRPC_ARG_POINTER) return nullptr;
356
- return static_cast<FakeResolverResponseGenerator*>(arg->value.pointer.p)
357
- ->Ref();
345
+ auto* response_generator =
346
+ grpc_channel_args_find_pointer<FakeResolverResponseGenerator>(
347
+ args, GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR);
348
+ if (response_generator == nullptr) return nullptr;
349
+ return response_generator->Ref();
358
350
  }
359
351
 
360
352
  //
@@ -42,6 +42,8 @@ class FakeResolver;
42
42
  class FakeResolverResponseGenerator
43
43
  : public RefCounted<FakeResolverResponseGenerator> {
44
44
  public:
45
+ static const grpc_arg_pointer_vtable kChannelArgPointerVtable;
46
+
45
47
  FakeResolverResponseGenerator();
46
48
  ~FakeResolverResponseGenerator() override;
47
49
 
@@ -69,6 +71,7 @@ class FakeResolverResponseGenerator
69
71
  void SetFailureOnReresolution();
70
72
 
71
73
  // Returns a channel arg containing \a generator.
74
+ // TODO(roth): When we have time, make this a non-static method.
72
75
  static grpc_arg MakeChannelArg(FakeResolverResponseGenerator* generator);
73
76
 
74
77
  // Returns the response generator in \a args, or null if not found.
@@ -82,12 +85,11 @@ class FakeResolverResponseGenerator
82
85
 
83
86
  // Mutex protecting the members below.
84
87
  Mutex mu_;
85
- RefCountedPtr<FakeResolver> resolver_;
86
- Resolver::Result result_;
87
- bool has_result_ = false;
88
+ RefCountedPtr<FakeResolver> resolver_ ABSL_GUARDED_BY(mu_);
89
+ Resolver::Result result_ ABSL_GUARDED_BY(mu_);
90
+ bool has_result_ ABSL_GUARDED_BY(mu_) = false;
88
91
  };
89
92
 
90
93
  } // namespace grpc_core
91
94
 
92
- #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FAKE_FAKE_RESOLVER_H \
93
- */
95
+ #endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_FAKE_FAKE_RESOLVER_H
@@ -48,15 +48,15 @@ class GoogleCloud2ProdResolver : public Resolver {
48
48
  void Orphan() override;
49
49
 
50
50
  private:
51
- static void OnHttpRequestDone(void* arg, grpc_error* error);
51
+ static void OnHttpRequestDone(void* arg, grpc_error_handle error);
52
52
 
53
53
  // Calls OnDone() if not already called. Releases a ref.
54
- void MaybeCallOnDone(grpc_error* error);
54
+ void MaybeCallOnDone(grpc_error_handle error);
55
55
 
56
56
  // If error is not GRPC_ERROR_NONE, then it's not safe to look at response.
57
57
  virtual void OnDone(GoogleCloud2ProdResolver* resolver,
58
58
  const grpc_http_response* response,
59
- grpc_error* error) = 0;
59
+ grpc_error_handle error) = 0;
60
60
 
61
61
  RefCountedPtr<GoogleCloud2ProdResolver> resolver_;
62
62
  grpc_httpcli_context context_;
@@ -73,7 +73,8 @@ class GoogleCloud2ProdResolver : public Resolver {
73
73
 
74
74
  private:
75
75
  void OnDone(GoogleCloud2ProdResolver* resolver,
76
- const grpc_http_response* response, grpc_error* error) override;
76
+ const grpc_http_response* response,
77
+ grpc_error_handle error) override;
77
78
  };
78
79
 
79
80
  // A metadata server query to get the IPv6 address.
@@ -84,7 +85,8 @@ class GoogleCloud2ProdResolver : public Resolver {
84
85
 
85
86
  private:
86
87
  void OnDone(GoogleCloud2ProdResolver* resolver,
87
- const grpc_http_response* response, grpc_error* error) override;
88
+ const grpc_http_response* response,
89
+ grpc_error_handle error) override;
88
90
  };
89
91
 
90
92
  void ZoneQueryDone(std::string zone);
@@ -143,13 +145,13 @@ void GoogleCloud2ProdResolver::MetadataQuery::Orphan() {
143
145
  }
144
146
 
145
147
  void GoogleCloud2ProdResolver::MetadataQuery::OnHttpRequestDone(
146
- void* arg, grpc_error* error) {
148
+ void* arg, grpc_error_handle error) {
147
149
  auto* self = static_cast<MetadataQuery*>(arg);
148
150
  self->MaybeCallOnDone(GRPC_ERROR_REF(error));
149
151
  }
150
152
 
151
153
  void GoogleCloud2ProdResolver::MetadataQuery::MaybeCallOnDone(
152
- grpc_error* error) {
154
+ grpc_error_handle error) {
153
155
  bool expected = false;
154
156
  if (!on_done_called_.CompareExchangeStrong(
155
157
  &expected, true, MemoryOrder::RELAXED, MemoryOrder::RELAXED)) {
@@ -180,10 +182,10 @@ GoogleCloud2ProdResolver::ZoneQuery::ZoneQuery(
180
182
 
181
183
  void GoogleCloud2ProdResolver::ZoneQuery::OnDone(
182
184
  GoogleCloud2ProdResolver* resolver, const grpc_http_response* response,
183
- grpc_error* error) {
185
+ grpc_error_handle error) {
184
186
  if (error != GRPC_ERROR_NONE) {
185
187
  gpr_log(GPR_ERROR, "error fetching zone from metadata server: %s",
186
- grpc_error_string(error));
188
+ grpc_error_std_string(error).c_str());
187
189
  }
188
190
  std::string zone;
189
191
  if (error == GRPC_ERROR_NONE && response->status == 200) {
@@ -213,10 +215,10 @@ GoogleCloud2ProdResolver::IPv6Query::IPv6Query(
213
215
 
214
216
  void GoogleCloud2ProdResolver::IPv6Query::OnDone(
215
217
  GoogleCloud2ProdResolver* resolver, const grpc_http_response* response,
216
- grpc_error* error) {
218
+ grpc_error_handle error) {
217
219
  if (error != GRPC_ERROR_NONE) {
218
220
  gpr_log(GPR_ERROR, "error fetching IPv6 address from metadata server: %s",
219
- grpc_error_string(error));
221
+ grpc_error_std_string(error).c_str());
220
222
  }
221
223
  resolver->IPv6QueryDone(error == GRPC_ERROR_NONE && response->status == 200);
222
224
  GRPC_ERROR_UNREF(error);
@@ -30,9 +30,9 @@
30
30
 
31
31
  #include "src/core/ext/filters/client_channel/resolver_registry.h"
32
32
  #include "src/core/ext/filters/client_channel/server_address.h"
33
+ #include "src/core/lib/address_utils/parse_address.h"
33
34
  #include "src/core/lib/channel/channel_args.h"
34
35
  #include "src/core/lib/gpr/string.h"
35
- #include "src/core/lib/iomgr/parse_address.h"
36
36
  #include "src/core/lib/iomgr/resolve_address.h"
37
37
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
38
38
  #include "src/core/lib/slice/slice_internal.h"
@@ -28,6 +28,7 @@
28
28
  #include "src/core/ext/filters/client_channel/config_selector.h"
29
29
  #include "src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h"
30
30
  #include "src/core/ext/filters/client_channel/resolver_registry.h"
31
+ #include "src/core/ext/xds/xds_channel_args.h"
31
32
  #include "src/core/ext/xds/xds_client.h"
32
33
  #include "src/core/ext/xds/xds_http_filters.h"
33
34
  #include "src/core/lib/channel/channel_args.h"
@@ -73,19 +74,23 @@ class XdsResolver : public Resolver {
73
74
 
74
75
  void ShutdownLocked() override;
75
76
 
77
+ void ResetBackoffLocked() override {
78
+ if (xds_client_ != nullptr) xds_client_->ResetBackoff();
79
+ }
80
+
76
81
  private:
77
82
  class Notifier {
78
83
  public:
79
84
  Notifier(RefCountedPtr<XdsResolver> resolver, XdsApi::LdsUpdate update);
80
85
  Notifier(RefCountedPtr<XdsResolver> resolver, XdsApi::RdsUpdate update);
81
- Notifier(RefCountedPtr<XdsResolver> resolver, grpc_error* error);
86
+ Notifier(RefCountedPtr<XdsResolver> resolver, grpc_error_handle error);
82
87
  explicit Notifier(RefCountedPtr<XdsResolver> resolver);
83
88
 
84
89
  private:
85
90
  enum Type { kLdsUpdate, kRdsUpdate, kError, kDoesNotExist };
86
91
 
87
- static void RunInExecCtx(void* arg, grpc_error* error);
88
- void RunInWorkSerializer(grpc_error* error);
92
+ static void RunInExecCtx(void* arg, grpc_error_handle error);
93
+ void RunInWorkSerializer(grpc_error_handle error);
89
94
 
90
95
  RefCountedPtr<XdsResolver> resolver_;
91
96
  grpc_closure closure_;
@@ -100,7 +105,9 @@ class XdsResolver : public Resolver {
100
105
  void OnListenerChanged(XdsApi::LdsUpdate listener) override {
101
106
  new Notifier(resolver_, std::move(listener));
102
107
  }
103
- void OnError(grpc_error* error) override { new Notifier(resolver_, error); }
108
+ void OnError(grpc_error_handle error) override {
109
+ new Notifier(resolver_, error);
110
+ }
104
111
  void OnResourceDoesNotExist() override { new Notifier(resolver_); }
105
112
 
106
113
  private:
@@ -114,7 +121,9 @@ class XdsResolver : public Resolver {
114
121
  void OnRouteConfigChanged(XdsApi::RdsUpdate route_config) override {
115
122
  new Notifier(resolver_, std::move(route_config));
116
123
  }
117
- void OnError(grpc_error* error) override { new Notifier(resolver_, error); }
124
+ void OnError(grpc_error_handle error) override {
125
+ new Notifier(resolver_, error);
126
+ }
118
127
  void OnResourceDoesNotExist() override { new Notifier(resolver_); }
119
128
 
120
129
  private:
@@ -122,7 +131,7 @@ class XdsResolver : public Resolver {
122
131
  };
123
132
 
124
133
  class ClusterState
125
- : public RefCounted<ClusterState, PolymorphicRefCount, false> {
134
+ : public RefCounted<ClusterState, PolymorphicRefCount, kUnrefNoDelete> {
126
135
  public:
127
136
  using ClusterStateMap =
128
137
  std::map<std::string, std::unique_ptr<ClusterState>>;
@@ -140,7 +149,8 @@ class XdsResolver : public Resolver {
140
149
 
141
150
  class XdsConfigSelector : public ConfigSelector {
142
151
  public:
143
- XdsConfigSelector(RefCountedPtr<XdsResolver> resolver, grpc_error** error);
152
+ XdsConfigSelector(RefCountedPtr<XdsResolver> resolver,
153
+ grpc_error_handle* error);
144
154
  ~XdsConfigSelector() override;
145
155
 
146
156
  const char* name() const override { return "XdsConfigSelector"; }
@@ -179,7 +189,7 @@ class XdsResolver : public Resolver {
179
189
  using RouteTable = std::vector<Route>;
180
190
 
181
191
  void MaybeAddCluster(const std::string& name);
182
- grpc_error* CreateMethodConfig(
192
+ grpc_error_handle CreateMethodConfig(
183
193
  const XdsApi::Route& route,
184
194
  const XdsApi::Route::ClusterWeight* cluster_weight,
185
195
  RefCountedPtr<ServiceConfig>* method_config);
@@ -188,15 +198,16 @@ class XdsResolver : public Resolver {
188
198
  RouteTable route_table_;
189
199
  std::map<absl::string_view, RefCountedPtr<ClusterState>> clusters_;
190
200
  std::vector<const grpc_channel_filter*> filters_;
191
- grpc_error* filter_error_ = GRPC_ERROR_NONE;
201
+ grpc_error_handle filter_error_ = GRPC_ERROR_NONE;
192
202
  };
193
203
 
194
204
  void OnListenerUpdate(XdsApi::LdsUpdate listener);
195
205
  void OnRouteConfigUpdate(XdsApi::RdsUpdate rds_update);
196
- void OnError(grpc_error* error);
206
+ void OnError(grpc_error_handle error);
197
207
  void OnResourceDoesNotExist();
198
208
 
199
- grpc_error* CreateServiceConfig(RefCountedPtr<ServiceConfig>* service_config);
209
+ grpc_error_handle CreateServiceConfig(
210
+ RefCountedPtr<ServiceConfig>* service_config);
200
211
  void GenerateResult();
201
212
  void MaybeRemoveUnusedClusters();
202
213
 
@@ -243,7 +254,7 @@ XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver,
243
254
  }
244
255
 
245
256
  XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver,
246
- grpc_error* error)
257
+ grpc_error_handle error)
247
258
  : resolver_(std::move(resolver)), type_(kError) {
248
259
  GRPC_CLOSURE_INIT(&closure_, &RunInExecCtx, this, nullptr);
249
260
  ExecCtx::Run(DEBUG_LOCATION, &closure_, error);
@@ -255,14 +266,14 @@ XdsResolver::Notifier::Notifier(RefCountedPtr<XdsResolver> resolver)
255
266
  ExecCtx::Run(DEBUG_LOCATION, &closure_, GRPC_ERROR_NONE);
256
267
  }
257
268
 
258
- void XdsResolver::Notifier::RunInExecCtx(void* arg, grpc_error* error) {
269
+ void XdsResolver::Notifier::RunInExecCtx(void* arg, grpc_error_handle error) {
259
270
  Notifier* self = static_cast<Notifier*>(arg);
260
271
  GRPC_ERROR_REF(error);
261
272
  self->resolver_->work_serializer_->Run(
262
273
  [self, error]() { self->RunInWorkSerializer(error); }, DEBUG_LOCATION);
263
274
  }
264
275
 
265
- void XdsResolver::Notifier::RunInWorkSerializer(grpc_error* error) {
276
+ void XdsResolver::Notifier::RunInWorkSerializer(grpc_error_handle error) {
266
277
  if (resolver_->xds_client_ == nullptr) {
267
278
  GRPC_ERROR_UNREF(error);
268
279
  delete this;
@@ -314,7 +325,7 @@ bool XdsResolver::XdsConfigSelector::Route::operator==(
314
325
  //
315
326
 
316
327
  XdsResolver::XdsConfigSelector::XdsConfigSelector(
317
- RefCountedPtr<XdsResolver> resolver, grpc_error** error)
328
+ RefCountedPtr<XdsResolver> resolver, grpc_error_handle* error)
318
329
  : resolver_(std::move(resolver)) {
319
330
  if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
320
331
  gpr_log(GPR_INFO, "[xds_resolver %p] creating XdsConfigSelector %p",
@@ -425,7 +436,7 @@ const XdsHttpFilterImpl::FilterConfig* FindFilterConfigOverride(
425
436
  return nullptr;
426
437
  }
427
438
 
428
- grpc_error* XdsResolver::XdsConfigSelector::CreateMethodConfig(
439
+ grpc_error_handle XdsResolver::XdsConfigSelector::CreateMethodConfig(
429
440
  const XdsApi::Route& route,
430
441
  const XdsApi::Route::ClusterWeight* cluster_weight,
431
442
  RefCountedPtr<ServiceConfig>* method_config) {
@@ -482,7 +493,7 @@ grpc_error* XdsResolver::XdsConfigSelector::CreateMethodConfig(
482
493
  "\n ]"));
483
494
  }
484
495
  // Construct service config.
485
- grpc_error* error = GRPC_ERROR_NONE;
496
+ grpc_error_handle error = GRPC_ERROR_NONE;
486
497
  if (!fields.empty()) {
487
498
  std::string json = absl::StrCat(
488
499
  "{\n"
@@ -684,7 +695,7 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
684
695
  // the data plane mutex.
685
696
  DEBUG_LOCATION,
686
697
  GRPC_CLOSURE_CREATE(
687
- [](void* arg, grpc_error* /*error*/) {
698
+ [](void* arg, grpc_error_handle /*error*/) {
688
699
  auto* resolver = static_cast<XdsResolver*>(arg);
689
700
  resolver->work_serializer_->Run(
690
701
  [resolver]() {
@@ -706,13 +717,13 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
706
717
  //
707
718
 
708
719
  void XdsResolver::StartLocked() {
709
- grpc_error* error = GRPC_ERROR_NONE;
710
- xds_client_ = XdsClient::GetOrCreate(&error);
720
+ grpc_error_handle error = GRPC_ERROR_NONE;
721
+ xds_client_ = XdsClient::GetOrCreate(args_, &error);
711
722
  if (error != GRPC_ERROR_NONE) {
712
723
  gpr_log(GPR_ERROR,
713
724
  "Failed to create xds client -- channel will remain in "
714
725
  "TRANSIENT_FAILURE: %s",
715
- grpc_error_string(error));
726
+ grpc_error_std_string(error).c_str());
716
727
  result_handler_->ReturnError(error);
717
728
  return;
718
729
  }
@@ -809,9 +820,9 @@ void XdsResolver::OnRouteConfigUpdate(XdsApi::RdsUpdate rds_update) {
809
820
  GenerateResult();
810
821
  }
811
822
 
812
- void XdsResolver::OnError(grpc_error* error) {
823
+ void XdsResolver::OnError(grpc_error_handle error) {
813
824
  gpr_log(GPR_ERROR, "[xds_resolver %p] received error from XdsClient: %s",
814
- this, grpc_error_string(error));
825
+ this, grpc_error_std_string(error).c_str());
815
826
  Result result;
816
827
  result.args = grpc_channel_args_copy(args_);
817
828
  result.service_config_error = error;
@@ -832,7 +843,7 @@ void XdsResolver::OnResourceDoesNotExist() {
832
843
  result_handler_->ReturnResult(std::move(result));
833
844
  }
834
845
 
835
- grpc_error* XdsResolver::CreateServiceConfig(
846
+ grpc_error_handle XdsResolver::CreateServiceConfig(
836
847
  RefCountedPtr<ServiceConfig>* service_config) {
837
848
  std::vector<std::string> clusters;
838
849
  for (const auto& cluster : cluster_state_map_) {
@@ -859,7 +870,7 @@ grpc_error* XdsResolver::CreateServiceConfig(
859
870
  " ]\n"
860
871
  "}");
861
872
  std::string json = absl::StrJoin(config_parts, "");
862
- grpc_error* error = GRPC_ERROR_NONE;
873
+ grpc_error_handle error = GRPC_ERROR_NONE;
863
874
  *service_config = ServiceConfig::Create(args_, json.c_str(), &error);
864
875
  return error;
865
876
  }
@@ -868,7 +879,7 @@ void XdsResolver::GenerateResult() {
868
879
  if (current_virtual_host_.routes.empty()) return;
869
880
  // First create XdsConfigSelector, which may add new entries to the cluster
870
881
  // state map, and then CreateServiceConfig for LB policies.
871
- grpc_error* error = GRPC_ERROR_NONE;
882
+ grpc_error_handle error = GRPC_ERROR_NONE;
872
883
  auto config_selector = MakeRefCounted<XdsConfigSelector>(Ref(), &error);
873
884
  if (error != GRPC_ERROR_NONE) {
874
885
  OnError(error);
@@ -884,8 +895,12 @@ void XdsResolver::GenerateResult() {
884
895
  gpr_log(GPR_INFO, "[xds_resolver %p] generated service config: %s", this,
885
896
  result.service_config->json_string().c_str());
886
897
  }
887
- grpc_arg new_arg = config_selector->MakeChannelArg();
888
- result.args = grpc_channel_args_copy_and_add(args_, &new_arg, 1);
898
+ grpc_arg new_args[] = {
899
+ xds_client_->MakeChannelArg(),
900
+ config_selector->MakeChannelArg(),
901
+ };
902
+ result.args =
903
+ grpc_channel_args_copy_and_add(args_, new_args, GPR_ARRAY_SIZE(new_args));
889
904
  result_handler_->ReturnResult(std::move(result));
890
905
  }
891
906