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
@@ -60,6 +60,7 @@
60
60
  #include "src/core/ext/transport/chttp2/transport/varint.h"
61
61
  #include "src/core/lib/channel/channel_args.h"
62
62
  #include "src/core/lib/debug/stats.h"
63
+ #include "src/core/lib/debug/stats_data.h"
63
64
  #include "src/core/lib/experiments/experiments.h"
64
65
  #include "src/core/lib/gpr/useful.h"
65
66
  #include "src/core/lib/gprpp/bitset.h"
@@ -81,7 +82,6 @@
81
82
  #include "src/core/lib/slice/slice.h"
82
83
  #include "src/core/lib/slice/slice_buffer.h"
83
84
  #include "src/core/lib/slice/slice_internal.h"
84
- #include "src/core/lib/slice/slice_refcount.h"
85
85
  #include "src/core/lib/transport/bdp_estimator.h"
86
86
  #include "src/core/lib/transport/connectivity_state.h"
87
87
  #include "src/core/lib/transport/error_utils.h"
@@ -231,19 +231,17 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
231
231
 
232
232
  grpc_endpoint_destroy(ep);
233
233
 
234
- grpc_slice_buffer_destroy_internal(&qbuf);
234
+ grpc_slice_buffer_destroy(&qbuf);
235
235
 
236
- grpc_slice_buffer_destroy_internal(&outbuf);
236
+ grpc_slice_buffer_destroy(&outbuf);
237
237
 
238
- grpc_error_handle error =
239
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed");
238
+ grpc_error_handle error = GRPC_ERROR_CREATE("Transport destroyed");
240
239
  // ContextList::Execute follows semantics of a callback function and does not
241
240
  // take a ref on error
242
241
  grpc_core::ContextList::Execute(cl, nullptr, error);
243
- GRPC_ERROR_UNREF(error);
244
242
  cl = nullptr;
245
243
 
246
- grpc_slice_buffer_destroy_internal(&read_buffer);
244
+ grpc_slice_buffer_destroy(&read_buffer);
247
245
  grpc_chttp2_goaway_parser_destroy(&goaway_parser);
248
246
 
249
247
  for (i = 0; i < STREAM_LIST_COUNT; i++) {
@@ -251,16 +249,13 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
251
249
  GPR_ASSERT(lists[i].tail == nullptr);
252
250
  }
253
251
 
254
- GRPC_ERROR_UNREF(goaway_error);
255
-
256
252
  GPR_ASSERT(grpc_chttp2_stream_map_size(&stream_map) == 0);
257
253
 
258
254
  grpc_chttp2_stream_map_destroy(&stream_map);
259
255
 
260
256
  GRPC_COMBINER_UNREF(combiner, "chttp2_transport");
261
257
 
262
- cancel_pings(this,
263
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"));
258
+ cancel_pings(this, GRPC_ERROR_CREATE("Transport destroyed"));
264
259
 
265
260
  while (write_cb_pool) {
266
261
  grpc_chttp2_write_cb* next = write_cb_pool->next;
@@ -268,7 +263,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
268
263
  write_cb_pool = next;
269
264
  }
270
265
 
271
- GRPC_ERROR_UNREF(closed_with_error);
272
266
  gpr_free(ping_acks);
273
267
  if (grpc_core::test_only_destruct_callback != nullptr) {
274
268
  grpc_core::test_only_destruct_callback();
@@ -544,9 +538,9 @@ static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
544
538
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
545
539
  t->destroying = 1;
546
540
  close_transport_locked(
547
- t, grpc_error_set_int(
548
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport destroyed"),
549
- GRPC_ERROR_INT_OCCURRED_DURING_WRITE, t->write_state));
541
+ t, grpc_error_set_int(GRPC_ERROR_CREATE("Transport destroyed"),
542
+ grpc_core::StatusIntProperty::kOccurredDuringWrite,
543
+ t->write_state));
550
544
  t->memory_owner.Reset();
551
545
  // Must be the last line.
552
546
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "destroy");
@@ -555,30 +549,30 @@ static void destroy_transport_locked(void* tp, grpc_error_handle /*error*/) {
555
549
  static void destroy_transport(grpc_transport* gt) {
556
550
  grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
557
551
  t->combiner->Run(GRPC_CLOSURE_CREATE(destroy_transport_locked, t, nullptr),
558
- GRPC_ERROR_NONE);
552
+ absl::OkStatus());
559
553
  }
560
554
 
561
555
  static void close_transport_locked(grpc_chttp2_transport* t,
562
556
  grpc_error_handle error) {
563
- end_all_the_calls(t, GRPC_ERROR_REF(error));
564
- cancel_pings(t, GRPC_ERROR_REF(error));
565
- if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
557
+ end_all_the_calls(t, error);
558
+ cancel_pings(t, error);
559
+ if (t->closed_with_error.ok()) {
566
560
  if (!grpc_error_has_clear_grpc_status(error)) {
567
- error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS,
568
- GRPC_STATUS_UNAVAILABLE);
561
+ error =
562
+ grpc_error_set_int(error, grpc_core::StatusIntProperty::kRpcStatus,
563
+ GRPC_STATUS_UNAVAILABLE);
569
564
  }
570
565
  if (t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE) {
571
- if (GRPC_ERROR_IS_NONE(t->close_transport_on_writes_finished)) {
566
+ if (t->close_transport_on_writes_finished.ok()) {
572
567
  t->close_transport_on_writes_finished =
573
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
574
- "Delayed close due to in-progress write");
568
+ GRPC_ERROR_CREATE("Delayed close due to in-progress write");
575
569
  }
576
570
  t->close_transport_on_writes_finished =
577
571
  grpc_error_add_child(t->close_transport_on_writes_finished, error);
578
572
  return;
579
573
  }
580
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
581
- t->closed_with_error = GRPC_ERROR_REF(error);
574
+ GPR_ASSERT(!error.ok());
575
+ t->closed_with_error = error;
582
576
  connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, absl::Status(),
583
577
  "close_transport");
584
578
  if (t->ping_state.is_delayed_ping_timer_set) {
@@ -607,19 +601,17 @@ static void close_transport_locked(grpc_chttp2_transport* t,
607
601
  GRPC_CHTTP2_STREAM_UNREF(s, "chttp2_writing:close");
608
602
  }
609
603
  GPR_ASSERT(t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE);
610
- grpc_endpoint_shutdown(t->ep, GRPC_ERROR_REF(error));
604
+ grpc_endpoint_shutdown(t->ep, error);
611
605
  }
612
606
  if (t->notify_on_receive_settings != nullptr) {
613
607
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_receive_settings,
614
- GRPC_ERROR_REF(error));
608
+ error);
615
609
  t->notify_on_receive_settings = nullptr;
616
610
  }
617
611
  if (t->notify_on_close != nullptr) {
618
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close,
619
- GRPC_ERROR_REF(error));
612
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, t->notify_on_close, error);
620
613
  t->notify_on_close = nullptr;
621
614
  }
622
- GRPC_ERROR_UNREF(error);
623
615
  }
624
616
 
625
617
  #ifndef NDEBUG
@@ -684,7 +676,7 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
684
676
  GPR_ASSERT(grpc_chttp2_stream_map_find(&t->stream_map, id) == nullptr);
685
677
  }
686
678
 
687
- grpc_slice_buffer_destroy_internal(&frame_storage);
679
+ grpc_slice_buffer_destroy(&frame_storage);
688
680
 
689
681
  for (int i = 0; i < STREAM_LIST_COUNT; i++) {
690
682
  if (GPR_UNLIKELY(included.is_set(i))) {
@@ -699,11 +691,9 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
699
691
  GPR_ASSERT(recv_initial_metadata_ready == nullptr);
700
692
  GPR_ASSERT(recv_message_ready == nullptr);
701
693
  GPR_ASSERT(recv_trailing_metadata_finished == nullptr);
702
- grpc_slice_buffer_destroy_internal(&flow_controlled_buffer);
703
- GRPC_ERROR_UNREF(read_closed_error);
704
- GRPC_ERROR_UNREF(write_closed_error);
694
+ grpc_slice_buffer_destroy(&flow_controlled_buffer);
705
695
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "stream");
706
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, GRPC_ERROR_NONE);
696
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, absl::OkStatus());
707
697
  }
708
698
 
709
699
  static int init_stream(grpc_transport* gt, grpc_stream* gs,
@@ -727,7 +717,7 @@ static void destroy_stream(grpc_transport* gt, grpc_stream* gs,
727
717
  s->destroy_stream_arg = then_schedule_closure;
728
718
  t->combiner->Run(
729
719
  GRPC_CLOSURE_INIT(&s->destroy_stream, destroy_stream_locked, s, nullptr),
730
- GRPC_ERROR_NONE);
720
+ absl::OkStatus());
731
721
  }
732
722
 
