grpc 1.50.0 → 1.51.0

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

Potentially problematic release.


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

Files changed (459) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +131 -42
  3. data/include/grpc/event_engine/event_engine.h +10 -3
  4. data/include/grpc/event_engine/slice_buffer.h +17 -0
  5. data/include/grpc/grpc.h +0 -10
  6. data/include/grpc/impl/codegen/grpc_types.h +1 -5
  7. data/include/grpc/impl/codegen/port_platform.h +0 -3
  8. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
  9. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
  10. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  11. data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
  12. data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
  13. data/src/core/ext/filters/client_channel/client_channel.h +3 -4
  14. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
  15. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  16. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  17. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
  18. data/src/core/ext/filters/client_channel/connector.h +1 -1
  19. data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
  20. data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
  21. data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
  22. data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
  24. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
  29. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
  30. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
  32. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
  34. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
  35. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
  36. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
  37. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  46. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
  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/native/dns_resolver.cc +2 -4
  53. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
  54. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
  55. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
  56. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
  57. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
  58. data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
  59. data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
  60. data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
  61. data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
  62. data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
  63. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
  64. data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
  65. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  66. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
  67. data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
  68. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
  70. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  71. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
  72. data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
  73. data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
  74. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
  75. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
  76. data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
  77. data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
  78. data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
  79. data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
  80. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
  81. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
  82. data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
  83. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
  84. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
  85. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
  86. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
  87. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
  89. data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
  90. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
  91. data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
  92. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  93. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
  94. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
  95. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
  96. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
  97. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
  98. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
  99. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
  100. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
  102. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
  103. data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
  104. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
  105. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
  106. data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
  107. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
  108. data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
  109. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  110. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
  111. data/src/core/ext/xds/xds_api.cc +15 -68
  112. data/src/core/ext/xds/xds_api.h +3 -7
  113. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  114. data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
  115. data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
  116. data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
  117. data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
  118. data/src/core/ext/xds/xds_client.cc +122 -90
  119. data/src/core/ext/xds/xds_client.h +7 -2
  120. data/src/core/ext/xds/xds_client_grpc.cc +5 -24
  121. data/src/core/ext/xds/xds_cluster.cc +291 -183
  122. data/src/core/ext/xds/xds_cluster.h +11 -15
  123. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
  124. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
  125. data/src/core/ext/xds/xds_common_types.cc +208 -141
  126. data/src/core/ext/xds/xds_common_types.h +19 -13
  127. data/src/core/ext/xds/xds_endpoint.cc +214 -129
  128. data/src/core/ext/xds/xds_endpoint.h +4 -7
  129. data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
  130. data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
  131. data/src/core/ext/xds/xds_http_filters.cc +60 -73
  132. data/src/core/ext/xds/xds_http_filters.h +67 -19
  133. data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
  134. data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
  135. data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
  136. data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
  137. data/src/core/ext/xds/xds_listener.cc +459 -417
  138. data/src/core/ext/xds/xds_listener.h +43 -47
  139. data/src/core/ext/xds/xds_resource_type.h +3 -11
  140. data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
  141. data/src/core/ext/xds/xds_route_config.cc +94 -80
  142. data/src/core/ext/xds/xds_route_config.h +10 -10
  143. data/src/core/ext/xds/xds_routing.cc +2 -1
  144. data/src/core/ext/xds/xds_routing.h +2 -0
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
  146. data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
  147. data/src/core/lib/address_utils/parse_address.cc +11 -10
  148. data/src/core/lib/channel/channel_args.h +16 -1
  149. data/src/core/lib/channel/channel_stack.cc +23 -20
  150. data/src/core/lib/channel/channel_stack.h +17 -4
  151. data/src/core/lib/channel/channel_stack_builder.cc +4 -7
  152. data/src/core/lib/channel/channel_stack_builder.h +14 -6
  153. data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
  154. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
  155. data/src/core/lib/channel/channel_trace.cc +4 -5
  156. data/src/core/lib/channel/channelz.cc +1 -1
  157. data/src/core/lib/channel/connected_channel.cc +695 -35
  158. data/src/core/lib/channel/connected_channel.h +0 -4
  159. data/src/core/lib/channel/promise_based_filter.cc +1004 -140
  160. data/src/core/lib/channel/promise_based_filter.h +364 -87
  161. data/src/core/lib/compression/message_compress.cc +5 -5
  162. data/src/core/lib/debug/event_log.cc +88 -0
  163. data/src/core/lib/debug/event_log.h +81 -0
  164. data/src/core/lib/debug/histogram_view.cc +69 -0
  165. data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
  166. data/src/core/lib/debug/stats.cc +22 -119
  167. data/src/core/lib/debug/stats.h +29 -35
  168. data/src/core/lib/debug/stats_data.cc +224 -73
  169. data/src/core/lib/debug/stats_data.h +263 -122
  170. data/src/core/lib/event_engine/common_closures.h +71 -0
  171. data/src/core/lib/event_engine/default_event_engine.cc +38 -15
  172. data/src/core/lib/event_engine/default_event_engine.h +15 -3
  173. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
  174. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  175. data/src/core/lib/event_engine/poller.h +10 -4
  176. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
  177. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  178. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
  179. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  180. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  181. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  182. data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
  183. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  184. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  185. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
  186. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  187. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
  188. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
  189. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
  190. data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
  191. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  192. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
  193. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
  194. data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
  195. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
  196. data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
  197. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
  198. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
  199. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
  200. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  201. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
  202. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  203. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  204. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  205. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  206. data/src/core/lib/event_engine/slice.cc +7 -6
  207. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  208. data/src/core/lib/event_engine/thread_pool.cc +106 -25
  209. data/src/core/lib/event_engine/thread_pool.h +32 -9
  210. data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
  211. data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
  212. data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
  213. data/src/core/lib/experiments/config.cc +1 -1
  214. data/src/core/lib/experiments/experiments.cc +13 -2
  215. data/src/core/lib/experiments/experiments.h +8 -1
  216. data/src/core/lib/gpr/cpu_linux.cc +6 -2
  217. data/src/core/lib/gpr/log_linux.cc +3 -4
  218. data/src/core/lib/gpr/string.h +1 -1
  219. data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
  220. data/src/core/lib/gprpp/load_file.cc +75 -0
  221. data/src/core/lib/gprpp/load_file.h +33 -0
  222. data/src/core/lib/gprpp/per_cpu.h +46 -0
  223. data/src/core/lib/gprpp/stat_posix.cc +5 -4
  224. data/src/core/lib/gprpp/stat_windows.cc +3 -2
  225. data/src/core/lib/gprpp/status_helper.h +1 -3
  226. data/src/core/lib/gprpp/strerror.cc +41 -0
  227. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
  228. data/src/core/lib/gprpp/thd_windows.cc +1 -2
  229. data/src/core/lib/gprpp/time.cc +3 -4
  230. data/src/core/lib/gprpp/time.h +13 -2
  231. data/src/core/lib/gprpp/validation_errors.h +18 -1
  232. data/src/core/lib/http/httpcli.cc +40 -44
  233. data/src/core/lib/http/httpcli.h +6 -5
  234. data/src/core/lib/http/httpcli_security_connector.cc +4 -6
  235. data/src/core/lib/http/parser.cc +54 -65
  236. data/src/core/lib/iomgr/buffer_list.cc +105 -116
  237. data/src/core/lib/iomgr/buffer_list.h +60 -44
  238. data/src/core/lib/iomgr/call_combiner.cc +11 -10
  239. data/src/core/lib/iomgr/call_combiner.h +3 -4
  240. data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
  241. data/src/core/lib/iomgr/closure.h +49 -5
  242. data/src/core/lib/iomgr/combiner.cc +2 -2
  243. data/src/core/lib/iomgr/endpoint.h +1 -1
  244. data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
  245. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
  246. data/src/core/lib/iomgr/error.cc +27 -42
  247. data/src/core/lib/iomgr/error.h +22 -152
  248. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  249. data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
  250. data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
  251. data/src/core/lib/iomgr/exec_ctx.cc +3 -4
  252. data/src/core/lib/iomgr/exec_ctx.h +2 -3
  253. data/src/core/lib/iomgr/executor.cc +1 -2
  254. data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
  255. data/src/core/lib/iomgr/iocp_windows.cc +1 -0
  256. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  257. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
  258. data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
  259. data/src/core/lib/iomgr/load_file.cc +5 -9
  260. data/src/core/lib/iomgr/lockfree_event.cc +10 -10
  261. data/src/core/lib/iomgr/pollset_windows.cc +4 -4
  262. data/src/core/lib/iomgr/python_util.h +2 -2
  263. data/src/core/lib/iomgr/resolve_address.cc +8 -3
  264. data/src/core/lib/iomgr/resolve_address.h +3 -4
  265. data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
  266. data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
  267. data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
  268. data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
  269. data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
  270. data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
  271. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
  272. data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
  273. data/src/core/lib/iomgr/socket_windows.cc +2 -2
  274. data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
  275. data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
  276. data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
  277. data/src/core/lib/iomgr/tcp_posix.cc +92 -108
  278. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
  279. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  280. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
  281. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
  282. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
  283. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
  284. data/src/core/lib/iomgr/tcp_windows.cc +27 -34
  285. data/src/core/lib/iomgr/timer.h +8 -8
  286. data/src/core/lib/iomgr/timer_generic.cc +9 -15
  287. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
  288. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
  289. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
  290. data/src/core/lib/json/json_channel_args.h +42 -0
  291. data/src/core/lib/json/json_object_loader.cc +7 -2
  292. data/src/core/lib/json/json_object_loader.h +22 -0
  293. data/src/core/lib/json/json_util.cc +5 -5
  294. data/src/core/lib/json/json_util.h +4 -4
  295. data/src/core/lib/load_balancing/lb_policy.cc +1 -1
  296. data/src/core/lib/load_balancing/lb_policy.h +4 -0
  297. data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
  298. data/src/core/lib/matchers/matchers.cc +3 -4
  299. data/src/core/lib/promise/activity.cc +16 -2
  300. data/src/core/lib/promise/activity.h +38 -15
  301. data/src/core/lib/promise/arena_promise.h +80 -51
  302. data/src/core/lib/promise/context.h +13 -6
  303. data/src/core/lib/promise/detail/basic_seq.h +9 -28
  304. data/src/core/lib/promise/detail/promise_factory.h +58 -10
  305. data/src/core/lib/promise/detail/status.h +28 -0
  306. data/src/core/lib/promise/detail/switch.h +1455 -0
  307. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
  308. data/src/core/lib/promise/for_each.h +129 -0
  309. data/src/core/lib/promise/loop.h +7 -5
  310. data/src/core/lib/promise/map_pipe.h +87 -0
  311. data/src/core/lib/promise/pipe.cc +19 -0
  312. data/src/core/lib/promise/pipe.h +505 -0
  313. data/src/core/lib/promise/poll.h +13 -0
  314. data/src/core/lib/promise/seq.h +3 -5
  315. data/src/core/lib/promise/sleep.cc +5 -4
  316. data/src/core/lib/promise/sleep.h +1 -2
  317. data/src/core/lib/promise/try_concurrently.h +341 -0
  318. data/src/core/lib/promise/try_seq.h +10 -13
  319. data/src/core/lib/resolver/server_address.cc +1 -0
  320. data/src/core/lib/resolver/server_address.h +1 -3
  321. data/src/core/lib/resource_quota/api.cc +0 -1
  322. data/src/core/lib/resource_quota/arena.cc +19 -0
  323. data/src/core/lib/resource_quota/arena.h +89 -0
  324. data/src/core/lib/resource_quota/memory_quota.cc +1 -0
  325. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
  326. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
  327. data/src/core/lib/security/authorization/matchers.cc +25 -22
  328. data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
  329. data/src/core/lib/security/context/security_context.h +10 -0
  330. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
  331. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  332. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
  333. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
  334. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
  335. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
  336. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
  337. data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
  339. data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
  340. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
  341. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
  342. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
  343. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
  344. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
  345. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
  346. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
  347. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
  348. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
  349. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
  350. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
  351. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
  352. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  353. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
  354. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
  355. data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
  356. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
  357. data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
  358. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
  359. data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
  360. data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
  361. data/src/core/lib/security/transport/security_handshaker.cc +53 -53
  362. data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
  363. data/src/core/lib/security/transport/tsi_error.cc +6 -3
  364. data/src/core/lib/security/util/json_util.cc +4 -5
  365. data/src/core/lib/service_config/service_config.h +1 -1
  366. data/src/core/lib/service_config/service_config_impl.cc +111 -158
  367. data/src/core/lib/service_config/service_config_impl.h +14 -17
  368. data/src/core/lib/service_config/service_config_parser.cc +14 -31
  369. data/src/core/lib/service_config/service_config_parser.h +14 -10
  370. data/src/core/lib/slice/b64.cc +2 -2
  371. data/src/core/lib/slice/slice.cc +7 -1
  372. data/src/core/lib/slice/slice.h +19 -6
  373. data/src/core/lib/slice/slice_buffer.cc +13 -14
  374. data/src/core/lib/slice/slice_internal.h +13 -21
  375. data/src/core/lib/slice/slice_refcount.h +34 -19
  376. data/src/core/lib/surface/byte_buffer.cc +3 -4
  377. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  378. data/src/core/lib/surface/call.cc +1366 -239
  379. data/src/core/lib/surface/call.h +44 -0
  380. data/src/core/lib/surface/call_details.cc +3 -3
  381. data/src/core/lib/surface/call_trace.cc +113 -0
  382. data/src/core/lib/surface/call_trace.h +30 -0
  383. data/src/core/lib/surface/channel.cc +44 -49
  384. data/src/core/lib/surface/channel.h +9 -1
  385. data/src/core/lib/surface/channel_ping.cc +1 -1
  386. data/src/core/lib/surface/channel_stack_type.cc +4 -0
  387. data/src/core/lib/surface/channel_stack_type.h +2 -0
  388. data/src/core/lib/surface/completion_queue.cc +38 -52
  389. data/src/core/lib/surface/init.cc +8 -39
  390. data/src/core/lib/surface/init_internally.h +8 -0
  391. data/src/core/lib/surface/lame_client.cc +10 -8
  392. data/src/core/lib/surface/server.cc +48 -70
  393. data/src/core/lib/surface/server.h +3 -4
  394. data/src/core/lib/surface/validate_metadata.cc +11 -12
  395. data/src/core/lib/surface/version.cc +2 -2
  396. data/src/core/lib/transport/connectivity_state.cc +2 -2
  397. data/src/core/lib/transport/error_utils.cc +34 -28
  398. data/src/core/lib/transport/error_utils.h +3 -3
  399. data/src/core/lib/transport/handshaker.cc +14 -14
  400. data/src/core/lib/transport/handshaker.h +1 -1
  401. data/src/core/lib/transport/handshaker_factory.h +26 -0
  402. data/src/core/lib/transport/handshaker_registry.cc +8 -2
  403. data/src/core/lib/transport/handshaker_registry.h +3 -4
  404. data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
  405. data/src/core/lib/transport/metadata_batch.h +17 -1
  406. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  407. data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
  408. data/src/core/lib/transport/transport.cc +63 -17
  409. data/src/core/lib/transport/transport.h +64 -68
  410. data/src/core/lib/transport/transport_impl.h +1 -1
  411. data/src/core/lib/transport/transport_op_string.cc +7 -6
  412. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
  413. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
  414. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
  415. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
  416. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  417. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
  418. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
  419. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  420. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
  421. data/src/core/tsi/fake_transport_security.cc +3 -3
  422. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
  423. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  424. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
  425. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
  426. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
  427. data/src/ruby/lib/grpc/version.rb +1 -1
  428. data/src/ruby/spec/channel_spec.rb +0 -43
  429. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  430. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  431. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  432. data/third_party/zlib/compress.c +3 -3
  433. data/third_party/zlib/crc32.c +21 -12
  434. data/third_party/zlib/deflate.c +112 -106
  435. data/third_party/zlib/deflate.h +2 -2
  436. data/third_party/zlib/gzlib.c +1 -1
  437. data/third_party/zlib/gzread.c +3 -5
  438. data/third_party/zlib/gzwrite.c +1 -1
  439. data/third_party/zlib/infback.c +10 -7
  440. data/third_party/zlib/inflate.c +5 -2
  441. data/third_party/zlib/inftrees.c +2 -2
  442. data/third_party/zlib/inftrees.h +1 -1
  443. data/third_party/zlib/trees.c +61 -62
  444. data/third_party/zlib/uncompr.c +2 -2
  445. data/third_party/zlib/zconf.h +16 -3
  446. data/third_party/zlib/zlib.h +10 -10
  447. data/third_party/zlib/zutil.c +9 -7
  448. data/third_party/zlib/zutil.h +1 -0
  449. metadata +55 -18
  450. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  451. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  452. data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
  453. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  454. data/src/core/lib/gpr/murmur_hash.h +0 -29
  455. data/src/core/lib/gpr/tls.h +0 -156
  456. data/src/core/lib/promise/call_push_pull.h +0 -148
  457. data/src/core/lib/slice/slice_api.cc +0 -39
  458. data/src/core/lib/slice/slice_buffer_api.cc +0 -35
  459. data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -25,7 +25,6 @@
