grpc 1.50.0.pre1 → 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 +57 -20
  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
@@ -28,6 +28,7 @@
28
28
  #include <utility>
29
29
 
30
30
  #include "absl/container/inlined_vector.h"
31
+ #include "absl/status/status.h"
31
32
  #include "absl/status/statusor.h"
32
33
  #include "absl/strings/str_cat.h"
33
34
  #include "absl/strings/string_view.h"
@@ -56,6 +57,7 @@
56
57
  #include "src/core/lib/gprpp/orphanable.h"
57
58
  #include "src/core/lib/gprpp/ref_counted.h"
58
59
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
60
+ #include "src/core/lib/gprpp/status_helper.h"
59
61
  #include "src/core/lib/gprpp/time.h"
60
62
  #include "src/core/lib/iomgr/call_combiner.h"
61
63
  #include "src/core/lib/iomgr/closure.h"
@@ -66,8 +68,8 @@
66
68
  #include "src/core/lib/resource_quota/arena.h"
67
69
  #include "src/core/lib/service_config/service_config.h"
68
70
  #include "src/core/lib/service_config/service_config_call_data.h"
71
+ #include "src/core/lib/slice/slice.h"
69
72
  #include "src/core/lib/slice/slice_buffer.h"
70
- #include "src/core/lib/slice/slice_refcount.h"
71
73
  #include "src/core/lib/transport/error_utils.h"
72
74
  #include "src/core/lib/transport/metadata_batch.h"
73
75
  #include "src/core/lib/transport/transport.h"
@@ -149,7 +151,7 @@ class RetryFilter {
149
151
  grpc_channel_element_args* args) {
150
152
  GPR_ASSERT(args->is_last);
151
153
  GPR_ASSERT(elem->filter == &kRetryFilterVtable);
152
- grpc_error_handle error = GRPC_ERROR_NONE;
154
+ grpc_error_handle error;
153
155
  new (elem->channel_data) RetryFilter(args->channel_args, &error);
154
156
  return error;
155
157
  }
@@ -190,15 +192,15 @@ class RetryFilter {
190
192
  const char* server_uri =
191
193
  grpc_channel_args_find_string(args, GRPC_ARG_SERVER_URI);
192
194
  if (server_uri == nullptr) {
193
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
195
+ *error = GRPC_ERROR_CREATE(
194
196
  "server URI channel arg missing or wrong type in client channel "
195
197
  "filter");
196
198
  return;
197
199
  }
198
200
  absl::StatusOr<URI> uri = URI::Parse(server_uri);
199
201
  if (!uri.ok() || uri->path().empty()) {
200
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
201
- "could not extract server name from target URI");
202
+ *error =
203
+ GRPC_ERROR_CREATE("could not extract server name from target URI");
202
204
  return;
203
205
  }
204
206
  std::string server_name(absl::StripPrefix(uri->path(), "/"));