733
723
  grpc_chttp2_stream* grpc_chttp2_parsing_accept_stream(grpc_chttp2_transport* t,
@@ -775,9 +765,9 @@ static void set_write_state(grpc_chttp2_transport* t,
775
765
  // from peer while we had some pending writes)
776
766
  if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
777
767
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
778
- if (!GRPC_ERROR_IS_NONE(t->close_transport_on_writes_finished)) {
768
+ if (!t->close_transport_on_writes_finished.ok()) {
779
769
  grpc_error_handle err = t->close_transport_on_writes_finished;
780
- t->close_transport_on_writes_finished = GRPC_ERROR_NONE;
770
+ t->close_transport_on_writes_finished = absl::OkStatus();
781
771
  close_transport_locked(t, err);
782
772
  }
783
773
  }
@@ -809,7 +799,7 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
809
799
  t->combiner->FinallyRun(
810
800
  GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
811
801
  write_action_begin_locked, t, nullptr),
812
- GRPC_ERROR_NONE);
802
+ absl::OkStatus());
813
803
  break;
814
804
  case GRPC_CHTTP2_WRITE_STATE_WRITING:
815
805
  set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE,
@@ -822,8 +812,7 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
822
812
 
823
813
  void grpc_chttp2_mark_stream_writable(grpc_chttp2_transport* t,
824
814
  grpc_chttp2_stream* s) {
825
- if (GRPC_ERROR_IS_NONE(t->closed_with_error) &&
826
- grpc_chttp2_list_add_writable_stream(t, s)) {
815
+ if (t->closed_with_error.ok() && grpc_chttp2_list_add_writable_stream(t, s)) {
827
816
  GRPC_CHTTP2_STREAM_REF(s, "chttp2_writing:become");
828
817
  }
829
818
  }
@@ -841,7 +830,7 @@ static void write_action_begin_locked(void* gt,
841
830
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
842
831
  GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
843
832
  grpc_chttp2_begin_write_result r;
844
- if (!GRPC_ERROR_IS_NONE(t->closed_with_error)) {
833
+ if (!t->closed_with_error.ok()) {
845
834
  r.writing = false;
846
835
  } else {
847
836
  r = grpc_chttp2_begin_write(t);
@@ -851,7 +840,7 @@ static void write_action_begin_locked(void* gt,
851
840
  r.partial ? GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE
852
841
  : GRPC_CHTTP2_WRITE_STATE_WRITING,
853
842
  begin_writing_desc(r.partial));
854
- write_action(t, GRPC_ERROR_NONE);
843
+ write_action(t, absl::OkStatus());
855
844
  if (t->reading_paused_on_pending_induced_frames) {
856
845
  GPR_ASSERT(t->num_pending_induced_frames == 0);
857
846
  // We had paused reading, because we had many induced frames (SETTINGS
@@ -896,7 +885,7 @@ static void write_action_end(void* tp, grpc_error_handle error) {
896
885
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
897
886
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->write_action_end_locked,
898
887
  write_action_end_locked, t, nullptr),
899
- GRPC_ERROR_REF(error));
888
+ error);
900
889
  }
901
890
 
902
891
  // Callback from the grpc_endpoint after bytes have been written by calling
@@ -905,8 +894,8 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
905
894
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
906
895
 
907
896
  bool closed = false;
908
- if (!GRPC_ERROR_IS_NONE(error)) {
909
- close_transport_locked(t, GRPC_ERROR_REF(error));
897
+ if (!error.ok()) {
898
+ close_transport_locked(t, error);
910
899
  closed = true;
911
900
  }
912
901
 
@@ -914,8 +903,7 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
914
903
  t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SENT;
915
904
  closed = true;
916
905
  if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
917
- close_transport_locked(
918
- t, GRPC_ERROR_CREATE_FROM_STATIC_STRING("goaway sent"));
906
+ close_transport_locked(t, GRPC_ERROR_CREATE("goaway sent"));
919
907
  }
920
908
  }
921
909
 
@@ -939,11 +927,11 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
939
927
  t->combiner->FinallyRun(
940
928
  GRPC_CLOSURE_INIT(&t->write_action_begin_locked,
941
929
  write_action_begin_locked, t, nullptr),
942
- GRPC_ERROR_NONE);
930
+ absl::OkStatus());
943
931
  break;
944
932
  }
945
933
 
946
- grpc_chttp2_end_write(t, GRPC_ERROR_REF(error));
934
+ grpc_chttp2_end_write(t, error);
947
935
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "writing");
948
936
  }
949
937
 
@@ -972,9 +960,8 @@ static void cancel_unstarted_streams(grpc_chttp2_transport* t,
972
960
  s->trailing_metadata_buffer.Set(
973
961
  grpc_core::GrpcStreamNetworkState(),
974
962
  grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
975
- grpc_chttp2_cancel_stream(t, s, GRPC_ERROR_REF(error));
963
+ grpc_chttp2_cancel_stream(t, s, error);
976
964
  }
977
- GRPC_ERROR_UNREF(error);
978
965
  }
979
966
 
980
967
  void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
@@ -982,16 +969,15 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
982
969
  uint32_t last_stream_id,
983
970
  absl::string_view goaway_text) {
984
971
  // Discard the error from a previous goaway frame (if any)
985
- if (!GRPC_ERROR_IS_NONE(t->goaway_error)) {
986
- GRPC_ERROR_UNREF(t->goaway_error);
972
+ if (!t->goaway_error.ok()) {
987
973
  }
988
974
  t->goaway_error = grpc_error_set_str(
989
975
  grpc_error_set_int(
990
- grpc_error_set_int(
991
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("GOAWAY received"),
992
- GRPC_ERROR_INT_HTTP2_ERROR, static_cast<intptr_t>(goaway_error)),
993
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE),
994
- GRPC_ERROR_STR_RAW_BYTES, goaway_text);
976
+ grpc_error_set_int(GRPC_ERROR_CREATE("GOAWAY received"),
977
+ grpc_core::StatusIntProperty::kHttp2Error,
978
+ static_cast<intptr_t>(goaway_error)),
979
+ grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE),
980
+ grpc_core::StatusStrProperty::kRawBytes, goaway_text);
995
981
 
996
982
  GRPC_CHTTP2_IF_TRACING(
997
983
  gpr_log(GPR_INFO, "transport %p got goaway with last stream id %d", t,
@@ -1000,10 +986,10 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1000
986
  // received a GOAWAY with a non NO_ERROR code.
1001
987
  if (goaway_error != GRPC_HTTP2_NO_ERROR) {
1002
988
  gpr_log(GPR_INFO, "%s: Got goaway [%d] err=%s", t->peer_string.c_str(),
1003
- goaway_error, grpc_error_std_string(t->goaway_error).c_str());
989
+ goaway_error, grpc_core::StatusToString(t->goaway_error).c_str());
1004
990
  }
1005
991
  if (t->is_client) {
1006
- cancel_unstarted_streams(t, GRPC_ERROR_REF(t->goaway_error));
992
+ cancel_unstarted_streams(t, t->goaway_error);
1007
993
  // Cancel all unseen streams
1008
994
  grpc_chttp2_stream_map_for_each(
1009
995
  &t->stream_map,
@@ -1014,8 +1000,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1014
1000
  s->trailing_metadata_buffer.Set(
1015
1001
  grpc_core::GrpcStreamNetworkState(),
1016
1002
  grpc_core::GrpcStreamNetworkState::kNotSeenByServer);
1017
- grpc_chttp2_cancel_stream(s->t, s,
1018
- GRPC_ERROR_REF(s->t->goaway_error));
1003
+ grpc_chttp2_cancel_stream(s->t, s, s->t->goaway_error);
1019
1004
  }
1020
1005
  },
1021
1006
  &last_stream_id);
@@ -1035,7 +1020,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1035
1020
  t->peer_string.c_str(), t->keepalive_time.ToString().c_str());
1036
1021
  constexpr int max_keepalive_time_millis =
1037
1022
  INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
1038
- int throttled_keepalive_time =
1023
+ int64_t throttled_keepalive_time =
1039
1024
  t->keepalive_time.millis() > max_keepalive_time_millis
1040
1025
  ? INT_MAX
1041
1026
  : t->keepalive_time.millis() * KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
@@ -1054,8 +1039,8 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1054
1039
  grpc_chttp2_stream* s;
1055
1040
  // maybe cancel out streams that haven't yet started if we have received a
1056
1041
  // GOAWAY
