grpc 1.50.0 → 1.52.0.pre2

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 (1009) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +206 -49
  3. data/include/grpc/byte_buffer.h +76 -1
  4. data/include/grpc/byte_buffer_reader.h +19 -1
  5. data/include/grpc/compression.h +2 -2
  6. data/include/grpc/event_engine/event_engine.h +27 -6
  7. data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
  8. data/include/grpc/event_engine/internal/slice_cast.h +67 -0
  9. data/include/grpc/event_engine/memory_allocator.h +1 -1
  10. data/include/grpc/event_engine/slice.h +24 -4
  11. data/include/grpc/event_engine/slice_buffer.h +31 -2
  12. data/include/grpc/fork.h +25 -1
  13. data/include/grpc/grpc.h +3 -13
  14. data/include/grpc/grpc_posix.h +1 -1
  15. data/include/grpc/impl/codegen/atm.h +3 -71
  16. data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -58
  17. data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -59
  18. data/include/grpc/impl/codegen/atm_windows.h +3 -106
  19. data/include/grpc/impl/codegen/byte_buffer.h +4 -78
  20. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
  21. data/include/grpc/impl/codegen/compression_types.h +3 -82
  22. data/include/grpc/impl/codegen/connectivity_state.h +3 -20
  23. data/include/grpc/impl/codegen/fork.h +4 -25
  24. data/include/grpc/impl/codegen/gpr_types.h +2 -34
  25. data/include/grpc/impl/codegen/grpc_types.h +3 -791
  26. data/include/grpc/impl/codegen/log.h +3 -86
  27. data/include/grpc/impl/codegen/port_platform.h +3 -758
  28. data/include/grpc/impl/codegen/propagation_bits.h +3 -28
  29. data/include/grpc/impl/codegen/slice.h +3 -106
  30. data/include/grpc/impl/codegen/status.h +4 -131
  31. data/include/grpc/impl/codegen/sync.h +3 -42
  32. data/include/grpc/impl/codegen/sync_abseil.h +3 -12
  33. data/include/grpc/impl/codegen/sync_custom.h +3 -14
  34. data/include/grpc/impl/codegen/sync_generic.h +3 -25
  35. data/include/grpc/impl/codegen/sync_posix.h +3 -28
  36. data/include/grpc/impl/codegen/sync_windows.h +3 -16
  37. data/include/grpc/impl/compression_types.h +109 -0
  38. data/include/grpc/impl/connectivity_state.h +47 -0
  39. data/include/grpc/impl/grpc_types.h +824 -0
  40. data/include/grpc/impl/propagation_bits.h +54 -0
  41. data/include/grpc/impl/slice_type.h +112 -0
  42. data/include/grpc/load_reporting.h +1 -1
  43. data/include/grpc/module.modulemap +5 -1
  44. data/include/grpc/slice.h +1 -1
  45. data/include/grpc/status.h +131 -1
  46. data/include/grpc/support/atm.h +70 -1
  47. data/include/grpc/support/atm_gcc_atomic.h +59 -1
  48. data/include/grpc/support/atm_gcc_sync.h +58 -1
  49. data/include/grpc/support/atm_windows.h +105 -1
  50. data/include/grpc/support/log.h +87 -1
  51. data/include/grpc/support/log_windows.h +1 -1
  52. data/include/grpc/support/port_platform.h +767 -1
  53. data/include/grpc/support/string_util.h +1 -1
  54. data/include/grpc/support/sync.h +35 -2
  55. data/include/grpc/support/sync_abseil.h +11 -1
  56. data/include/grpc/support/sync_custom.h +13 -1
  57. data/include/grpc/support/sync_generic.h +24 -1
  58. data/include/grpc/support/sync_posix.h +27 -1
  59. data/include/grpc/support/sync_windows.h +15 -1
  60. data/include/grpc/support/time.h +25 -2
  61. data/src/core/ext/filters/census/grpc_context.cc +17 -18
  62. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +28 -22
  63. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -1
  64. data/src/core/ext/filters/channel_idle/idle_filter_state.h +1 -1
  65. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
  66. data/src/core/ext/filters/client_channel/backup_poller.cc +24 -24
  67. data/src/core/ext/filters/client_channel/backup_poller.h +21 -21
  68. data/src/core/ext/filters/client_channel/channel_connectivity.cc +51 -28
  69. data/src/core/ext/filters/client_channel/client_channel.cc +157 -168
  70. data/src/core/ext/filters/client_channel/client_channel.h +10 -10
  71. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +17 -19
  72. data/src/core/ext/filters/client_channel/client_channel_channelz.h +19 -19
  73. data/src/core/ext/filters/client_channel/client_channel_factory.cc +17 -17
  74. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -18
  75. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  76. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
  77. data/src/core/ext/filters/client_channel/config_selector.h +16 -20
  78. data/src/core/ext/filters/client_channel/connector.h +1 -1
  79. data/src/core/ext/filters/client_channel/dynamic_filters.cc +28 -55
  80. data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
  81. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +18 -18
  82. data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -5
  83. data/src/core/ext/filters/client_channel/http_proxy.cc +39 -40
  84. data/src/core/ext/filters/client_channel/http_proxy.h +18 -18
  85. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
  86. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
  87. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +17 -17
  88. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +7 -2
  89. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -2
  90. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +59 -130
  91. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +37 -21
  92. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +131 -154
  93. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +24 -25
  94. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
  95. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +2 -4
  96. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
  97. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +18 -19
  98. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +18 -19
  99. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +18 -19
  100. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +8 -9
  101. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  102. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +212 -223
  103. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  104. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +11 -22
  105. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +73 -101
  106. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +20 -21
  107. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +1 -1
  108. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +119 -106
  109. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +12 -12
  110. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +30 -16
  111. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -56
  112. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +60 -64
  113. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  114. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  115. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +22 -28
  116. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +62 -94
  117. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +70 -146
  118. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +651 -0
  119. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +60 -0
  120. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  121. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +18 -18
  122. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -10
  123. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +26 -35
  124. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +40 -41
  125. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +22 -23
  126. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +82 -82
  127. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +117 -118
  128. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +51 -52
  129. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
  130. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +18 -18
  131. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +18 -19
  132. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -5
  133. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
  134. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  135. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -27
  136. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +44 -34
  137. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -10
  138. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
  139. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +122 -119
  140. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +1 -1
  141. data/src/core/ext/filters/client_channel/retry_filter.cc +81 -103
  142. data/src/core/ext/filters/client_channel/retry_service_config.cc +193 -235
  143. data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
  144. data/src/core/ext/filters/client_channel/retry_throttle.cc +27 -29
  145. data/src/core/ext/filters/client_channel/retry_throttle.h +26 -25
  146. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +3 -3
  147. data/src/core/ext/filters/client_channel/subchannel.cc +158 -178
  148. data/src/core/ext/filters/client_channel/subchannel.h +17 -40
  149. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +18 -18
  150. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
  151. data/src/core/ext/filters/deadline/deadline_filter.cc +34 -17
  152. data/src/core/ext/filters/deadline/deadline_filter.h +1 -1
  153. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -2
  154. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
  155. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  156. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
  157. data/src/core/ext/filters/http/client/http_client_filter.cc +36 -37
  158. data/src/core/ext/filters/http/client/http_client_filter.h +17 -17
  159. data/src/core/ext/filters/http/client_authority_filter.cc +19 -19
  160. data/src/core/ext/filters/http/client_authority_filter.h +18 -18
  161. data/src/core/ext/filters/http/http_filters_plugin.cc +35 -51
  162. data/src/core/ext/filters/http/message_compress/compression_filter.cc +315 -0
  163. data/src/core/ext/filters/http/message_compress/compression_filter.h +132 -0
  164. data/src/core/ext/filters/http/server/http_server_filter.cc +44 -43
  165. data/src/core/ext/filters/http/server/http_server_filter.h +18 -18
  166. data/src/core/ext/filters/message_size/message_size_filter.cc +92 -123
  167. data/src/core/ext/filters/message_size/message_size_filter.h +23 -16
  168. data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
  169. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
  170. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
  171. data/src/core/ext/filters/server_config_selector/server_config_selector.h +6 -8
  172. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +7 -9
  173. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +229 -0
  174. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
  175. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
  176. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
  177. data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
  178. data/src/core/ext/transport/chttp2/alpn/alpn.h +22 -22
  179. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +69 -63
  180. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +28 -22
  181. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +81 -97
  182. data/src/core/ext/transport/chttp2/server/chttp2_server.h +18 -18
  183. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +22 -22
  184. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +30 -30
  185. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +29 -29
  186. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +27 -27
  187. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +273 -283
  188. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +18 -19
  189. data/src/core/ext/transport/chttp2/transport/context_list.cc +19 -19
  190. data/src/core/ext/transport/chttp2/transport/context_list.h +25 -25
  191. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +0 -36
  192. data/src/core/ext/transport/chttp2/transport/decode_huff.h +35 -82
  193. data/src/core/ext/transport/chttp2/transport/flow_control.cc +112 -44
  194. data/src/core/ext/transport/chttp2/transport/flow_control.h +60 -34
  195. data/src/core/ext/transport/chttp2/transport/frame.h +19 -19
  196. data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -32
  197. data/src/core/ext/transport/chttp2/transport/frame_data.h +23 -23
  198. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +36 -36
  199. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -18
  200. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +25 -24
  201. data/src/core/ext/transport/chttp2/transport/frame_ping.h +19 -19
  202. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +28 -25
  203. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +18 -18
  204. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +34 -36
  205. data/src/core/ext/transport/chttp2/transport/frame_settings.h +20 -20
  206. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +22 -21
  207. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +18 -18
  208. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +133 -181
  209. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +40 -59
  210. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
  211. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +93 -143
  212. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +20 -20
  213. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +26 -26
  214. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +18 -18
  215. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
  216. data/src/core/ext/transport/chttp2/transport/http2_settings.h +36 -34
  217. data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
  218. data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
  219. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
  220. data/src/core/ext/transport/chttp2/transport/huffsyms.h +19 -19
  221. data/src/core/ext/transport/chttp2/transport/internal.h +193 -170
  222. data/src/core/ext/transport/chttp2/transport/parsing.cc +147 -80
  223. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -19
  224. data/src/core/ext/transport/chttp2/transport/stream_map.cc +23 -23
  225. data/src/core/ext/transport/chttp2/transport/stream_map.h +31 -31
  226. data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
  227. data/src/core/ext/transport/chttp2/transport/varint.h +35 -32
  228. data/src/core/ext/transport/chttp2/transport/writing.cc +60 -56
  229. data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -17
  230. data/src/core/ext/transport/inproc/inproc_transport.cc +122 -140
  231. data/src/core/ext/transport/inproc/inproc_transport.h +19 -19
  232. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
  233. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
  234. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
  235. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
  236. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
  237. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
  238. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +3 -2
  239. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +9 -0
  240. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +0 -1
  241. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
  242. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
  243. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
  244. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
  245. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
  246. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
  247. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
  248. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
  249. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
  250. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
  251. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
  252. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
  253. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
  254. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
  255. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +0 -1
  256. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
  257. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
  258. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
  259. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
  260. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
  261. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
  262. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
  263. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
  264. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
  265. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
  266. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
  267. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
  268. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
  269. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
  270. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +9 -9
  271. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
  272. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
  273. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
  274. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
  275. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
  276. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
  277. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +4 -7
  278. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  279. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
  280. data/src/core/ext/xds/xds_api.cc +20 -95
  281. data/src/core/ext/xds/xds_api.h +5 -8
  282. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  283. data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
  284. data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
  285. data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
  286. data/src/core/ext/xds/xds_certificate_provider.h +1 -1
  287. data/src/core/ext/xds/xds_channel_args.h +1 -1
  288. data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
  289. data/src/core/ext/xds/xds_channel_stack_modifier.h +2 -2
  290. data/src/core/ext/xds/xds_client.cc +134 -94
  291. data/src/core/ext/xds/xds_client.h +13 -5
  292. data/src/core/ext/xds/xds_client_grpc.cc +31 -24
  293. data/src/core/ext/xds/xds_client_grpc.h +1 -1
  294. data/src/core/ext/xds/xds_client_stats.cc +17 -17
  295. data/src/core/ext/xds/xds_client_stats.h +18 -18
  296. data/src/core/ext/xds/xds_cluster.cc +359 -203
  297. data/src/core/ext/xds/xds_cluster.h +52 -35
  298. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +54 -71
  299. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +45 -21
  300. data/src/core/ext/xds/xds_common_types.cc +209 -141
  301. data/src/core/ext/xds/xds_common_types.h +19 -13
  302. data/src/core/ext/xds/xds_endpoint.cc +221 -130
  303. data/src/core/ext/xds/xds_endpoint.h +4 -7
  304. data/src/core/ext/xds/xds_health_status.cc +80 -0
  305. data/src/core/ext/xds/xds_health_status.h +82 -0
  306. data/src/core/ext/xds/xds_http_fault_filter.cc +57 -43
  307. data/src/core/ext/xds/xds_http_fault_filter.h +14 -22
  308. data/src/core/ext/xds/xds_http_filters.cc +65 -73
  309. data/src/core/ext/xds/xds_http_filters.h +68 -20
  310. data/src/core/ext/xds/xds_http_rbac_filter.cc +153 -207
  311. data/src/core/ext/xds/xds_http_rbac_filter.h +13 -16
  312. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
  313. data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
  314. data/src/core/ext/xds/xds_lb_policy_registry.cc +120 -171
  315. data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
  316. data/src/core/ext/xds/xds_listener.cc +447 -419
  317. data/src/core/ext/xds/xds_listener.h +45 -47
  318. data/src/core/ext/xds/xds_resource_type.h +3 -11
  319. data/src/core/ext/xds/xds_resource_type_impl.h +10 -13
  320. data/src/core/ext/xds/xds_route_config.cc +514 -528
  321. data/src/core/ext/xds/xds_route_config.h +39 -28
  322. data/src/core/ext/xds/xds_routing.cc +2 -1
  323. data/src/core/ext/xds/xds_routing.h +2 -0
  324. data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -106
  325. data/src/core/ext/xds/xds_transport_grpc.cc +6 -7
  326. data/src/core/ext/xds/xds_transport_grpc.h +1 -1
  327. data/src/core/lib/address_utils/parse_address.cc +30 -29
  328. data/src/core/lib/address_utils/parse_address.h +32 -32
  329. data/src/core/lib/address_utils/sockaddr_utils.cc +29 -28
  330. data/src/core/lib/address_utils/sockaddr_utils.h +33 -33
  331. data/src/core/lib/avl/avl.h +4 -4
  332. data/src/core/lib/backoff/backoff.cc +17 -17
  333. data/src/core/lib/backoff/backoff.h +18 -18
  334. data/src/core/lib/channel/call_tracer.h +10 -1
  335. data/src/core/lib/channel/channel_args.cc +19 -20
  336. data/src/core/lib/channel/channel_args.h +59 -43
  337. data/src/core/lib/channel/channel_args_preconditioning.h +1 -1
  338. data/src/core/lib/channel/channel_stack.cc +62 -58
  339. data/src/core/lib/channel/channel_stack.h +144 -131
  340. data/src/core/lib/channel/channel_stack_builder.cc +21 -24
  341. data/src/core/lib/channel/channel_stack_builder.h +14 -6
  342. data/src/core/lib/channel/channel_stack_builder_impl.cc +43 -25
  343. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
  344. data/src/core/lib/channel/channel_trace.cc +21 -22
  345. data/src/core/lib/channel/channel_trace.h +19 -19
  346. data/src/core/lib/channel/channelz.cc +18 -19
  347. data/src/core/lib/channel/channelz.h +26 -26
  348. data/src/core/lib/channel/channelz_registry.cc +17 -17
  349. data/src/core/lib/channel/channelz_registry.h +18 -18
  350. data/src/core/lib/channel/connected_channel.cc +732 -63
  351. data/src/core/lib/channel/connected_channel.h +18 -22
  352. data/src/core/lib/channel/context.h +18 -18
  353. data/src/core/lib/channel/promise_based_filter.cc +1137 -150
  354. data/src/core/lib/channel/promise_based_filter.h +374 -88
  355. data/src/core/lib/channel/status_util.cc +35 -17
  356. data/src/core/lib/channel/status_util.h +26 -19
  357. data/src/core/lib/compression/compression.cc +19 -19
  358. data/src/core/lib/compression/compression_internal.cc +41 -48
  359. data/src/core/lib/compression/compression_internal.h +22 -22
  360. data/src/core/lib/compression/message_compress.cc +26 -26
  361. data/src/core/lib/compression/message_compress.h +25 -25
  362. data/src/core/lib/config/core_configuration.h +1 -1
  363. data/src/core/lib/debug/event_log.cc +88 -0
  364. data/src/core/lib/debug/event_log.h +81 -0
  365. data/src/core/lib/debug/histogram_view.cc +69 -0
  366. data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
  367. data/src/core/lib/debug/stats.cc +39 -136
  368. data/src/core/lib/debug/stats.h +46 -52
  369. data/src/core/lib/debug/stats_data.cc +224 -73
  370. data/src/core/lib/debug/stats_data.h +263 -122
  371. data/src/core/lib/debug/trace.cc +18 -18
  372. data/src/core/lib/debug/trace.h +19 -19
  373. data/src/core/lib/event_engine/common_closures.h +71 -0
  374. data/src/core/lib/event_engine/default_event_engine.cc +38 -15
  375. data/src/core/lib/event_engine/default_event_engine.h +15 -3
  376. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
  377. data/src/core/lib/event_engine/executor/executor.h +1 -1
  378. data/src/core/lib/event_engine/forkable.h +1 -1
  379. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  380. data/src/core/lib/event_engine/poller.h +10 -4
  381. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +614 -0
  382. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  383. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +900 -0
  384. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  385. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  386. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  387. data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +11 -14
  388. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  389. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  390. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +265 -0
  391. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  392. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1308 -0
  393. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +684 -0
  394. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +456 -28
  395. data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
  396. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  397. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +236 -0
  398. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +228 -0
  399. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +380 -0
  400. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
  401. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +853 -0
  402. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
  403. data/src/core/lib/event_engine/posix_engine/timer.cc +49 -49
  404. data/src/core/lib/event_engine/posix_engine/timer.h +87 -86
  405. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +27 -27
  406. data/src/core/lib/event_engine/posix_engine/timer_heap.h +21 -21
  407. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +76 -214
  408. data/src/core/lib/event_engine/posix_engine/timer_manager.h +41 -69
  409. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
  410. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
  411. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
  412. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  413. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
  414. data/src/core/lib/event_engine/{executor/threaded_executor.h → posix_engine/wakeup_fd_pipe.h} +16 -15
  415. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  416. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  417. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  418. data/src/core/lib/event_engine/slice.cc +7 -6
  419. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  420. data/src/core/lib/event_engine/socket_notifier.h +1 -1
  421. data/src/core/lib/event_engine/tcp_socket_utils.cc +373 -0
  422. data/src/core/lib/event_engine/tcp_socket_utils.h +85 -0
  423. data/src/core/lib/event_engine/thread_pool.cc +125 -43
  424. data/src/core/lib/event_engine/thread_pool.h +49 -26
  425. data/src/core/lib/event_engine/time_util.h +1 -1
  426. data/src/core/lib/event_engine/windows/iocp.cc +13 -12
  427. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  428. data/src/core/lib/event_engine/windows/win_socket.cc +9 -9
  429. data/src/core/lib/event_engine/windows/windows_engine.cc +26 -20
  430. data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
  431. data/src/core/lib/experiments/config.cc +1 -1
  432. data/src/core/lib/experiments/experiments.cc +13 -13
  433. data/src/core/lib/experiments/experiments.h +8 -6
  434. data/src/core/lib/gpr/alloc.cc +19 -17
  435. data/src/core/lib/gpr/alloc.h +18 -18
  436. data/src/core/lib/gpr/atm.cc +17 -17
  437. data/src/core/lib/gpr/cpu_iphone.cc +24 -24
  438. data/src/core/lib/gpr/cpu_linux.cc +28 -23
  439. data/src/core/lib/gpr/cpu_posix.cc +23 -22
  440. data/src/core/lib/gpr/cpu_windows.cc +20 -18
  441. data/src/core/lib/gpr/log.cc +27 -19
  442. data/src/core/lib/gpr/log_android.cc +22 -20
  443. data/src/core/lib/gpr/log_linux.cc +24 -24
  444. data/src/core/lib/gpr/log_posix.cc +20 -19
  445. data/src/core/lib/gpr/log_windows.cc +25 -24
  446. data/src/core/lib/gpr/spinlock.h +18 -18
  447. data/src/core/lib/gpr/string.cc +25 -24
  448. data/src/core/lib/gpr/string.h +58 -58
  449. data/src/core/lib/gpr/string_posix.cc +24 -24
  450. data/src/core/lib/gpr/string_util_windows.cc +22 -22
  451. data/src/core/lib/gpr/string_windows.cc +24 -24
  452. data/src/core/lib/gpr/sync.cc +25 -25
  453. data/src/core/lib/gpr/sync_abseil.cc +22 -20
  454. data/src/core/lib/gpr/sync_posix.cc +23 -21
  455. data/src/core/lib/gpr/sync_windows.cc +29 -27
  456. data/src/core/lib/gpr/time.cc +23 -21
  457. data/src/core/lib/gpr/time_posix.cc +35 -30
  458. data/src/core/lib/gpr/time_precise.cc +22 -22
  459. data/src/core/lib/gpr/time_precise.h +18 -19
  460. data/src/core/lib/gpr/time_windows.cc +25 -22
  461. data/src/core/lib/gpr/tmpfile.h +22 -22
  462. data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
  463. data/src/core/lib/gpr/tmpfile_posix.cc +22 -20
  464. data/src/core/lib/gpr/tmpfile_windows.cc +23 -22
  465. data/src/core/lib/gpr/useful.h +40 -27
  466. data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
  467. data/src/core/lib/gprpp/atomic_utils.h +18 -18
  468. data/src/core/lib/gprpp/bitset.h +24 -0
  469. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/crash.cc} +12 -12
  470. data/src/core/lib/gprpp/crash.h +34 -0
  471. data/src/core/lib/gprpp/debug_location.h +18 -18
  472. data/src/core/lib/gprpp/dual_ref_counted.h +1 -1
  473. data/src/core/lib/gprpp/env.h +20 -20
  474. data/src/core/lib/gprpp/env_linux.cc +21 -21
  475. data/src/core/lib/gprpp/env_posix.cc +18 -18
  476. data/src/core/lib/gprpp/env_windows.cc +18 -18
  477. data/src/core/lib/gprpp/examine_stack.cc +17 -17
  478. data/src/core/lib/gprpp/examine_stack.h +18 -18
  479. data/src/core/lib/gprpp/fork.cc +21 -22
  480. data/src/core/lib/gprpp/fork.h +22 -22
  481. data/src/core/lib/gprpp/global_config.h +18 -18
  482. data/src/core/lib/gprpp/global_config_custom.h +18 -18
  483. data/src/core/lib/gprpp/global_config_env.cc +17 -17
  484. data/src/core/lib/gprpp/global_config_env.h +23 -23
  485. data/src/core/lib/gprpp/global_config_generic.h +18 -18
  486. data/src/core/lib/gprpp/host_port.cc +26 -26
  487. data/src/core/lib/gprpp/host_port.h +29 -28
  488. data/src/core/lib/gprpp/load_file.cc +75 -0
  489. data/src/core/lib/gprpp/load_file.h +33 -0
  490. data/src/core/lib/gprpp/manual_constructor.h +18 -17
  491. data/src/core/lib/gprpp/memory.h +18 -18
  492. data/src/core/lib/gprpp/mpscq.cc +17 -17
  493. data/src/core/lib/gprpp/mpscq.h +18 -18
  494. data/src/core/lib/gprpp/no_destruct.h +1 -0
  495. data/src/core/lib/gprpp/orphanable.h +18 -18
  496. data/src/core/lib/gprpp/per_cpu.h +46 -0
  497. data/src/core/lib/gprpp/ref_counted.h +18 -18
  498. data/src/core/lib/gprpp/ref_counted_ptr.h +19 -18
  499. data/src/core/lib/gprpp/stat_posix.cc +5 -4
  500. data/src/core/lib/gprpp/stat_windows.cc +4 -2
  501. data/src/core/lib/gprpp/status_helper.cc +4 -3
  502. data/src/core/lib/gprpp/status_helper.h +1 -3
  503. data/src/core/lib/gprpp/strerror.cc +41 -0
  504. data/src/core/lib/gprpp/strerror.h +29 -0
  505. data/src/core/lib/gprpp/sync.h +20 -20
  506. data/src/core/lib/gprpp/table.h +1 -0
  507. data/src/core/lib/gprpp/thd.h +19 -19
  508. data/src/core/lib/gprpp/thd_posix.cc +30 -31
  509. data/src/core/lib/gprpp/thd_windows.cc +26 -26
  510. data/src/core/lib/gprpp/time.cc +16 -11
  511. data/src/core/lib/gprpp/time.h +13 -3
  512. data/src/core/lib/gprpp/time_averaged_stats.cc +20 -20
  513. data/src/core/lib/gprpp/time_averaged_stats.h +48 -48
  514. data/src/core/lib/gprpp/time_util.h +1 -1
  515. data/src/core/lib/gprpp/unique_type_name.h +18 -18
  516. data/src/core/lib/gprpp/validation_errors.h +18 -1
  517. data/src/core/lib/handshaker/proxy_mapper.h +18 -18
  518. data/src/core/lib/handshaker/proxy_mapper_registry.cc +17 -17
  519. data/src/core/lib/handshaker/proxy_mapper_registry.h +18 -18
  520. data/src/core/lib/http/format_request.cc +18 -18
  521. data/src/core/lib/http/format_request.h +18 -18
  522. data/src/core/lib/http/httpcli.cc +57 -61
  523. data/src/core/lib/http/httpcli.h +26 -26
  524. data/src/core/lib/http/httpcli_security_connector.cc +22 -25
  525. data/src/core/lib/http/parser.cc +76 -87
  526. data/src/core/lib/http/parser.h +32 -32
  527. data/src/core/lib/iomgr/block_annotate.h +21 -21
  528. data/src/core/lib/iomgr/buffer_list.cc +156 -136
  529. data/src/core/lib/iomgr/buffer_list.h +120 -98
  530. data/src/core/lib/iomgr/call_combiner.cc +29 -27
  531. data/src/core/lib/iomgr/call_combiner.h +21 -22
  532. data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
  533. data/src/core/lib/iomgr/cfstream_handle.h +22 -22
  534. data/src/core/lib/iomgr/closure.h +90 -45
  535. data/src/core/lib/iomgr/combiner.cc +20 -19
  536. data/src/core/lib/iomgr/combiner.h +18 -18
  537. data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
  538. data/src/core/lib/iomgr/dynamic_annotations.h +20 -20
  539. data/src/core/lib/iomgr/endpoint.cc +17 -17
  540. data/src/core/lib/iomgr/endpoint.h +46 -46
  541. data/src/core/lib/iomgr/endpoint_cfstream.cc +44 -43
  542. data/src/core/lib/iomgr/endpoint_cfstream.h +27 -27
  543. data/src/core/lib/iomgr/endpoint_pair.h +18 -18
  544. data/src/core/lib/iomgr/endpoint_pair_posix.cc +20 -19
  545. data/src/core/lib/iomgr/endpoint_pair_windows.cc +18 -17
  546. data/src/core/lib/iomgr/error.cc +49 -61
  547. data/src/core/lib/iomgr/error.h +42 -173
  548. data/src/core/lib/iomgr/error_cfstream.cc +18 -18
  549. data/src/core/lib/iomgr/error_cfstream.h +19 -19
  550. data/src/core/lib/iomgr/ev_apple.cc +21 -21
  551. data/src/core/lib/iomgr/ev_apple.h +17 -17
  552. data/src/core/lib/iomgr/ev_epoll1_linux.cc +208 -195
  553. data/src/core/lib/iomgr/ev_epoll1_linux.h +18 -18
  554. data/src/core/lib/iomgr/ev_poll_posix.cc +212 -205
  555. data/src/core/lib/iomgr/ev_poll_posix.h +18 -18
  556. data/src/core/lib/iomgr/ev_posix.cc +36 -28
  557. data/src/core/lib/iomgr/ev_posix.h +85 -81
  558. data/src/core/lib/iomgr/ev_windows.cc +18 -18
  559. data/src/core/lib/iomgr/exec_ctx.cc +34 -34
  560. data/src/core/lib/iomgr/exec_ctx.h +141 -141
  561. data/src/core/lib/iomgr/executor.cc +21 -21
  562. data/src/core/lib/iomgr/executor.h +24 -24
  563. data/src/core/lib/iomgr/fork_posix.cc +24 -22
  564. data/src/core/lib/iomgr/fork_windows.cc +21 -21
  565. data/src/core/lib/iomgr/gethostname.h +18 -18
  566. data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
  567. data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
  568. data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
  569. data/src/core/lib/iomgr/grpc_if_nametoindex.h +20 -20
  570. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
  571. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
  572. data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
  573. data/src/core/lib/iomgr/internal_errqueue.h +80 -80
  574. data/src/core/lib/iomgr/iocp_windows.cc +22 -21
  575. data/src/core/lib/iomgr/iocp_windows.h +18 -18
  576. data/src/core/lib/iomgr/iomgr.cc +19 -18
  577. data/src/core/lib/iomgr/iomgr.h +32 -32
  578. data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
  579. data/src/core/lib/iomgr/iomgr_internal.h +25 -25
  580. data/src/core/lib/iomgr/iomgr_posix.cc +20 -20
  581. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +20 -19
  582. data/src/core/lib/iomgr/iomgr_windows.cc +24 -22
  583. data/src/core/lib/iomgr/load_file.cc +24 -27
  584. data/src/core/lib/iomgr/load_file.h +20 -20
  585. data/src/core/lib/iomgr/lockfree_event.cc +114 -114
  586. data/src/core/lib/iomgr/lockfree_event.h +19 -19
  587. data/src/core/lib/iomgr/nameser.h +84 -84
  588. data/src/core/lib/iomgr/polling_entity.cc +25 -21
  589. data/src/core/lib/iomgr/polling_entity.h +27 -27
  590. data/src/core/lib/iomgr/pollset.cc +17 -17
  591. data/src/core/lib/iomgr/pollset.h +51 -51
  592. data/src/core/lib/iomgr/pollset_set.cc +17 -17
  593. data/src/core/lib/iomgr/pollset_set.h +22 -22
  594. data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
  595. data/src/core/lib/iomgr/pollset_set_windows.h +18 -18
  596. data/src/core/lib/iomgr/pollset_windows.cc +30 -29
  597. data/src/core/lib/iomgr/pollset_windows.h +22 -22
  598. data/src/core/lib/iomgr/port.h +29 -29
  599. data/src/core/lib/iomgr/python_util.h +20 -20
  600. data/src/core/lib/iomgr/resolve_address.cc +26 -20
  601. data/src/core/lib/iomgr/resolve_address.h +21 -22
  602. data/src/core/lib/iomgr/resolve_address_impl.h +2 -2
  603. data/src/core/lib/iomgr/resolve_address_posix.cc +35 -45
  604. data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
  605. data/src/core/lib/iomgr/resolve_address_windows.cc +18 -20
  606. data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
  607. data/src/core/lib/iomgr/resolved_address.h +1 -1
  608. data/src/core/lib/iomgr/sockaddr.h +21 -21
  609. data/src/core/lib/iomgr/sockaddr_posix.h +18 -18
  610. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +18 -17
  611. data/src/core/lib/iomgr/sockaddr_windows.h +18 -18
  612. data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
  613. data/src/core/lib/iomgr/socket_factory_posix.h +30 -30
  614. data/src/core/lib/iomgr/socket_mutator.cc +19 -18
  615. data/src/core/lib/iomgr/socket_mutator.h +37 -37
  616. data/src/core/lib/iomgr/socket_utils.h +24 -24
  617. data/src/core/lib/iomgr/socket_utils_common_posix.cc +68 -66
  618. data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
  619. data/src/core/lib/iomgr/socket_utils_posix.cc +22 -20
  620. data/src/core/lib/iomgr/socket_utils_posix.h +78 -78
  621. data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
  622. data/src/core/lib/iomgr/socket_windows.cc +37 -36
  623. data/src/core/lib/iomgr/socket_windows.h +56 -56
  624. data/src/core/lib/iomgr/systemd_utils.cc +116 -0
  625. data/src/core/lib/{slice/slice_buffer_api.cc → iomgr/systemd_utils.h} +12 -14
  626. data/src/core/lib/iomgr/tcp_client.cc +17 -17
  627. data/src/core/lib/iomgr/tcp_client.h +26 -26
  628. data/src/core/lib/iomgr/tcp_client_cfstream.cc +25 -28
  629. data/src/core/lib/iomgr/tcp_client_posix.cc +70 -73
  630. data/src/core/lib/iomgr/tcp_client_posix.h +43 -43
  631. data/src/core/lib/iomgr/tcp_client_windows.cc +36 -39
  632. data/src/core/lib/iomgr/tcp_posix.cc +223 -237
  633. data/src/core/lib/iomgr/tcp_posix.h +27 -27
  634. data/src/core/lib/iomgr/tcp_server.cc +30 -22
  635. data/src/core/lib/iomgr/tcp_server.h +68 -62
  636. data/src/core/lib/iomgr/tcp_server_posix.cc +124 -94
  637. data/src/core/lib/iomgr/tcp_server_utils_posix.h +54 -51
  638. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +90 -55
  639. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +40 -40
  640. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
  641. data/src/core/lib/iomgr/tcp_server_windows.cc +97 -104
  642. data/src/core/lib/iomgr/tcp_windows.cc +109 -93
  643. data/src/core/lib/iomgr/tcp_windows.h +29 -29
  644. data/src/core/lib/iomgr/timer.cc +17 -17
  645. data/src/core/lib/iomgr/timer.h +65 -65
  646. data/src/core/lib/iomgr/timer_generic.cc +115 -122
  647. data/src/core/lib/iomgr/timer_generic.h +19 -19
  648. data/src/core/lib/iomgr/timer_heap.cc +25 -25
  649. data/src/core/lib/iomgr/timer_heap.h +19 -19
  650. data/src/core/lib/iomgr/timer_manager.cc +30 -29
  651. data/src/core/lib/iomgr/timer_manager.h +25 -25
  652. data/src/core/lib/iomgr/unix_sockets_posix.cc +20 -21
  653. data/src/core/lib/iomgr/unix_sockets_posix.h +18 -18
  654. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
  655. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -21
  656. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
  657. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
  658. data/src/core/lib/iomgr/wakeup_fd_pipe.h +18 -18
  659. data/src/core/lib/iomgr/wakeup_fd_posix.cc +18 -18
  660. data/src/core/lib/iomgr/wakeup_fd_posix.h +50 -50
  661. data/src/core/lib/json/json_channel_args.h +42 -0
  662. data/src/core/lib/json/json_object_loader.cc +17 -2
  663. data/src/core/lib/json/json_object_loader.h +37 -1
  664. data/src/core/lib/json/json_reader.cc +28 -28
  665. data/src/core/lib/json/json_util.cc +5 -5
  666. data/src/core/lib/json/json_util.h +4 -4
  667. data/src/core/lib/json/json_writer.cc +56 -56
  668. data/src/core/lib/load_balancing/lb_policy.cc +18 -18
  669. data/src/core/lib/load_balancing/lb_policy.h +7 -4
  670. data/src/core/lib/load_balancing/subchannel_interface.h +1 -8
  671. data/src/core/lib/matchers/matchers.cc +6 -5
  672. data/src/core/lib/matchers/matchers.h +1 -1
  673. data/src/core/lib/promise/activity.cc +16 -2
  674. data/src/core/lib/promise/activity.h +58 -27
  675. data/src/core/lib/promise/arena_promise.h +82 -52
  676. data/src/core/lib/promise/context.h +14 -6
  677. data/src/core/lib/promise/detail/basic_seq.h +9 -28
  678. data/src/core/lib/promise/detail/promise_factory.h +59 -10
  679. data/src/core/lib/promise/detail/status.h +28 -0
  680. data/src/core/lib/promise/detail/switch.h +1455 -0
  681. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +20 -12
  682. data/src/core/lib/promise/for_each.h +155 -0
  683. data/src/core/lib/promise/latch.h +13 -19
  684. data/src/core/lib/promise/loop.h +7 -5
  685. data/src/core/lib/promise/map.h +1 -0
  686. data/src/core/lib/promise/map_pipe.h +88 -0
  687. data/src/core/lib/promise/pipe.cc +19 -0
  688. data/src/core/lib/promise/pipe.h +505 -0
  689. data/src/core/lib/promise/poll.h +19 -0
  690. data/src/core/lib/promise/seq.h +4 -5
  691. data/src/core/lib/promise/sleep.cc +5 -4
  692. data/src/core/lib/promise/sleep.h +1 -2
  693. data/src/core/lib/promise/try_concurrently.h +342 -0
  694. data/src/core/lib/promise/try_seq.h +11 -13
  695. data/src/core/lib/resolver/resolver.cc +17 -17
  696. data/src/core/lib/resolver/server_address.cc +18 -17
  697. data/src/core/lib/resolver/server_address.h +19 -21
  698. data/src/core/lib/resource_quota/api.cc +0 -1
  699. data/src/core/lib/resource_quota/api.h +1 -1
  700. data/src/core/lib/resource_quota/arena.cc +36 -17
  701. data/src/core/lib/resource_quota/arena.h +107 -18
  702. data/src/core/lib/resource_quota/memory_quota.cc +140 -43
  703. data/src/core/lib/resource_quota/memory_quota.h +85 -23
  704. data/src/core/lib/resource_quota/resource_quota.h +1 -1
  705. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  706. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +0 -1
  707. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
  708. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
  709. data/src/core/lib/security/authorization/matchers.cc +25 -22
  710. data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
  711. data/src/core/lib/security/authorization/rbac_policy.h +1 -1
  712. data/src/core/lib/security/context/security_context.cc +22 -23
  713. data/src/core/lib/security/context/security_context.h +40 -30
  714. data/src/core/lib/security/credentials/alts/alts_credentials.cc +17 -17
  715. data/src/core/lib/security/credentials/alts/alts_credentials.h +50 -50
  716. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
  717. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +41 -41
  718. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
  719. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
  720. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
  721. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +19 -19
  722. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
  723. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +36 -37
  724. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +18 -18
  725. data/src/core/lib/security/credentials/call_creds_util.h +1 -1
  726. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
  727. data/src/core/lib/security/credentials/composite/composite_credentials.cc +22 -22
  728. data/src/core/lib/security/credentials/composite/composite_credentials.h +20 -21
  729. data/src/core/lib/security/credentials/credentials.cc +19 -18
  730. data/src/core/lib/security/credentials/credentials.h +34 -33
  731. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
  732. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
  733. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
  734. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
  735. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
  736. data/src/core/lib/security/credentials/fake/fake_credentials.cc +20 -19
  737. data/src/core/lib/security/credentials/fake/fake_credentials.h +34 -35
  738. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +17 -17
  739. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +75 -73
  740. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +18 -19
  741. data/src/core/lib/security/credentials/iam/iam_credentials.cc +18 -17
  742. data/src/core/lib/security/credentials/iam/iam_credentials.h +18 -18
  743. data/src/core/lib/security/credentials/jwt/json_token.cc +24 -25
  744. data/src/core/lib/security/credentials/jwt/json_token.h +32 -32
  745. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +18 -18
  746. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +18 -19
  747. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +75 -75
  748. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +43 -43
  749. data/src/core/lib/security/credentials/local/local_credentials.cc +17 -17
  750. data/src/core/lib/security/credentials/local/local_credentials.h +20 -20
  751. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +52 -59
  752. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +19 -19
  753. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +24 -23
  754. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +22 -22
  755. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -20
  756. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +18 -18
  757. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +20 -28
  758. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
  759. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +30 -43
  760. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
  761. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +18 -18
  762. data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -19
  763. data/src/core/lib/security/credentials/tls/tls_credentials.h +18 -18
  764. data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -2
  765. data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
  766. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +32 -38
  767. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +41 -42
  768. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +32 -41
  769. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +20 -21
  770. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  771. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -8
  772. data/src/core/lib/security/security_connector/load_system_roots.h +18 -18
  773. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +18 -18
  774. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +19 -22
  775. data/src/core/lib/security/security_connector/load_system_roots_supported.h +19 -20
  776. data/src/core/lib/security/security_connector/local/local_security_connector.cc +30 -34
  777. data/src/core/lib/security/security_connector/local/local_security_connector.h +40 -41
  778. data/src/core/lib/security/security_connector/security_connector.cc +17 -17
  779. data/src/core/lib/security/security_connector/security_connector.h +32 -33
  780. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +34 -39
  781. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +38 -39
  782. data/src/core/lib/security/security_connector/ssl_utils.cc +37 -39
  783. data/src/core/lib/security/security_connector/ssl_utils.h +31 -31
  784. data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
  785. data/src/core/lib/security/security_connector/ssl_utils_config.h +18 -19
  786. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +42 -48
  787. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +17 -17
  788. data/src/core/lib/security/transport/auth_filters.h +18 -18
  789. data/src/core/lib/security/transport/client_auth_filter.cc +21 -21
  790. data/src/core/lib/security/transport/secure_endpoint.cc +54 -56
  791. data/src/core/lib/security/transport/secure_endpoint.h +22 -22
  792. data/src/core/lib/security/transport/security_handshaker.cc +70 -70
  793. data/src/core/lib/security/transport/security_handshaker.h +19 -19
  794. data/src/core/lib/security/transport/server_auth_filter.cc +43 -44
  795. data/src/core/lib/security/transport/tsi_error.cc +23 -20
  796. data/src/core/lib/security/transport/tsi_error.h +18 -18
  797. data/src/core/lib/security/util/json_util.cc +21 -22
  798. data/src/core/lib/security/util/json_util.h +18 -18
  799. data/src/core/lib/service_config/service_config.h +2 -2
  800. data/src/core/lib/service_config/service_config_call_data.h +7 -1
  801. data/src/core/lib/service_config/service_config_impl.cc +111 -158
  802. data/src/core/lib/service_config/service_config_impl.h +14 -17
  803. data/src/core/lib/service_config/service_config_parser.cc +14 -31
  804. data/src/core/lib/service_config/service_config_parser.h +14 -10
  805. data/src/core/lib/slice/b64.cc +26 -26
  806. data/src/core/lib/slice/b64.h +29 -29
  807. data/src/core/lib/slice/percent_encoding.cc +17 -17
  808. data/src/core/lib/slice/percent_encoding.h +24 -24
  809. data/src/core/lib/slice/slice.cc +44 -38
  810. data/src/core/lib/slice/slice.h +57 -11
  811. data/src/core/lib/slice/slice_buffer.cc +63 -59
  812. data/src/core/lib/slice/slice_buffer.h +27 -2
  813. data/src/core/lib/slice/slice_internal.h +31 -39
  814. data/src/core/lib/slice/slice_refcount.h +34 -19
  815. data/src/core/lib/slice/slice_string_helpers.cc +17 -17
  816. data/src/core/lib/slice/slice_string_helpers.h +19 -19
  817. data/src/core/lib/surface/api_trace.cc +17 -17
  818. data/src/core/lib/surface/api_trace.h +22 -22
  819. data/src/core/lib/surface/byte_buffer.cc +22 -23
  820. data/src/core/lib/surface/byte_buffer_reader.cc +23 -23
  821. data/src/core/lib/surface/call.cc +1521 -335
  822. data/src/core/lib/surface/call.h +86 -39
  823. data/src/core/lib/surface/call_details.cc +20 -21
  824. data/src/core/lib/surface/call_log_batch.cc +18 -18
  825. data/src/core/lib/surface/call_test_only.h +30 -30
  826. data/src/core/lib/surface/call_trace.cc +113 -0
  827. data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/surface/call_trace.h} +10 -12
  828. data/src/core/lib/surface/channel.cc +62 -67
  829. data/src/core/lib/surface/channel.h +40 -32
  830. data/src/core/lib/surface/channel_init.cc +17 -17
  831. data/src/core/lib/surface/channel_init.h +18 -18
  832. data/src/core/lib/surface/channel_ping.cc +19 -19
  833. data/src/core/lib/surface/channel_stack_type.cc +21 -17
  834. data/src/core/lib/surface/channel_stack_type.h +20 -18
  835. data/src/core/lib/surface/completion_queue.cc +173 -191
  836. data/src/core/lib/surface/completion_queue.h +32 -32
  837. data/src/core/lib/surface/completion_queue_factory.cc +28 -28
  838. data/src/core/lib/surface/completion_queue_factory.h +20 -20
  839. data/src/core/lib/surface/event_string.cc +17 -17
  840. data/src/core/lib/surface/event_string.h +20 -20
  841. data/src/core/lib/surface/init.cc +29 -58
  842. data/src/core/lib/surface/init.h +18 -18
  843. data/src/core/lib/surface/init_internally.cc +1 -0
  844. data/src/core/lib/surface/init_internally.h +9 -0
  845. data/src/core/lib/surface/lame_client.cc +28 -26
  846. data/src/core/lib/surface/lame_client.h +19 -19
  847. data/src/core/lib/surface/metadata_array.cc +17 -18
  848. data/src/core/lib/surface/server.cc +61 -83
  849. data/src/core/lib/surface/server.h +5 -7
  850. data/src/core/lib/surface/validate_metadata.cc +28 -29
  851. data/src/core/lib/surface/validate_metadata.h +18 -18
  852. data/src/core/lib/surface/version.cc +21 -21
  853. data/src/core/lib/transport/bdp_estimator.cc +17 -17
  854. data/src/core/lib/transport/bdp_estimator.h +18 -19
  855. data/src/core/lib/transport/connectivity_state.cc +19 -19
  856. data/src/core/lib/transport/connectivity_state.h +19 -19
  857. data/src/core/lib/transport/error_utils.cc +51 -45
  858. data/src/core/lib/transport/error_utils.h +21 -21
  859. data/src/core/lib/transport/handshaker.cc +49 -46
  860. data/src/core/lib/transport/handshaker.h +43 -38
  861. data/src/core/lib/transport/handshaker_factory.h +44 -18
  862. data/src/core/lib/transport/handshaker_registry.cc +25 -19
  863. data/src/core/lib/transport/handshaker_registry.h +21 -22
  864. data/src/core/lib/transport/http2_errors.h +20 -20
  865. data/src/core/lib/transport/http_connect_handshaker.cc +40 -41
  866. data/src/core/lib/transport/http_connect_handshaker.h +18 -18
  867. data/src/core/lib/transport/metadata_batch.cc +4 -1
  868. data/src/core/lib/transport/metadata_batch.h +46 -20
  869. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  870. data/src/core/lib/transport/parsed_metadata.h +1 -0
  871. data/src/core/lib/transport/pid_controller.cc +20 -20
  872. data/src/core/lib/transport/pid_controller.h +24 -24
  873. data/src/core/lib/transport/status_conversion.cc +22 -22
  874. data/src/core/lib/transport/status_conversion.h +20 -20
  875. data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
  876. data/src/core/lib/transport/tcp_connect_handshaker.h +1 -1
  877. data/src/core/lib/transport/timeout_encoding.cc +22 -22
  878. data/src/core/lib/transport/timeout_encoding.h +18 -18
  879. data/src/core/lib/transport/transport.cc +88 -41
  880. data/src/core/lib/transport/transport.h +193 -195
  881. data/src/core/lib/transport/transport_impl.h +42 -42
  882. data/src/core/lib/transport/transport_op_string.cc +26 -25
  883. data/src/core/plugin_registry/grpc_plugin_registry.cc +25 -27
  884. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +7 -14
  885. data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
  886. data/src/core/tsi/alts/crypt/gsec.cc +26 -26
  887. data/src/core/tsi/alts/crypt/gsec.h +334 -334
  888. data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
  889. data/src/core/tsi/alts/frame_protector/alts_counter.h +66 -66
  890. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
  891. data/src/core/tsi/alts/frame_protector/alts_crypter.h +206 -206
  892. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
  893. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +38 -38
  894. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
  895. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +80 -81
  896. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
  897. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
  898. data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
  899. data/src/core/tsi/alts/frame_protector/frame_handler.h +166 -166
  900. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -77
  901. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +99 -99
  902. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
  903. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +41 -42
  904. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +37 -36
  905. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +58 -58
  906. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +20 -20
  907. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +21 -20
  908. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +36 -36
  909. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
  910. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +102 -101
  911. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
  912. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +38 -39
  913. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
  914. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +33 -34
  915. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +65 -66
  916. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
  917. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +53 -54
  918. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
  919. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +138 -139
  920. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +58 -57
  921. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +41 -42
  922. data/src/core/tsi/fake_transport_security.cc +80 -79
  923. data/src/core/tsi/fake_transport_security.h +30 -30
  924. data/src/core/tsi/local_transport_security.cc +34 -33
  925. data/src/core/tsi/local_transport_security.h +31 -31
  926. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +8 -3
  927. data/src/core/tsi/ssl/session_cache/ssl_session.h +18 -18
  928. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +19 -19
  929. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
  930. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +19 -19
  931. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +25 -20
  932. data/src/core/tsi/ssl_transport_security.cc +139 -323
  933. data/src/core/tsi/ssl_transport_security.h +201 -200
  934. data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
  935. data/src/core/tsi/ssl_transport_security_utils.h +147 -0
  936. data/src/core/tsi/ssl_types.h +25 -25
  937. data/src/core/tsi/transport_security.cc +26 -26
  938. data/src/core/tsi/transport_security.h +45 -45
  939. data/src/core/tsi/transport_security_grpc.cc +20 -20
  940. data/src/core/tsi/transport_security_grpc.h +39 -39
  941. data/src/core/tsi/transport_security_interface.h +330 -330
  942. data/src/ruby/ext/grpc/{ext-export-truffleruby.clang → ext-export-truffleruby-with-ruby-abi-version.clang} +0 -0
  943. data/src/ruby/ext/grpc/{ext-export-truffleruby.gcc → ext-export-truffleruby-with-ruby-abi-version.gcc} +0 -0
  944. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
  945. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
  946. data/src/ruby/ext/grpc/ext-export.clang +0 -1
  947. data/src/ruby/ext/grpc/ext-export.gcc +1 -2
  948. data/src/ruby/ext/grpc/extconf.rb +47 -2
  949. data/src/ruby/ext/grpc/rb_call.c +1 -0
  950. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  951. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  952. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  953. data/src/ruby/ext/grpc/rb_grpc.c +1 -0
  954. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -38
  955. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -59
  956. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  957. data/src/ruby/lib/grpc/version.rb +1 -1
  958. data/src/ruby/spec/channel_spec.rb +0 -43
  959. data/src/ruby/spec/client_server_spec.rb +20 -8
  960. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  961. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  962. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  963. data/third_party/re2/re2/bitstate.cc +3 -3
  964. data/third_party/re2/re2/dfa.cc +13 -13
  965. data/third_party/re2/re2/nfa.cc +4 -4
  966. data/third_party/re2/re2/onepass.cc +2 -2
  967. data/third_party/re2/re2/prefilter_tree.cc +27 -59
  968. data/third_party/re2/re2/prefilter_tree.h +3 -2
  969. data/third_party/re2/re2/prog.cc +11 -2
  970. data/third_party/re2/re2/prog.h +17 -5
  971. data/third_party/re2/re2/re2.cc +6 -11
  972. data/third_party/re2/re2/re2.h +1 -1
  973. data/third_party/re2/re2/regexp.cc +1 -2
  974. data/third_party/re2/re2/stringpiece.h +10 -7
  975. data/third_party/re2/re2/unicode_casefold.cc +25 -11
  976. data/third_party/re2/re2/unicode_groups.cc +319 -151
  977. data/third_party/re2/re2/walker-inl.h +3 -2
  978. data/third_party/re2/util/mutex.h +4 -4
  979. data/third_party/zlib/compress.c +3 -3
  980. data/third_party/zlib/crc32.c +21 -12
  981. data/third_party/zlib/deflate.c +112 -106
  982. data/third_party/zlib/deflate.h +2 -2
  983. data/third_party/zlib/gzlib.c +1 -1
  984. data/third_party/zlib/gzread.c +3 -5
  985. data/third_party/zlib/gzwrite.c +1 -1
  986. data/third_party/zlib/infback.c +10 -7
  987. data/third_party/zlib/inflate.c +5 -2
  988. data/third_party/zlib/inftrees.c +2 -2
  989. data/third_party/zlib/inftrees.h +1 -1
  990. data/third_party/zlib/trees.c +61 -62
  991. data/third_party/zlib/uncompr.c +2 -2
  992. data/third_party/zlib/zconf.h +16 -3
  993. data/third_party/zlib/zlib.h +10 -10
  994. data/third_party/zlib/zutil.c +9 -7
  995. data/third_party/zlib/zutil.h +1 -0
  996. metadata +148 -42
  997. data/include/grpc/impl/codegen/gpr_slice.h +0 -71
  998. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  999. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  1000. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -332
  1001. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -52
  1002. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -322
  1003. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -62
  1004. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  1005. data/src/core/lib/gpr/murmur_hash.h +0 -29
  1006. data/src/core/lib/gpr/tls.h +0 -156
  1007. data/src/core/lib/promise/call_push_pull.h +0 -148
  1008. data/src/core/lib/slice/slice_api.cc +0 -39
  1009. data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -27,7 +27,6 @@