25
25
  #include <utility>
26
26
  #include <vector>
27
27
 
28
- #include "absl/memory/memory.h"
29
28
  #include "absl/status/status.h"
30
29
  #include "absl/status/statusor.h"
31
30
  #include "absl/strings/str_cat.h"
@@ -46,7 +45,6 @@
46
45
  #include "src/core/lib/json/json.h"
47
46
  #include "src/core/lib/load_balancing/lb_policy.h"
48
47
  #include "src/core/lib/load_balancing/lb_policy_factory.h"
49
- #include "src/core/lib/load_balancing/lb_policy_registry.h"
50
48
  #include "src/core/lib/load_balancing/subchannel_interface.h"
51
49
  #include "src/core/lib/resolver/server_address.h"
52
50
  #include "src/core/lib/transport/connectivity_state.h"
@@ -241,14 +239,14 @@ void PickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() {
241
239
  : latest_update_args_.addresses.status();
242
240
  channel_control_helper()->UpdateState(
243
241
  GRPC_CHANNEL_TRANSIENT_FAILURE, status,
244
- absl::make_unique<TransientFailurePicker>(status));
242
+ std::make_unique<TransientFailurePicker>(status));
245
243
  channel_control_helper()->RequestReresolution();
246
244
  }
247
245
  // Otherwise, if this is the initial update, report CONNECTING.