1057
- if (!GRPC_ERROR_IS_NONE(t->goaway_error)) {
1058
- cancel_unstarted_streams(t, GRPC_ERROR_REF(t->goaway_error));
1042
+ if (!t->goaway_error.ok()) {
1043
+ cancel_unstarted_streams(t, t->goaway_error);
1059
1044
  return;
1060
1045
  }
1061
1046
  // start streams where we have free grpc_chttp2_stream ids and free
@@ -1095,9 +1080,9 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
1095
1080
  grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
1096
1081
  grpc_chttp2_cancel_stream(
1097
1082
  t, s,
1098
- grpc_error_set_int(
1099
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Stream IDs exhausted"),
1100
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
1083
+ grpc_error_set_int(GRPC_ERROR_CREATE("Stream IDs exhausted"),
1084
+ grpc_core::StatusIntProperty::kRpcStatus,
1085
+ GRPC_STATUS_UNAVAILABLE));
1101
1086
  }
1102
1087
  }
1103
1088
  }
@@ -1124,7 +1109,7 @@ static void null_then_sched_closure(grpc_closure** closure) {
1124
1109
  // completion, have the application see it, and make a new operation on the
1125
1110
  // call which recycles the batch BEFORE the call to start_batch completes,
1126
1111
  // forcing a race.
1127
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, c, GRPC_ERROR_NONE);
1112
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, c, absl::OkStatus());
1128
1113
  }
1129
1114
 
1130
1115
  void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
@@ -1135,7 +1120,6 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1135
1120
  grpc_closure* closure = *pclosure;
1136
1121
  *pclosure = nullptr;
1137
1122
  if (closure == nullptr) {
1138
- GRPC_ERROR_UNREF(error);
1139
1123
  return;
1140
1124
  }
1141
1125
  closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
@@ -1149,20 +1133,20 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
1149
1133
  CLOSURE_BARRIER_FIRST_REF_BIT),
1150
1134
  static_cast<int>(closure->next_data.scratch %
1151
1135
  CLOSURE_BARRIER_FIRST_REF_BIT),
1152
- desc, grpc_error_std_string(error).c_str(),
1136
+ desc, grpc_core::StatusToString(error).c_str(),
1153
1137
  write_state_name(t->write_state));
1154
1138
  }
1155
- if (!GRPC_ERROR_IS_NONE(error)) {
1139
+ if (!error.ok()) {
1156
1140
  grpc_error_handle cl_err =
1157
1141
  grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
1158
- if (GRPC_ERROR_IS_NONE(cl_err)) {
1159
- cl_err = GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
1142
+ if (cl_err.ok()) {
1143
+ cl_err = GRPC_ERROR_CREATE(absl::StrCat(
1160
1144
  "Error in HTTP transport completing operation: ", desc,
1161
1145
  " write_state=", write_state_name(t->write_state), " refs=",
1162
1146
  closure->next_data.scratch / CLOSURE_BARRIER_FIRST_REF_BIT, " flags=",
1163
1147
  closure->next_data.scratch % CLOSURE_BARRIER_FIRST_REF_BIT));
1164
- cl_err = grpc_error_set_str(cl_err, GRPC_ERROR_STR_TARGET_ADDRESS,
1165
- t->peer_string);
1148
+ cl_err = grpc_error_set_str(
1149
+ cl_err, grpc_core::StatusStrProperty::kTargetAddress, t->peer_string);
1166
1150
  }
1167
1151
  cl_err = grpc_error_add_child(cl_err, error);
1168
1152
  closure->error_data.error = grpc_core::internal::StatusAllocHeapPtr(cl_err);
@@ -1189,6 +1173,7 @@ static bool contains_non_ok_status(grpc_metadata_batch* batch) {
1189
1173
 
1190
1174
  static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
1191
1175
  bool is_client, bool is_initial) {
1176
+ gpr_log(GPR_INFO, "--metadata--");
1192
1177
  const std::string prefix = absl::StrCat(
1193
1178
  "HTTP:", id, is_initial ? ":HDR" : ":TRL", is_client ? ":CLI:" : ":SVR:");
1194
1179
  md_batch->Log([&prefix](absl::string_view key, absl::string_view value) {
@@ -1256,7 +1241,7 @@ static void perform_stream_op_locked(void* stream_op,
1256
1241
  }
1257
1242
  if (!s->write_closed) {
1258
1243
  if (t->is_client) {
1259
- if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
1244
+ if (t->closed_with_error.ok()) {
1260
1245
  GPR_ASSERT(s->id == 0);
1261
1246
  grpc_chttp2_list_add_waiting_for_concurrency(t, s);
1262
1247
  maybe_start_some_streams(t);
@@ -1267,9 +1252,10 @@ static void perform_stream_op_locked(void* stream_op,
1267
1252
  grpc_chttp2_cancel_stream(
1268
1253
  t, s,
1269
1254
  grpc_error_set_int(
1270
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1271
- "Transport closed", &t->closed_with_error, 1),
1272
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
1255
+ GRPC_ERROR_CREATE_REFERENCING("Transport closed",
1256
+ &t->closed_with_error, 1),
1257
+ grpc_core::StatusIntProperty::kRpcStatus,
1258
+ GRPC_STATUS_UNAVAILABLE));
1273
1259
  }
1274
1260
  } else {
1275
1261
  GPR_ASSERT(s->id != 0);
@@ -1284,7 +1270,7 @@ static void perform_stream_op_locked(void* stream_op,
1284
1270
  s->send_initial_metadata = nullptr;
1285
1271
  grpc_chttp2_complete_closure_step(
1286
1272
  t, s, &s->send_initial_metadata_finished,
1287
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1273
+ GRPC_ERROR_CREATE_REFERENCING(
1288
1274
  "Attempt to send initial metadata after stream was closed",
1289
1275
  &s->write_closed_error, 1),
1290
1276
  "send_initial_metadata_finished");
@@ -1297,7 +1283,7 @@ static void perform_stream_op_locked(void* stream_op,
1297
1283
 
1298
1284
  if (op->send_message) {
1299
1285
  t->num_messages_in_next_write++;
1300
- GRPC_STATS_INC_HTTP2_SEND_MESSAGE_SIZE(
1286
+ grpc_core::global_stats().IncrementHttp2SendMessageSize(
1301
1287
  op->payload->send_message.send_message->Length());
1302
1288
  on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
1303
1289
  s->send_message_finished = add_closure_barrier(op->on_complete);
@@ -1308,7 +1294,7 @@ static void perform_stream_op_locked(void* stream_op,
1308
1294
  // started. The surface layer will notice that the stream has been closed
1309
1295
  // for writes and fail the send message op.
1310
1296
  grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished,
1311
- GRPC_ERROR_NONE,
1297
+ absl::OkStatus(),
1312
1298
  "fetching_send_message_finished");
1313
1299
  } else {
1314
1300
  uint8_t* frame_hdr = grpc_slice_buffer_tiny_add(
@@ -1337,13 +1323,13 @@ static void perform_stream_op_locked(void* stream_op,
1337
1323
  slices + op_payload->send_message.send_message->Count();
1338
1324
  for (grpc_slice* slice = slices; slice != end; slice++) {
1339
1325
  grpc_slice_buffer_add(&s->flow_controlled_buffer,
1340
- grpc_slice_ref_internal(*slice));
1326
+ grpc_core::CSliceRef(*slice));
1341
1327
  }
1342
1328
 
1343
1329
  int64_t notify_offset = s->next_message_end_offset;
1344
1330
  if (notify_offset <= s->flow_controlled_bytes_written) {
1345
1331
  grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished,
1346
- GRPC_ERROR_NONE,
1332
+ absl::OkStatus(),
1347
1333
  "fetching_send_message_finished");
1348
1334
  } else {
1349
1335
  grpc_chttp2_write_cb* cb = t->write_cb_pool;
@@ -1388,10 +1374,9 @@ static void perform_stream_op_locked(void* stream_op,
1388
1374
  grpc_chttp2_complete_closure_step(
1389
1375
  t, s, &s->send_trailing_metadata_finished,
1390
1376
  op->payload->send_trailing_metadata.send_trailing_metadata->empty()
1391
- ? GRPC_ERROR_NONE
1392
- : GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1393
- "Attempt to send trailing metadata after "
1394
- "stream was closed"),
1377
+ ? absl::OkStatus()
1378
+ : GRPC_ERROR_CREATE("Attempt to send trailing metadata after "
1379
+ "stream was closed"),
1395
1380
  "send_trailing_metadata_finished");
1396
1381
  } else if (s->id != 0) {
1397
1382
  // TODO(ctiller): check if there's flow control for any outstanding
@@ -1410,6 +1395,9 @@ static void perform_stream_op_locked(void* stream_op,
1410
1395
  op_payload->recv_initial_metadata.recv_initial_metadata;
1411
1396
  s->trailing_metadata_available =
1412
1397
  op_payload->recv_initial_metadata.trailing_metadata_available;
1398
+ if (s->parsed_trailers_only && s->trailing_metadata_available != nullptr) {
1399
+ *s->trailing_metadata_available = true;
1400
+ }
1413
1401
  if (op_payload->recv_initial_metadata.peer_string != nullptr) {
1414
1402
  gpr_atm_rel_store(op_payload->recv_initial_metadata.peer_string,
1415
1403
  (gpr_atm)t->peer_string.c_str());
@@ -1441,7 +1429,7 @@ static void perform_stream_op_locked(void* stream_op,
1441
1429
  }
1442
1430
 
1443
1431
  if (on_complete != nullptr) {
1444
- grpc_chttp2_complete_closure_step(t, s, &on_complete, GRPC_ERROR_NONE,
1432
+ grpc_chttp2_complete_closure_step(t, s, &on_complete, absl::OkStatus(),
1445
1433
  "op->on_complete");
1446
1434
  }
1447
1435
 
@@ -1475,49 +1463,46 @@ static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1475
1463
  op->handler_private.extra_arg = gs;
1476
1464
  t->combiner->Run(GRPC_CLOSURE_INIT(&op->handler_private.closure,
1477
1465
  perform_stream_op_locked, op, nullptr),
1478
- GRPC_ERROR_NONE);
1466
+ absl::OkStatus());
1479
1467
  }
1480
1468
 
1481
1469
  static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
1482
1470
  // callback remaining pings: they're not allowed to call into the transport,
1483
1471
  // and maybe they hold resources that need to be freed
1484
1472
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1485
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
1473
+ GPR_ASSERT(!error.ok());
1486
1474
  for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
1487
- grpc_closure_list_fail_all(&pq->lists[j], GRPC_ERROR_REF(error));
1475
+ grpc_closure_list_fail_all(&pq->lists[j], error);
1488
1476
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &pq->lists[j]);
1489
1477
  }
1490
- GRPC_ERROR_UNREF(error);
1491
1478
  }
1492
1479
 
1493
1480
  static void send_ping_locked(grpc_chttp2_transport* t,
1494
1481
  grpc_closure* on_initiate, grpc_closure* on_ack) {
1495
- if (!GRPC_ERROR_IS_NONE(t->closed_with_error)) {
1496
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_initiate,
1497
- GRPC_ERROR_REF(t->closed_with_error));
1498
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_ack,
1499
- GRPC_ERROR_REF(t->closed_with_error));
1482
+ if (!t->closed_with_error.ok()) {
1483
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_initiate, t->closed_with_error);
1484
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_ack, t->closed_with_error);
1500
1485
  return;
1501
1486
  }
1502
1487
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
1503
1488
  grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_INITIATE], on_initiate,
1504
- GRPC_ERROR_NONE);
1489
+ absl::OkStatus());
1505
1490
  grpc_closure_list_append(&pq->lists[GRPC_CHTTP2_PCL_NEXT], on_ack,
1506
- GRPC_ERROR_NONE);
1491
+ absl::OkStatus());
1507
1492
  }
1508
1493
 
1509
1494
  // Specialized form of send_ping_locked for keepalive ping. If there is already
1510
1495
  // a ping in progress, the keepalive ping would piggyback onto that ping,
1511
1496
  // instead of waiting for that ping to complete and then starting a new ping.
1512
1497
  static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1513
- if (!GRPC_ERROR_IS_NONE(t->closed_with_error)) {
1498
+ if (!t->closed_with_error.ok()) {
1514
1499
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
1515
1500
  start_keepalive_ping_locked, t, nullptr),
1516
- GRPC_ERROR_REF(t->closed_with_error));
1501
+ t->closed_with_error);
1517
1502
  t->combiner->Run(
1518
1503
  GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
1519
1504
  finish_keepalive_ping_locked, t, nullptr),
1520
- GRPC_ERROR_REF(t->closed_with_error));
1505
+ t->closed_with_error);
1521
1506
  return;
1522
1507
  }