27
27
  #include <set>
28
28
  #include <vector>
29
29
 
30
- #include "absl/memory/memory.h"
31
30
  #include "absl/status/status.h"
32
31
  #include "absl/status/statusor.h"
33
32
  #include "absl/strings/cord.h"
@@ -38,21 +37,22 @@
38
37
  #include "absl/types/optional.h"
39
38
  #include "absl/types/variant.h"
40
39
 
41
- #include <grpc/impl/codegen/gpr_types.h>
40
+ #include <grpc/event_engine/event_engine.h>
42
41
  #include <grpc/slice.h>
43
42
  #include <grpc/status.h>
44
43
  #include <grpc/support/log.h>
45
44
  #include <grpc/support/string_util.h>
45
+ #include <grpc/support/time.h>
46
46
 
47
47
  #include "src/core/ext/filters/client_channel/backend_metric.h"
48
48
  #include "src/core/ext/filters/client_channel/backup_poller.h"
49
49
  #include "src/core/ext/filters/client_channel/client_channel_channelz.h"
50
+ #include "src/core/ext/filters/client_channel/client_channel_service_config.h"
50
51
  #include "src/core/ext/filters/client_channel/config_selector.h"
51
52
  #include "src/core/ext/filters/client_channel/dynamic_filters.h"