@@ -491,9 +493,9 @@ class RetryFilter::CallData {
491
493
  bool sent_cancel_stream_ : 1;
492
494
  // State for callback processing.
493
495
  RefCountedPtr<BatchData> recv_initial_metadata_ready_deferred_batch_;
494
- grpc_error_handle recv_initial_metadata_error_ = GRPC_ERROR_NONE;
496
+ grpc_error_handle recv_initial_metadata_error_;
495
497
  RefCountedPtr<BatchData> recv_message_ready_deferred_batch_;
496
- grpc_error_handle recv_message_error_ = GRPC_ERROR_NONE;
498
+ grpc_error_handle recv_message_error_;
497
499
  struct OnCompleteDeferredBatch {
498
500
  OnCompleteDeferredBatch(RefCountedPtr<BatchData> batch,
499
501
  grpc_error_handle error)
@@ -505,7 +507,7 @@ class RetryFilter::CallData {
505
507
  absl::InlinedVector<OnCompleteDeferredBatch, 3>
506
508
  on_complete_deferred_batches_;
507
509
  RefCountedPtr<BatchData> recv_trailing_metadata_internal_batch_;
508
- grpc_error_handle recv_trailing_metadata_error_ = GRPC_ERROR_NONE;
510
+ grpc_error_handle recv_trailing_metadata_error_;
509
511
  bool seen_recv_trailing_metadata_from_surface_ : 1;
510
512
  // NOTE: Do not move this next to the metadata bitfields above. That would
511
513
  // save space but will also result in a data race because compiler
@@ -575,7 +577,7 @@ class RetryFilter::CallData {
575
577
  CallCombiner* call_combiner_;
576
578
  grpc_call_context_element* call_context_;
577
579
 
578
- grpc_error_handle cancelled_from_surface_ = GRPC_ERROR_NONE;
580
+ grpc_error_handle cancelled_from_surface_;
579
581
 
580
582
  RefCountedPtr<CallStackDestructionBarrier> call_stack_destruction_barrier_;
581
583
 
@@ -663,7 +665,7 @@ class RetryFilter::CallData::CallStackDestructionBarrier
663
665
 
664
666
  ~CallStackDestructionBarrier() override {
665
667
  // TODO(yashkt) : This can potentially be a Closure::Run
666
- ExecCtx::Run(DEBUG_LOCATION, on_call_stack_destruction_, GRPC_ERROR_NONE);
668
+ ExecCtx::Run(DEBUG_LOCATION, on_call_stack_destruction_, absl::OkStatus());
667
669
  }
668
670
 
669
671
  // Set the closure from the surface. This closure will be invoked
@@ -901,7 +903,7 @@ void RetryFilter::CallData::CallAttempt::AddClosureForBatch(
901
903
  batch->handler_private.extra_arg = lb_call_.get();
902
904
  GRPC_CLOSURE_INIT(&batch->handler_private.closure, StartBatchInCallCombiner,
903
905
  batch, grpc_schedule_on_exec_ctx);
904
- closures->Add(&batch->handler_private.closure, GRPC_ERROR_NONE, reason);
906
+ closures->Add(&batch->handler_private.closure, absl::OkStatus(), reason);
905
907
  }
906
908
 
907
909
  void RetryFilter::CallData::CallAttempt::
@@ -926,7 +928,6 @@ void RetryFilter::CallData::CallAttempt::
926
928
  void RetryFilter::CallData::CallAttempt::MaybeAddBatchForCancelOp(
927
929
  grpc_error_handle error, CallCombinerClosureList* closures) {
928
930
  if (sent_cancel_stream_) {
929
- GRPC_ERROR_UNREF(error);
930
931
  return;
931
932
  }
932
933
  sent_cancel_stream_ = true;
@@ -1020,9 +1021,8 @@ void RetryFilter::CallData::CallAttempt::AddBatchesForPendingBatches(
1020
1021
  DEBUG_LOCATION,
1021
1022
  "internally started recv_trailing_metadata batch pending and "
1022
1023
  "recv_trailing_metadata started from surface");
1023
- GRPC_ERROR_UNREF(recv_trailing_metadata_error_);
1024
1024
  }
1025
- recv_trailing_metadata_error_ = GRPC_ERROR_NONE;
1025
+ recv_trailing_metadata_error_ = absl::OkStatus();
1026
1026
  }
1027
1027
  // We don't want the fact that we've already started this op internally
1028
1028
  // to prevent us from adding a batch that may contain other ops.
@@ -1236,22 +1236,18 @@ void RetryFilter::CallData::CallAttempt::Abandon() {
1236
1236
  DEBUG_LOCATION,
1237
1237
  "unref internal recv_trailing_metadata_ready batch; attempt abandoned");
1238
1238
  }
1239
- GRPC_ERROR_UNREF(recv_trailing_metadata_error_);
1240
- recv_trailing_metadata_error_ = GRPC_ERROR_NONE;
1239
+ recv_trailing_metadata_error_ = absl::OkStatus();
1241
1240
  recv_initial_metadata_ready_deferred_batch_.reset(
1242
1241
  DEBUG_LOCATION,
1243
1242
  "unref deferred recv_initial_metadata_ready batch; attempt abandoned");
1244
- GRPC_ERROR_UNREF(recv_initial_metadata_error_);
1245
- recv_initial_metadata_error_ = GRPC_ERROR_NONE;
1243
+ recv_initial_metadata_error_ = absl::OkStatus();
1246
1244
  recv_message_ready_deferred_batch_.reset(
1247
1245
  DEBUG_LOCATION,
1248
1246
  "unref deferred recv_message_ready batch; attempt abandoned");
1249
- GRPC_ERROR_UNREF(recv_message_error_);
1250
- recv_message_error_ = GRPC_ERROR_NONE;
1247
+ recv_message_error_ = absl::OkStatus();
1251
1248
  for (auto& on_complete_deferred_batch : on_complete_deferred_batches_) {
1252
1249
  on_complete_deferred_batch.batch.reset(
1253
1250
  DEBUG_LOCATION, "unref deferred on_complete batch; attempt abandoned");
1254
- GRPC_ERROR_UNREF(on_complete_deferred_batch.error);
1255
1251
  }
1256
1252
  on_complete_deferred_batches_.clear();
1257
1253
  }
@@ -1262,8 +1258,8 @@ void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimer(
1262
1258
  GRPC_CLOSURE_INIT(&call_attempt->on_per_attempt_recv_timer_,
1263
1259
  OnPerAttemptRecvTimerLocked, call_attempt, nullptr);
1264
1260
  GRPC_CALL_COMBINER_START(call_attempt->calld_->call_combiner_,
1265
- &call_attempt->on_per_attempt_recv_timer_,
1266
- GRPC_ERROR_REF(error), "per-attempt timer fired");
1261
+ &call_attempt->on_per_attempt_recv_timer_, error,
1262
+ "per-attempt timer fired");
1267
1263
  }