1523
1508
  grpc_chttp2_ping_queue* pq = &t->ping_queue;
@@ -1525,37 +1510,37 @@ static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
1525
1510
  // There is a ping in flight. Add yourself to the inflight closure list.
1526
1511
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
1527
1512
  start_keepalive_ping_locked, t, nullptr),
1528
- GRPC_ERROR_REF(t->closed_with_error));
1513
+ t->closed_with_error);
1529
1514
  grpc_closure_list_append(
1530
1515
  &pq->lists[GRPC_CHTTP2_PCL_INFLIGHT],
1531
1516
  GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
1532
1517
  finish_keepalive_ping, t, grpc_schedule_on_exec_ctx),
1533
- GRPC_ERROR_NONE);
1518
+ absl::OkStatus());
1534
1519
  return;
1535
1520
  }
1536
1521
  grpc_closure_list_append(
1537
1522
  &pq->lists[GRPC_CHTTP2_PCL_INITIATE],
1538
1523
  GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked, start_keepalive_ping,
1539
1524
  t, grpc_schedule_on_exec_ctx),
1540
- GRPC_ERROR_NONE);
1525
+ absl::OkStatus());
1541
1526
  grpc_closure_list_append(
1542
1527
  &pq->lists[GRPC_CHTTP2_PCL_NEXT],
1543
1528
  GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked, finish_keepalive_ping,
1544
1529
  t, grpc_schedule_on_exec_ctx),
1545
- GRPC_ERROR_NONE);
1530
+ absl::OkStatus());
1546
1531
  }
1547
1532
 
1548
1533
  void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
1549
1534
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1550
1535
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->retry_initiate_ping_locked,
1551
1536
  retry_initiate_ping_locked, t, nullptr),
1552
- GRPC_ERROR_REF(error));
1537
+ error);
1553
1538
  }
1554
1539
 
1555
1540
  static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
1556
1541
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
1557
1542
  t->ping_state.is_delayed_ping_timer_set = false;
1558
- if (GRPC_ERROR_IS_NONE(error)) {
1543
+ if (error.ok()) {
1559
1544
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING);
1560
1545
  }
1561
1546
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "retry_initiate_ping_locked");
@@ -1611,7 +1596,7 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1611
1596
  // We already sent the final GOAWAY.
1612
1597
  return;
1613
1598
  }
1614
- if (t_->destroying || !GRPC_ERROR_IS_NONE(t_->closed_with_error)) {
1599
+ if (t_->destroying || !t_->closed_with_error.ok()) {
1615
1600
  GRPC_CHTTP2_IF_TRACING(gpr_log(
1616
1601
  GPR_INFO,
1617
1602
  "transport:%p %s peer:%s Transport already shutting down. "
@@ -1636,7 +1621,7 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1636
1621
  auto* self = static_cast<GracefulGoaway*>(arg);
1637
1622
  self->t_->combiner->Run(
1638
1623
  GRPC_CLOSURE_INIT(&self->on_ping_ack_, OnPingAckLocked, self, nullptr),
1639
- GRPC_ERROR_NONE);
1624
+ absl::OkStatus());
1640
1625
  }
1641
1626
 
1642
1627
  static void OnPingAckLocked(void* arg, grpc_error_handle /* error */) {
@@ -1648,13 +1633,13 @@ class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
1648
1633
 
1649
1634
  static void OnTimer(void* arg, grpc_error_handle error) {
1650
1635
  auto* self = static_cast<GracefulGoaway*>(arg);
1651
- if (!GRPC_ERROR_IS_NONE(error)) {
1636
+ if (!error.ok()) {
1652
1637
  self->Unref();
1653
1638
  return;
1654
1639
  }
1655
1640
  self->t_->combiner->Run(
1656
1641
  GRPC_CLOSURE_INIT(&self->on_timer_, OnTimerLocked, self, nullptr),
1657
- GRPC_ERROR_NONE);
1642
+ absl::OkStatus());
1658
1643
  }
1659
1644
 
1660
1645
  static void OnTimerLocked(void* arg, grpc_error_handle /* error */) {
@@ -1689,7 +1674,7 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
1689
1674
  t->sent_goaway_state == GRPC_CHTTP2_GRACEFUL_GOAWAY) {
1690
1675
  // We want to log this irrespective of whether http tracing is enabled
1691
1676
  gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s", t->peer_string.c_str(),
1692
- grpc_error_std_string(error).c_str());
1677
+ grpc_core::StatusToString(error).c_str());
1693
1678
  t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
1694
1679
  grpc_chttp2_goaway_append(
1695
1680
  t->last_new_stream_id, static_cast<uint32_t>(http_error),
@@ -1698,22 +1683,21 @@ static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
1698
1683
  // Final GOAWAY has already been sent.
1699
1684
  }
1700
1685
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
1701
- GRPC_ERROR_UNREF(error);
1702
1686
  }
1703
1687
 
1704
1688
  void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
1705
1689
  if (++t->ping_recv_state.ping_strikes > t->ping_policy.max_ping_strikes &&
1706
1690
  t->ping_policy.max_ping_strikes != 0) {
1707
1691
  send_goaway(t,
1708
- grpc_error_set_int(
1709
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
1710
- GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM),
1692
+ grpc_error_set_int(GRPC_ERROR_CREATE("too_many_pings"),
1693
+ grpc_core::StatusIntProperty::kHttp2Error,
1694
+ GRPC_HTTP2_ENHANCE_YOUR_CALM),
1711
1695
  /*immediate_disconnect_hint=*/true);
1712
1696
  // The transport will be closed after the write is done
1713
1697
  close_transport_locked(
1714
- t, grpc_error_set_int(
1715
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many pings"),
1716
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
1698
+ t, grpc_error_set_int(GRPC_ERROR_CREATE("Too many pings"),
1699
+ grpc_core::StatusIntProperty::kRpcStatus,
1700
+ GRPC_STATUS_UNAVAILABLE));
1717
1701
  }
1718
1702
  }
1719
1703
 
@@ -1732,7 +1716,7 @@ static void perform_transport_op_locked(void* stream_op,
1732
1716
  grpc_chttp2_transport* t =
1733
1717
  static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
1734
1718
 
1735
- if (!GRPC_ERROR_IS_NONE(op->goaway_error)) {
1719
+ if (!op->goaway_error.ok()) {
1736
1720
  send_goaway(t, op->goaway_error, /*immediate_disconnect_hint=*/false);
1737
1721
  }
1738
1722
 
@@ -1762,13 +1746,13 @@ static void perform_transport_op_locked(void* stream_op,
1762
1746
  t->state_tracker.RemoveWatcher(op->stop_connectivity_watch);
1763
1747
  }
1764
1748
 
1765
- if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
1766
- send_goaway(t, GRPC_ERROR_REF(op->disconnect_with_error),
1749
+ if (!op->disconnect_with_error.ok()) {
1750
+ send_goaway(t, op->disconnect_with_error,
1767
1751
  /*immediate_disconnect_hint=*/true);
1768
1752
  close_transport_locked(t, op->disconnect_with_error);
1769
1753
  }
1770
1754
 
1771
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, GRPC_ERROR_NONE);
1755
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus());
1772
1756
 
1773
1757
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "transport_op");
1774
1758
  }