52
53
  #include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
53
54
  #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
54
55
  #include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
55
- #include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
56
56
  #include "src/core/ext/filters/client_channel/retry_filter.h"
57
57
  #include "src/core/ext/filters/client_channel/subchannel.h"
58
58
  #include "src/core/ext/filters/client_channel/subchannel_interface_internal.h"
@@ -65,6 +65,7 @@
65
65
  #include "src/core/lib/debug/trace.h"
66
66
  #include "src/core/lib/gpr/useful.h"
67
67
  #include "src/core/lib/gprpp/debug_location.h"
68
+ #include "src/core/lib/gprpp/status_helper.h"
68
69
  #include "src/core/lib/gprpp/sync.h"
69
70
  #include "src/core/lib/gprpp/work_serializer.h"
70
71
  #include "src/core/lib/handshaker/proxy_mapper_registry.h"
@@ -79,7 +80,6 @@
79
80
  #include "src/core/lib/service_config/service_config_call_data.h"
80
81
  #include "src/core/lib/service_config/service_config_impl.h"
81
82
  #include "src/core/lib/slice/slice_internal.h"
82
- #include "src/core/lib/slice/slice_refcount.h"
83
83
  #include "src/core/lib/surface/channel.h"
84
84
  #include "src/core/lib/transport/connectivity_state.h"