248
246
  else if (subchannel_list_.get() == nullptr) {
249
247
  channel_control_helper()->UpdateState(
250
248
  GRPC_CHANNEL_CONNECTING, absl::Status(),
251
- absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
249
+ std::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
252
250
  }
253
251
  // If the new update is empty or we don't yet have a selected subchannel in
254
252
  // the current list, replace the current subchannel list immediately.
@@ -340,11 +338,11 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
340
338
  .ToString()));
341
339
  p->channel_control_helper()->UpdateState(
342
340
  GRPC_CHANNEL_TRANSIENT_FAILURE, status,
343
- absl::make_unique<TransientFailurePicker>(status));
341
+ std::make_unique<TransientFailurePicker>(status));
344
342
  } else {
345
343
  p->channel_control_helper()->UpdateState(
346
344
  GRPC_CHANNEL_CONNECTING, absl::Status(),
347
- absl::make_unique<QueuePicker>(
345
+ std::make_unique<QueuePicker>(
348
346
  p->Ref(DEBUG_LOCATION, "QueuePicker")));
349
347
  }
350
348
  return;
@@ -362,7 +360,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
362
360
  p->subchannel_list_.reset();
363
361
  p->channel_control_helper()->UpdateState(
364
362
  GRPC_CHANNEL_IDLE, absl::Status(),
365
- absl::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
363
+ std::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
366
364
  return;
367
365
  }
368
366
  // If we get here, there are two possible cases:
@@ -436,7 +434,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
436
434
  connectivity_status().ToString()));