@@ -1783,7 +1767,7 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1783
1767
  GRPC_CHTTP2_REF_TRANSPORT(t, "transport_op");
1784
1768
  t->combiner->Run(GRPC_CLOSURE_INIT(&op->handler_private.closure,
1785
1769
  perform_transport_op_locked, op, nullptr),
1786
- GRPC_ERROR_NONE);
1770
+ absl::OkStatus());
1787
1771
  }
1788
1772
 
1789
1773
  //
@@ -1795,7 +1779,7 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport* t,
1795
1779
  if (s->recv_initial_metadata_ready != nullptr &&
1796
1780
  s->published_metadata[0] != GRPC_METADATA_NOT_PUBLISHED) {
1797
1781
  if (s->seen_error) {
1798
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
1782
+ grpc_slice_buffer_reset_and_unref(&s->frame_storage);
1799
1783
  }
1800
1784
  *s->recv_initial_metadata = std::move(s->initial_metadata_buffer);
1801
1785
  s->recv_initial_metadata->Set(grpc_core::PeerString(), t->peer_string);
@@ -1818,24 +1802,24 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
1818
1802
 
1819
1803
  grpc_core::chttp2::StreamFlowControl::IncomingUpdateContext upd(
1820
1804
  &s->flow_control);
1821
- grpc_error_handle error = GRPC_ERROR_NONE;
1805
+ grpc_error_handle error;
1822
1806
 
1823
1807
  // Lambda is immediately invoked as a big scoped section that can be
1824
1808
  // exited out of at any point by returning.
1825
1809
  [&]() {
1826
1810
  if (s->final_metadata_requested && s->seen_error) {
1827
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
1811
+ grpc_slice_buffer_reset_and_unref(&s->frame_storage);
1828
1812
  s->recv_message->reset();
1829
1813
  } else {
1830
1814
  if (s->frame_storage.length != 0) {
1831
1815
  while (true) {
1832
1816
  GPR_ASSERT(s->frame_storage.length > 0);
1833
- uint32_t min_progress_size;
1817
+ int64_t min_progress_size;
1834
1818
  auto r = grpc_deframe_unprocessed_incoming_frames(
1835
1819
  s, &min_progress_size, &**s->recv_message, s->recv_message_flags);
1836
1820
  if (absl::holds_alternative<grpc_core::Pending>(r)) {
1837
1821
  if (s->read_closed) {
1838
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
1822
+ grpc_slice_buffer_reset_and_unref(&s->frame_storage);
1839
1823
  s->recv_message->reset();
1840
1824
  break;
1841
1825
  } else {
@@ -1844,9 +1828,9 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
1844
1828
  }
1845
1829
  } else {
1846
1830
  error = absl::get<grpc_error_handle>(r);
1847
- if (!GRPC_ERROR_IS_NONE(error)) {
1831
+ if (!error.ok()) {
1848
1832
  s->seen_error = true;
1849
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
1833
+ grpc_slice_buffer_reset_and_unref(&s->frame_storage);
1850
1834
  break;
1851
1835
  } else {
1852
1836
  if (t->channelz_socket != nullptr) {
@@ -1865,7 +1849,7 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
1865
1849
  }
1866
1850
  // save the length of the buffer before handing control back to application
1867
1851
  // threads. Needed to support correct flow control bookkeeping
1868
- if (GRPC_ERROR_IS_NONE(error) && s->recv_message->has_value()) {
1852
+ if (error.ok() && s->recv_message->has_value()) {
1869
1853
  null_then_sched_closure(&s->recv_message_ready);
1870
1854
  } else if (s->published_metadata[1] != GRPC_METADATA_NOT_PUBLISHED) {
1871
1855
  if (s->call_failed_before_recv_message != nullptr) {
@@ -1874,7 +1858,6 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
1874
1858
  }
1875
1859
  null_then_sched_closure(&s->recv_message_ready);
1876
1860
  }
1877
- GRPC_ERROR_UNREF(error);
1878
1861
  }();
1879
1862
 
1880
1863
  upd.SetPendingSize(s->frame_storage.length);
@@ -1887,7 +1870,7 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
1887
1870
  if (s->recv_trailing_metadata_finished != nullptr && s->read_closed &&
1888
1871
  s->write_closed) {
1889
1872
  if (s->seen_error || !t->is_client) {
1890
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
1873
+ grpc_slice_buffer_reset_and_unref(&s->frame_storage);
1891
1874
  }
1892
1875
  if (s->read_closed && s->frame_storage.length == 0 &&
1893
1876
  s->recv_trailing_metadata_finished != nullptr) {
@@ -1914,7 +1897,7 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
1914
1897
  post_benign_reclaimer(t);
1915
1898
  if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SENT) {
1916
1899
  close_transport_locked(
1917
- t, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1900
+ t, GRPC_ERROR_CREATE_REFERENCING(
1918
1901
  "Last stream closed after sending GOAWAY", &error, 1));
1919
1902
  }
1920
1903
  }
@@ -1924,8 +1907,6 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
1924
1907
  grpc_chttp2_list_remove_stalled_by_stream(t, s);
1925
1908
  grpc_chttp2_list_remove_stalled_by_transport(t, s);
1926
1909
 
1927
- GRPC_ERROR_UNREF(error);
1928
-
1929
1910
  maybe_start_some_streams(t);
1930
1911
  }
1931
1912
 
@@ -1947,7 +1928,7 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
1947
1928
  grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM);
1948
1929
  }
1949
1930
  }
1950
- if (!GRPC_ERROR_IS_NONE(due_to_error) && !s->seen_error) {
1931
+ if (!due_to_error.ok() && !s->seen_error) {
1951
1932
  s->seen_error = true;
1952
1933
  }
1953
1934
  grpc_chttp2_mark_stream_closed(t, s, 1, 1, due_to_error);
@@ -1979,13 +1960,11 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
1979
1960
  s->published_metadata[1] = GRPC_METADATA_SYNTHESIZED_FROM_FAKE;
1980
1961
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
1981
1962
  }
1982
-
1983
- GRPC_ERROR_UNREF(error);
1984
1963
  }
1985
1964
 
1986
1965
  static void add_error(grpc_error_handle error, grpc_error_handle* refs,
1987
1966
  size_t* nrefs) {
1988
- if (GRPC_ERROR_IS_NONE(error)) return;
1967
+ if (error.ok()) return;
1989
1968
  for (size_t i = 0; i < *nrefs; i++) {
1990
1969
  if (error == refs[i]) {
1991
1970
  return;
@@ -2003,12 +1982,10 @@ static grpc_error_handle removal_error(grpc_error_handle extra_error,
2003
1982
  add_error(s->read_closed_error, refs, &nrefs);
2004
1983
  add_error(s->write_closed_error, refs, &nrefs);
2005
1984
  add_error(extra_error, refs, &nrefs);
2006
- grpc_error_handle error = GRPC_ERROR_NONE;
1985
+ grpc_error_handle error;
2007
1986
  if (nrefs > 0) {
2008
- error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(main_error_msg,
2009
- refs, nrefs);
1987
+ error = GRPC_ERROR_CREATE_REFERENCING(main_error_msg, refs, nrefs);
2010
1988
  }
2011
- GRPC_ERROR_UNREF(extra_error);
2012
1989
  return error;
2013
1990
  }
2014
1991
 
@@ -2018,12 +1995,11 @@ static void flush_write_list(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2018
1995
  while (*list) {
2019
1996
  grpc_chttp2_write_cb* cb = *list;
2020
1997
  *list = cb->next;
2021
- grpc_chttp2_complete_closure_step(t, s, &cb->closure, GRPC_ERROR_REF(error),
1998
+ grpc_chttp2_complete_closure_step(t, s, &cb->closure, error,
2022
1999
  "on_write_finished_cb");
2023
2000
  cb->next = t->write_cb_pool;
2024
2001
  t->write_cb_pool = cb;
2025
2002
  }
2026
- GRPC_ERROR_UNREF(error);
2027
2003
  }
2028
2004
 
2029
2005
  void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
@@ -2033,19 +2009,16 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2033
2009
  removal_error(error, s, "Pending writes failed due to stream closure");
2034
2010
  s->send_initial_metadata = nullptr;
2035
2011
  grpc_chttp2_complete_closure_step(t, s, &s->send_initial_metadata_finished,
2036
- GRPC_ERROR_REF(error),
2037
- "send_initial_metadata_finished");
2012
+ error, "send_initial_metadata_finished");
2038
2013
 
2039
2014
  s->send_trailing_metadata = nullptr;
2040
2015
  s->sent_trailing_metadata_op = nullptr;
2041
2016
  grpc_chttp2_complete_closure_step(t, s, &s->send_trailing_metadata_finished,
2042
- GRPC_ERROR_REF(error),
2043
- "send_trailing_metadata_finished");
2017
+ error, "send_trailing_metadata_finished");
2044
2018
 
2045
- grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished,
2046
- GRPC_ERROR_REF(error),
2019
+ grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished, error,
2047
2020
  "fetching_send_message_finished");
2048
- flush_write_list(t, s, &s->on_write_finished_cbs, GRPC_ERROR_REF(error));
2021
+ flush_write_list(t, s, &s->on_write_finished_cbs, error);
2049
2022
  flush_write_list(t, s, &s->on_flow_controlled_cbs, error);
2050
2023
  }
2051
2024
 
@@ -2055,7 +2028,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2055
2028
  if (s->read_closed && s->write_closed) {
2056
2029
  // already closed, but we should still fake the status if needed.
2057
2030
  grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
2058
- if (!GRPC_ERROR_IS_NONE(overall_error)) {
2031
+ if (!overall_error.ok()) {
2059
2032
  grpc_chttp2_fake_status(t, s, overall_error);
2060
2033
  }
2061
2034
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
@@ -2064,26 +2037,25 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2064
2037
  bool closed_read = false;
2065
2038
  bool became_closed = false;
2066
2039
  if (close_reads && !s->read_closed) {
2067
- s->read_closed_error = GRPC_ERROR_REF(error);
2040
+ s->read_closed_error = error;
2068
2041
  s->read_closed = true;
2069
2042
  closed_read = true;
2070
2043
  }
2071
2044
  if (close_writes && !s->write_closed) {
2072
- s->write_closed_error = GRPC_ERROR_REF(error);
2045
+ s->write_closed_error = error;
2073
2046
  s->write_closed = true;
2074
- grpc_chttp2_fail_pending_writes(t, s, GRPC_ERROR_REF(error));
2047
+ grpc_chttp2_fail_pending_writes(t, s, error);
2075
2048
  }
2076
2049
  if (s->read_closed && s->write_closed) {
2077
2050
  became_closed = true;
2078
- grpc_error_handle overall_error =
2079
- removal_error(GRPC_ERROR_REF(error), s, "Stream removed");
2051
+ grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
2080
2052
  if (s->id != 0) {
2081
- remove_stream(t, s->id, GRPC_ERROR_REF(overall_error));
2053
+ remove_stream(t, s->id, overall_error);
2082
2054
  } else {
2083
2055
  // Purge streams waiting on concurrency still waiting for id assignment
2084
2056
  grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
2085
2057
  }
2086
- if (!GRPC_ERROR_IS_NONE(overall_error)) {
2058
+ if (!overall_error.ok()) {
2087
2059
  grpc_chttp2_fake_status(t, s, overall_error);
2088
2060
  }
2089
2061
  }
@@ -2100,7 +2072,6 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2100
2072
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
2101
2073
  GRPC_CHTTP2_STREAM_UNREF(s, "chttp2");
2102
2074
  }
2103
- GRPC_ERROR_UNREF(error);
2104
2075
  }
2105
2076
 
2106
2077
  static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
@@ -2209,7 +2180,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2209
2180
 
2210
2181
  size_t msg_len = message.length();
2211
2182
  GPR_ASSERT(msg_len <= UINT32_MAX);
2212
- grpc_core::VarintWriter<1> msg_len_writer(msg_len);
2183
+ grpc_core::VarintWriter<1> msg_len_writer(static_cast<uint32_t>(msg_len));
2213
2184
  message_pfx = GRPC_SLICE_MALLOC(14 + msg_len_writer.length());
2214
2185
  p = GRPC_SLICE_START_PTR(message_pfx);
2215
2186
  *p++ = 0x00; /* literal header, not indexed */
@@ -2270,7 +2241,7 @@ struct cancel_stream_cb_args {
2270
2241
  static void cancel_stream_cb(void* user_data, uint32_t /*key*/, void* stream) {
2271
2242
  cancel_stream_cb_args* args = static_cast<cancel_stream_cb_args*>(user_data);
2272
2243
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(stream);
2273
- grpc_chttp2_cancel_stream(args->t, s, GRPC_ERROR_REF(args->error));
2244
+ grpc_chttp2_cancel_stream(args->t, s, args->error);
2274
2245
  }
2275
2246
 
2276
2247
  static void end_all_the_calls(grpc_chttp2_transport* t,
@@ -2278,14 +2249,14 @@ static void end_all_the_calls(grpc_chttp2_transport* t,
2278
2249
  intptr_t http2_error;
2279
2250
  // If there is no explicit grpc or HTTP/2 error, set to UNAVAILABLE on server.
2280
2251
  if (!t->is_client && !grpc_error_has_clear_grpc_status(error) &&
2281
- !grpc_error_get_int(error, GRPC_ERROR_INT_HTTP2_ERROR, &http2_error)) {
2282
- error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS,
2252
+ !grpc_error_get_int(error, grpc_core::StatusIntProperty::kHttp2Error,
2253
+ &http2_error)) {
2254
+ error = grpc_error_set_int(error, grpc_core::StatusIntProperty::kRpcStatus,
2283
2255
  GRPC_STATUS_UNAVAILABLE);
2284
2256
  }
2285
- cancel_unstarted_streams(t, GRPC_ERROR_REF(error));
2257
+ cancel_unstarted_streams(t, error);
2286
2258
  cancel_stream_cb_args args = {error, t};
2287
2259
  grpc_chttp2_stream_map_for_each(&t->stream_map, cancel_stream_cb, &args);
2288
- GRPC_ERROR_UNREF(error);
2289
2260
  }
2290
2261
 
2291
2262
  //
@@ -2335,26 +2306,25 @@ void grpc_chttp2_act_on_flowctl_action(
2335
2306
  static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
2336
2307
  grpc_http_parser parser;
2337
2308
  size_t i = 0;
2338
- grpc_error_handle error = GRPC_ERROR_NONE;
2309
+ grpc_error_handle error;
2339
2310
  grpc_http_response response;
2340
2311
 
2341
2312
  grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
2342
2313
 
2343
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
2344
- for (; i < t->read_buffer.count && GRPC_ERROR_IS_NONE(parse_error); i++) {
2314
+ grpc_error_handle parse_error;
2315
+ for (; i < t->read_buffer.count && parse_error.ok(); i++) {
2345
2316
  parse_error =
2346
2317
  grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
2347
2318
  }
2348
- if (GRPC_ERROR_IS_NONE(parse_error) &&
2349
- (parse_error = grpc_http_parser_eof(&parser)) == GRPC_ERROR_NONE) {
2319
+ if (parse_error.ok() &&
2320
+ (parse_error = grpc_http_parser_eof(&parser)) == absl::OkStatus()) {
2350
2321
  error = grpc_error_set_int(
2351
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
2352
- "Trying to connect an http1.x server"),
2353
- GRPC_ERROR_INT_HTTP_STATUS, response.status),
2354
- GRPC_ERROR_INT_GRPC_STATUS,
2322
+ grpc_error_set_int(
2323
+ GRPC_ERROR_CREATE("Trying to connect an http1.x server"),
2324
+ grpc_core::StatusIntProperty::kHttpStatus, response.status),
2325
+ grpc_core::StatusIntProperty::kRpcStatus,
2355
2326
  grpc_http2_status_to_grpc_status(response.status));
2356
2327
  }
2357
- GRPC_ERROR_UNREF(parse_error);
2358
2328
 
2359
2329
  grpc_http_parser_destroy(&parser);
2360
2330
  grpc_http_response_destroy(&response);
@@ -2365,38 +2335,31 @@ static void read_action(void* tp, grpc_error_handle error) {
2365
2335
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2366
2336
  t->combiner->Run(
2367
2337
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
2368
- GRPC_ERROR_REF(error));
2338
+ error);
2369
2339
  }
2370
2340
 
2371
2341
  static void read_action_locked(void* tp, grpc_error_handle error) {
2372
2342
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2373
2343
 
2374
- (void)GRPC_ERROR_REF(error);
2375
-
2376
2344
  grpc_error_handle err = error;
2377
- if (!GRPC_ERROR_IS_NONE(err)) {
2378
- err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2379
- "Endpoint read failed", &err, 1),
2380
- GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
2381
- t->write_state);
2345
+ if (!err.ok()) {
2346
+ err = grpc_error_set_int(
2347
+ GRPC_ERROR_CREATE_REFERENCING("Endpoint read failed", &err, 1),
2348
+ grpc_core::StatusIntProperty::kOccurredDuringWrite, t->write_state);
2382
2349
  }
2383
2350
  std::swap(err, error);
2384
- GRPC_ERROR_UNREF(err);
2385
- if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
2351
+ if (t->closed_with_error.ok()) {
2386
2352
  size_t i = 0;
2387
- grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
2388
- GRPC_ERROR_NONE};
2389
- for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
2353
+ grpc_error_handle errors[3] = {error, absl::OkStatus(), absl::OkStatus()};
2354
+ for (; i < t->read_buffer.count && errors[1] == absl::OkStatus(); i++) {
2390
2355
  errors[1] = grpc_chttp2_perform_read(t, t->read_buffer.slices[i]);
2391
2356
  }
2392
- if (errors[1] != GRPC_ERROR_NONE) {
2357
+ if (errors[1] != absl::OkStatus()) {
2393
2358
  errors[2] = try_http_parsing(t);
2394
- GRPC_ERROR_UNREF(error);
2395
- error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2396
- "Failed parsing HTTP/2", errors, GPR_ARRAY_SIZE(errors));
2359
+ error = GRPC_ERROR_CREATE_REFERENCING("Failed parsing HTTP/2", errors,
2360
+ GPR_ARRAY_SIZE(errors));
2397
2361
  }
2398
2362
  for (i = 0; i < GPR_ARRAY_SIZE(errors); i++) {
2399
- GRPC_ERROR_UNREF(errors[i]);
2400
2363
  }
2401
2364
 
2402
2365
  if (t->initial_window_update != 0) {
@@ -2413,27 +2376,27 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
2413
2376
  }
2414
2377
 
2415
2378
  bool keep_reading = false;
2416
- if (GRPC_ERROR_IS_NONE(error) && !GRPC_ERROR_IS_NONE(t->closed_with_error)) {
2417
- error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
2418
- "Transport closed", &t->closed_with_error, 1);
2379
+ if (error.ok() && !t->closed_with_error.ok()) {
2380
+ error = GRPC_ERROR_CREATE_REFERENCING("Transport closed",
2381
+ &t->closed_with_error, 1);
2419
2382
  }
2420
- if (!GRPC_ERROR_IS_NONE(error)) {
2383
+ if (!error.ok()) {
2421
2384
  // If a goaway frame was received, this might be the reason why the read
2422
2385
  // failed. Add this info to the error
2423
- if (!GRPC_ERROR_IS_NONE(t->goaway_error)) {
2424
- error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
2386
+ if (!t->goaway_error.ok()) {
2387
+ error = grpc_error_add_child(error, t->goaway_error);
2425
2388
  }
2426
2389
 
2427
- close_transport_locked(t, GRPC_ERROR_REF(error));
2390
+ close_transport_locked(t, error);
2428
2391
  t->endpoint_reading = 0;
2429
- } else if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
2392
+ } else if (t->closed_with_error.ok()) {
2430
2393
  keep_reading = true;
2431
2394
  // Since we have read a byte, reset the keepalive timer
2432
2395
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
2433
2396
  grpc_timer_cancel(&t->keepalive_ping_timer);
2434
2397
  }
2435
2398
  }
2436
- grpc_slice_buffer_reset_and_unref_internal(&t->read_buffer);
2399
+ grpc_slice_buffer_reset_and_unref(&t->read_buffer);
2437
2400
 
2438
2401
  if (keep_reading) {
2439
2402
  if (t->num_pending_induced_frames >= DEFAULT_MAX_PENDING_INDUCED_FRAMES) {
@@ -2449,12 +2412,10 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
2449
2412
  } else {
2450
2413
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "reading_action");
2451
2414
  }
2452
-
2453
- GRPC_ERROR_UNREF(error);
2454
2415
  }
2455
2416
 
2456
2417
  static void continue_read_action_locked(grpc_chttp2_transport* t) {
2457
- const bool urgent = !GRPC_ERROR_IS_NONE(t->goaway_error);
2418
+ const bool urgent = !t->goaway_error.ok();
2458
2419
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action, t,
2459
2420
  grpc_schedule_on_exec_ctx);
2460
2421
  grpc_endpoint_read(t->ep, &t->read_buffer, &t->read_action_locked, urgent,
@@ -2478,16 +2439,16 @@ static void start_bdp_ping(void* tp, grpc_error_handle error) {
2478
2439
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2479
2440
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked,
2480
2441
  start_bdp_ping_locked, t, nullptr),
2481
- GRPC_ERROR_REF(error));
2442
+ error);
2482
2443
  }
2483
2444
 
2484
2445
  static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
2485
2446
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2486
2447
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2487
2448
  gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
2488
- grpc_error_std_string(error).c_str());
2449
+ grpc_core::StatusToString(error).c_str());
2489
2450
  }