1268
1264
 
1269
1265
  void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimerLocked(
@@ -1274,21 +1270,19 @@ void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimerLocked(
1274
1270
  gpr_log(GPR_INFO,
1275
1271
  "chand=%p calld=%p attempt=%p: perAttemptRecvTimeout timer fired: "
1276
1272
  "error=%s, per_attempt_recv_timer_pending_=%d",
1277
- calld->chand_, calld, call_attempt,
1278
- grpc_error_std_string(error).c_str(),
1273
+ calld->chand_, calld, call_attempt, StatusToString(error).c_str(),
1279
1274
  call_attempt->per_attempt_recv_timer_pending_);
1280
1275
  }
1281
1276
  CallCombinerClosureList closures;
1282
- if (GRPC_ERROR_IS_NONE(error) &&
1283
- call_attempt->per_attempt_recv_timer_pending_) {
1277
+ if (error.ok() && call_attempt->per_attempt_recv_timer_pending_) {
1284
1278
  call_attempt->per_attempt_recv_timer_pending_ = false;
1285
1279
  // Cancel this attempt.
1286
1280
  // TODO(roth): When implementing hedging, we should not cancel the
1287
1281
  // current attempt.
1288
1282
  call_attempt->MaybeAddBatchForCancelOp(
1289
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1290
- "retry perAttemptRecvTimeout exceeded"),
1291
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_CANCELLED),
1283
+ grpc_error_set_int(
1284
+ GRPC_ERROR_CREATE("retry perAttemptRecvTimeout exceeded"),
1285
+ StatusIntProperty::kRpcStatus, GRPC_STATUS_CANCELLED),
1292
1286
  &closures);
1293
1287
  // Check whether we should retry.
1294
1288
  if (call_attempt->ShouldRetry(/*status=*/absl::nullopt,
@@ -1399,7 +1393,6 @@ void RetryFilter::CallData::CallAttempt::BatchData::
1399
1393
  .recv_initial_metadata_ready != nullptr;
1400
1394
  });
1401
1395
  if (pending == nullptr) {
1402
- GRPC_ERROR_UNREF(error);
1403
1396
  return;
1404
1397
  }
1405
1398
  // Return metadata.
@@ -1432,7 +1425,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady(
1432
1425
  "chand=%p calld=%p attempt=%p batch_data=%p: "
1433
1426
  "got recv_initial_metadata_ready, error=%s",
1434
1427
  calld->chand_, calld, call_attempt, batch_data.get(),
1435
- grpc_error_std_string(error).c_str());
1428
+ StatusToString(error).c_str());
1436
1429
  }
1437
1430
  call_attempt->completed_recv_initial_metadata_ = true;
1438
1431
  // If this attempt has been abandoned, then we're not going to use the
@@ -1451,9 +1444,9 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady(
1451
1444
  // the recv_trailing_metadata_ready callback, then defer propagating this
1452
1445
  // callback back to the surface. We can evaluate whether to retry when
1453
1446
  // recv_trailing_metadata comes back.
1454
- if (GPR_UNLIKELY((call_attempt->trailing_metadata_available_ ||
1455
- !GRPC_ERROR_IS_NONE(error)) &&
1456
- !call_attempt->completed_recv_trailing_metadata_)) {
1447
+ if (GPR_UNLIKELY(
1448
+ (call_attempt->trailing_metadata_available_ || !error.ok()) &&
1449
+ !call_attempt->completed_recv_trailing_metadata_)) {
1457
1450
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
1458
1451
  gpr_log(GPR_INFO,
1459
1452
  "chand=%p calld=%p attempt=%p: deferring "
@@ -1462,11 +1455,10 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady(
1462
1455
  }
1463
1456
  call_attempt->recv_initial_metadata_ready_deferred_batch_ =
1464
1457
  std::move(batch_data);
1465
- call_attempt->recv_initial_metadata_error_ = GRPC_ERROR_REF(error);
1458
+ call_attempt->recv_initial_metadata_error_ = error;
1466
1459
  CallCombinerClosureList closures;
1467
- if (!GRPC_ERROR_IS_NONE(error)) {
1468
- call_attempt->MaybeAddBatchForCancelOp(GRPC_ERROR_REF(error),
1469
- &closures);
1460
+ if (!error.ok()) {
1461
+ call_attempt->MaybeAddBatchForCancelOp(error, &closures);
1470
1462
  }
1471
1463
  if (!call_attempt->started_recv_trailing_metadata_) {
1472
1464
  // recv_trailing_metadata not yet started by application; start it
@@ -1484,8 +1476,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady(
1484
1476
  }
1485
1477
  // Invoke the callback to return the result to the surface.
1486
1478
  CallCombinerClosureList closures;
1487
- batch_data->MaybeAddClosureForRecvInitialMetadataCallback(
1488
- GRPC_ERROR_REF(error), &closures);
1479
+ batch_data->MaybeAddClosureForRecvInitialMetadataCallback(error, &closures);
1489
1480
  closures.RunClosures(calld->call_combiner_);
1490
1481
  }
1491
1482
 
@@ -1504,7 +1495,6 @@ void RetryFilter::CallData::CallAttempt::BatchData::
1504
1495
  batch->payload->recv_message.recv_message_ready != nullptr;
1505
1496
  });
1506
1497
  if (pending == nullptr) {
1507
- GRPC_ERROR_UNREF(error);
1508
1498
  return;
1509
1499
  }
1510
1500
  // Return payload.
@@ -1534,7 +1524,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
1534
1524
  "chand=%p calld=%p attempt=%p batch_data=%p: "
1535
1525
  "got recv_message_ready, error=%s",
1536
1526
  calld->chand_, calld, call_attempt, batch_data.get(),
1537
- grpc_error_std_string(error).c_str());
1527
+ StatusToString(error).c_str());
1538
1528
  }