85
85
  #include "src/core/lib/transport/error_utils.h"
@@ -234,7 +234,7 @@ class ClientChannel::CallData {
234
234
  grpc_transport_stream_op_batch* pending_batches_[MAX_PENDING_BATCHES] = {};
235
235
 
236
236
  // Set when we get a cancel_stream op.
237
- grpc_error_handle cancel_error_ = GRPC_ERROR_NONE;
237
+ grpc_error_handle cancel_error_;
238
238
  };
239
239
 
240
240
  //
@@ -274,7 +274,7 @@ class DynamicTerminationFilter {
274
274
  GPR_ASSERT(args->is_last);
275
275
  GPR_ASSERT(elem->filter == &kFilterVtable);
276
276
  new (elem->channel_data) DynamicTerminationFilter(args->channel_args);
277
- return GRPC_ERROR_NONE;
277
+ return absl::OkStatus();
278
278
  }
279
279
 
280
280
  static void Destroy(grpc_channel_element* elem) {
@@ -301,7 +301,7 @@ class DynamicTerminationFilter::CallData {
301
301
  static grpc_error_handle Init(grpc_call_element* elem,
302
302
  const grpc_call_element_args* args) {
303
303
  new (elem->call_data) CallData(*args);
304
- return GRPC_ERROR_NONE;
304
+ return absl::OkStatus();
305
305
  }
306
306
 
307
307
  static void Destroy(grpc_call_element* elem,
@@ -317,7 +317,7 @@ class DynamicTerminationFilter::CallData {
317
317
  subchannel_call->SetAfterCallStackDestroy(then_schedule_closure);
318
318
  } else {
319
319
  // TODO(yashkt) : This can potentially be a Closure::Run
320
- ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, GRPC_ERROR_NONE);
320
+ ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
321
321
  }
322
322
  }
323
323
 
@@ -352,14 +352,14 @@ class DynamicTerminationFilter::CallData {
352
352
 
353
353
  private:
354
354
  explicit CallData(const grpc_call_element_args& args)
355
- : path_(grpc_slice_ref_internal(args.path)),
355
+ : path_(CSliceRef(args.path)),
356
356
  deadline_(args.deadline),
357
357
  arena_(args.arena),
358
358
  owning_call_(args.call_stack),
359
359
  call_combiner_(args.call_combiner),
360
360
  call_context_(args.context) {}
361
361
 
362
- ~CallData() { grpc_slice_unref_internal(path_); }
362
+ ~CallData() { CSliceUnref(path_); }
363
363
 
364
364
  grpc_slice path_; // Request path.
365
365
  Timestamp deadline_;
@@ -520,8 +520,6 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
520
520
  data_watchers_.push_back(std::move(internal_watcher));
521
521
  }
522
522
 
523
- ChannelArgs channel_args() override { return subchannel_->channel_args(); }
524
-
525
523
  void ThrottleKeepaliveTime(int new_keepalive_time) {
526
524
  subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
527
525
  }
@@ -559,7 +557,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
559
557
  DEBUG_LOCATION);