2490
- if (!GRPC_ERROR_IS_NONE(error) || !GRPC_ERROR_IS_NONE(t->closed_with_error)) {
2451
+ if (!error.ok() || !t->closed_with_error.ok()) {
2491
2452
  return;
2492
2453
  }
2493
2454
  // Reset the keepalive ping timer
@@ -2502,16 +2463,16 @@ static void finish_bdp_ping(void* tp, grpc_error_handle error) {
2502
2463
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2503
2464
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2504
2465
  finish_bdp_ping_locked, t, nullptr),
2505
- GRPC_ERROR_REF(error));
2466
+ error);
2506
2467
  }
2507
2468
 
2508
2469
  static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2509
2470
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2510
2471
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
2511
2472
  gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
2512
- grpc_error_std_string(error).c_str());
2473
+ grpc_core::StatusToString(error).c_str());
2513
2474
  }
2514
- if (!GRPC_ERROR_IS_NONE(error) || !GRPC_ERROR_IS_NONE(t->closed_with_error)) {
2475
+ if (!error.ok() || !t->closed_with_error.ok()) {
2515
2476
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2516
2477
  return;
2517
2478
  }
@@ -2520,7 +2481,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
2520
2481
  // finish_bdp_ping_locked to be run later.
2521
2482
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_bdp_ping_locked,
2522
2483
  finish_bdp_ping_locked, t, nullptr),