437
435
  p->channel_control_helper()->UpdateState(
438
436
  GRPC_CHANNEL_TRANSIENT_FAILURE, status,
439
- absl::make_unique<TransientFailurePicker>(status));
437
+ std::make_unique<TransientFailurePicker>(status));
440
438
  }
441
439
  }
442
440
  // If the next subchannel is in IDLE, trigger a connection attempt.
@@ -462,7 +460,7 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
462
460
  !subchannel_list()->in_transient_failure()) {
463
461
  p->channel_control_helper()->UpdateState(
464
462
  GRPC_CHANNEL_CONNECTING, absl::Status(),
465
- absl::make_unique<QueuePicker>(
463
+ std::make_unique<QueuePicker>(
466
464
  p->Ref(DEBUG_LOCATION, "QueuePicker")));
467
465
  }
468
466
  break;
@@ -503,7 +501,7 @@ void PickFirst::PickFirstSubchannelData::ProcessUnselectedReadyLocked() {
503
501
  p->selected_ = this;
504
502
  p->channel_control_helper()->UpdateState(
505
503
  GRPC_CHANNEL_READY, absl::Status(),
506
- absl::make_unique<Picker>(subchannel()->Ref()));
504
+ std::make_unique<Picker>(subchannel()->Ref()));
507
505
  for (size_t i = 0; i < subchannel_list()->num_subchannels(); ++i) {
508
506
  if (i != Index()) {
509
507
  subchannel_list()->subchannel(i)->ShutdownLocked();
@@ -539,7 +537,7 @@ class PickFirstFactory : public LoadBalancingPolicyFactory {
539
537
 
540
538
  void RegisterPickFirstLbPolicy(CoreConfiguration::Builder* builder) {
541
539
  builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
542
- absl::make_unique<PickFirstFactory>());
540
+ std::make_unique<PickFirstFactory>());
543
541
  }
544
542
 
545
543
  } // namespace grpc_core
@@ -26,7 +26,6 @@
26
26
  #include <utility>
27
27
  #include <vector>
28
28
 
29
- #include "absl/memory/memory.h"
30
29
  #include "absl/status/status.h"
31
30
  #include "absl/status/statusor.h"
32
31
  #include "absl/strings/str_cat.h"
@@ -34,6 +33,7 @@
34
33
  #include "absl/strings/string_view.h"
35
34
  #include "absl/types/optional.h"
36
35
 
36
+ #include <grpc/event_engine/event_engine.h>
37
37
  #include <grpc/impl/codegen/connectivity_state.h>
38
38
  #include <grpc/impl/codegen/grpc_types.h>
39
39
  #include <grpc/support/log.h>
@@ -198,6 +198,7 @@ class PriorityLb : public LoadBalancingPolicy {
198
198
  std::unique_ptr<SubchannelPicker> picker) override;
199
199
  void RequestReresolution() override;
200
200
  absl::string_view GetAuthority() override;
201
+ grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
201
202
  void AddTraceEvent(TraceSeverity severity,
202
203
  absl::string_view message) override;
203
204
 
@@ -421,7 +422,7 @@ void PriorityLb::ChoosePriorityLocked() {
421
422
  absl::UnavailableError("priority policy has empty priority list");
422
423
  channel_control_helper()->UpdateState(
423
424
  GRPC_CHANNEL_TRANSIENT_FAILURE, status,
424
- absl::make_unique<TransientFailurePicker>(status));
425
+ std::make_unique<TransientFailurePicker>(status));
425
426
  return;
426
427
  }
427
428
  // Iterate through priorities, searching for one in READY or IDLE,