560
558
  }
561
559
 
562
- void OnConnectivityStateChange() override {
560
+ void OnConnectivityStateChange(grpc_connectivity_state state,
561
+ const absl::Status& status) override {
563
562
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
564
563
  gpr_log(GPR_INFO,
565
564
  "chand=%p: connectivity change for subchannel wrapper %p "
@@ -568,9 +567,9 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
568
567
  }
569
568
  Ref().release(); // ref owned by lambda
570
569
  parent_->chand_->work_serializer_->Run(
571
- [this]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
570
+ [this, state, status]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
572
571
  *parent_->chand_->work_serializer_) {
573
- ApplyUpdateInControlPlaneWorkSerializer();
572
+ ApplyUpdateInControlPlaneWorkSerializer(state, status);
574
573
  Unref();
575
574
  },
576
575
  DEBUG_LOCATION);
@@ -590,19 +589,20 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
590
589
  }
591
590
 
592
591
  private:
593
- void ApplyUpdateInControlPlaneWorkSerializer()
592
+ void ApplyUpdateInControlPlaneWorkSerializer(grpc_connectivity_state state,
593
+ const absl::Status& status)
594
594
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
595
595
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
596
596
  gpr_log(GPR_INFO,
597
597
  "chand=%p: processing connectivity change in work serializer "
598
- "for subchannel wrapper %p subchannel %p "
599
- "watcher=%p",
598
+ "for subchannel wrapper %p subchannel %p watcher=%p "
599
+ "state=%s status=%s",
600
600
  parent_->chand_, parent_.get(), parent_->subchannel_.get(),
601
- watcher_.get());
601
+ watcher_.get(), ConnectivityStateName(state),
602
+ status.ToString().c_str());
602
603
  }
603
- ConnectivityStateChange state_change = PopConnectivityStateChange();
604
604
  absl::optional<absl::Cord> keepalive_throttling =
605
- state_change.status.GetPayload(kKeepaliveThrottlingKey);
605
+ status.GetPayload(kKeepaliveThrottlingKey);
606
606
  if (keepalive_throttling.has_value()) {
607
607
  int new_keepalive_time = -1;
608
608
  if (absl::SimpleAtoi(std::string(keepalive_throttling.value()),
@@ -634,11 +634,9 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
634
634
  // We specifically want to avoid propagating the status for
635
635
  // state IDLE that the real subchannel gave us only for the
636
636
  // purpose of keepalive propagation.
637
- if (state_change.state != GRPC_CHANNEL_TRANSIENT_FAILURE) {
638
- state_change.status = absl::OkStatus();
639
- }
640
- watcher_->OnConnectivityStateChange(state_change.state,
641
- state_change.status);
637
+ watcher_->OnConnectivityStateChange(
638
+ state, state == GRPC_CHANNEL_TRANSIENT_FAILURE ? status
639
+ : absl::OkStatus());
642
640
  }
643
641
  }
644
642
 
@@ -733,7 +731,7 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
733
731
  chand_, on_complete_, /*cancel=*/false);
734
732
  // Report new state to the user.
735
733
  *state_ = state;
736
- ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_NONE);
734
+ ExecCtx::Run(DEBUG_LOCATION, on_complete_, absl::OkStatus());
737
735
  // Hop back into the work_serializer to clean up.
738
736
  // Not needed in state SHUTDOWN, because the tracker will
739
737
  // automatically remove all watchers in that case.
@@ -756,7 +754,7 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
756
754
  std::memory_order_relaxed)) {
757
755
  return; // Already done.
758
756
  }
759
- ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_CANCELLED);
757
+ ExecCtx::Run(DEBUG_LOCATION, on_complete_, absl::CancelledError());
760
758
  // Hop back into the work_serializer to clean up.
761
759
  // Note: The callback takes a ref in case the ref inside the state tracker
762
760
  // gets removed before the callback runs via a SHUTDOWN notification.
@@ -770,7 +768,7 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
770
768
  }
771
769
 
772
770
  void ClientChannel::ExternalConnectivityWatcher::AddWatcherLocked() {
773
- Closure::Run(DEBUG_LOCATION, watcher_timer_init_, GRPC_ERROR_NONE);
771
+ Closure::Run(DEBUG_LOCATION, watcher_timer_init_, absl::OkStatus());
774
772
  // Add new watcher. Pass the ref of the object from creation to OrphanablePtr.
775
773
  chand_->state_tracker_.AddWatcher(
776
774
  initial_state_, OrphanablePtr<ConnectivityStateWatcherInterface>(this));
@@ -885,13 +883,12 @@ class ClientChannel::ClientChannelControlHelper
885
883
  chand_, std::move(subchannel), std::move(health_check_service_name));
886
884
  }
887
885
 
888
- void UpdateState(
889
- grpc_connectivity_state state, const absl::Status& status,
890
- std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) override
891
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
886
+ void UpdateState(grpc_connectivity_state state, const absl::Status& status,
887
+ RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker)
888
+ override ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
892
889
  if (chand_->resolver_ == nullptr) return; // Shutting down.
893
890
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
894
- const char* extra = GRPC_ERROR_IS_NONE(chand_->disconnect_error_)
891
+ const char* extra = chand_->disconnect_error_.ok()
895
892
  ? ""
896
893
  : " (ignoring -- channel shutting down)";
897
894
  gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
@@ -899,7 +896,7 @@ class ClientChannel::ClientChannelControlHelper
899
896
  picker.get(), extra);
900
897
  }
901
898
  // Do update only if not shutting down.
902
- if (GRPC_ERROR_IS_NONE(chand_->disconnect_error_)) {
899
+ if (chand_->disconnect_error_.ok()) {
903
900
  chand_->UpdateStateAndPickerLocked(state, status, "helper",
904
901
  std::move(picker));
905
902
  }
@@ -918,6 +915,10 @@ class ClientChannel::ClientChannelControlHelper
918
915
  return chand_->default_authority_;
919
916
  }
920
917
 
918
+ grpc_event_engine::experimental::EventEngine* GetEventEngine() override {
919
+ return chand_->owning_stack_->EventEngine();
920
+ }
921
+
921
922
  void AddTraceEvent(TraceSeverity severity, absl::string_view message) override
922
923
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
923
924
  if (chand_->resolver_ == nullptr) return; // Shutting down.
@@ -954,7 +955,7 @@ grpc_error_handle ClientChannel::Init(grpc_channel_element* elem,
954
955
  grpc_channel_element_args* args) {
955
956
  GPR_ASSERT(args->is_last);
956
957
  GPR_ASSERT(elem->filter == &kFilterVtable);
957
- grpc_error_handle error = GRPC_ERROR_NONE;
958
+ grpc_error_handle error;
958
959
  new (elem->channel_data) ClientChannel(args, &error);
959
960
  return error;
960
961
  }
@@ -997,7 +998,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
997
998
  grpc_client_channel_start_backup_polling(interested_parties_);
998
999
  // Check client channel factory.
999
1000
  if (client_channel_factory_ == nullptr) {
1000
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1001
+ *error = GRPC_ERROR_CREATE(
1001
1002
  "Missing client channel factory in args for client channel filter");
1002
1003
  return;
1003
1004
  }
@@ -1006,7 +1007,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1006
1007
  absl::optional<absl::string_view> service_config_json =
1007
1008
  channel_args_.GetString(GRPC_ARG_SERVICE_CONFIG);
1008
1009
  if (!service_config_json.has_value()) service_config_json = "{}";
1009
- *error = GRPC_ERROR_NONE;
1010
+ *error = absl::OkStatus();
1010
1011
  auto service_config =
1011
1012
  ServiceConfigImpl::Create(channel_args_, *service_config_json);
1012
1013
  if (!service_config.ok()) {
@@ -1018,7 +1019,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1018
1019
  absl::optional<std::string> server_uri =
1019
1020
  channel_args_.GetOwnedString(GRPC_ARG_SERVER_URI);
1020
1021
  if (!server_uri.has_value()) {
1021
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1022
+ *error = GRPC_ERROR_CREATE(
1022
1023
  "target URI channel arg missing or wrong type in client channel "
1023
1024
  "filter");
1024
1025
  return;
@@ -1031,7 +1032,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1031
1032
  // resolver creation will succeed later.
1032
1033
  if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
1033
1034
  uri_to_resolve_)) {
1034
- *error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
1035
+ *error = GRPC_ERROR_CREATE(
1035
1036
  absl::StrCat("the target uri is not valid: ", uri_to_resolve_));
1036
1037
  return;
1037
1038
  }
@@ -1056,7 +1057,7 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
1056
1057
  default_authority_ = std::move(*default_authority);
1057
1058
  }
1058
1059
  // Success.
1059
- *error = GRPC_ERROR_NONE;
1060
+ *error = absl::OkStatus();
1060
1061
  }
1061
1062
 