2523
- GRPC_ERROR_REF(error));
2484
+ error);
2524
2485
  return;
2525
2486
  }
2526
2487
  t->bdp_ping_started = false;
@@ -2541,7 +2502,7 @@ static void next_bdp_ping_timer_expired(void* tp, grpc_error_handle error) {
2541
2502
  t->combiner->Run(
2542
2503
  GRPC_CLOSURE_INIT(&t->next_bdp_ping_timer_expired_locked,
2543
2504
  next_bdp_ping_timer_expired_locked, t, nullptr),
2544
- GRPC_ERROR_REF(error));
2505
+ error);
2545
2506
  }
2546
2507
 
2547
2508
  static void next_bdp_ping_timer_expired_locked(void* tp,
@@ -2549,7 +2510,7 @@ static void next_bdp_ping_timer_expired_locked(void* tp,
2549
2510
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
2550
2511
  GPR_ASSERT(t->have_next_bdp_ping_timer);
2551
2512
  t->have_next_bdp_ping_timer = false;
2552
- if (!GRPC_ERROR_IS_NONE(error)) {
2513
+ if (!error.ok()) {
2553
2514
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
2554
2515
  return;
2555
2516
  }
@@ -2625,15 +2586,15 @@ static void init_keepalive_ping(void* arg, grpc_error_handle error) {
2625
2586
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2626
2587
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked,
2627
2588
  init_keepalive_ping_locked, t, nullptr),
2628
- GRPC_ERROR_REF(error));
2589
+ error);
2629
2590
  }
