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
@@ -113,7 +113,7 @@ LoadBalancingPolicy::PickResult LoadBalancingPolicy::QueuePicker::Pick(
113
113
  auto* parent = parent_->Ref().release(); // ref held by lambda.
114
114
  ExecCtx::Run(DEBUG_LOCATION,
115
115
  GRPC_CLOSURE_CREATE(
116
- [](void* arg, grpc_error* /*error*/) {
116
+ [](void* arg, grpc_error_handle /*error*/) {
117
117
  auto* parent = static_cast<LoadBalancingPolicy*>(arg);
118
118
  parent->work_serializer()->Run(
119
119
  [parent]() {
@@ -230,7 +230,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
230
230
  /// Error to be set when returning a failure.
231
231
  // TODO(roth): Replace this with something similar to grpc::Status,
232
232
  // so that we don't expose grpc_error to this API.
233
- grpc_error* error = GRPC_ERROR_NONE;
233
+ grpc_error_handle error = GRPC_ERROR_NONE;
234
234
 
235
235
  /// Used only if type is PICK_COMPLETE.
236
236
  /// Callback set by LB policy to be notified of trailing metadata.
@@ -243,7 +243,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
243
243
  // TODO(roth): The arguments to this callback should be moved into a
244
244
  // struct, so that we can later add new fields without breaking
245
245
  // existing implementations.
246
- std::function<void(grpc_error*, MetadataInterface*, CallState*)>
246
+ std::function<void(grpc_error_handle, MetadataInterface*, CallState*)>
247
247
  recv_trailing_metadata_ready;
248
248
  };
249
249
 
@@ -387,13 +387,13 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
387
387
  // A picker that returns PICK_TRANSIENT_FAILURE for all picks.
388
388
  class TransientFailurePicker : public SubchannelPicker {
389
389
  public:
390
- explicit TransientFailurePicker(grpc_error* error) : error_(error) {}
390
+ explicit TransientFailurePicker(grpc_error_handle error) : error_(error) {}
391
391
  ~TransientFailurePicker() override { GRPC_ERROR_UNREF(error_); }
392
392
 
393
393
  PickResult Pick(PickArgs args) override;
394
394
 
395
395
  private:
396
- grpc_error* error_;
396
+ grpc_error_handle error_;
397
397
  };
398
398
 
399
399
  protected:
@@ -30,8 +30,8 @@
30
30
  #include "src/core/lib/iomgr/error.h"
31
31
  #include "src/core/lib/profiling/timers.h"
32
32
 
33
- static grpc_error* clr_init_channel_elem(grpc_channel_element* /*elem*/,
34
- grpc_channel_element_args* /*args*/) {
33
+ static grpc_error_handle clr_init_channel_elem(
34
+ grpc_channel_element* /*elem*/, grpc_channel_element_args* /*args*/) {
35
35
  return GRPC_ERROR_NONE;
36
36
  }
37
37
 
@@ -54,7 +54,7 @@ struct call_data {
54
54
 
55
55
  } // namespace
56
56
 
57
- static void on_complete_for_send(void* arg, grpc_error* error) {
57
+ static void on_complete_for_send(void* arg, grpc_error_handle error) {
58
58
  call_data* calld = static_cast<call_data*>(arg);
59
59
  if (error == GRPC_ERROR_NONE) {
60
60
  calld->send_initial_metadata_succeeded = true;
@@ -63,7 +63,7 @@ static void on_complete_for_send(void* arg, grpc_error* error) {
63
63
  GRPC_ERROR_REF(error));
64
64
  }
65
65
 
66
- static void recv_initial_metadata_ready(void* arg, grpc_error* error) {
66
+ static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) {
67
67
  call_data* calld = static_cast<call_data*>(arg);
68
68
  if (error == GRPC_ERROR_NONE) {
69
69
  calld->recv_initial_metadata_succeeded = true;
@@ -73,8 +73,8 @@ static void recv_initial_metadata_ready(void* arg, grpc_error* error) {
73
73
  GRPC_ERROR_REF(error));
74
74
  }
75
75
 
76
- static grpc_error* clr_init_call_elem(grpc_call_element* elem,
77
- const grpc_call_element_args* args) {
76
+ static grpc_error_handle clr_init_call_elem(
77
+ grpc_call_element* elem, const grpc_call_element_args* args) {
78
78
  GPR_ASSERT(args->context != nullptr);
79
79
  new (elem->call_data) call_data();
80
80
  return GRPC_ERROR_NONE;
@@ -90,6 +90,8 @@
90
90
  #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
91
91
  #include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
92
92
  #include "src/core/ext/filters/client_channel/server_address.h"
93
+ #include "src/core/lib/address_utils/parse_address.h"
94
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
93
95
  #include "src/core/lib/backoff/backoff.h"
94
96
  #include "src/core/lib/channel/channel_args.h"
95
97
  #include "src/core/lib/channel/channel_stack.h"
@@ -98,9 +100,7 @@
98
100
  #include "src/core/lib/gprpp/memory.h"
99
101
  #include "src/core/lib/gprpp/orphanable.h"
100
102
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
101
- #include "src/core/lib/iomgr/parse_address.h"
102
103
  #include "src/core/lib/iomgr/sockaddr.h"
103
- #include "src/core/lib/iomgr/sockaddr_utils.h"
104
104
  #include "src/core/lib/iomgr/timer.h"
105
105
  #include "src/core/lib/slice/slice_internal.h"
106
106
  #include "src/core/lib/slice/slice_string_helpers.h"
@@ -186,17 +186,17 @@ class GrpcLb : public LoadBalancingPolicy {
186
186
  void ScheduleNextClientLoadReportLocked();
187
187
  void SendClientLoadReportLocked();
188
188
 
189
- static void MaybeSendClientLoadReport(void* arg, grpc_error* error);
190
- static void ClientLoadReportDone(void* arg, grpc_error* error);
191
- static void OnInitialRequestSent(void* arg, grpc_error* error);
192
- static void OnBalancerMessageReceived(void* arg, grpc_error* error);
193
- static void OnBalancerStatusReceived(void* arg, grpc_error* error);
189
+ static void MaybeSendClientLoadReport(void* arg, grpc_error_handle error);
190
+ static void ClientLoadReportDone(void* arg, grpc_error_handle error);
191
+ static void OnInitialRequestSent(void* arg, grpc_error_handle error);
192
+ static void OnBalancerMessageReceived(void* arg, grpc_error_handle error);
193
+ static void OnBalancerStatusReceived(void* arg, grpc_error_handle error);
194
194
 
195
- void MaybeSendClientLoadReportLocked(grpc_error* error);
196
- void ClientLoadReportDoneLocked(grpc_error* error);
195
+ void MaybeSendClientLoadReportLocked(grpc_error_handle error);
196
+ void ClientLoadReportDoneLocked(grpc_error_handle error);
197
197
  void OnInitialRequestSentLocked();
198
198
  void OnBalancerMessageReceivedLocked();
199
- void OnBalancerStatusReceivedLocked(grpc_error* error);
199
+ void OnBalancerStatusReceivedLocked(grpc_error_handle error);
200
200
 
201
201
  // The owning LB policy.
202
202
  RefCountedPtr<LoadBalancingPolicy> grpclb_policy_;
@@ -410,14 +410,14 @@ class GrpcLb : public LoadBalancingPolicy {
410
410
 
411
411
  // Methods for dealing with fallback state.
412
412
  void MaybeEnterFallbackModeAfterStartup();
413
- static void OnFallbackTimer(void* arg, grpc_error* error);
414
- void OnFallbackTimerLocked(grpc_error* error);
413
+ static void OnFallbackTimer(void* arg, grpc_error_handle error);
414
+ void OnFallbackTimerLocked(grpc_error_handle error);
415
415
 
416
416
  // Methods for dealing with the balancer call.
417
417
  void StartBalancerCallLocked();
418
418
  void StartBalancerCallRetryTimerLocked();
419
- static void OnBalancerCallRetryTimer(void* arg, grpc_error* error);
420
- void OnBalancerCallRetryTimerLocked(grpc_error* error);
419
+ static void OnBalancerCallRetryTimer(void* arg, grpc_error_handle error);
420
+ void OnBalancerCallRetryTimerLocked(grpc_error_handle error);
421
421
 
422
422
  // Methods for dealing with the child policy.
423
423
  grpc_channel_args* CreateChildPolicyArgsLocked(
@@ -893,6 +893,10 @@ void GrpcLb::BalancerCallState::StartQuery() {
893
893
  }
894
894
 
895
895
  void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
896
+ // InvalidateNow to avoid getting stuck re-initializing this timer
897
+ // in a loop while draining the currently-held WorkSerializer.
898
+ // Also see https://github.com/grpc/grpc/issues/26079.
899
+ ExecCtx::Get()->InvalidateNow();
896
900
  const grpc_millis next_client_load_report_time =
897
901
  ExecCtx::Get()->Now() + client_stats_report_interval_;
898
902
  GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
@@ -902,8 +906,8 @@ void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
902
906
  client_load_report_timer_callback_pending_ = true;
903
907
  }
904
908
 
905
- void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(void* arg,
906
- grpc_error* error) {
909
+ void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(
910
+ void* arg, grpc_error_handle error) {
907
911
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
908
912
  GRPC_ERROR_REF(error); // ref owned by lambda
909
913
  lb_calld->grpclb_policy()->work_serializer()->Run(
@@ -912,7 +916,7 @@ void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(void* arg,
912
916
  }
913
917
 
914
918
  void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked(
915
- grpc_error* error) {
919
+ grpc_error_handle error) {
916
920
  client_load_report_timer_callback_pending_ = false;
917
921
  if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
918
922
  Unref(DEBUG_LOCATION, "client_load_report");
@@ -982,7 +986,7 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
982
986
  }
983
987
 
984
988
  void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg,
985
- grpc_error* error) {
989
+ grpc_error_handle error) {
986
990
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
987
991
  GRPC_ERROR_REF(error); // ref owned by lambda
988
992
  lb_calld->grpclb_policy()->work_serializer()->Run(
@@ -990,7 +994,8 @@ void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg,
990
994
  DEBUG_LOCATION);
991
995
  }
992
996
 
993
- void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(grpc_error* error) {
997
+ void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(
998
+ grpc_error_handle error) {
994
999
  grpc_byte_buffer_destroy(send_message_payload_);
995
1000
  send_message_payload_ = nullptr;
996
1001
  if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
@@ -1001,8 +1006,8 @@ void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(grpc_error* error) {
1001
1006
  ScheduleNextClientLoadReportLocked();
1002
1007
  }
1003
1008
 
1004
- void GrpcLb::BalancerCallState::OnInitialRequestSent(void* arg,
1005
- grpc_error* /*error*/) {
1009
+ void GrpcLb::BalancerCallState::OnInitialRequestSent(
1010
+ void* arg, grpc_error_handle /*error*/) {
1006
1011
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1007
1012
  lb_calld->grpclb_policy()->work_serializer()->Run(
1008
1013
  [lb_calld]() { lb_calld->OnInitialRequestSentLocked(); }, DEBUG_LOCATION);
@@ -1021,7 +1026,7 @@ void GrpcLb::BalancerCallState::OnInitialRequestSentLocked() {
1021
1026
  }
1022
1027
 
1023
1028
  void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
1024
- void* arg, grpc_error* /*error*/) {
1029
+ void* arg, grpc_error_handle /*error*/) {
1025
1030
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1026
1031
  lb_calld->grpclb_policy()->work_serializer()->Run(
1027
1032
  [lb_calld]() { lb_calld->OnBalancerMessageReceivedLocked(); },
@@ -1183,8 +1188,8 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
1183
1188
  }
1184
1189
  }
1185
1190
 
1186
- void GrpcLb::BalancerCallState::OnBalancerStatusReceived(void* arg,
1187
- grpc_error* error) {
1191
+ void GrpcLb::BalancerCallState::OnBalancerStatusReceived(
1192
+ void* arg, grpc_error_handle error) {
1188
1193
  BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
1189
1194
  GRPC_ERROR_REF(error); // owned by lambda
1190
1195
  lb_calld->grpclb_policy()->work_serializer()->Run(
@@ -1193,7 +1198,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceived(void* arg,
1193
1198
  }
1194
1199
 
1195
1200
  void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
1196
- grpc_error* error) {
1201
+ grpc_error_handle error) {
1197
1202
  GPR_ASSERT(lb_call_ != nullptr);
1198
1203
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1199
1204
  char* status_details = grpc_slice_to_c_string(lb_call_status_details_);
@@ -1201,7 +1206,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
1201
1206
  "[grpclb %p] lb_calld=%p: Status from LB server received. "
1202
1207
  "Status = %d, details = '%s', (lb_call: %p), error '%s'",
1203
1208
  grpclb_policy(), this, lb_call_status_, status_details, lb_call_,
1204
- grpc_error_string(error));
1209
+ grpc_error_std_string(error).c_str());
1205
1210
  gpr_free(status_details);
1206
1211
  }
1207
1212
  GRPC_ERROR_UNREF(error);
@@ -1420,13 +1425,12 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
1420
1425
  // Start watching the channel's connectivity state. If the channel
1421
1426
  // goes into state TRANSIENT_FAILURE before the timer fires, we go into
1422
1427
  // fallback mode even if the fallback timeout has not elapsed.
1423
- grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(
1424
- grpc_channel_get_channel_stack(lb_channel_));
1425
- GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
1428
+ ClientChannel* client_channel = ClientChannel::GetFromChannel(lb_channel_);
1429
+ GPR_ASSERT(client_channel != nullptr);
1426
1430
  // Ref held by callback.
1427
1431
  watcher_ = new StateWatcher(Ref(DEBUG_LOCATION, "StateWatcher"));
1428
- grpc_client_channel_start_connectivity_watch(
1429
- client_channel_elem, GRPC_CHANNEL_IDLE,
1432
+ client_channel->AddConnectivityWatcher(
1433
+ GRPC_CHANNEL_IDLE,
1430
1434
  OrphanablePtr<AsyncConnectivityStateWatcherInterface>(watcher_));
1431
1435
  // Start balancer call.
1432
1436
  StartBalancerCallLocked();
@@ -1490,10 +1494,9 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
1490
1494
  }
1491
1495
 
1492
1496
  void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() {
1493
- grpc_channel_element* client_channel_elem = grpc_channel_stack_last_element(
1494
- grpc_channel_get_channel_stack(lb_channel_));
1495
- GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
1496
- grpc_client_channel_stop_connectivity_watch(client_channel_elem, watcher_);
1497
+ ClientChannel* client_channel = ClientChannel::GetFromChannel(lb_channel_);
1498
+ GPR_ASSERT(client_channel != nullptr);
1499
+ client_channel->RemoveConnectivityWatcher(watcher_);
1497
1500
  }
1498
1501
 
1499
1502
  //
@@ -1536,7 +1539,7 @@ void GrpcLb::StartBalancerCallRetryTimerLocked() {
1536
1539
  grpc_timer_init(&lb_call_retry_timer_, next_try, &lb_on_call_retry_);
1537
1540
  }
1538
1541
 
1539
- void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error* error) {
1542
+ void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error_handle error) {
1540
1543
  GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
1541
1544
  GRPC_ERROR_REF(error); // ref owned by lambda
1542
1545
  grpclb_policy->work_serializer()->Run(
@@ -1546,7 +1549,7 @@ void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error* error) {
1546
1549
  DEBUG_LOCATION);
1547
1550
  }
1548
1551
 
1549
- void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error* error) {
1552
+ void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error_handle error) {
1550
1553
  retry_timer_callback_pending_ = false;
1551
1554
  if (!shutting_down_ && error == GRPC_ERROR_NONE && lb_calld_ == nullptr) {
1552
1555
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
@@ -1580,7 +1583,7 @@ void GrpcLb::MaybeEnterFallbackModeAfterStartup() {
1580
1583
  }
1581
1584
  }
1582
1585
 
1583
- void GrpcLb::OnFallbackTimer(void* arg, grpc_error* error) {
1586
+ void GrpcLb::OnFallbackTimer(void* arg, grpc_error_handle error) {
1584
1587
  GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
1585
1588
  GRPC_ERROR_REF(error); // ref owned by lambda
1586
1589
  grpclb_policy->work_serializer()->Run(
@@ -1588,7 +1591,7 @@ void GrpcLb::OnFallbackTimer(void* arg, grpc_error* error) {
1588
1591
  DEBUG_LOCATION);
1589
1592
  }
1590
1593
 
1591
- void GrpcLb::OnFallbackTimerLocked(grpc_error* error) {
1594
+ void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
1592
1595
  // If we receive a serverlist after the timer fires but before this callback
1593
1596
  // actually runs, don't fall back.
1594
1597
  if (fallback_at_startup_checks_pending_ && !shutting_down_ &&
@@ -1692,12 +1695,12 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
1692
1695
  const char* name() const override { return kGrpclb; }
1693
1696
 
1694
1697
  RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
1695
- const Json& json, grpc_error** error) const override {
1698
+ const Json& json, grpc_error_handle* error) const override {
1696
1699
  GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
1697
1700
  if (json.type() == Json::Type::JSON_NULL) {
1698
1701
  return MakeRefCounted<GrpcLbConfig>(nullptr, "");
1699
1702
  }
1700
- std::vector<grpc_error*> error_list;
1703
+ std::vector<grpc_error_handle> error_list;
1701
1704
  Json child_policy_config_json_tmp;
1702
1705
  const Json* child_policy_config_json;
1703
1706
  std::string service_name;
@@ -1720,12 +1723,12 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
1720
1723
  } else {
1721
1724
  child_policy_config_json = &it->second;
1722
1725
  }
1723
- grpc_error* parse_error = GRPC_ERROR_NONE;
1726
+ grpc_error_handle parse_error = GRPC_ERROR_NONE;
1724
1727
  RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config =
1725
1728
  LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
1726
1729
  *child_policy_config_json, &parse_error);
1727
1730
  if (parse_error != GRPC_ERROR_NONE) {
1728
- std::vector<grpc_error*> child_errors;
1731
+ std::vector<grpc_error_handle> child_errors;
1729
1732
  child_errors.push_back(parse_error);
1730
1733
  error_list.push_back(
1731
1734
  GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
@@ -31,9 +31,9 @@
31
31
  #include "src/core/ext/filters/client_channel/client_channel.h"
32
32
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
33
33
  #include "src/core/ext/filters/client_channel/server_address.h"
34
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
34
35
  #include "src/core/lib/channel/channel_args.h"
35
36
  #include "src/core/lib/gpr/string.h"
36
- #include "src/core/lib/iomgr/sockaddr_utils.h"
37
37
  #include "src/core/lib/security/credentials/credentials.h"
38
38
  #include "src/core/lib/slice/slice_internal.h"
39
39
 
@@ -66,7 +66,8 @@ class GrpcLbClientStats : public RefCounted<GrpcLbClientStats> {
66
66
  gpr_atm num_calls_finished_with_client_failed_to_send_ = 0;
67
67
  gpr_atm num_calls_finished_known_received_ = 0;
68
68
  Mutex drop_count_mu_; // Guards drop_token_counts_.
69
- std::unique_ptr<DroppedCallCounts> drop_token_counts_;
69
+ std::unique_ptr<DroppedCallCounts> drop_token_counts_
70
+ ABSL_GUARDED_BY(drop_count_mu_);
70
71
  };
71
72
 
72
73
  } // namespace grpc_core
@@ -26,9 +26,9 @@
26
26
  #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
27
27
  #include "src/core/ext/filters/client_channel/server_address.h"
28
28
  #include "src/core/ext/filters/client_channel/subchannel.h"
29
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
29
30
  #include "src/core/lib/channel/channel_args.h"
30
31
  #include "src/core/lib/gprpp/sync.h"
31
- #include "src/core/lib/iomgr/sockaddr_utils.h"
32
32
  #include "src/core/lib/transport/connectivity_state.h"
33
33
  #include "src/core/lib/transport/error_utils.h"
34
34
 
@@ -197,7 +197,7 @@ void PickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() {
197
197
  // (If we are idle, then this will happen in ExitIdleLocked() if we
198
198
  // haven't gotten a non-empty update by the time the application tries
199
199
  // to start a new call.)
200
- grpc_error* error =
200
+ grpc_error_handle error =
201
201
  grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty update"),
202
202
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
203
203
  channel_control_helper()->UpdateState(
@@ -314,7 +314,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
314
314
  p->subchannel_list_ = std::move(p->latest_pending_subchannel_list_);
315
315
  // Set our state to that of the pending subchannel list.
316
316
  if (p->subchannel_list_->in_transient_failure()) {
317
- grpc_error* error = grpc_error_set_int(
317
+ grpc_error_handle error = grpc_error_set_int(
318
318
  GRPC_ERROR_CREATE_FROM_STATIC_STRING(
319
319
  "selected subchannel failed; switching to pending update"),
320
320
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
@@ -393,7 +393,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
393
393
  subchannel_list()->set_in_transient_failure(true);
394
394
  // Only report new state in case 1.
395
395
  if (subchannel_list() == p->subchannel_list_.get()) {
396
- grpc_error* error = grpc_error_set_int(
396
+ grpc_error_handle error = grpc_error_set_int(
397
397
  GRPC_ERROR_CREATE_FROM_STATIC_STRING(
398
398
  "failed to connect to all addresses"),
399
399
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
@@ -497,7 +497,7 @@ class PickFirstFactory : public LoadBalancingPolicyFactory {
497
497
  const char* name() const override { return kPickFirst; }
498
498
 
499
499
  RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
500
- const Json& /*json*/, grpc_error** /*error*/) const override {
500
+ const Json& /*json*/, grpc_error_handle* /*error*/) const override {
501
501
  return MakeRefCounted<PickFirstConfig>();
502
502
  }
503
503
  };
@@ -179,10 +179,10 @@ class PriorityLb : public LoadBalancingPolicy {
179
179
 
180
180
  void StartFailoverTimerLocked();
181
181
 
182
- static void OnFailoverTimer(void* arg, grpc_error* error);
183
- void OnFailoverTimerLocked(grpc_error* error);
184
- static void OnDeactivationTimer(void* arg, grpc_error* error);
185
- void OnDeactivationTimerLocked(grpc_error* error);
182
+ static void OnFailoverTimer(void* arg, grpc_error_handle error);
183
+ void OnFailoverTimerLocked(grpc_error_handle error);
184
+ static void OnDeactivationTimer(void* arg, grpc_error_handle error);
185
+ void OnDeactivationTimerLocked(grpc_error_handle error);
186
186
 
187
187
  RefCountedPtr<PriorityLb> priority_policy_;
188
188
  const std::string name_;
@@ -472,7 +472,7 @@ void PriorityLb::TryNextPriorityLocked(bool report_connecting) {
472
472
  this);
473
473
  }
474
474
  current_child_from_before_update_ = nullptr;
475
- grpc_error* error = grpc_error_set_int(
475
+ grpc_error_handle error = grpc_error_set_int(
476
476
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("no ready priority"),
477
477
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
478
478
  channel_control_helper()->UpdateState(
@@ -655,14 +655,15 @@ void PriorityLb::ChildPriority::MaybeCancelFailoverTimerLocked() {
655
655
  }
656
656
  }
657
657
 
658
- void PriorityLb::ChildPriority::OnFailoverTimer(void* arg, grpc_error* error) {
658
+ void PriorityLb::ChildPriority::OnFailoverTimer(void* arg,
659
+ grpc_error_handle error) {
659
660
  ChildPriority* self = static_cast<ChildPriority*>(arg);
660
661
  GRPC_ERROR_REF(error); // ref owned by lambda
661
662
  self->priority_policy_->work_serializer()->Run(
662
663
  [self, error]() { self->OnFailoverTimerLocked(error); }, DEBUG_LOCATION);
663
664
  }
664
665
 
665
- void PriorityLb::ChildPriority::OnFailoverTimerLocked(grpc_error* error) {
666
+ void PriorityLb::ChildPriority::OnFailoverTimerLocked(grpc_error_handle error) {
666
667
  if (error == GRPC_ERROR_NONE && failover_timer_callback_pending_ &&
667
668
  !priority_policy_->shutting_down_) {
668
669
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
@@ -712,7 +713,7 @@ void PriorityLb::ChildPriority::MaybeReactivateLocked() {
712
713
  }
713
714
 
714
715
  void PriorityLb::ChildPriority::OnDeactivationTimer(void* arg,
715
- grpc_error* error) {
716
+ grpc_error_handle error) {
716
717
  ChildPriority* self = static_cast<ChildPriority*>(arg);
717
718
  GRPC_ERROR_REF(error); // ref owned by lambda
718
719
  self->priority_policy_->work_serializer()->Run(
@@ -720,7 +721,8 @@ void PriorityLb::ChildPriority::OnDeactivationTimer(void* arg,
720
721
  DEBUG_LOCATION);
721
722
  }
722
723
 
723
- void PriorityLb::ChildPriority::OnDeactivationTimerLocked(grpc_error* error) {
724
+ void PriorityLb::ChildPriority::OnDeactivationTimerLocked(
725
+ grpc_error_handle error) {
724
726
  if (error == GRPC_ERROR_NONE && deactivation_timer_callback_pending_ &&
725
727
  !priority_policy_->shutting_down_) {
726
728
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
@@ -785,7 +787,7 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory {
785
787
  const char* name() const override { return kPriority; }
786
788
 
787
789
  RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
788
- const Json& json, grpc_error** error) const override {
790
+ const Json& json, grpc_error_handle* error) const override {
789
791
  GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
790
792
  if (json.type() == Json::Type::JSON_NULL) {
791
793
  // priority was mentioned as a policy in the deprecated
@@ -796,7 +798,7 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory {
796
798
  "config instead.");
797
799
  return nullptr;
798
800
  }
799
- std::vector<grpc_error*> error_list;
801
+ std::vector<grpc_error_handle> error_list;
800
802
  // Children.
801
803
  std::map<std::string, PriorityLbConfig::PriorityLbChild> children;
802
804
  auto it = json.object_value().find("children");
@@ -824,7 +826,7 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory {
824
826
  " error:missing 'config' field")
825
827
  .c_str()));
826
828
  } else {
827
- grpc_error* parse_error = GRPC_ERROR_NONE;
829
+ grpc_error_handle parse_error = GRPC_ERROR_NONE;
828
830
  auto config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
829
831
  it2->second, &parse_error);
830
832
  bool ignore_resolution_requests = false;