1062
1063
  ClientChannel::~ClientChannel() {
@@ -1067,7 +1068,6 @@ ClientChannel::~ClientChannel() {
1067
1068
  // Stop backup polling.
1068
1069
  grpc_client_channel_stop_backup_polling(interested_parties_);
1069
1070
  grpc_pollset_set_destroy(interested_parties_);
1070
- GRPC_ERROR_UNREF(disconnect_error_);
1071
1071
  }
1072
1072
 
1073
1073
  OrphanablePtr<ClientChannel::LoadBalancedCall>
@@ -1321,17 +1321,16 @@ void ClientChannel::OnResolverErrorLocked(absl::Status status) {
1321
1321
  call = call->next) {
1322
1322
  grpc_call_element* elem = call->elem;
1323
1323
  CallData* calld = static_cast<CallData*>(elem->call_data);
1324
- grpc_error_handle error = GRPC_ERROR_NONE;
1324
+ grpc_error_handle error;
1325
1325
  if (calld->CheckResolutionLocked(elem, &error)) {
1326
1326
  calld->AsyncResolutionDone(elem, error);
1327
1327
  }
1328
1328
  }
1329
1329
  }
1330
- GRPC_ERROR_UNREF(error);
1331
1330
  // Update connectivity state.
1332
1331
  UpdateStateAndPickerLocked(
1333
1332
  GRPC_CHANNEL_TRANSIENT_FAILURE, status, "resolver failure",
1334
- absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(status));
1333
+ MakeRefCounted<LoadBalancingPolicy::TransientFailurePicker>(status));
1335
1334
  }
1336
1335
  }
1337
1336
 
@@ -1371,7 +1370,7 @@ OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
1371
1370
  LoadBalancingPolicy::Args lb_policy_args;
1372
1371
  lb_policy_args.work_serializer = work_serializer_;
1373
1372
  lb_policy_args.channel_control_helper =
1374
- absl::make_unique<ClientChannelControlHelper>(this);
1373
+ std::make_unique<ClientChannelControlHelper>(this);
1375
1374
  lb_policy_args.args = args;
1376
1375
  OrphanablePtr<LoadBalancingPolicy> lb_policy =
1377
1376
  MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
@@ -1446,8 +1445,8 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1446
1445
  config_selector =
1447
1446
  MakeRefCounted<DefaultConfigSelector>(saved_service_config_);
1448
1447
  }
1449
- ChannelArgs new_args = config_selector->ModifyChannelArgs(
1450
- channel_args_.SetObject(this).SetObject(service_config));
1448
+ ChannelArgs new_args =
1449
+ channel_args_.SetObject(this).SetObject(service_config);
1451
1450
  bool enable_retries =
1452
1451
  !new_args.WantMinimalStack() &&
1453
1452
  new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
@@ -1460,7 +1459,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1460
1459
  filters.push_back(&DynamicTerminationFilter::kFilterVtable);
1461
1460
  }
1462
1461
  RefCountedPtr<DynamicFilters> dynamic_filters =
1463
- DynamicFilters::Create(new_args.ToC().get(), std::move(filters));
1462
+ DynamicFilters::Create(new_args, std::move(filters));
1464
1463
  GPR_ASSERT(dynamic_filters != nullptr);
1465
1464
  // Grab data plane lock to update service config.
1466
1465
  //
@@ -1489,7 +1488,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
1489
1488
  ExecCtx::Get()->InvalidateNow();
1490
1489
  grpc_call_element* elem = call->elem;
1491
1490
  CallData* calld = static_cast<CallData*>(elem->call_data);
1492
- grpc_error_handle error = GRPC_ERROR_NONE;
1491
+ grpc_error_handle error;
1493
1492
  if (calld->CheckResolutionLocked(elem, &error)) {
1494
1493
  calld->AsyncResolutionDone(elem, error);
1495
1494
  }
@@ -1505,13 +1504,13 @@ void ClientChannel::CreateResolverLocked() {
1505
1504
  }
1506
1505
  resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
1507
1506
  uri_to_resolve_.c_str(), channel_args_, interested_parties_,
1508
- work_serializer_, absl::make_unique<ResolverResultHandler>(this));
1507
+ work_serializer_, std::make_unique<ResolverResultHandler>(this));
1509
1508
  // Since the validity of the args was checked when the channel was created,
1510
1509
  // CreateResolver() must return a non-null result.
1511
1510
  GPR_ASSERT(resolver_ != nullptr);
1512
1511
  UpdateStateAndPickerLocked(
1513
1512
  GRPC_CHANNEL_CONNECTING, absl::Status(), "started resolving",
1514
- absl::make_unique<LoadBalancingPolicy::QueuePicker>(nullptr));
1513
+ MakeRefCounted<LoadBalancingPolicy::QueuePicker>(nullptr));
1515
1514
  resolver_->StartLocked();
1516
1515
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1517
1516
  gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
@@ -1540,7 +1539,7 @@ void ClientChannel::DestroyResolverAndLbPolicyLocked() {
1540
1539
  void ClientChannel::UpdateStateAndPickerLocked(
1541
1540
  grpc_connectivity_state state, const absl::Status& status,
1542
1541
  const char* reason,
1543
- std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) {
1542
+ RefCountedPtr<LoadBalancingPolicy::SubchannelPicker> picker) {
1544
1543
  // Special case for IDLE and SHUTDOWN states.
1545
1544
  if (picker == nullptr || state == GRPC_CHANNEL_SHUTDOWN) {
1546
1545
  saved_service_config_.reset();
@@ -1587,7 +1586,7 @@ void ClientChannel::UpdateStateAndPickerLocked(
1587
1586
  // on the stale value, which results in the timer firing too early. To
1588
1587
  // avoid this, we invalidate the cached value for each call we process.
1589
1588
  ExecCtx::Get()->InvalidateNow();
1590
- grpc_error_handle error = GRPC_ERROR_NONE;
1589
+ grpc_error_handle error;
1591
1590
  if (call->lb_call->PickSubchannelLocked(&error)) {
1592
1591
  call->lb_call->AsyncPickDone(error);
1593
1592
  }
@@ -1631,7 +1630,7 @@ T HandlePickResult(
1631
1630
 
1632
1631
  grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
1633
1632
  if (state_tracker_.state() != GRPC_CHANNEL_READY) {
1634
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("channel not connected");
1633
+ return GRPC_ERROR_CREATE("channel not connected");
1635
1634
  }
1636
1635
  LoadBalancingPolicy::PickResult result;
1637
1636
  {
@@ -1648,16 +1647,15 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
1648
1647
  RefCountedPtr<ConnectedSubchannel> connected_subchannel =
1649
1648
  subchannel->connected_subchannel();
1650
1649
  if (connected_subchannel == nullptr) {
1651
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1652
- "LB pick for ping not connected");
1650
+ return GRPC_ERROR_CREATE("LB pick for ping not connected");
1653
1651
  }
1654
1652
  connected_subchannel->Ping(op->send_ping.on_initiate,
1655
1653
  op->send_ping.on_ack);
1656
- return GRPC_ERROR_NONE;
1654
+ return absl::OkStatus();
1657
1655
  },
1658
1656
  // Queue pick.
1659
1657
  [](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/) {
1660
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("LB picker queued call");
1658
+ return GRPC_ERROR_CREATE("LB picker queued call");
1661
1659
  },
1662
1660
  // Fail pick.
1663
1661
  [](LoadBalancingPolicy::PickResult::Fail* fail_pick) {
@@ -1681,9 +1679,8 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
1681
1679
  // Ping.
1682
1680
  if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
1683
1681
  grpc_error_handle error = DoPingLocked(op);
1684
- if (!GRPC_ERROR_IS_NONE(error)) {
1685
- ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
1686
- GRPC_ERROR_REF(error));
1682
+ if (!error.ok()) {
1683
+ ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate, error);
1687
1684
  ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_ack, error);
1688
1685
  }
1689
1686
  op->bind_pollset = nullptr;
@@ -1697,34 +1694,34 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
1697
1694
  }
1698
1695
  }
1699
1696
  // Disconnect or enter IDLE.
1700
- if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
1697
+ if (!op->disconnect_with_error.ok()) {
1701
1698
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
1702
1699
  gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
1703
- grpc_error_std_string(op->disconnect_with_error).c_str());
1700
+ StatusToString(op->disconnect_with_error).c_str());
1704
1701
  }
1705
1702
  DestroyResolverAndLbPolicyLocked();
1706
1703
  intptr_t value;
1707
1704
  if (grpc_error_get_int(op->disconnect_with_error,
1708
- GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE, &value) &&
1705
+ StatusIntProperty::ChannelConnectivityState,
1706
+ &value) &&
1709
1707
  static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
1710
- if (GRPC_ERROR_IS_NONE(disconnect_error_)) {
1708
+ if (disconnect_error_.ok()) {
1711
1709
  // Enter IDLE state.
1712
1710
  UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, absl::Status(),
1713
1711
  "channel entering IDLE", nullptr);
1714
1712
  }
1715
- GRPC_ERROR_UNREF(op->disconnect_with_error);
1716
1713
  } else {
1717
1714
  // Disconnect.
1718
- GPR_ASSERT(GRPC_ERROR_IS_NONE(disconnect_error_));
1715
+ GPR_ASSERT(disconnect_error_.ok());
1719
1716
  disconnect_error_ = op->disconnect_with_error;
1720
1717
  UpdateStateAndPickerLocked(
1721
1718
  GRPC_CHANNEL_SHUTDOWN, absl::Status(), "shutdown from API",
1722
- absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(
1719
+ MakeRefCounted<LoadBalancingPolicy::TransientFailurePicker>(
1723
1720
  grpc_error_to_absl_status(op->disconnect_with_error)));
1724
1721
  }
1725
1722
  }
1726
1723
  GRPC_CHANNEL_STACK_UNREF(owning_stack_, "start_transport_op");
1727
- ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, GRPC_ERROR_NONE);
1724
+ ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus());
1728
1725
  }
1729
1726
 
1730
1727
  void ClientChannel::StartTransportOp(grpc_channel_element* elem,
@@ -1828,7 +1825,7 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
1828
1825
  GPR_LIKELY(chand.deadline_checking_enabled_)
1829
1826
  ? args.deadline
1830
1827
  : Timestamp::InfFuture()),
1831
- path_(grpc_slice_ref_internal(args.path)),
1828
+ path_(CSliceRef(args.path)),
1832
1829
  call_start_time_(args.start_time),
1833
1830
  deadline_(args.deadline),
1834
1831
  arena_(args.arena),
@@ -1841,8 +1838,7 @@ ClientChannel::CallData::CallData(grpc_call_element* elem,
1841
1838
  }
1842
1839
 
1843
1840
  ClientChannel::CallData::~CallData() {
1844
- grpc_slice_unref_internal(path_);
1845
- GRPC_ERROR_UNREF(cancel_error_);
1841
+ CSliceUnref(path_);
1846
1842
  // Make sure there are no remaining pending batches.
1847
1843
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
1848
1844
  GPR_ASSERT(pending_batches_[i] == nullptr);
@@ -1853,7 +1849,7 @@ grpc_error_handle ClientChannel::CallData::Init(
1853
1849
  grpc_call_element* elem, const grpc_call_element_args* args) {
1854
1850
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
1855
1851
  new (elem->call_data) CallData(elem, *chand, *args);
1856
- return GRPC_ERROR_NONE;
1852
+ return absl::OkStatus();
1857
1853
  }
1858
1854
 
1859
1855
  void ClientChannel::CallData::Destroy(
@@ -1867,7 +1863,7 @@ void ClientChannel::CallData::Destroy(
1867
1863
  dynamic_call->SetAfterCallStackDestroy(then_schedule_closure);
1868
1864
  } else {
1869
1865
  // TODO(yashkt) : This can potentially be a Closure::Run
1870
- ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, GRPC_ERROR_NONE);
1866
+ ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, absl::OkStatus());
1871
1867
  }
1872
1868
  }
1873
1869
 
@@ -1909,15 +1905,14 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
1909
1905
  // We do not yet have a dynamic call.
1910
1906
  //
1911
1907
  // If we've previously been cancelled, immediately fail any new batches.
1912
- if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(calld->cancel_error_))) {
1908
+ if (GPR_UNLIKELY(!calld->cancel_error_.ok())) {
1913
1909
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
1914
1910
  gpr_log(GPR_INFO, "chand=%p calld=%p: failing batch with error: %s",
1915
- chand, calld,
1916
- grpc_error_std_string(calld->cancel_error_).c_str());
1911
+ chand, calld, StatusToString(calld->cancel_error_).c_str());
1917
1912
  }
1918
1913
  // Note: This will release the call combiner.
1919
1914
  grpc_transport_stream_op_batch_finish_with_failure(
1920
- batch, GRPC_ERROR_REF(calld->cancel_error_), calld->call_combiner_);
1915
+ batch, calld->cancel_error_, calld->call_combiner_);
1921
1916
  return;
1922
1917
  }
1923
1918
  // Handle cancellation.
@@ -1927,19 +1922,16 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
1927
1922
  // cancelled before any batches are passed down (e.g., if the deadline
1928
1923
  // is in the past when the call starts), we can return the right
1929
1924
  // error to the caller when the first batch does get passed down.
1930
- GRPC_ERROR_UNREF(calld->cancel_error_);
1931
- calld->cancel_error_ =
1932
- GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
1925
+ calld->cancel_error_ = batch->payload->cancel_stream.cancel_error;
1933
1926
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
1934
1927
  gpr_log(GPR_INFO, "chand=%p calld=%p: recording cancel_error=%s", chand,
1935
- calld, grpc_error_std_string(calld->cancel_error_).c_str());
1928
+ calld, StatusToString(calld->cancel_error_).c_str());
1936
1929
  }
1937
1930
  // Fail all pending batches.