2630
2591
 
2631
2592
  static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2632
2593
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2633
2594
  GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
2634
- if (t->destroying || !GRPC_ERROR_IS_NONE(t->closed_with_error)) {
2595
+ if (t->destroying || !t->closed_with_error.ok()) {
2635
2596
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2636
- } else if (GRPC_ERROR_IS_NONE(error)) {
2597
+ } else if (error.ok()) {
2637
2598
  if (t->keepalive_permit_without_calls ||
2638
2599
  grpc_chttp2_stream_map_size(&t->stream_map) > 0) {
2639
2600
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_PINGING;
@@ -2649,7 +2610,7 @@ static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2649
2610
  grpc_core::Timestamp::Now() + t->keepalive_time,
2650
2611
  &t->init_keepalive_ping_locked);
2651
2612
  }
2652
- } else if (error == GRPC_ERROR_CANCELLED) {
2613
+ } else if (error == absl::CancelledError()) {
2653
2614
  // The keepalive ping timer may be cancelled by bdp
2654
2615
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2655
2616
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
@@ -2670,12 +2631,12 @@ static void start_keepalive_ping(void* arg, grpc_error_handle error) {
2670
2631
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2671
2632
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
2672
2633
  start_keepalive_ping_locked, t, nullptr),
2673
- GRPC_ERROR_REF(error));
2634
+ error);
2674
2635
  }
2675
2636
 
2676
2637
  static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2677
2638
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2678
- if (!GRPC_ERROR_IS_NONE(error)) {
2639
+ if (!error.ok()) {
2679
2640
  return;
2680
2641
  }
2681
2642
  if (t->channelz_socket != nullptr) {
@@ -2698,13 +2659,13 @@ static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
2698
2659
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2699
2660
  t->combiner->Run(GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2700
2661
  finish_keepalive_ping_locked, t, nullptr),
2701
- GRPC_ERROR_REF(error));
2662
+ error);
2702
2663
  }
2703
2664
 
2704
2665
  static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2705
2666
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2706
2667
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2707
- if (GRPC_ERROR_IS_NONE(error)) {
2668
+ if (error.ok()) {
2708
2669
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
2709
2670
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
2710
2671
  gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string.c_str());
@@ -2715,7 +2676,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
2715
2676
  t->combiner->Run(
2716
2677
  GRPC_CLOSURE_INIT(&t->finish_keepalive_ping_locked,
2717
2678
  finish_keepalive_ping_locked, t, nullptr),
2718
- GRPC_ERROR_REF(error));
2679
+ error);
2719
2680
  return;
2720
2681
  }
2721
2682
  t->keepalive_ping_started = false;
@@ -2737,27 +2698,26 @@ static void keepalive_watchdog_fired(void* arg, grpc_error_handle error) {
2737
2698
  t->combiner->Run(
2738
2699
  GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
2739
2700
  keepalive_watchdog_fired_locked, t, nullptr),
2740
- GRPC_ERROR_REF(error));
2701
+ error);
2741
2702
  }
2742
2703
 
2743
2704
  static void keepalive_watchdog_fired_locked(void* arg,
2744
2705
  grpc_error_handle error) {
2745
2706
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2746
2707
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2747
- if (GRPC_ERROR_IS_NONE(error)) {
2708
+ if (error.ok()) {
2748
2709
  gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
2749
2710
  t->peer_string.c_str());
2750
2711
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2751
2712
  close_transport_locked(
2752
- t, grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
2753
- "keepalive watchdog timeout"),
2754
- GRPC_ERROR_INT_GRPC_STATUS,
2713
+ t, grpc_error_set_int(GRPC_ERROR_CREATE("keepalive watchdog timeout"),
2714
+ grpc_core::StatusIntProperty::kRpcStatus,
2755
2715
  GRPC_STATUS_UNAVAILABLE));
2756
2716
  }
2757
2717
  } else {
2758
2718
  // The watchdog timer should have been cancelled by
2759
2719
  // finish_keepalive_ping_locked.
2760
- if (GPR_UNLIKELY(error != GRPC_ERROR_CANCELLED)) {
2720
+ if (GPR_UNLIKELY(error != absl::CancelledError())) {
2761
2721
  gpr_log(GPR_ERROR, "keepalive_ping_end state error: %d (expect: %d)",
2762
2722
  t->keepalive_state, GRPC_CHTTP2_KEEPALIVE_STATE_PINGING);
2763
2723
  }
@@ -2810,7 +2770,7 @@ static void post_benign_reclaimer(grpc_chttp2_transport* t) {
2810
2770
  benign_reclaimer_locked, t,
2811
2771
  grpc_schedule_on_exec_ctx);
2812
2772
  t->active_reclamation = std::move(*sweep);
2813
- t->combiner->Run(&t->benign_reclaimer_locked, GRPC_ERROR_NONE);
2773
+ t->combiner->Run(&t->benign_reclaimer_locked, absl::OkStatus());
2814
2774
  } else {
2815
2775
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
2816
2776
  }
@@ -2830,7 +2790,8 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
2830
2790
  destructive_reclaimer_locked, t,
2831
2791
  grpc_schedule_on_exec_ctx);
2832
2792
  t->active_reclamation = std::move(*sweep);
2833
- t->combiner->Run(&t->destructive_reclaimer_locked, GRPC_ERROR_NONE);
2793
+ t->combiner->Run(&t->destructive_reclaimer_locked,
2794
+ absl::OkStatus());
2834
2795
  } else {
2835
2796
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
2836
2797
  }
@@ -2840,8 +2801,7 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
2840
2801
 
2841
2802
  static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
2842
2803
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2843
- if (GRPC_ERROR_IS_NONE(error) &&
2844
- grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
2804
+ if (error.ok() && grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
2845
2805
  // Channel with no active streams: send a goaway to try and make it
2846
2806
  // disconnect cleanly
2847
2807
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
@@ -2849,12 +2809,11 @@ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
2849
2809
  t->peer_string.c_str());
2850
2810
  }
2851
2811
  send_goaway(t,
2852
- grpc_error_set_int(
2853
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Buffers full"),
2854
- GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM),
2812
+ grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
2813
+ grpc_core::StatusIntProperty::kHttp2Error,
2814
+ GRPC_HTTP2_ENHANCE_YOUR_CALM),
2855
2815
  /*immediate_disconnect_hint=*/true);
2856
- } else if (GRPC_ERROR_IS_NONE(error) &&
2857
- GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
2816
+ } else if (error.ok() && GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
2858
2817
  gpr_log(GPR_INFO,
2859
2818
  "HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
2860
2819
  " streams",
@@ -2862,7 +2821,7 @@ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
2862
2821
  grpc_chttp2_stream_map_size(&t->stream_map));
2863
2822
  }
2864
2823
  t->benign_reclaimer_registered = false;
2865
- if (error != GRPC_ERROR_CANCELLED) {
2824
+ if (error != absl::CancelledError()) {
2866
2825
  t->active_reclamation.Finish();
2867
2826
  }
2868
2827
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "benign_reclaimer");
@@ -2872,7 +2831,7 @@ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
2872
2831
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2873
2832
  size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
2874
2833
  t->destructive_reclaimer_registered = false;
2875
- if (GRPC_ERROR_IS_NONE(error) && n > 0) {
2834
+ if (error.ok() && n > 0) {
2876
2835
  grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
2877
2836
  grpc_chttp2_stream_map_rand(&t->stream_map));
2878
2837
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
@@ -2881,8 +2840,8 @@ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
2881
2840
  }
2882
2841
  grpc_chttp2_cancel_stream(
2883
2842
  t, s,
2884
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Buffers full"),
2885
- GRPC_ERROR_INT_HTTP2_ERROR,
2843
+ grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
2844
+ grpc_core::StatusIntProperty::kHttp2Error,
2886
2845
  GRPC_HTTP2_ENHANCE_YOUR_CALM));
2887
2846
  if (n > 1) {
2888
2847
  // Since we cancel one stream per destructive reclamation, if
@@ -2892,7 +2851,7 @@ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
2892
2851
  post_destructive_reclaimer(t);
2893
2852
  }
2894
2853
  }
2895
- if (error != GRPC_ERROR_CANCELLED) {
2854
+ if (error != absl::CancelledError()) {
2896
2855
  t->active_reclamation.Finish();
2897
2856
  }
2898
2857
  GRPC_CHTTP2_UNREF_TRANSPORT(t, "destructive_reclaimer");
@@ -3000,5 +2959,5 @@ void grpc_chttp2_transport_start_reading(
3000
2959
  t->notify_on_close = notify_on_close;
3001
2960
  t->combiner->Run(
3002
2961
  GRPC_CLOSURE_INIT(&t->read_action_locked, read_action_locked, t, nullptr),
3003
- GRPC_ERROR_NONE);
2962
+ absl::OkStatus());
3004
2963
  }