@@ -566,14 +567,13 @@ void PriorityLb::ChildPriority::DeactivationTimer::Orphan() {
566
567
  void PriorityLb::ChildPriority::DeactivationTimer::OnTimer(
567
568
  void* arg, grpc_error_handle error) {
568
569
  auto* self = static_cast<DeactivationTimer*>(arg);
569
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
570
570
  self->child_priority_->priority_policy_->work_serializer()->Run(
571
571
  [self, error]() { self->OnTimerLocked(error); }, DEBUG_LOCATION);
572
572
  }
573
573
 
574
574
  void PriorityLb::ChildPriority::DeactivationTimer::OnTimerLocked(
575
575
  grpc_error_handle error) {
576
- if (GRPC_ERROR_IS_NONE(error) && timer_pending_) {
576
+ if (error.ok() && timer_pending_) {
577
577
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
578
578
  gpr_log(GPR_INFO,
579
579
  "[priority_lb %p] child %s (%p): deactivation timer fired, "
@@ -585,7 +585,6 @@ void PriorityLb::ChildPriority::DeactivationTimer::OnTimerLocked(
585
585
  child_priority_->priority_policy_->DeleteChild(child_priority_.get());
586
586
  }
587
587
  Unref(DEBUG_LOCATION, "Timer");
588
- GRPC_ERROR_UNREF(error);
589
588
  }
590
589
 
591
590
  //
@@ -630,14 +629,13 @@ void PriorityLb::ChildPriority::FailoverTimer::Orphan() {
630
629
  void PriorityLb::ChildPriority::FailoverTimer::OnTimer(
631
630
  void* arg, grpc_error_handle error) {
632
631
  auto* self = static_cast<FailoverTimer*>(arg);
633
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
634
632
  self->child_priority_->priority_policy_->work_serializer()->Run(
635
633
  [self, error]() { self->OnTimerLocked(error); }, DEBUG_LOCATION);
636
634
  }
637
635
 
638
636
  void PriorityLb::ChildPriority::FailoverTimer::OnTimerLocked(
639
637
  grpc_error_handle error) {
640
- if (GRPC_ERROR_IS_NONE(error) && timer_pending_) {
638
+ if (error.ok() && timer_pending_) {
641
639
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
642
640
  gpr_log(GPR_INFO,
643
641
  "[priority_lb %p] child %s (%p): failover timer fired, "
@@ -652,7 +650,6 @@ void PriorityLb::ChildPriority::FailoverTimer::OnTimerLocked(
652
650
  nullptr);
653
651
  }
654
652
  Unref(DEBUG_LOCATION, "Timer");
655
- GRPC_ERROR_UNREF(error);
656
653
  }
657
654
 
658
655
  //
@@ -691,10 +688,10 @@ void PriorityLb::ChildPriority::Orphan() {
691
688
  std::unique_ptr<LoadBalancingPolicy::SubchannelPicker>
692
689
  PriorityLb::ChildPriority::GetPicker() {
693
690
  if (picker_wrapper_ == nullptr) {
694
- return absl::make_unique<QueuePicker>(
691
+ return std::make_unique<QueuePicker>(
695
692
  priority_policy_->Ref(DEBUG_LOCATION, "QueuePicker"));
696
693
  }
697
- return absl::make_unique<RefCountedPickerWrapper>(picker_wrapper_);
694
+ return std::make_unique<RefCountedPickerWrapper>(picker_wrapper_);
698
695
  }
699
696
 
700
697
  absl::Status PriorityLb::ChildPriority::UpdateLocked(
@@ -735,7 +732,7 @@ PriorityLb::ChildPriority::CreateChildPolicyLocked(const ChannelArgs& args) {
735
732
  lb_policy_args.work_serializer = priority_policy_->work_serializer();
736
733
  lb_policy_args.args = args;
737
734
  lb_policy_args.channel_control_helper =
738
- absl::make_unique<Helper>(this->Ref(DEBUG_LOCATION, "Helper"));
735
+ std::make_unique<Helper>(this->Ref(DEBUG_LOCATION, "Helper"));
739
736
  OrphanablePtr<LoadBalancingPolicy> lb_policy =
740
737
  MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
741
738
  &grpc_lb_priority_trace);
@@ -854,6 +851,12 @@ absl::string_view PriorityLb::ChildPriority::Helper::GetAuthority() {
854
851
  return priority_->priority_policy_->channel_control_helper()->GetAuthority();
855
852
  }
856
853
 
854
+ grpc_event_engine::experimental::EventEngine*
855
+ PriorityLb::ChildPriority::Helper::GetEventEngine() {
856
+ return priority_->priority_policy_->channel_control_helper()
857
+ ->GetEventEngine();
858
+ }
859
+
857
860
  void PriorityLb::ChildPriority::Helper::AddTraceEvent(
858
861
  TraceSeverity severity, absl::string_view message) {
859
862
  if (priority_->priority_policy_->shutting_down_) return;
@@ -948,7 +951,7 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory {
948
951
 
949
952
  void RegisterPriorityLbPolicy(CoreConfiguration::Builder* builder) {
950
953
  builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
951
- absl::make_unique<PriorityLbFactory>());
954
+ std::make_unique<PriorityLbFactory>());
952
955
  }
953
956
 
954
957
  } // namespace grpc_core
@@ -32,7 +32,6 @@
32
32
  #include "absl/base/attributes.h"
33
33
  #include "absl/base/thread_annotations.h"
34
34
  #include "absl/container/inlined_vector.h"
35
- #include "absl/memory/memory.h"
36
35
  #include "absl/status/status.h"
37
36
  #include "absl/status/statusor.h"
38
37
  #include "absl/strings/numbers.h"
@@ -64,7 +63,6 @@
64
63
  #include "src/core/lib/json/json.h"
65
64
  #include "src/core/lib/load_balancing/lb_policy.h"
66
65
  #include "src/core/lib/load_balancing/lb_policy_factory.h"
67
- #include "src/core/lib/load_balancing/lb_policy_registry.h"
68
66
  #include "src/core/lib/load_balancing/subchannel_interface.h"
69
67
  #include "src/core/lib/resolver/server_address.h"
70
68
  #include "src/core/lib/transport/connectivity_state.h"
@@ -83,8 +81,8 @@ UniqueTypeName RequestHashAttributeName() {
83
81
  const JsonLoaderInterface* RingHashConfig::JsonLoader(const JsonArgs&) {
84
82
  static const auto* loader =
85
83
  JsonObjectLoader<RingHashConfig>()
86
- .OptionalField("min_ring_size", &RingHashConfig::min_ring_size)
87
- .OptionalField("max_ring_size", &RingHashConfig::max_ring_size)
84
+ .OptionalField("minRingSize", &RingHashConfig::min_ring_size)
85
+ .OptionalField("maxRingSize", &RingHashConfig::max_ring_size)
88
86
  .Finish();
89
87
  return loader;
90
88
  }
@@ -92,14 +90,14 @@ const JsonLoaderInterface* RingHashConfig::JsonLoader(const JsonArgs&) {
92
90
  void RingHashConfig::JsonPostLoad(const Json&, const JsonArgs&,
93
91
  ValidationErrors* errors) {
94
92
  {
95
- ValidationErrors::ScopedField field(errors, ".min_ring_size");
93
+ ValidationErrors::ScopedField field(errors, ".minRingSize");
96
94
  if (!errors->FieldHasErrors() &&
97
95
  (min_ring_size == 0 || min_ring_size > 8388608)) {
98
96
  errors->AddError("must be in the range [1, 8388608]");
99
97
  }
100
98
  }
101
99
  {
102
- ValidationErrors::ScopedField field(errors, ".max_ring_size");
100
+ ValidationErrors::ScopedField field(errors, ".maxRingSize");
103
101
  if (!errors->FieldHasErrors() &&
104
102
  (max_ring_size == 0 || max_ring_size > 8388608)) {
105
103
  errors->AddError("must be in the range [1, 8388608]");
@@ -280,7 +278,7 @@ class RingHash : public LoadBalancingPolicy {
280
278
  void Orphan() override {
281
279
  // Hop into ExecCtx, so that we're not holding the data plane mutex
282
280
  // while we run control-plane code.
283
- ExecCtx::Run(DEBUG_LOCATION, &closure_, GRPC_ERROR_NONE);
281
+ ExecCtx::Run(DEBUG_LOCATION, &closure_, absl::OkStatus());
284
282
  }
285
283
 
286
284
  // Will be invoked inside of the WorkSerializer.
@@ -661,7 +659,7 @@ void RingHash::RingHashSubchannelList::UpdateRingHashConnectivityStateLocked(
661
659
  // Note that we use our own picker regardless of connectivity state.
662
660
  p->channel_control_helper()->UpdateState(
663
661
  state, status,
664
- absl::make_unique<Picker>(Ref(DEBUG_LOCATION, "RingHashPicker")));
662
+ std::make_unique<Picker>(Ref(DEBUG_LOCATION, "RingHashPicker")));
665
663
  // While the ring_hash policy is reporting TRANSIENT_FAILURE, it will
666
664
  // not be getting any pick requests from the priority policy.
667
665
  // However, because the ring_hash policy does not attempt to
@@ -848,7 +846,7 @@ absl::Status RingHash::UpdateLocked(UpdateArgs args) {
848
846
  : args.addresses.status();
849
847
  channel_control_helper()->UpdateState(
850
848
  GRPC_CHANNEL_TRANSIENT_FAILURE, status,
851
- absl::make_unique<TransientFailurePicker>(status));
849
+ std::make_unique<TransientFailurePicker>(status));
852
850
  return status;
853
851
  }
854
852
  // Otherwise, report IDLE.
@@ -885,7 +883,7 @@ class RingHashFactory : public LoadBalancingPolicyFactory {
885
883
 
886
884
  void RegisterRingHashLbPolicy(CoreConfiguration::Builder* builder) {
887
885
  builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
888
- absl::make_unique<RingHashFactory>());
886
+ std::make_unique<RingHashFactory>());
889
887
  }
890
888
 
891
889
  } // namespace grpc_core
@@ -40,7 +40,6 @@
40
40
 
41
41
  #include "absl/base/thread_annotations.h"
42
42
  #include "absl/hash/hash.h"
43
- #include "absl/memory/memory.h"
44
43
  #include "absl/status/status.h"
45
44
  #include "absl/status/statusor.h"
46
45
  #include "absl/strings/str_cat.h"
@@ -54,6 +53,7 @@
54
53
 
55
54
  #include <grpc/byte_buffer.h>
56
55
  #include <grpc/byte_buffer_reader.h>
56
+ #include <grpc/event_engine/event_engine.h>
57
57
  #include <grpc/grpc.h>
58
58
  #include <grpc/impl/codegen/connectivity_state.h>
59
59
  #include <grpc/impl/codegen/grpc_types.h>
@@ -73,6 +73,7 @@
73
73
  #include "src/core/lib/gprpp/dual_ref_counted.h"
74
74
  #include "src/core/lib/gprpp/orphanable.h"
75
75
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
76
+ #include "src/core/lib/gprpp/status_helper.h"
76
77
  #include "src/core/lib/gprpp/sync.h"
77
78
  #include "src/core/lib/gprpp/time.h"
78
79
  #include "src/core/lib/gprpp/validation_errors.h"
@@ -94,8 +95,8 @@
94
95
  #include "src/core/lib/security/credentials/credentials.h"
95
96
  #include "src/core/lib/security/credentials/fake/fake_credentials.h"
96
97
  #include "src/core/lib/service_config/service_config_impl.h"
98
+ #include "src/core/lib/slice/slice.h"
97
99
  #include "src/core/lib/slice/slice_internal.h"
98
- #include "src/core/lib/slice/slice_refcount.h"
99
100
  #include "src/core/lib/surface/call.h"
100
101
  #include "src/core/lib/surface/channel.h"
101
102
  #include "src/core/lib/transport/connectivity_state.h"
@@ -335,6 +336,7 @@ class RlsLb : public LoadBalancingPolicy {
335
336
  std::unique_ptr<SubchannelPicker> picker) override;
336
337
  void RequestReresolution() override;
337
338
  absl::string_view GetAuthority() override;
339
+ grpc_event_engine::experimental::EventEngine* GetEventEngine() override;
338
340
  void AddTraceEvent(TraceSeverity severity,
339
341
  absl::string_view message) override;
340
342
 
@@ -728,7 +730,7 @@ RlsLb::ChildPolicyWrapper::ChildPolicyWrapper(RefCountedPtr<RlsLb> lb_policy,
728
730
  : nullptr),
729
731
  lb_policy_(lb_policy),
730
732
  target_(std::move(target)),
731
- picker_(absl::make_unique<QueuePicker>(std::move(lb_policy))) {
733
+ picker_(std::make_unique<QueuePicker>(std::move(lb_policy))) {
732
734
  lb_policy_->child_policy_map_.emplace(target_, this);
733
735
  }
734
736
 
@@ -809,7 +811,7 @@ void RlsLb::ChildPolicyWrapper::StartUpdate() {
809
811
  config.status().ToString().c_str());
810
812
  }
811
813
  pending_config_.reset();
812
- picker_ = absl::make_unique<TransientFailurePicker>(
814
+ picker_ = std::make_unique<TransientFailurePicker>(
813
815
  absl::UnavailableError(config.status().message()));
814
816
  child_policy_.reset();
815
817
  } else {
@@ -825,7 +827,7 @@ absl::Status RlsLb::ChildPolicyWrapper::MaybeFinishUpdate() {
825
827
  if (child_policy_ == nullptr) {
826
828
  Args create_args;
827
829
  create_args.work_serializer = lb_policy_->work_serializer();
828
- create_args.channel_control_helper = absl::make_unique<ChildPolicyHelper>(
830
+ create_args.channel_control_helper = std::make_unique<ChildPolicyHelper>(
829
831
  WeakRef(DEBUG_LOCATION, "ChildPolicyHelper"));
830
832
  create_args.args = lb_policy_->channel_args_;
831
833
  child_policy_ = MakeOrphanable<ChildPolicyHandler>(std::move(create_args),
@@ -915,6 +917,11 @@ absl::string_view RlsLb::ChildPolicyWrapper::ChildPolicyHelper::GetAuthority() {
915
917
  return wrapper_->lb_policy_->channel_control_helper()->GetAuthority();
916
918
  }
917
919
 
920
+ grpc_event_engine::experimental::EventEngine*
921
+ RlsLb::ChildPolicyWrapper::ChildPolicyHelper::GetEventEngine() {
922
+ return wrapper_->lb_policy_->channel_control_helper()->GetEventEngine();
923
+ }
924
+
918
925
  void RlsLb::ChildPolicyWrapper::ChildPolicyHelper::AddTraceEvent(
919
926
  TraceSeverity severity, absl::string_view message) {
920
927
  if (wrapper_->is_shutdown_) return;
@@ -1156,7 +1163,7 @@ void RlsLb::Cache::Entry::BackoffTimer::OnBackoffTimer(
1156
1163
  //
1157
1164
 
1158
1165
  std::unique_ptr<BackOff> MakeCacheEntryBackoff() {
1159
- return absl::make_unique<BackOff>(
1166
+ return std::make_unique<BackOff>(
1160
1167
  BackOff::Options()
1161
1168
  .set_initial_backoff(kCacheBackoffInitial)
1162
1169
  .set_multiplier(kCacheBackoffMultiplier)
@@ -1417,15 +1424,14 @@ void RlsLb::Cache::Shutdown() {
1417
1424
 
1418
1425
  void RlsLb::Cache::OnCleanupTimer(void* arg, grpc_error_handle error) {
1419
1426
  Cache* cache = static_cast<Cache*>(arg);
1420
- (void)GRPC_ERROR_REF(error);
1421
1427
  cache->lb_policy_->work_serializer()->Run(
1422
1428
  [cache, error]() {
1423
1429
  RefCountedPtr<RlsLb> lb_policy(cache->lb_policy_);
1424
1430
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
1425
1431
  gpr_log(GPR_INFO, "[rlslb %p] cache cleanup timer fired (%s)",
1426
- cache->lb_policy_, grpc_error_std_string(error).c_str());
1432
+ cache->lb_policy_, StatusToString(error).c_str());
1427
1433
  }
1428
- if (error == GRPC_ERROR_CANCELLED) return;
1434
+ if (error == absl::CancelledError()) return;
1429
1435
  MutexLock lock(&lb_policy->mu_);
1430
1436
  if (lb_policy->is_shutdown_) return;
1431
1437
  for (auto it = cache->map_.begin(); it != cache->map_.end();) {
@@ -1683,7 +1689,7 @@ RlsLb::RlsRequest::RlsRequest(RefCountedPtr<RlsLb> lb_policy, RequestKey key,
1683
1689
  DEBUG_LOCATION,
1684
1690
  GRPC_CLOSURE_INIT(&call_start_cb_, StartCall,
1685
1691
  Ref(DEBUG_LOCATION, "StartCall").release(), nullptr),
1686
- GRPC_ERROR_NONE);
1692
+ absl::OkStatus());
1687
1693
  }
1688
1694
 
1689
1695
  RlsLb::RlsRequest::~RlsRequest() { GPR_ASSERT(call_ == nullptr); }
@@ -1754,7 +1760,6 @@ void RlsLb::RlsRequest::StartCallLocked() {
1754
1760
 
1755
1761
  void RlsLb::RlsRequest::OnRlsCallComplete(void* arg, grpc_error_handle error) {
1756
1762
  auto* request = static_cast<RlsRequest*>(arg);
1757
- (void)GRPC_ERROR_REF(error);
1758
1763
  request->lb_policy_->work_serializer()->Run(
1759
1764
  [request, error]() {
1760
1765
  request->OnRlsCallCompleteLocked(error);
@@ -1770,12 +1775,12 @@ void RlsLb::RlsRequest::OnRlsCallCompleteLocked(grpc_error_handle error) {
1770
1775
  "[rlslb %p] rls_request=%p %s, error=%s, status={%d, %s} RLS call "
1771
1776
  "response received",
1772
1777
  lb_policy_.get(), this, key_.ToString().c_str(),
1773
- grpc_error_std_string(error).c_str(), status_recv_,
1778
+ StatusToString(error).c_str(), status_recv_,
1774
1779
  status_message.c_str());
1775
1780
  }
1776
1781
  // Parse response.
1777
1782
  ResponseInfo response;
1778
- if (!GRPC_ERROR_IS_NONE(error)) {
1783
+ if (!error.ok()) {
1779
1784
  grpc_status_code code;
1780
1785
  std::string message;
1781
1786
  grpc_error_get_status(error, deadline_, &code, &message,
@@ -1793,7 +1798,7 @@ void RlsLb::RlsRequest::OnRlsCallCompleteLocked(grpc_error_handle error) {
1793
1798
  grpc_byte_buffer_destroy(recv_message_);
1794
1799
  grpc_metadata_array_destroy(&recv_initial_metadata_);
1795
1800
  grpc_metadata_array_destroy(&recv_trailing_metadata_);
1796
- grpc_slice_unref_internal(status_details_recv_);
1801
+ CSliceUnref(status_details_recv_);
1797
1802
  grpc_call_unref(call_);
1798
1803
  call_ = nullptr;
1799
1804
  // Return result to cache.
@@ -1844,7 +1849,7 @@ grpc_byte_buffer* RlsLb::RlsRequest::MakeRequestProto() {
1844
1849
  grpc_lookup_v1_RouteLookupRequest_serialize(req, arena.ptr(), &len);
1845
1850
  grpc_slice send_slice = grpc_slice_from_copied_buffer(buf, len);
1846
1851
  grpc_byte_buffer* byte_buffer = grpc_raw_byte_buffer_create(&send_slice, 1);
1847
- grpc_slice_unref_internal(send_slice);
1852
+ CSliceUnref(send_slice);
1848
1853
  return byte_buffer;
1849
1854
  }
1850
1855
 
@@ -1859,7 +1864,7 @@ RlsLb::ResponseInfo RlsLb::RlsRequest::ParseResponseProto() {
1859
1864
  grpc_lookup_v1_RouteLookupResponse_parse(
1860
1865
  reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(recv_slice)),
1861
1866
  GRPC_SLICE_LENGTH(recv_slice), arena.ptr());
1862
- grpc_slice_unref_internal(recv_slice);
1867
+ CSliceUnref(recv_slice);
1863
1868
  if (response == nullptr) {
1864
1869
  response_info.status = absl::InternalError("cannot parse RLS response");
1865
1870
  return response_info;
@@ -2076,7 +2081,7 @@ void RlsLb::UpdatePickerAsync() {
2076
2081
  GRPC_CLOSURE_CREATE(UpdatePickerCallback,
2077
2082
  Ref(DEBUG_LOCATION, "UpdatePickerCallback").release(),
2078
2083
  grpc_schedule_on_exec_ctx),
2079
- GRPC_ERROR_NONE);
2084
+ absl::OkStatus());
2080
2085
  }
2081
2086
 
2082
2087
  void RlsLb::UpdatePickerCallback(void* arg, grpc_error_handle /*error*/) {
@@ -2142,7 +2147,7 @@ void RlsLb::UpdatePickerLocked() {
2142
2147
  status = absl::UnavailableError("no children available");
2143
2148
  }
2144
2149
  channel_control_helper()->UpdateState(
2145
- state, status, absl::make_unique<Picker>(Ref(DEBUG_LOCATION, "Picker")));
2150
+ state, status, std::make_unique<Picker>(Ref(DEBUG_LOCATION, "Picker")));
2146
2151
  }
2147
2152
 
2148
2153
  //
@@ -2421,14 +2426,8 @@ void RlsLbConfig::JsonPostLoad(const Json& json, const JsonArgs&,
2421
2426
  if (it != json.object_value().end()) {
2422
2427
  ValidationErrors::ScopedField field(errors,
2423
2428
  ".routeLookupChannelServiceConfig");
2424
- grpc_error_handle child_error = GRPC_ERROR_NONE;
2425
- rls_channel_service_config_ = it->second.Dump();
2426
- auto service_config = MakeRefCounted<ServiceConfigImpl>(
2427
- ChannelArgs(), rls_channel_service_config_, it->second, &child_error);
2428
- if (!GRPC_ERROR_IS_NONE(child_error)) {
2429
- errors->AddError(grpc_error_std_string(child_error));
2430
- GRPC_ERROR_UNREF(child_error);
2431
- }
2429
+ // Don't need to save the result here, just need the errors (if any).
2430
+ ServiceConfigImpl::Create(ChannelArgs(), it->second, errors);
2432
2431
  }
2433
2432
  // Validate childPolicyConfigTargetFieldName.
2434
2433
  {
@@ -2507,7 +2506,7 @@ class RlsLbFactory : public LoadBalancingPolicyFactory {
2507
2506
 
2508
2507
  void RegisterRlsLbPolicy(CoreConfiguration::Builder* builder) {
2509
2508
  builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
2510
- absl::make_unique<RlsLbFactory>());
2509
+ std::make_unique<RlsLbFactory>());
2511
2510
  }
2512
2511
 
2513
2512
  } // namespace grpc_core
@@ -25,7 +25,6 @@
25
25
  #include <utility>
26
26
  #include <vector>
27
27
 
28
- #include "absl/memory/memory.h"
29
28
  #include "absl/status/status.h"
30
29
  #include "absl/status/statusor.h"
31
30
  #include "absl/strings/str_cat.h"
@@ -45,7 +44,6 @@
45
44
  #include "src/core/lib/json/json.h"
46
45
  #include "src/core/lib/load_balancing/lb_policy.h"
47
46
  #include "src/core/lib/load_balancing/lb_policy_factory.h"
48
- #include "src/core/lib/load_balancing/lb_policy_registry.h"
49
47
  #include "src/core/lib/load_balancing/subchannel_interface.h"
50
48
  #include "src/core/lib/resolver/server_address.h"
51
49
  #include "src/core/lib/transport/connectivity_state.h"
@@ -307,7 +305,7 @@ absl::Status RoundRobin::UpdateLocked(UpdateArgs args) {
307
305
  : args.addresses.status();
308
306
  channel_control_helper()->UpdateState(
309
307
  GRPC_CHANNEL_TRANSIENT_FAILURE, status,
310
- absl::make_unique<TransientFailurePicker>(status));
308
+ std::make_unique<TransientFailurePicker>(status));
311
309
  return status;
312
310
  }
313
311
  // Otherwise, if this is the initial update, immediately promote it to
@@ -316,7 +314,7 @@ absl::Status RoundRobin::UpdateLocked(UpdateArgs args) {
316
314
  subchannel_list_ = std::move(latest_pending_subchannel_list_);
317
315
  channel_control_helper()->UpdateState(
318
316
  GRPC_CHANNEL_CONNECTING, absl::Status(),
319
- absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
317
+ std::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
320
318
  }
321
319
  return absl::OkStatus();
322
320
  }
@@ -387,8 +385,8 @@ void RoundRobin::RoundRobinSubchannelList::
387
385
  gpr_log(GPR_INFO, "[RR %p] reporting READY with subchannel list %p", p,
388
386
  this);
389
387
  }
390
- p->channel_control_helper()->UpdateState(
391
- GRPC_CHANNEL_READY, absl::Status(), absl::make_unique<Picker>(p, this));
388
+ p->channel_control_helper()->UpdateState(GRPC_CHANNEL_READY, absl::Status(),
389
+ std::make_unique<Picker>(p, this));
392
390
  } else if (num_connecting_ > 0) {
393
391
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
394
392
  gpr_log(GPR_INFO, "[RR %p] reporting CONNECTING with subchannel list %p",
@@ -396,7 +394,7 @@ void RoundRobin::RoundRobinSubchannelList::
396
394
  }
397
395
  p->channel_control_helper()->UpdateState(
398
396
  GRPC_CHANNEL_CONNECTING, absl::Status(),
399
- absl::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
397
+ std::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
400
398
  } else if (num_transient_failure_ == num_subchannels()) {
401
399
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
402
400
  gpr_log(GPR_INFO,
@@ -410,7 +408,7 @@ void RoundRobin::RoundRobinSubchannelList::
410
408
  }
411
409
  p->channel_control_helper()->UpdateState(
412
410
  GRPC_CHANNEL_TRANSIENT_FAILURE, last_failure_,
413
- absl::make_unique<TransientFailurePicker>(last_failure_));
411
+ std::make_unique<TransientFailurePicker>(last_failure_));
414
412
  }
415
413
  }
416
414
 
@@ -525,7 +523,7 @@ class RoundRobinFactory : public LoadBalancingPolicyFactory {
525
523
 
526
524
  void RegisterRoundRobinLbPolicy(CoreConfiguration::Builder* builder) {
527
525
  builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
528
- absl::make_unique<RoundRobinFactory>());
526
+ std::make_unique<RoundRobinFactory>());
529
527
  }
530
528
 
531
529
  } // namespace grpc_core