1938
- calld->PendingBatchesFail(elem, GRPC_ERROR_REF(calld->cancel_error_),
1939
- NoYieldCallCombiner);
1931
+ calld->PendingBatchesFail(elem, calld->cancel_error_, NoYieldCallCombiner);
1940
1932
  // Note: This will release the call combiner.
1941
1933
  grpc_transport_stream_op_batch_finish_with_failure(
1942
- batch, GRPC_ERROR_REF(calld->cancel_error_), calld->call_combiner_);
1934
+ batch, calld->cancel_error_, calld->call_combiner_);
1943
1935
  return;
1944
1936
  }
1945
1937
  // Add the batch to the pending list.
@@ -1954,7 +1946,7 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
1954
1946
  "config",
1955
1947
  chand, calld);
1956
1948
  }
1957
- CheckResolution(elem, GRPC_ERROR_NONE);
1949
+ CheckResolution(elem, absl::OkStatus());
1958
1950
  } else {
1959
1951
  // For all other batches, release the call combiner.
1960
1952
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
@@ -2013,24 +2005,23 @@ void ClientChannel::CallData::FailPendingBatchInCallCombiner(
2013
2005
  static_cast<grpc_transport_stream_op_batch*>(arg);
2014
2006
  CallData* calld = static_cast<CallData*>(batch->handler_private.extra_arg);
2015
2007
  // Note: This will release the call combiner.
2016
- grpc_transport_stream_op_batch_finish_with_failure(
2017
- batch, GRPC_ERROR_REF(error), calld->call_combiner_);
2008
+ grpc_transport_stream_op_batch_finish_with_failure(batch, error,
2009
+ calld->call_combiner_);
2018
2010
  }
2019
2011
 
2020
2012
  // This is called via the call combiner, so access to calld is synchronized.
2021
2013
  void ClientChannel::CallData::PendingBatchesFail(
2022
2014
  grpc_call_element* elem, grpc_error_handle error,
2023
2015
  YieldCallCombinerPredicate yield_call_combiner_predicate) {
2024
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
2016
+ GPR_ASSERT(!error.ok());
2025
2017
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2026
2018
  size_t num_batches = 0;
2027
2019
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
2028
2020
  if (pending_batches_[i] != nullptr) ++num_batches;
2029
2021
  }
2030
- gpr_log(GPR_INFO,
2031
- "chand=%p calld=%p: failing %" PRIuPTR " pending batches: %s",
2032
- elem->channel_data, this, num_batches,
2033
- grpc_error_std_string(error).c_str());
2022
+ gpr_log(
2023
+ GPR_INFO, "chand=%p calld=%p: failing %" PRIuPTR " pending batches: %s",
2024
+ elem->channel_data, this, num_batches, StatusToString(error).c_str());
2034
2025
  }
2035
2026
  CallCombinerClosureList closures;
2036
2027
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
@@ -2040,7 +2031,7 @@ void ClientChannel::CallData::PendingBatchesFail(
2040
2031
  GRPC_CLOSURE_INIT(&batch->handler_private.closure,
2041
2032
  FailPendingBatchInCallCombiner, batch,
2042
2033
  grpc_schedule_on_exec_ctx);
2043
- closures.Add(&batch->handler_private.closure, GRPC_ERROR_REF(error),
2034
+ closures.Add(&batch->handler_private.closure, error,
2044
2035
  "PendingBatchesFail");
2045
2036
  batch = nullptr;
2046
2037
  }
@@ -2050,7 +2041,6 @@ void ClientChannel::CallData::PendingBatchesFail(
2050
2041
  } else {
2051
2042
  closures.RunClosuresWithoutYielding(call_combiner_);
2052
2043
  }
2053
- GRPC_ERROR_UNREF(error);
2054
2044
  }
2055
2045
 
2056
2046
  // This is called via the call combiner, so access to calld is synchronized.
@@ -2086,7 +2076,7 @@ void ClientChannel::CallData::PendingBatchesResume(grpc_call_element* elem) {
2086
2076
  batch->handler_private.extra_arg = elem;
2087
2077
  GRPC_CLOSURE_INIT(&batch->handler_private.closure,
2088
2078
  ResumePendingBatchInCallCombiner, batch, nullptr);
2089
- closures.Add(&batch->handler_private.closure, GRPC_ERROR_NONE,
2079
+ closures.Add(&batch->handler_private.closure, absl::OkStatus(),
2090
2080
  "resuming pending batch from client channel call");
2091
2081
  batch = nullptr;
2092
2082
  }
@@ -2122,15 +2112,14 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
2122
2112
  gpr_log(GPR_INFO,
2123
2113
  "chand=%p calld=%p: cancelling resolver queued pick: "
2124
2114
  "error=%s self=%p calld->resolver_pick_canceller=%p",
2125
- chand, calld, grpc_error_std_string(error).c_str(), self,
2115
+ chand, calld, StatusToString(error).c_str(), self,
2126
2116
  calld->resolver_call_canceller_);
2127
2117
  }
2128
- if (calld->resolver_call_canceller_ == self &&
2129
- !GRPC_ERROR_IS_NONE(error)) {
2118
+ if (calld->resolver_call_canceller_ == self && !error.ok()) {
2130
2119
  // Remove pick from list of queued picks.
2131
2120
  calld->MaybeRemoveCallFromResolverQueuedCallsLocked(self->elem_);
2132
2121
  // Fail pending batches on the call.
2133
- calld->PendingBatchesFail(self->elem_, GRPC_ERROR_REF(error),
2122
+ calld->PendingBatchesFail(self->elem_, error,
2134
2123
  YieldCallCombinerIfPendingBatchesFound);
2135
2124
  }
2136
2125
  }
@@ -2155,6 +2144,12 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
2155
2144
  queued_pending_resolver_result_ = false;
2156
2145
  // Lame the call combiner canceller.
2157
2146
  resolver_call_canceller_ = nullptr;
2147
+ // Add trace annotation
2148
+ auto* call_tracer =
2149
+ static_cast<CallTracer*>(call_context_[GRPC_CONTEXT_CALL_TRACER].value);
2150
+ if (call_tracer != nullptr) {
2151
+ call_tracer->RecordAnnotation("Delayed name resolution complete.");
2152
+ }
2158
2153
  }
2159
2154
 
2160
2155
  void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
@@ -2182,11 +2177,11 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2182
2177
  ConfigSelector* config_selector = chand->config_selector_.get();
2183
2178
  if (config_selector != nullptr) {
2184
2179
  // Use the ConfigSelector to determine the config for the call.
2185
- ConfigSelector::CallConfig call_config =
2180
+ auto call_config =
2186
2181
  config_selector->GetCallConfig({&path_, initial_metadata, arena_});
2187
- if (!call_config.status.ok()) {
2182
+ if (!call_config.ok()) {
2188
2183
  return absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
2189
- std::move(call_config.status), "ConfigSelector"));
2184
+ call_config.status(), "ConfigSelector"));
2190
2185
  }
2191
2186
  // Create a ClientChannelServiceConfigCallData for the call. This stores
2192
2187
  // a ref to the ServiceConfig and caches the right set of parsed configs
@@ -2195,9 +2190,9 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2195
2190
  // below us in the stack, and it will be cleaned up when the call ends.
2196
2191
  auto* service_config_call_data =
2197
2192
  arena_->New<ClientChannelServiceConfigCallData>(
2198
- std::move(call_config.service_config), call_config.method_configs,
2199
- std::move(call_config.call_attributes),
2200
- call_config.call_dispatch_controller, call_context_);
2193
+ std::move(call_config->service_config), call_config->method_configs,
2194
+ std::move(call_config->call_attributes),
2195
+ call_config->call_dispatch_controller, call_context_);
2201
2196
  // Apply our own method params to the call.
2202
2197
  auto* method_params = static_cast<ClientChannelMethodParsedConfig*>(
2203
2198
  service_config_call_data->GetMethodParsedConfig(
@@ -2229,7 +2224,7 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
2229
2224
  // Set the dynamic filter stack.
2230
2225
  dynamic_filters_ = chand->dynamic_filters_;
2231
2226
  }
2232
- return GRPC_ERROR_NONE;
2227
+ return absl::OkStatus();
2233
2228
  }
2234
2229
 
2235
2230
  void ClientChannel::CallData::
@@ -2245,7 +2240,7 @@ void ClientChannel::CallData::
2245
2240
  gpr_log(GPR_INFO,
2246
2241
  "chand=%p calld=%p: got recv_trailing_metadata_ready: error=%s "
2247
2242
  "service_config_call_data=%p",
2248
- chand, calld, grpc_error_std_string(error).c_str(),
2243
+ chand, calld, StatusToString(error).c_str(),
2249
2244
  service_config_call_data);
2250
2245
  }
2251
2246
  if (service_config_call_data != nullptr) {
@@ -2253,7 +2248,7 @@ void ClientChannel::CallData::
2253
2248
  }
2254
2249
  // Chain to original callback.
2255
2250
  Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
2256
- GRPC_ERROR_REF(error));
2251
+ error);
2257
2252
  }
2258
2253
 
2259
2254
  void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
@@ -2268,13 +2263,13 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
2268
2263
  grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
2269
2264
  ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
2270
2265
  CallData* calld = static_cast<CallData*>(elem->call_data);
2271
- if (!GRPC_ERROR_IS_NONE(error)) {
2266
+ if (!error.ok()) {
2272
2267
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2273
2268
  gpr_log(GPR_INFO,
2274
2269
  "chand=%p calld=%p: error applying config to call: error=%s",
2275
- chand, calld, grpc_error_std_string(error).c_str());
2270
+ chand, calld, StatusToString(error).c_str());
2276
2271
  }
2277
- calld->PendingBatchesFail(elem, GRPC_ERROR_REF(error), YieldCallCombiner);
2272
+ calld->PendingBatchesFail(elem, error, YieldCallCombiner);
2278
2273
  return;
2279
2274
  }
2280
2275
  calld->CreateDynamicCall(elem);
@@ -2292,7 +2287,6 @@ void ClientChannel::CallData::CheckResolution(void* arg,
2292
2287
  }
2293
2288
  if (resolution_complete) {
2294
2289
  ResolutionDone(elem, error);
2295
- GRPC_ERROR_UNREF(error);
2296
2290
  }
2297
2291
  }
2298
2292
 
@@ -2324,7 +2318,7 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
2324
2318
  DEBUG_LOCATION);
2325
2319
  },
2326
2320
  chand, nullptr),
2327
- GRPC_ERROR_NONE);
2321
+ absl::OkStatus());
2328
2322
  }
2329
2323
  // Get send_initial_metadata batch and flags.
2330
2324
  auto& send_initial_metadata =
@@ -2376,7 +2370,7 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
2376
2370
  arena_,
2377
2371
  call_context_,
2378
2372
  call_combiner_};
2379
- grpc_error_handle error = GRPC_ERROR_NONE;
2373
+ grpc_error_handle error;
2380
2374
  DynamicFilters* channel_stack = args.channel_stack.get();
2381
2375
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2382
2376
  gpr_log(
@@ -2385,11 +2379,11 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
2385
2379
  chand, this, channel_stack);
2386
2380
  }
2387
2381
  dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
2388
- if (!GRPC_ERROR_IS_NONE(error)) {
2382
+ if (!error.ok()) {
2389
2383
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
2390
2384
  gpr_log(GPR_INFO,
2391
2385
  "chand=%p calld=%p: failed to create dynamic call: error=%s",
2392
- chand, this, grpc_error_std_string(error).c_str());
2386
+ chand, this, StatusToString(error).c_str());
2393
2387
  }
2394
2388
  PendingBatchesFail(elem, error, YieldCallCombiner);
2395
2389
  return;
@@ -2556,7 +2550,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
2556
2550
  ? "LoadBalancedCall"
2557
2551
  : nullptr),
2558
2552
  chand_(chand),
2559
- path_(grpc_slice_ref_internal(args.path)),
2553
+ path_(CSliceRef(args.path)),
2560
2554
  deadline_(args.deadline),
2561
2555
  arena_(args.arena),
2562
2556
  owning_call_(args.call_stack),
@@ -2573,8 +2567,6 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
2573
2567
  }
2574
2568
 
2575
2569
  ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
2576
- GRPC_ERROR_UNREF(cancel_error_);
2577
- GRPC_ERROR_UNREF(failure_error_);
2578
2570
  if (backend_metric_data_ != nullptr) {
2579
2571
  backend_metric_data_->BackendMetricData::~BackendMetricData();
2580
2572
  }
@@ -2584,7 +2576,7 @@ ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
2584
2576
  }
2585
2577
  if (on_call_destruction_complete_ != nullptr) {
2586
2578
  ExecCtx::Run(DEBUG_LOCATION, on_call_destruction_complete_,
2587
- GRPC_ERROR_NONE);
2579
+ absl::OkStatus());
2588
2580
  }
2589
2581
  }
2590
2582
 
@@ -2637,16 +2629,15 @@ void ClientChannel::LoadBalancedCall::FailPendingBatchInCallCombiner(
2637
2629
  static_cast<grpc_transport_stream_op_batch*>(arg);
2638
2630
  auto* self = static_cast<LoadBalancedCall*>(batch->handler_private.extra_arg);
2639
2631
  // Note: This will release the call combiner.
2640
- grpc_transport_stream_op_batch_finish_with_failure(
2641
- batch, GRPC_ERROR_REF(error), self->call_combiner_);
2632
+ grpc_transport_stream_op_batch_finish_with_failure(batch, error,
2633
+ self->call_combiner_);
2642
2634
  }
2643
2635
 
2644
2636
  // This is called via the call combiner, so access to calld is synchronized.