1539
1529
  ++call_attempt->completed_recv_message_count_;
1540
1530
  // If this attempt has been abandoned, then we're not going to use the
@@ -1556,9 +1546,9 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
1556
1546
  // the recv_trailing_metadata_ready callback, then defer propagating this
1557
1547
  // callback back to the surface. We can evaluate whether to retry when
1558
1548
  // recv_trailing_metadata comes back.
1559
- if (GPR_UNLIKELY((!call_attempt->recv_message_.has_value() ||
1560
- !GRPC_ERROR_IS_NONE(error)) &&
1561
- !call_attempt->completed_recv_trailing_metadata_)) {
1549
+ if (GPR_UNLIKELY(
1550
+ (!call_attempt->recv_message_.has_value() || !error.ok()) &&
1551
+ !call_attempt->completed_recv_trailing_metadata_)) {
1562
1552
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
1563
1553
  gpr_log(GPR_INFO,
1564
1554
  "chand=%p calld=%p attempt=%p: deferring recv_message_ready "
@@ -1566,11 +1556,10 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
1566
1556
  calld->chand_, calld, call_attempt);
1567
1557
  }
1568
1558
  call_attempt->recv_message_ready_deferred_batch_ = std::move(batch_data);
1569
- call_attempt->recv_message_error_ = GRPC_ERROR_REF(error);
1559
+ call_attempt->recv_message_error_ = error;
1570
1560
  CallCombinerClosureList closures;
1571
- if (!GRPC_ERROR_IS_NONE(error)) {
1572
- call_attempt->MaybeAddBatchForCancelOp(GRPC_ERROR_REF(error),
1573
- &closures);
1561
+ if (!error.ok()) {
1562
+ call_attempt->MaybeAddBatchForCancelOp(error, &closures);
1574
1563
  }
1575
1564
  if (!call_attempt->started_recv_trailing_metadata_) {
1576
1565
  // recv_trailing_metadata not yet started by application; start it
@@ -1588,8 +1577,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
1588
1577
  }
1589
1578
  // Invoke the callback to return the result to the surface.
1590
1579
  CallCombinerClosureList closures;
1591
- batch_data->MaybeAddClosureForRecvMessageCallback(GRPC_ERROR_REF(error),
1592
- &closures);
1580
+ batch_data->MaybeAddClosureForRecvMessageCallback(error, &closures);
1593
1581
  closures.RunClosures(calld->call_combiner_);
1594
1582
  }
1595
1583
 
@@ -1606,10 +1594,10 @@ void GetCallStatus(
1606
1594
  grpc_status_code* status, absl::optional<Duration>* server_pushback,
1607
1595
  bool* is_lb_drop,
1608
1596
  absl::optional<GrpcStreamNetworkState::ValueType>* stream_network_state) {
1609
- if (!GRPC_ERROR_IS_NONE(error)) {
1597
+ if (!error.ok()) {
1610
1598
  grpc_error_get_status(error, deadline, status, nullptr, nullptr, nullptr);
1611
1599
  intptr_t value = 0;
1612
- if (grpc_error_get_int(error, GRPC_ERROR_INT_LB_POLICY_DROP, &value) &&
1600
+ if (grpc_error_get_int(error, StatusIntProperty::kLbPolicyDrop, &value) &&
1613
1601
  value != 0) {
1614
1602
  *is_lb_drop = true;
1615
1603
  }
@@ -1618,7 +1606,6 @@ void GetCallStatus(
1618
1606
  }
1619
1607
  *server_pushback = md_batch->get(GrpcRetryPushbackMsMetadata());
1620
1608
  *stream_network_state = md_batch->get(GrpcStreamNetworkState());
1621
- GRPC_ERROR_UNREF(error);
1622
1609
  }
1623
1610
 
1624
1611
  } // namespace
@@ -1669,7 +1656,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::
1669
1656
  call_attempt_->recv_initial_metadata_error_, closures);
1670
1657
  call_attempt_->recv_initial_metadata_ready_deferred_batch_.reset(
1671
1658
  DEBUG_LOCATION, "resuming deferred recv_initial_metadata_ready");
1672
- call_attempt_->recv_initial_metadata_error_ = GRPC_ERROR_NONE;
1659
+ call_attempt_->recv_initial_metadata_error_ = absl::OkStatus();
1673
1660
  }
1674
1661
  // Add closure for deferred recv_message_ready.
1675
1662
  if (GPR_UNLIKELY(call_attempt_->recv_message_ready_deferred_batch_ !=
@@ -1678,7 +1665,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::
1678
1665
  closures);
1679
1666
  call_attempt_->recv_message_ready_deferred_batch_.reset(
1680
1667
  DEBUG_LOCATION, "resuming deferred recv_message_ready");
1681
- call_attempt_->recv_message_error_ = GRPC_ERROR_NONE;
1668
+ call_attempt_->recv_message_error_ = absl::OkStatus();
1682
1669
  }
1683
1670
  // Add closures for deferred on_complete callbacks.
1684
1671
  for (auto& on_complete_deferred_batch :
@@ -1698,13 +1685,12 @@ void RetryFilter::CallData::CallAttempt::BatchData::
1698
1685
  PendingBatch* pending = &calld->pending_batches_[i];
1699
1686
  if (pending->batch == nullptr) continue;
1700
1687
  if (call_attempt_->PendingBatchContainsUnstartedSendOps(pending)) {
1701
- closures->Add(pending->batch->on_complete, GRPC_ERROR_REF(error),
1688
+ closures->Add(pending->batch->on_complete, error,
1702
1689
  "failing on_complete for pending batch");
1703
1690
  pending->batch->on_complete = nullptr;
1704
1691
  calld->MaybeClearPendingBatch(pending);
1705
1692
  }
1706
1693
  }
1707
- GRPC_ERROR_UNREF(error);
1708
1694
  }
1709
1695
 
1710
1696
  void RetryFilter::CallData::CallAttempt::BatchData::RunClosuresForCompletedCall(
@@ -1712,15 +1698,14 @@ void RetryFilter::CallData::CallAttempt::BatchData::RunClosuresForCompletedCall(
1712
1698
  // Construct list of closures to execute.
1713
1699
  CallCombinerClosureList closures;
1714
1700
  // First, add closure for recv_trailing_metadata_ready.
1715
- MaybeAddClosureForRecvTrailingMetadataReady(GRPC_ERROR_REF(error), &closures);
1701
+ MaybeAddClosureForRecvTrailingMetadataReady(error, &closures);
1716
1702
  // If there are deferred batch completion callbacks, add them to closures.
1717
1703
  AddClosuresForDeferredCompletionCallbacks(&closures);
1718
1704
  // Add closures to fail any pending batches that have not yet been started.
1719
- AddClosuresToFailUnstartedPendingBatches(GRPC_ERROR_REF(error), &closures);
1705
+ AddClosuresToFailUnstartedPendingBatches(error, &closures);
1720
1706
  // Schedule all of the closures identified above.
1721
1707
  // Note: This will release the call combiner.
1722
1708
  closures.RunClosures(call_attempt_->calld_->call_combiner_);
1723
- GRPC_ERROR_UNREF(error);
1724
1709
  }
1725
1710
 
1726
1711
  void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady(
@@ -1733,7 +1718,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady(
1733
1718
  "chand=%p calld=%p attempt=%p batch_data=%p: "
1734
1719
  "got recv_trailing_metadata_ready, error=%s",
1735
1720
  calld->chand_, calld, call_attempt, batch_data.get(),
1736
- grpc_error_std_string(error).c_str());
1721
+ StatusToString(error).c_str());
1737
1722
  }
1738
1723
  call_attempt->completed_recv_trailing_metadata_ = true;
1739
1724
  // If this attempt has been abandoned, then we're not going to use the
@@ -1753,8 +1738,8 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady(
1753
1738
  absl::optional<GrpcStreamNetworkState::ValueType> stream_network_state;
1754
1739
  grpc_metadata_batch* md_batch =
1755
1740
  batch_data->batch_.payload->recv_trailing_metadata.recv_trailing_metadata;
1756
- GetCallStatus(calld->deadline_, md_batch, GRPC_ERROR_REF(error), &status,
1757
- &server_pushback, &is_lb_drop, &stream_network_state);
1741
+ GetCallStatus(calld->deadline_, md_batch, error, &status, &server_pushback,
1742
+ &is_lb_drop, &stream_network_state);
1758
1743
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
1759
1744
  gpr_log(GPR_INFO,
1760
1745
  "chand=%p calld=%p attempt=%p: call finished, status=%s "
@@ -1794,11 +1779,10 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady(
1794
1779
  CallCombinerClosureList closures;
1795
1780
  // Cancel call attempt.
1796
1781
  call_attempt->MaybeAddBatchForCancelOp(
1797
- GRPC_ERROR_IS_NONE(error)
1798
- ? grpc_error_set_int(
1799
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("call attempt failed"),
1800
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_CANCELLED)
1801
- : GRPC_ERROR_REF(error),
1782
+ error.ok() ? grpc_error_set_int(
1783
+ GRPC_ERROR_CREATE("call attempt failed"),
1784
+ StatusIntProperty::kRpcStatus, GRPC_STATUS_CANCELLED)
1785
+ : error,
1802
1786
  &closures);
1803
1787
  // For transparent retries, add a closure to immediately start a new
1804
1788
  // call attempt.
@@ -1821,7 +1805,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady(
1821
1805
  // subsequent batches.
1822
1806
  call_attempt->MaybeSwitchToFastPath();
1823
1807
  // Run any necessary closures.
1824
- batch_data->RunClosuresForCompletedCall(GRPC_ERROR_REF(error));
1808
+ batch_data->RunClosuresForCompletedCall(error);
1825
1809
  }
1826
1810
 
1827
1811
  //
@@ -1844,7 +1828,6 @@ void RetryFilter::CallData::CallAttempt::BatchData::
1844
1828
  // If batch_data is a replay batch, then there will be no pending
1845
1829
  // batch to complete.
1846
1830
  if (pending == nullptr) {
1847
- GRPC_ERROR_UNREF(error);
1848
1831
  return;
1849
1832
  }
1850
1833
  // Propagate payload.
@@ -1898,7 +1881,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
1898
1881
  "chand=%p calld=%p attempt=%p batch_data=%p: "
1899
1882
  "got on_complete, error=%s, batch=%s",
1900
1883
  calld->chand_, calld, call_attempt, batch_data.get(),
1901
- grpc_error_std_string(error).c_str(),
1884
+ StatusToString(error).c_str(),
1902
1885
  grpc_transport_stream_op_batch_string(&batch_data->batch_).c_str());
1903
1886
  }
1904
1887
  // If this attempt has been abandoned, then we're not going to propagate
@@ -1912,16 +1895,16 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
1912
1895
  // recv_trailing_metadata_ready callback, then defer propagating this
1913
1896
  // callback back to the surface. We can evaluate whether to retry when
1914
1897
  // recv_trailing_metadata comes back.
1915
- if (GPR_UNLIKELY(!calld->retry_committed_ && !GRPC_ERROR_IS_NONE(error) &&
1898
+ if (GPR_UNLIKELY(!calld->retry_committed_ && !error.ok() &&
1916
1899
  !call_attempt->completed_recv_trailing_metadata_)) {
1917
1900
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
1918
1901
  gpr_log(GPR_INFO, "chand=%p calld=%p attempt=%p: deferring on_complete",
1919
1902
  calld->chand_, calld, call_attempt);
1920
1903
  }
1921
1904
  call_attempt->on_complete_deferred_batches_.emplace_back(
1922
- std::move(batch_data), GRPC_ERROR_REF(error));
1905
+ std::move(batch_data), error);
1923
1906
  CallCombinerClosureList closures;
1924
- call_attempt->MaybeAddBatchForCancelOp(GRPC_ERROR_REF(error), &closures);
1907
+ call_attempt->MaybeAddBatchForCancelOp(error, &closures);
1925
1908
  if (!call_attempt->started_recv_trailing_metadata_) {
1926
1909
  // recv_trailing_metadata not yet started by application; start it
1927
1910
  // ourselves to get status.
@@ -1948,8 +1931,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
1948
1931
  // Construct list of closures to execute.
1949
1932
  CallCombinerClosureList closures;
1950
1933
  // Add closure for the completed pending batch, if any.
1951
- batch_data->AddClosuresForCompletedPendingBatch(GRPC_ERROR_REF(error),
1952
- &closures);
1934
+ batch_data->AddClosuresForCompletedPendingBatch(error, &closures);
1953
1935
  // If needed, add a callback to start any replay or pending send ops on
1954
1936
  // the LB call.
1955
1937
  if (!call_attempt->completed_recv_trailing_metadata_) {
@@ -1974,7 +1956,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnCompleteForCancelOp(
1974
1956
  "chand=%p calld=%p attempt=%p batch_data=%p: "
1975
1957
  "got on_complete for cancel_stream batch, error=%s, batch=%s",
1976
1958
  calld->chand_, calld, call_attempt, batch_data.get(),
1977
- grpc_error_std_string(error).c_str(),
1959
+ StatusToString(error).c_str(),
1978
1960
  grpc_transport_stream_op_batch_string(&batch_data->batch_).c_str());
1979
1961
  }
1980
1962
  GRPC_CALL_COMBINER_STOP(
@@ -2106,7 +2088,7 @@ grpc_error_handle RetryFilter::CallData::Init(
2106
2088
  gpr_log(GPR_INFO, "chand=%p calld=%p: created call", chand,
2107
2089
  elem->call_data);
2108
2090
  }
2109
- return GRPC_ERROR_NONE;
2091
+ return absl::OkStatus();
2110
2092
  }
2111
2093
 
2112
2094
  void RetryFilter::CallData::Destroy(grpc_call_element* elem,
@@ -2169,7 +2151,7 @@ RetryFilter::CallData::CallData(RetryFilter* chand,
2169
2151
  .set_max_backoff(retry_policy_ == nullptr
2170
2152
  ? Duration::Zero()
2171
2153
  : retry_policy_->max_backoff())),
2172
- path_(grpc_slice_ref_internal(args.path)),
2154
+ path_(CSliceRef(args.path)),
2173
2155
  deadline_(args.deadline),
2174
2156
  arena_(args.arena),
2175
2157
  owning_call_(args.call_stack),
@@ -2187,12 +2169,11 @@ RetryFilter::CallData::CallData(RetryFilter* chand,
2187
2169
 
2188
2170
  RetryFilter::CallData::~CallData() {
2189
2171
  FreeAllCachedSendOpData();
2190
- grpc_slice_unref_internal(path_);
2172
+ CSliceUnref(path_);
2191
2173
  // Make sure there are no remaining pending batches.
2192
2174
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2193
2175
  GPR_ASSERT(pending_batches_[i].batch == nullptr);
2194
2176
  }
2195
- GRPC_ERROR_UNREF(cancelled_from_surface_);
2196
2177
  }
2197
2178
 
2198
2179
  void RetryFilter::CallData::StartTransportStreamOpBatch(
@@ -2210,24 +2191,22 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
2210
2191
  }
2211
2192
  // If we were previously cancelled from the surface, fail this
2212
2193
  // batch immediately.
2213
- if (!GRPC_ERROR_IS_NONE(cancelled_from_surface_)) {
2194
+ if (!cancelled_from_surface_.ok()) {
2214
2195
  // Note: This will release the call combiner.
2215
2196
  grpc_transport_stream_op_batch_finish_with_failure(
2216
- batch, GRPC_ERROR_REF(cancelled_from_surface_), call_combiner_);
2197
+ batch, cancelled_from_surface_, call_combiner_);
2217
2198
  return;
2218
2199
  }
2219
2200
  // Handle cancellation.
2220
2201
  if (GPR_UNLIKELY(batch->cancel_stream)) {
2221
2202
  // Save cancel_error in case subsequent batches are started.
2222
- GRPC_ERROR_UNREF(cancelled_from_surface_);
2223
- cancelled_from_surface_ =
2224
- GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
2203
+ cancelled_from_surface_ = batch->payload->cancel_stream.cancel_error;
2225
2204
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
2226
2205
  gpr_log(GPR_INFO, "chand=%p calld=%p: cancelled from surface: %s", chand_,
2227
- this, grpc_error_std_string(cancelled_from_surface_).c_str());
2206
+ this, StatusToString(cancelled_from_surface_).c_str());
2228
2207
  }
2229
2208
  // Fail any pending batches.
2230
- PendingBatchesFail(GRPC_ERROR_REF(cancelled_from_surface_));
2209
+ PendingBatchesFail(cancelled_from_surface_);
2231
2210
  // If we have a current call attempt, commit the call, then send
2232
2211
  // the cancellation down to that attempt. When the call fails, it
2233
2212
  // will not be retried, because we have committed it here.
@@ -2257,7 +2236,7 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
2257
2236
  // batch. Return it back to the surface immediately.
2258
2237
  // Note: This will release the call combiner.
2259
2238
  grpc_transport_stream_op_batch_finish_with_failure(
2260
- batch, GRPC_ERROR_REF(cancelled_from_surface_), call_combiner_);
2239
+ batch, cancelled_from_surface_, call_combiner_);
2261
2240
  return;
2262
2241
  }
2263
2242
  // Add the batch to the pending list.
@@ -2515,13 +2494,13 @@ void RetryFilter::CallData::FailPendingBatchInCallCombiner(
2515
2494
  static_cast<grpc_transport_stream_op_batch*>(arg);
2516
2495
  CallData* call = static_cast<CallData*>(batch->handler_private.extra_arg);
2517
2496
  // Note: This will release the call combiner.
2518
- grpc_transport_stream_op_batch_finish_with_failure(
2519
- batch, GRPC_ERROR_REF(error), call->call_combiner_);
2497
+ grpc_transport_stream_op_batch_finish_with_failure(batch, error,
2498
+ call->call_combiner_);
2520
2499
  }
2521
2500
 
2522
2501
  // This is called via the call combiner, so access to calld is synchronized.
2523
2502
  void RetryFilter::CallData::PendingBatchesFail(grpc_error_handle error) {
2524
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
2503
+ GPR_ASSERT(!error.ok());
2525
2504
  if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
2526
2505
  size_t num_batches = 0;
2527
2506
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
@@ -2529,7 +2508,7 @@ void RetryFilter::CallData::PendingBatchesFail(grpc_error_handle error) {
2529
2508
  }
2530
2509
  gpr_log(GPR_INFO,
2531
2510
  "chand=%p calld=%p: failing %" PRIuPTR " pending batches: %s",
2532
- chand_, this, num_batches, grpc_error_std_string(error).c_str());
2511
+ chand_, this, num_batches, StatusToString(error).c_str());
2533
2512
  }
2534
2513
  CallCombinerClosureList closures;
2535
2514
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
@@ -2540,13 +2519,12 @@ void RetryFilter::CallData::PendingBatchesFail(grpc_error_handle error) {
2540
2519
  GRPC_CLOSURE_INIT(&batch->handler_private.closure,
2541
2520
  FailPendingBatchInCallCombiner, batch,
2542
2521
  grpc_schedule_on_exec_ctx);
2543
- closures.Add(&batch->handler_private.closure, GRPC_ERROR_REF(error),
2522
+ closures.Add(&batch->handler_private.closure, error,
2544
2523
  "PendingBatchesFail");
2545
2524
  PendingBatchClear(pending);
2546
2525
  }
2547
2526
  }
2548
2527
  closures.RunClosuresWithoutYielding(call_combiner_);
2549
- GRPC_ERROR_UNREF(error);
2550
2528
  }