2645
2637
  void ClientChannel::LoadBalancedCall::PendingBatchesFail(
2646
2638
  grpc_error_handle error,
2647
2639
  YieldCallCombinerPredicate yield_call_combiner_predicate) {
2648
- GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
2649
- GRPC_ERROR_UNREF(failure_error_);
2640
+ GPR_ASSERT(!error.ok());
2650
2641
  failure_error_ = error;
2651
2642
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2652
2643
  size_t num_batches = 0;
@@ -2655,7 +2646,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
2655
2646
  }
2656
2647
  gpr_log(GPR_INFO,
2657
2648
  "chand=%p lb_call=%p: failing %" PRIuPTR " pending batches: %s",
2658
- chand_, this, num_batches, grpc_error_std_string(error).c_str());
2649
+ chand_, this, num_batches, StatusToString(error).c_str());
2659
2650
  }
2660
2651
  CallCombinerClosureList closures;
2661
2652
  for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
@@ -2665,7 +2656,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesFail(
2665
2656
  GRPC_CLOSURE_INIT(&batch->handler_private.closure,
2666
2657
  FailPendingBatchInCallCombiner, batch,
2667
2658
  grpc_schedule_on_exec_ctx);
2668
- closures.Add(&batch->handler_private.closure, GRPC_ERROR_REF(error),
2659
+ closures.Add(&batch->handler_private.closure, error,
2669
2660
  "PendingBatchesFail");
2670
2661
  batch = nullptr;
2671
2662
  }
@@ -2708,7 +2699,7 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
2708
2699
  GRPC_CLOSURE_INIT(&batch->handler_private.closure,
2709
2700
  ResumePendingBatchInCallCombiner, batch,
2710
2701
  grpc_schedule_on_exec_ctx);
2711
- closures.Add(&batch->handler_private.closure, GRPC_ERROR_NONE,
2702
+ closures.Add(&batch->handler_private.closure, absl::OkStatus(),
2712
2703
  "resuming pending batch from LB call");
2713
2704
  batch = nullptr;
2714
2705
  }
@@ -2732,7 +2723,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2732
2723
  // Record send ops in tracer.
2733
2724
  if (batch->cancel_stream) {
2734
2725
  call_attempt_tracer_->RecordCancel(
2735
- GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error));
2726
+ batch->payload->cancel_stream.cancel_error);
2736
2727
  }
2737
2728
  if (batch->send_initial_metadata) {
2738
2729
  call_attempt_tracer_->RecordSendInitialMetadata(
@@ -2800,14 +2791,14 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2800
2791
  // We do not yet have a subchannel call.
2801
2792
  //
2802
2793
  // If we've previously been cancelled, immediately fail any new batches.
2803
- if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(cancel_error_))) {
2794
+ if (GPR_UNLIKELY(!cancel_error_.ok())) {
2804
2795
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2805
2796
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
2806
- chand_, this, grpc_error_std_string(cancel_error_).c_str());
2797
+ chand_, this, StatusToString(cancel_error_).c_str());
2807
2798
  }
2808
2799
  // Note: This will release the call combiner.
2809
- grpc_transport_stream_op_batch_finish_with_failure(
2810
- batch, GRPC_ERROR_REF(cancel_error_), call_combiner_);
2800
+ grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
2801
+ call_combiner_);
2811
2802
  return;
2812
2803
  }
2813
2804
  // Handle cancellation.
@@ -2817,17 +2808,16 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2817
2808
  // cancelled before any batches are passed down (e.g., if the deadline
2818
2809
  // is in the past when the call starts), we can return the right
2819
2810
  // error to the caller when the first batch does get passed down.
2820
- GRPC_ERROR_UNREF(cancel_error_);
2821
- cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
2811
+ cancel_error_ = batch->payload->cancel_stream.cancel_error;
2822
2812
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2823
2813
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
2824
- chand_, this, grpc_error_std_string(cancel_error_).c_str());
2814
+ chand_, this, StatusToString(cancel_error_).c_str());
2825
2815
  }
2826
2816
  // Fail all pending batches.
2827
- PendingBatchesFail(GRPC_ERROR_REF(cancel_error_), NoYieldCallCombiner);
2817
+ PendingBatchesFail(cancel_error_, NoYieldCallCombiner);
2828
2818
  // Note: This will release the call combiner.
2829
- grpc_transport_stream_op_batch_finish_with_failure(
2830
- batch, GRPC_ERROR_REF(cancel_error_), call_combiner_);
2819
+ grpc_transport_stream_op_batch_finish_with_failure(batch, cancel_error_,
2820
+ call_combiner_);
2831
2821
  return;
2832
2822
  }
2833
2823
  // Add the batch to the pending list.
@@ -2840,7 +2830,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
2840
2830
  "chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
2841
2831
  chand_, this);
2842
2832
  }
2843
- PickSubchannel(this, GRPC_ERROR_NONE);
2833
+ PickSubchannel(this, absl::OkStatus());
2844
2834
  } else {
2845
2835
  // For all other batches, release the call combiner.
2846
2836
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
@@ -2860,13 +2850,12 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
2860
2850
  gpr_log(GPR_INFO,
2861
2851
  "chand=%p lb_call=%p: got on_complete for send_initial_metadata: "
2862
2852
  "error=%s",
2863
- self->chand_, self, grpc_error_std_string(error).c_str());
2853
+ self->chand_, self, StatusToString(error).c_str());
2864
2854
  }
2865
2855
  self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
2866
2856
  self->peer_string_);
2867
2857
  Closure::Run(DEBUG_LOCATION,
2868
- self->original_send_initial_metadata_on_complete_,
2869
- GRPC_ERROR_REF(error));
2858
+ self->original_send_initial_metadata_on_complete_, error);
2870
2859
  }
2871
2860
 
2872
2861
  void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
@@ -2875,15 +2864,15 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
2875
2864
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2876
2865
  gpr_log(GPR_INFO,
2877
2866
  "chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
2878
- self->chand_, self, grpc_error_std_string(error).c_str());
2867
+ self->chand_, self, StatusToString(error).c_str());
2879
2868
  }
2880
- if (GRPC_ERROR_IS_NONE(error)) {
2869
+ if (error.ok()) {
2881
2870
  // recv_initial_metadata_flags is not populated for clients
2882
2871
  self->call_attempt_tracer_->RecordReceivedInitialMetadata(
2883
2872
  self->recv_initial_metadata_, 0 /* recv_initial_metadata_flags */);
2884
2873
  }
2885
2874
  Closure::Run(DEBUG_LOCATION, self->original_recv_initial_metadata_ready_,
2886
- GRPC_ERROR_REF(error));
2875
+ error);
2887
2876
  }
2888
2877
 
2889
2878
  void ClientChannel::LoadBalancedCall::RecvMessageReady(
@@ -2891,13 +2880,12 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
2891
2880
  auto* self = static_cast<LoadBalancedCall*>(arg);
2892
2881
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2893
2882
  gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
2894
- self->chand_, self, grpc_error_std_string(error).c_str());
2883
+ self->chand_, self, StatusToString(error).c_str());
2895
2884
  }
2896
2885
  if (self->recv_message_->has_value()) {
2897
2886
  self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
2898
2887
  }
2899
- Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_,
2900
- GRPC_ERROR_REF(error));
2888
+ Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_, error);
2901
2889
  }
2902
2890
 
2903
2891
  void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
@@ -2908,16 +2896,16 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2908
2896
  "chand=%p lb_call=%p: got recv_trailing_metadata_ready: error=%s "
2909
2897
  "call_attempt_tracer_=%p lb_subchannel_call_tracker_=%p "
2910
2898
  "failure_error_=%s",
2911
- self->chand_, self, grpc_error_std_string(error).c_str(),
2899
+ self->chand_, self, StatusToString(error).c_str(),
2912
2900
  self->call_attempt_tracer_, self->lb_subchannel_call_tracker_.get(),
2913
- grpc_error_std_string(self->failure_error_).c_str());
2901
+ StatusToString(self->failure_error_).c_str());
2914
2902
  }
2915
2903
  // Check if we have a tracer or an LB callback to invoke.
2916
2904
  if (self->call_attempt_tracer_ != nullptr ||
2917
2905
  self->lb_subchannel_call_tracker_ != nullptr) {
2918
2906
  // Get the call's status.
2919
2907
  absl::Status status;
2920
- if (!GRPC_ERROR_IS_NONE(error)) {
2908
+ if (!error.ok()) {
2921
2909
  // Get status from error.
2922
2910
  grpc_status_code code;
2923
2911
  std::string message;
@@ -2940,11 +2928,9 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
2940
2928
  self->RecordCallCompletion(status);
2941
2929
  }
2942
2930
  // Chain to original callback.
2943
- if (!GRPC_ERROR_IS_NONE(self->failure_error_)) {
2931
+ if (!self->failure_error_.ok()) {
2944
2932
  error = self->failure_error_;
2945
- self->failure_error_ = GRPC_ERROR_NONE;
2946
- } else {
2947
- error = GRPC_ERROR_REF(error);
2933
+ self->failure_error_ = absl::OkStatus();
2948
2934
  }
2949
2935
  Closure::Run(DEBUG_LOCATION, self->original_recv_trailing_metadata_ready_,
2950
2936
  error);
@@ -2976,18 +2962,18 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
2976
2962
  // TODO(roth): When we implement hedging support, we will probably
2977
2963
  // need to use a separate call context for each subchannel call.
2978
2964
  call_context_, call_combiner_};
2979
- grpc_error_handle error = GRPC_ERROR_NONE;
2965
+ grpc_error_handle error;
2980
2966
  subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
2981
2967
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
2982
2968
  gpr_log(GPR_INFO,
2983
2969
  "chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
2984
- this, subchannel_call_.get(), grpc_error_std_string(error).c_str());
2970
+ this, subchannel_call_.get(), StatusToString(error).c_str());
2985
2971
  }
2986
2972
  if (on_call_destruction_complete_ != nullptr) {
2987
2973
  subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_);
2988
2974
  on_call_destruction_complete_ = nullptr;
2989
2975
  }
2990
- if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(error))) {
2976
+ if (GPR_UNLIKELY(!error.ok())) {
2991
2977
  PendingBatchesFail(error, YieldCallCombiner);
2992
2978
  } else {
2993
2979
  PendingBatchesResume();
@@ -3021,15 +3007,15 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
3021
3007
  gpr_log(GPR_INFO,
3022
3008
  "chand=%p lb_call=%p: cancelling queued pick: "
3023
3009
  "error=%s self=%p calld->pick_canceller=%p",
3024
- chand, lb_call, grpc_error_std_string(error).c_str(), self,
3010
+ chand, lb_call, StatusToString(error).c_str(), self,
3025
3011
  lb_call->lb_call_canceller_);
3026
3012
  }
3027
- if (lb_call->lb_call_canceller_ == self && !GRPC_ERROR_IS_NONE(error)) {
3013
+ if (lb_call->lb_call_canceller_ == self && !error.ok()) {
3028
3014
  lb_call->call_dispatch_controller_->Commit();
3029
3015
  // Remove pick from list of queued picks.
3030
3016
  lb_call->MaybeRemoveCallFromLbQueuedCallsLocked();
3031
3017
  // Fail pending batches on the call.
3032
- lb_call->PendingBatchesFail(GRPC_ERROR_REF(error),
3018
+ lb_call->PendingBatchesFail(error,
3033
3019
  YieldCallCombinerIfPendingBatchesFound);
3034
3020
  }
3035
3021
  }
@@ -3051,6 +3037,10 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
3051
3037
  queued_pending_lb_pick_ = false;
3052
3038
  // Lame the call combiner canceller.
3053
3039
  lb_call_canceller_ = nullptr;
3040
+ // Add trace annotation
3041
+ if (call_attempt_tracer_ != nullptr) {
3042
+ call_attempt_tracer_->RecordAnnotation("Delayed LB pick complete.");
3043
+ }
3054
3044
  }
3055
3045
 
3056
3046
  void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
@@ -3075,13 +3065,13 @@ void ClientChannel::LoadBalancedCall::AsyncPickDone(grpc_error_handle error) {
3075
3065
  void ClientChannel::LoadBalancedCall::PickDone(void* arg,
3076
3066
  grpc_error_handle error) {
3077
3067
  auto* self = static_cast<LoadBalancedCall*>(arg);
3078
- if (!GRPC_ERROR_IS_NONE(error)) {
3068
+ if (!error.ok()) {
3079
3069
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
3080
3070
  gpr_log(GPR_INFO,
3081
3071
  "chand=%p lb_call=%p: failed to pick subchannel: error=%s",
3082
- self->chand_, self, grpc_error_std_string(error).c_str());
3072
+ self->chand_, self, StatusToString(error).c_str());
3083
3073
  }
3084
- self->PendingBatchesFail(GRPC_ERROR_REF(error), YieldCallCombiner);
3074
+ self->PendingBatchesFail(error, YieldCallCombiner);
3085
3075
  return;
3086
3076
  }
3087
3077
  self->call_dispatch_controller_->Commit();
@@ -3098,7 +3088,6 @@ void ClientChannel::LoadBalancedCall::PickSubchannel(void* arg,
3098
3088
  }
3099
3089
  if (pick_complete) {
3100
3090
  PickDone(self, error);
3101
- GRPC_ERROR_UNREF(error);
3102
3091
  }
3103
3092
  }
3104
3093
 
@@ -3199,7 +3188,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
3199
3188
  *error = grpc_error_set_int(
3200
3189
  absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
3201
3190
  std::move(drop_pick->status), "LB drop")),
3202
- GRPC_ERROR_INT_LB_POLICY_DROP, 1);
3191
+ StatusIntProperty::kLbPolicyDrop, 1);
3203
3192
  MaybeRemoveCallFromLbQueuedCallsLocked();
3204
3193
  return true;
3205
3194
  });