2551
2529
 
2552
2530
  template <typename Predicate>
@@ -2623,14 +2601,14 @@ void RetryFilter::CallData::StartRetryTimer(
2623
2601
  void RetryFilter::CallData::OnRetryTimer(void* arg, grpc_error_handle error) {
2624
2602
  auto* calld = static_cast<CallData*>(arg);
2625
2603
  GRPC_CLOSURE_INIT(&calld->retry_closure_, OnRetryTimerLocked, calld, nullptr);
2626
- GRPC_CALL_COMBINER_START(calld->call_combiner_, &calld->retry_closure_,
2627
- GRPC_ERROR_REF(error), "retry timer fired");
2604
+ GRPC_CALL_COMBINER_START(calld->call_combiner_, &calld->retry_closure_, error,
2605
+ "retry timer fired");
2628
2606
  }
2629
2607
 
2630
2608
  void RetryFilter::CallData::OnRetryTimerLocked(void* arg,
2631
2609
  grpc_error_handle error) {
2632
2610
  auto* calld = static_cast<CallData*>(arg);
2633
- if (GRPC_ERROR_IS_NONE(error) && calld->retry_timer_pending_) {
2611
+ if (error.ok() && calld->retry_timer_pending_) {
2634
2612
  calld->retry_timer_pending_ = false;
2635
2613
  calld->CreateCallAttempt(/*is_transparent_retry=*/false);
2636
2614
  } else {
@@ -2647,13 +2625,13 @@ void RetryFilter::CallData::AddClosureToStartTransparentRetry(
2647
2625
  }
2648
2626
  GRPC_CALL_STACK_REF(owning_call_, "OnRetryTimer");
2649
2627
  GRPC_CLOSURE_INIT(&retry_closure_, StartTransparentRetry, this, nullptr);
2650
- closures->Add(&retry_closure_, GRPC_ERROR_NONE, "start transparent retry");
2628
+ closures->Add(&retry_closure_, absl::OkStatus(), "start transparent retry");
2651
2629
  }
2652
2630
 
2653
2631
  void RetryFilter::CallData::StartTransparentRetry(void* arg,
2654
2632
  grpc_error_handle /*error*/) {
2655
2633
  auto* calld = static_cast<CallData*>(arg);
2656
- if (GRPC_ERROR_IS_NONE(calld->cancelled_from_surface_)) {
2634
+ if (calld->cancelled_from_surface_.ok()) {
2657
2635
  calld->CreateCallAttempt(/*is_transparent_retry=*/true);
2658
2636
  } else {
2659
2637
  GRPC_CALL_COMBINER_STOP(calld->call_combiner_,