grpc 1.50.0 → 1.51.0

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

Potentially problematic release.


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

Files changed (459) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +131 -42
  3. data/include/grpc/event_engine/event_engine.h +10 -3
  4. data/include/grpc/event_engine/slice_buffer.h +17 -0
  5. data/include/grpc/grpc.h +0 -10
  6. data/include/grpc/impl/codegen/grpc_types.h +1 -5
  7. data/include/grpc/impl/codegen/port_platform.h +0 -3
  8. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
  9. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
  10. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  11. data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
  12. data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
  13. data/src/core/ext/filters/client_channel/client_channel.h +3 -4
  14. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
  15. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  16. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  17. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
  18. data/src/core/ext/filters/client_channel/connector.h +1 -1
  19. data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
  20. data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
  21. data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
  22. data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
  24. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
  29. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
  30. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
  32. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
  34. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
  35. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
  36. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
  37. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  46. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -4
  53. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
  54. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
  55. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
  56. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
  57. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
  58. data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
  59. data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
  60. data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
  61. data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
  62. data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
  63. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
  64. data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
  65. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  66. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
  67. data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
  68. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
  70. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  71. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
  72. data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
  73. data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
  74. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
  75. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
  76. data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
  77. data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
  78. data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
  79. data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
  80. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
  81. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
  82. data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
  83. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
  84. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
  85. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
  86. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
  87. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
  89. data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
  90. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
  91. data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
  92. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  93. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
  94. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
  95. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
  96. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
  97. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
  98. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
  99. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
  100. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
  102. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
  103. data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
  104. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
  105. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
  106. data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
  107. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
  108. data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
  109. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  110. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
  111. data/src/core/ext/xds/xds_api.cc +15 -68
  112. data/src/core/ext/xds/xds_api.h +3 -7
  113. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  114. data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
  115. data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
  116. data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
  117. data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
  118. data/src/core/ext/xds/xds_client.cc +122 -90
  119. data/src/core/ext/xds/xds_client.h +7 -2
  120. data/src/core/ext/xds/xds_client_grpc.cc +5 -24
  121. data/src/core/ext/xds/xds_cluster.cc +291 -183
  122. data/src/core/ext/xds/xds_cluster.h +11 -15
  123. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
  124. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
  125. data/src/core/ext/xds/xds_common_types.cc +208 -141
  126. data/src/core/ext/xds/xds_common_types.h +19 -13
  127. data/src/core/ext/xds/xds_endpoint.cc +214 -129
  128. data/src/core/ext/xds/xds_endpoint.h +4 -7
  129. data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
  130. data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
  131. data/src/core/ext/xds/xds_http_filters.cc +60 -73
  132. data/src/core/ext/xds/xds_http_filters.h +67 -19
  133. data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
  134. data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
  135. data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
  136. data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
  137. data/src/core/ext/xds/xds_listener.cc +459 -417
  138. data/src/core/ext/xds/xds_listener.h +43 -47
  139. data/src/core/ext/xds/xds_resource_type.h +3 -11
  140. data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
  141. data/src/core/ext/xds/xds_route_config.cc +94 -80
  142. data/src/core/ext/xds/xds_route_config.h +10 -10
  143. data/src/core/ext/xds/xds_routing.cc +2 -1
  144. data/src/core/ext/xds/xds_routing.h +2 -0
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
  146. data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
  147. data/src/core/lib/address_utils/parse_address.cc +11 -10
  148. data/src/core/lib/channel/channel_args.h +16 -1
  149. data/src/core/lib/channel/channel_stack.cc +23 -20
  150. data/src/core/lib/channel/channel_stack.h +17 -4
  151. data/src/core/lib/channel/channel_stack_builder.cc +4 -7
  152. data/src/core/lib/channel/channel_stack_builder.h +14 -6
  153. data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
  154. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
  155. data/src/core/lib/channel/channel_trace.cc +4 -5
  156. data/src/core/lib/channel/channelz.cc +1 -1
  157. data/src/core/lib/channel/connected_channel.cc +695 -35
  158. data/src/core/lib/channel/connected_channel.h +0 -4
  159. data/src/core/lib/channel/promise_based_filter.cc +1004 -140
  160. data/src/core/lib/channel/promise_based_filter.h +364 -87
  161. data/src/core/lib/compression/message_compress.cc +5 -5
  162. data/src/core/lib/debug/event_log.cc +88 -0
  163. data/src/core/lib/debug/event_log.h +81 -0
  164. data/src/core/lib/debug/histogram_view.cc +69 -0
  165. data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
  166. data/src/core/lib/debug/stats.cc +22 -119
  167. data/src/core/lib/debug/stats.h +29 -35
  168. data/src/core/lib/debug/stats_data.cc +224 -73
  169. data/src/core/lib/debug/stats_data.h +263 -122
  170. data/src/core/lib/event_engine/common_closures.h +71 -0
  171. data/src/core/lib/event_engine/default_event_engine.cc +38 -15
  172. data/src/core/lib/event_engine/default_event_engine.h +15 -3
  173. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
  174. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  175. data/src/core/lib/event_engine/poller.h +10 -4
  176. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
  177. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  178. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
  179. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  180. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  181. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  182. data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
  183. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  184. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  185. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
  186. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  187. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
  188. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
  189. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
  190. data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
  191. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  192. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
  193. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
  194. data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
  195. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
  196. data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
  197. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
  198. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
  199. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
  200. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  201. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
  202. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  203. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  204. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  205. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  206. data/src/core/lib/event_engine/slice.cc +7 -6
  207. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  208. data/src/core/lib/event_engine/thread_pool.cc +106 -25
  209. data/src/core/lib/event_engine/thread_pool.h +32 -9
  210. data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
  211. data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
  212. data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
  213. data/src/core/lib/experiments/config.cc +1 -1
  214. data/src/core/lib/experiments/experiments.cc +13 -2
  215. data/src/core/lib/experiments/experiments.h +8 -1
  216. data/src/core/lib/gpr/cpu_linux.cc +6 -2
  217. data/src/core/lib/gpr/log_linux.cc +3 -4
  218. data/src/core/lib/gpr/string.h +1 -1
  219. data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
  220. data/src/core/lib/gprpp/load_file.cc +75 -0
  221. data/src/core/lib/gprpp/load_file.h +33 -0
  222. data/src/core/lib/gprpp/per_cpu.h +46 -0
  223. data/src/core/lib/gprpp/stat_posix.cc +5 -4
  224. data/src/core/lib/gprpp/stat_windows.cc +3 -2
  225. data/src/core/lib/gprpp/status_helper.h +1 -3
  226. data/src/core/lib/gprpp/strerror.cc +41 -0
  227. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
  228. data/src/core/lib/gprpp/thd_windows.cc +1 -2
  229. data/src/core/lib/gprpp/time.cc +3 -4
  230. data/src/core/lib/gprpp/time.h +13 -2
  231. data/src/core/lib/gprpp/validation_errors.h +18 -1
  232. data/src/core/lib/http/httpcli.cc +40 -44
  233. data/src/core/lib/http/httpcli.h +6 -5
  234. data/src/core/lib/http/httpcli_security_connector.cc +4 -6
  235. data/src/core/lib/http/parser.cc +54 -65
  236. data/src/core/lib/iomgr/buffer_list.cc +105 -116
  237. data/src/core/lib/iomgr/buffer_list.h +60 -44
  238. data/src/core/lib/iomgr/call_combiner.cc +11 -10
  239. data/src/core/lib/iomgr/call_combiner.h +3 -4
  240. data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
  241. data/src/core/lib/iomgr/closure.h +49 -5
  242. data/src/core/lib/iomgr/combiner.cc +2 -2
  243. data/src/core/lib/iomgr/endpoint.h +1 -1
  244. data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
  245. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
  246. data/src/core/lib/iomgr/error.cc +27 -42
  247. data/src/core/lib/iomgr/error.h +22 -152
  248. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  249. data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
  250. data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
  251. data/src/core/lib/iomgr/exec_ctx.cc +3 -4
  252. data/src/core/lib/iomgr/exec_ctx.h +2 -3
  253. data/src/core/lib/iomgr/executor.cc +1 -2
  254. data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
  255. data/src/core/lib/iomgr/iocp_windows.cc +1 -0
  256. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  257. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
  258. data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
  259. data/src/core/lib/iomgr/load_file.cc +5 -9
  260. data/src/core/lib/iomgr/lockfree_event.cc +10 -10
  261. data/src/core/lib/iomgr/pollset_windows.cc +4 -4
  262. data/src/core/lib/iomgr/python_util.h +2 -2
  263. data/src/core/lib/iomgr/resolve_address.cc +8 -3
  264. data/src/core/lib/iomgr/resolve_address.h +3 -4
  265. data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
  266. data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
  267. data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
  268. data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
  269. data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
  270. data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
  271. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
  272. data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
  273. data/src/core/lib/iomgr/socket_windows.cc +2 -2
  274. data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
  275. data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
  276. data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
  277. data/src/core/lib/iomgr/tcp_posix.cc +92 -108
  278. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
  279. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  280. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
  281. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
  282. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
  283. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
  284. data/src/core/lib/iomgr/tcp_windows.cc +27 -34
  285. data/src/core/lib/iomgr/timer.h +8 -8
  286. data/src/core/lib/iomgr/timer_generic.cc +9 -15
  287. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
  288. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
  289. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
  290. data/src/core/lib/json/json_channel_args.h +42 -0
  291. data/src/core/lib/json/json_object_loader.cc +7 -2
  292. data/src/core/lib/json/json_object_loader.h +22 -0
  293. data/src/core/lib/json/json_util.cc +5 -5
  294. data/src/core/lib/json/json_util.h +4 -4
  295. data/src/core/lib/load_balancing/lb_policy.cc +1 -1
  296. data/src/core/lib/load_balancing/lb_policy.h +4 -0
  297. data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
  298. data/src/core/lib/matchers/matchers.cc +3 -4
  299. data/src/core/lib/promise/activity.cc +16 -2
  300. data/src/core/lib/promise/activity.h +38 -15
  301. data/src/core/lib/promise/arena_promise.h +80 -51
  302. data/src/core/lib/promise/context.h +13 -6
  303. data/src/core/lib/promise/detail/basic_seq.h +9 -28
  304. data/src/core/lib/promise/detail/promise_factory.h +58 -10
  305. data/src/core/lib/promise/detail/status.h +28 -0
  306. data/src/core/lib/promise/detail/switch.h +1455 -0
  307. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
  308. data/src/core/lib/promise/for_each.h +129 -0
  309. data/src/core/lib/promise/loop.h +7 -5
  310. data/src/core/lib/promise/map_pipe.h +87 -0
  311. data/src/core/lib/promise/pipe.cc +19 -0
  312. data/src/core/lib/promise/pipe.h +505 -0
  313. data/src/core/lib/promise/poll.h +13 -0
  314. data/src/core/lib/promise/seq.h +3 -5
  315. data/src/core/lib/promise/sleep.cc +5 -4
  316. data/src/core/lib/promise/sleep.h +1 -2
  317. data/src/core/lib/promise/try_concurrently.h +341 -0
  318. data/src/core/lib/promise/try_seq.h +10 -13
  319. data/src/core/lib/resolver/server_address.cc +1 -0
  320. data/src/core/lib/resolver/server_address.h +1 -3
  321. data/src/core/lib/resource_quota/api.cc +0 -1
  322. data/src/core/lib/resource_quota/arena.cc +19 -0
  323. data/src/core/lib/resource_quota/arena.h +89 -0
  324. data/src/core/lib/resource_quota/memory_quota.cc +1 -0
  325. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
  326. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
  327. data/src/core/lib/security/authorization/matchers.cc +25 -22
  328. data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
  329. data/src/core/lib/security/context/security_context.h +10 -0
  330. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
  331. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  332. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
  333. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
  334. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
  335. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
  336. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
  337. data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
  339. data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
  340. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
  341. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
  342. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
  343. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
  344. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
  345. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
  346. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
  347. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
  348. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
  349. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
  350. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
  351. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
  352. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  353. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
  354. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
  355. data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
  356. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
  357. data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
  358. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
  359. data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
  360. data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
  361. data/src/core/lib/security/transport/security_handshaker.cc +53 -53
  362. data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
  363. data/src/core/lib/security/transport/tsi_error.cc +6 -3
  364. data/src/core/lib/security/util/json_util.cc +4 -5
  365. data/src/core/lib/service_config/service_config.h +1 -1
  366. data/src/core/lib/service_config/service_config_impl.cc +111 -158
  367. data/src/core/lib/service_config/service_config_impl.h +14 -17
  368. data/src/core/lib/service_config/service_config_parser.cc +14 -31
  369. data/src/core/lib/service_config/service_config_parser.h +14 -10
  370. data/src/core/lib/slice/b64.cc +2 -2
  371. data/src/core/lib/slice/slice.cc +7 -1
  372. data/src/core/lib/slice/slice.h +19 -6
  373. data/src/core/lib/slice/slice_buffer.cc +13 -14
  374. data/src/core/lib/slice/slice_internal.h +13 -21
  375. data/src/core/lib/slice/slice_refcount.h +34 -19
  376. data/src/core/lib/surface/byte_buffer.cc +3 -4
  377. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  378. data/src/core/lib/surface/call.cc +1366 -239
  379. data/src/core/lib/surface/call.h +44 -0
  380. data/src/core/lib/surface/call_details.cc +3 -3
  381. data/src/core/lib/surface/call_trace.cc +113 -0
  382. data/src/core/lib/surface/call_trace.h +30 -0
  383. data/src/core/lib/surface/channel.cc +44 -49
  384. data/src/core/lib/surface/channel.h +9 -1
  385. data/src/core/lib/surface/channel_ping.cc +1 -1
  386. data/src/core/lib/surface/channel_stack_type.cc +4 -0
  387. data/src/core/lib/surface/channel_stack_type.h +2 -0
  388. data/src/core/lib/surface/completion_queue.cc +38 -52
  389. data/src/core/lib/surface/init.cc +8 -39
  390. data/src/core/lib/surface/init_internally.h +8 -0
  391. data/src/core/lib/surface/lame_client.cc +10 -8
  392. data/src/core/lib/surface/server.cc +48 -70
  393. data/src/core/lib/surface/server.h +3 -4
  394. data/src/core/lib/surface/validate_metadata.cc +11 -12
  395. data/src/core/lib/surface/version.cc +2 -2
  396. data/src/core/lib/transport/connectivity_state.cc +2 -2
  397. data/src/core/lib/transport/error_utils.cc +34 -28
  398. data/src/core/lib/transport/error_utils.h +3 -3
  399. data/src/core/lib/transport/handshaker.cc +14 -14
  400. data/src/core/lib/transport/handshaker.h +1 -1
  401. data/src/core/lib/transport/handshaker_factory.h +26 -0
  402. data/src/core/lib/transport/handshaker_registry.cc +8 -2
  403. data/src/core/lib/transport/handshaker_registry.h +3 -4
  404. data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
  405. data/src/core/lib/transport/metadata_batch.h +17 -1
  406. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  407. data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
  408. data/src/core/lib/transport/transport.cc +63 -17
  409. data/src/core/lib/transport/transport.h +64 -68
  410. data/src/core/lib/transport/transport_impl.h +1 -1
  411. data/src/core/lib/transport/transport_op_string.cc +7 -6
  412. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
  413. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
  414. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
  415. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
  416. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  417. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
  418. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
  419. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  420. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
  421. data/src/core/tsi/fake_transport_security.cc +3 -3
  422. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
  423. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  424. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
  425. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
  426. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
  427. data/src/ruby/lib/grpc/version.rb +1 -1
  428. data/src/ruby/spec/channel_spec.rb +0 -43
  429. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  430. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  431. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  432. data/third_party/zlib/compress.c +3 -3
  433. data/third_party/zlib/crc32.c +21 -12
  434. data/third_party/zlib/deflate.c +112 -106
  435. data/third_party/zlib/deflate.h +2 -2
  436. data/third_party/zlib/gzlib.c +1 -1
  437. data/third_party/zlib/gzread.c +3 -5
  438. data/third_party/zlib/gzwrite.c +1 -1
  439. data/third_party/zlib/infback.c +10 -7
  440. data/third_party/zlib/inflate.c +5 -2
  441. data/third_party/zlib/inftrees.c +2 -2
  442. data/third_party/zlib/inftrees.h +1 -1
  443. data/third_party/zlib/trees.c +61 -62
  444. data/third_party/zlib/uncompr.c +2 -2
  445. data/third_party/zlib/zconf.h +16 -3
  446. data/third_party/zlib/zlib.h +10 -10
  447. data/third_party/zlib/zutil.c +9 -7
  448. data/third_party/zlib/zutil.h +1 -0
  449. metadata +55 -18
  450. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  451. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  452. data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
  453. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  454. data/src/core/lib/gpr/murmur_hash.h +0 -29
  455. data/src/core/lib/gpr/tls.h +0 -156
  456. data/src/core/lib/promise/call_push_pull.h +0 -148
  457. data/src/core/lib/slice/slice_api.cc +0 -39
  458. data/src/core/lib/slice/slice_buffer_api.cc +0 -35
  459. data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -0,0 +1,41 @@
1
+ // Copyright 2022 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #include <grpc/support/port_platform.h>
16
+
17
+ #include "src/core/lib/gprpp/strerror.h"
18
+
19
+ #include <string.h>
20
+
21
+ #include "absl/strings/str_format.h"
22
+
23
+ namespace grpc_core {
24
+
25
+ #ifdef GPR_WINDOWS
26
+ std::string StrError(int err) { return strerror(err); }
27
+ #else
28
+ std::string StrError(int err) {
29
+ struct Finish {
30
+ static std::string Run(char* buf, int err, int r) {
31
+ if (r == 0) return buf;
32
+ return absl::StrFormat("strerror_r(%d) failed: %d", err, r);
33
+ }
34
+ static std::string Run(char*, int, const char* r) { return r; }
35
+ };
36
+ char buf[256];
37
+ return Finish::Run(buf, err, strerror_r(err, buf, sizeof(buf)));
38
+ }
39
+ #endif // !GPR_WINDOWS
40
+
41
+ } // namespace grpc_core
@@ -1,5 +1,4 @@
1
- //
2
- // Copyright 2021 gRPC authors.
1
+ // Copyright 2022 gRPC authors.
3
2
  //
4
3
  // Licensed under the Apache License, Version 2.0 (the "License");
5
4
  // you may not use this file except in compliance with the License.
@@ -12,22 +11,19 @@
12
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
12
  // See the License for the specific language governing permissions and
14
13
  // limitations under the License.
15
- //
14
+
15
+ #ifndef GRPC_CORE_LIB_GPRPP_STRERROR_H
16
+ #define GRPC_CORE_LIB_GPRPP_STRERROR_H
16
17
 
17
18
  #include <grpc/support/port_platform.h>
18
19
 
19
- #include "src/core/ext/xds/xds_resource_type.h"
20
+ #include <string>
20
21
 
21
22
  namespace grpc_core {
22
23
 
23
- bool XdsResourceType::IsType(absl::string_view resource_type,
24
- bool* is_v2) const {
25
- if (resource_type == type_url()) return true;
26
- if (resource_type == v2_type_url()) {
27
- if (is_v2 != nullptr) *is_v2 = true;
28
- return true;
29
- }
30
- return false;
31
- }
24
+ // Returns a string describing the posix error code.
25
+ std::string StrError(int err);
32
26
 
33
27
  } // namespace grpc_core
28
+
29
+ #endif // GRPC_CORE_LIB_GPRPP_STRERROR_H
@@ -30,7 +30,6 @@
30
30
  #include <grpc/support/thd_id.h>
31
31
  #include <grpc/support/time.h>
32
32
 
33
- #include "src/core/lib/gpr/tls.h"
34
33
  #include "src/core/lib/gprpp/memory.h"
35
34
  #include "src/core/lib/gprpp/thd.h"
36
35
 
@@ -44,7 +43,7 @@ struct thd_info {
44
43
  bool joinable; /* whether it is joinable */
45
44
  };
46
45
 
47
- GPR_THREAD_LOCAL(struct thd_info*) g_thd_info;
46
+ thread_local struct thd_info* g_thd_info;
48
47
 
49
48
  class ThreadInternalsWindows
50
49
  : public grpc_core::internal::ThreadInternalsInterface {
@@ -18,7 +18,6 @@
18
18
 
19
19
  #include <atomic>
20
20
  #include <chrono>
21
- #include <cstdint>
22
21
  #include <limits>
23
22
  #include <string>
24
23
  #include <utility>
@@ -26,10 +25,11 @@
26
25
  #include "absl/strings/str_format.h"
27
26
 
28
27
  #include <grpc/impl/codegen/gpr_types.h>
29
- #include <grpc/support/log.h>
30
28
 
31
29
  #include "src/core/lib/gprpp/no_destruct.h"
32
30
 
31
+ // IWYU pragma: no_include <ratio>
32
+
33
33
  namespace grpc_core {
34
34
 
35
35
  namespace {
@@ -142,8 +142,7 @@ int64_t TimespanToMillisRoundDown(gpr_timespec ts) {
142
142
 
143
143
  } // namespace
144
144
 
145
- GPR_THREAD_LOCAL(Timestamp::Source*)
146
- Timestamp::thread_local_time_source_{
145
+ thread_local Timestamp::Source* Timestamp::thread_local_time_source_{
147
146
  NoDestructSingleton<GprNowTimeSource>::Get()};
148
147
 
149
148
  Timestamp ScopedTimeCache::Now() {
@@ -27,12 +27,23 @@
27
27
 
28
28
  #include <grpc/event_engine/event_engine.h>
29
29
  #include <grpc/impl/codegen/gpr_types.h>
30
+ #include <grpc/support/log.h>
30
31
  #include <grpc/support/time.h>
31
32
 
32
33
  #include "src/core/lib/gpr/time_precise.h"
33
- #include "src/core/lib/gpr/tls.h"
34
34
  #include "src/core/lib/gpr/useful.h"
35
35
 
36
+ #define GRPC_LOG_EVERY_N_SEC(n, format, ...) \
37
+ do { \
38
+ static std::atomic<uint64_t> prev{0}; \
39
+ uint64_t now = grpc_core::Timestamp::FromTimespecRoundDown( \
40
+ gpr_now(GPR_CLOCK_MONOTONIC)) \
41
+ .milliseconds_after_process_epoch(); \
42
+ if ((now - prev.exchange(now)) > (n)*1000) { \
43
+ gpr_log(GPR_INFO, format, __VA_ARGS__); \
44
+ } \
45
+ } while (0)
46
+
36
47
  namespace grpc_core {
37
48
 
38
49
  namespace time_detail {
@@ -150,7 +161,7 @@ class Timestamp {
150
161
  explicit constexpr Timestamp(int64_t millis) : millis_(millis) {}
151
162
 
152
163
  int64_t millis_ = 0;
153
- static GPR_THREAD_LOCAL(Timestamp::Source*) thread_local_time_source_;
164
+ static thread_local Timestamp::Source* thread_local_time_source_;
154
165
  };
155
166
 
156
167
  class ScopedTimeCache final : public Timestamp::ScopedSource {
@@ -21,6 +21,7 @@
21
21
 
22
22
  #include <map>
23
23
  #include <string>
24
+ #include <utility>
24
25
  #include <vector>
25
26
 
26
27
  #include "absl/status/status.h"
@@ -69,7 +70,23 @@ class ValidationErrors {
69
70
  : errors_(errors) {
70
71
  errors_->PushField(field_name);
71
72
  }
72
- ~ScopedField() { errors_->PopField(); }
73
+
74
+ // Not copyable.
75
+ ScopedField(const ScopedField& other) = delete;
76
+ ScopedField& operator=(const ScopedField& other) = delete;
77
+
78
+ // Movable.
79
+ ScopedField(ScopedField&& other) noexcept
80
+ : errors_(std::exchange(other.errors_, nullptr)) {}
81
+ ScopedField& operator=(ScopedField&& other) noexcept {
82
+ if (errors_ != nullptr) errors_->PopField();
83
+ errors_ = std::exchange(other.errors_, nullptr);
84
+ return *this;
85
+ }
86
+
87
+ ~ScopedField() {
88
+ if (errors_ != nullptr) errors_->PopField();
89
+ }
73
90
 
74
91
  private:
75
92
  ValidationErrors* errors_;
@@ -39,6 +39,7 @@
39
39
  #include "src/core/lib/channel/channel_args.h"
40
40
  #include "src/core/lib/channel/channel_args_preconditioning.h"
41
41
  #include "src/core/lib/config/core_configuration.h"
42
+ #include "src/core/lib/gprpp/status_helper.h"
42
43
  #include "src/core/lib/http/format_request.h"
43
44
  #include "src/core/lib/http/parser.h"
44
45
  #include "src/core/lib/iomgr/endpoint.h"
@@ -48,8 +49,7 @@
48
49
  #include "src/core/lib/resource_quota/api.h"
49
50
  #include "src/core/lib/security/credentials/credentials.h"
50
51
  #include "src/core/lib/security/security_connector/security_connector.h"
51
- #include "src/core/lib/slice/slice_internal.h"
52
- #include "src/core/lib/slice/slice_refcount.h"
52
+ #include "src/core/lib/slice/slice.h"
53
53
  #include "src/core/lib/transport/error_utils.h"
54
54
  #include "src/core/lib/transport/handshaker_registry.h"
55
55
  #include "src/core/lib/transport/tcp_connect_handshaker.h"
@@ -171,7 +171,8 @@ HttpRequest::HttpRequest(
171
171
  resource_quota_(ResourceQuotaFromChannelArgs(channel_args_)),
172
172
  pollent_(pollent),
173
173
  pollset_set_(grpc_pollset_set_create()),
174
- test_only_generate_response_(std::move(test_only_generate_response)) {
174
+ test_only_generate_response_(std::move(test_only_generate_response)),
175
+ resolver_(GetDNSResolver()) {
175
176
  grpc_http_parser_init(&parser_, GRPC_HTTP_RESPONSE, response);
176
177
  grpc_slice_buffer_init(&incoming_);
177
178
  grpc_slice_buffer_init(&outgoing_);
@@ -194,11 +195,10 @@ HttpRequest::~HttpRequest() {
194
195
  if (own_endpoint_ && ep_ != nullptr) {
195
196
  grpc_endpoint_destroy(ep_);
196
197
  }
197
- grpc_slice_unref_internal(request_text_);
198
+ CSliceUnref(request_text_);
198
199
  grpc_iomgr_unregister_object(&iomgr_obj_);
199
- grpc_slice_buffer_destroy_internal(&incoming_);
200
- grpc_slice_buffer_destroy_internal(&outgoing_);
201
- GRPC_ERROR_UNREF(overall_error_);
200
+ grpc_slice_buffer_destroy(&incoming_);
201
+ grpc_slice_buffer_destroy(&outgoing_);
202
202
  grpc_pollset_set_destroy(pollset_set_);
203
203
  }
204
204
 
@@ -209,7 +209,7 @@ void HttpRequest::Start() {
209
209
  return;
210
210
  }
211
211
  Ref().release(); // ref held by pending DNS resolution
212
- dns_request_handle_ = GetDNSResolver()->LookupHostname(
212
+ dns_request_handle_ = resolver_->LookupHostname(
213
213
  absl::bind_front(&HttpRequest::OnResolved, this), uri_.authority(),
214
214
  uri_.scheme(), kDefaultDNSRequestTimeout, pollset_set_,
215
215
  /*name_server=*/"");
@@ -222,35 +222,32 @@ void HttpRequest::Orphan() {
222
222
  cancelled_ = true;
223
223
  // cancel potentially pending DNS resolution.
224
224
  if (dns_request_handle_.has_value() &&
225
- GetDNSResolver()->Cancel(dns_request_handle_.value())) {
226
- Finish(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
227
- "cancelled during DNS resolution"));
225
+ resolver_->Cancel(dns_request_handle_.value())) {
226
+ Finish(GRPC_ERROR_CREATE("cancelled during DNS resolution"));
228
227
  Unref();
229
228
  }
230
229
  if (handshake_mgr_ != nullptr) {
231
230
  // Shutdown will cancel any ongoing tcp connect.
232
- handshake_mgr_->Shutdown(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
233
- "HTTP request cancelled during handshake"));
231
+ handshake_mgr_->Shutdown(
232
+ GRPC_ERROR_CREATE("HTTP request cancelled during handshake"));
234
233
  }
235
234
  if (own_endpoint_ && ep_ != nullptr) {
236
- grpc_endpoint_shutdown(
237
- ep_, GRPC_ERROR_CREATE_FROM_STATIC_STRING("HTTP request cancelled"));
235
+ grpc_endpoint_shutdown(ep_, GRPC_ERROR_CREATE("HTTP request cancelled"));
238
236
  }
239
237
  }
240
238
  Unref();
241
239
  }
242
240
 
243
241
  void HttpRequest::AppendError(grpc_error_handle error) {
244
- if (GRPC_ERROR_IS_NONE(overall_error_)) {
245
- overall_error_ =
246
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed HTTP/1 client request");
242
+ if (overall_error_.ok()) {
243
+ overall_error_ = GRPC_ERROR_CREATE("Failed HTTP/1 client request");
247
244
  }
248
245
  const grpc_resolved_address* addr = &addresses_[next_address_ - 1];
249
246
  auto addr_text = grpc_sockaddr_to_uri(addr);
250
247
  overall_error_ = grpc_error_add_child(
251
248
  overall_error_,
252
249
  grpc_error_set_str(
253
- error, GRPC_ERROR_STR_TARGET_ADDRESS,
250
+ error, StatusStrProperty::kTargetAddress,
254
251
  addr_text.ok() ? addr_text.value() : addr_text.status().ToString()));
255
252
  }
256
253
 
@@ -260,19 +257,19 @@ void HttpRequest::OnReadInternal(grpc_error_handle error) {
260
257
  have_read_byte_ = 1;
261
258
  grpc_error_handle err =
262
259
  grpc_http_parser_parse(&parser_, incoming_.slices[i], nullptr);
263
- if (!GRPC_ERROR_IS_NONE(err)) {
260
+ if (!err.ok()) {
264
261
  Finish(err);
265
262
  return;
266
263
  }
267
264
  }
268
265
  }
269
266
  if (cancelled_) {
270
- Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
271
- "HTTP1 request cancelled during read", &overall_error_, 1));
272
- } else if (GRPC_ERROR_IS_NONE(error)) {
267
+ Finish(GRPC_ERROR_CREATE_REFERENCING("HTTP1 request cancelled during read",
268
+ &overall_error_, 1));
269
+ } else if (error.ok()) {
273
270
  DoRead();
274
271
  } else if (!have_read_byte_) {
275
- NextAddress(GRPC_ERROR_REF(error));
272
+ NextAddress(error);
276
273
  } else {
277
274
  Finish(grpc_http_parser_eof(&parser_));
278
275
  }
@@ -282,15 +279,15 @@ void HttpRequest::ContinueDoneWriteAfterScheduleOnExecCtx(
282
279
  void* arg, grpc_error_handle error) {
283
280
  RefCountedPtr<HttpRequest> req(static_cast<HttpRequest*>(arg));
284
281
  MutexLock lock(&req->mu_);
285
- if (GRPC_ERROR_IS_NONE(error) && !req->cancelled_) {
282
+ if (error.ok() && !req->cancelled_) {
286
283
  req->OnWritten();
287
284
  } else {
288
- req->NextAddress(GRPC_ERROR_REF(error));
285
+ req->NextAddress(error);
289
286
  }
290
287
  }
291
288
 
292
289
  void HttpRequest::StartWrite() {
293
- grpc_slice_ref_internal(request_text_);
290
+ CSliceRef(request_text_);
294
291
  grpc_slice_buffer_add(&outgoing_, request_text_);
295
292
  Ref().release(); // ref held by pending write
296
293
  grpc_endpoint_write(ep_, &outgoing_, &done_write_, nullptr,
@@ -307,19 +304,19 @@ void HttpRequest::OnHandshakeDone(void* arg, grpc_error_handle error) {
307
304
  }
308
305
  MutexLock lock(&req->mu_);
309
306
  req->own_endpoint_ = true;
310
- if (!GRPC_ERROR_IS_NONE(error)) {
307
+ if (!error.ok()) {
311
308
  req->handshake_mgr_.reset();
312
- req->NextAddress(GRPC_ERROR_REF(error));
309
+ req->NextAddress(error);
313
310
  return;
314
311
  }
315
312
  // Handshake completed, so we own fields in args
316
- grpc_slice_buffer_destroy_internal(args->read_buffer);
313
+ grpc_slice_buffer_destroy(args->read_buffer);
317
314
  gpr_free(args->read_buffer);
318
315
  req->ep_ = args->endpoint;
319
316
  req->handshake_mgr_.reset();
320
317
  if (req->cancelled_) {
321
- req->NextAddress(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
322
- "HTTP request cancelled during handshake"));
318
+ req->NextAddress(
319
+ GRPC_ERROR_CREATE("HTTP request cancelled during handshake"));
323
320
  return;
324
321
  }
325
322
  req->StartWrite();
@@ -332,14 +329,14 @@ void HttpRequest::DoHandshake(const grpc_resolved_address* addr) {
332
329
  channel_creds_->create_security_connector(
333
330
  nullptr /*call_creds*/, uri_.authority().c_str(), &args);
334
331
  if (sc == nullptr) {
335
- Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
336
- "failed to create security connector", &overall_error_, 1));
332
+ Finish(GRPC_ERROR_CREATE_REFERENCING("failed to create security connector",
333
+ &overall_error_, 1));
337
334
  return;
338
335
  }
339
336
  absl::StatusOr<std::string> address = grpc_sockaddr_to_uri(addr);
340
337
  if (!address.ok()) {
341
- Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
342
- "Failed to extract URI from address", &overall_error_, 1));
338
+ Finish(GRPC_ERROR_CREATE_REFERENCING("Failed to extract URI from address",
339
+ &overall_error_, 1));
343
340
  return;
344
341
  }
345
342
  args = args.SetObject(std::move(sc))
@@ -358,17 +355,17 @@ void HttpRequest::DoHandshake(const grpc_resolved_address* addr) {
358
355
  }
359
356
 
360
357
  void HttpRequest::NextAddress(grpc_error_handle error) {
361
- if (!GRPC_ERROR_IS_NONE(error)) {
358
+ if (!error.ok()) {
362
359
  AppendError(error);
363
360
  }
364
361
  if (cancelled_) {
365
- Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
366
- "HTTP request was cancelled", &overall_error_, 1));
362
+ Finish(GRPC_ERROR_CREATE_REFERENCING("HTTP request was cancelled",
363
+ &overall_error_, 1));
367
364
  return;
368
365
  }
369
366
  if (next_address_ == addresses_.size()) {
370
- Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
371
- "Failed HTTP requests to all targets", &overall_error_, 1));
367
+ Finish(GRPC_ERROR_CREATE_REFERENCING("Failed HTTP requests to all targets",
368
+ &overall_error_, 1));
372
369
  return;
373
370
  }
374
371
  const grpc_resolved_address* addr = &addresses_[next_address_++];
@@ -381,8 +378,7 @@ void HttpRequest::OnResolved(
381
378
  MutexLock lock(&mu_);
382
379
  dns_request_handle_.reset();
383
380
  if (cancelled_) {
384
- Finish(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
385
- "cancelled during DNS resolution"));
381
+ Finish(GRPC_ERROR_CREATE("cancelled during DNS resolution"));
386
382
  return;
387
383
  }
388
384
  if (!addresses_or.ok()) {
@@ -391,7 +387,7 @@ void HttpRequest::OnResolved(
391
387
  }
392
388
  addresses_ = std::move(*addresses_or);
393
389
  next_address_ = 0;
394
- NextAddress(GRPC_ERROR_NONE);
390
+ NextAddress(absl::OkStatus());
395
391
  }
396
392
 
397
393
  } // namespace grpc_core
@@ -24,9 +24,11 @@
24
24
  #include <stddef.h>
25
25
 
26
26
  #include <functional>
27
+ #include <memory>
27
28
  #include <vector>
28
29
 
29
30
  #include "absl/base/thread_annotations.h"
31
+ #include "absl/status/status.h"
30
32
  #include "absl/status/statusor.h"
31
33
  #include "absl/types/optional.h"
32
34
 
@@ -195,8 +197,7 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
195
197
  static void OnRead(void* user_data, grpc_error_handle error) {
196
198
  HttpRequest* req = static_cast<HttpRequest*>(user_data);
197
199
  ExecCtx::Run(DEBUG_LOCATION,
198
- &req->continue_on_read_after_schedule_on_exec_ctx_,
199
- GRPC_ERROR_REF(error));
200
+ &req->continue_on_read_after_schedule_on_exec_ctx_, error);
200
201
  }
201
202
 
202
203
  // Needed since OnRead may be called inline from grpc_endpoint_read
@@ -215,8 +216,7 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
215
216
  static void DoneWrite(void* arg, grpc_error_handle error) {
216
217
  HttpRequest* req = static_cast<HttpRequest*>(arg);
217
218
  ExecCtx::Run(DEBUG_LOCATION,
218
- &req->continue_done_write_after_schedule_on_exec_ctx_,
219
- GRPC_ERROR_REF(error));
219
+ &req->continue_done_write_after_schedule_on_exec_ctx_, error);
220
220
  }
221
221
 
222
222
  // Needed since DoneWrite may be called inline from grpc_endpoint_write
@@ -261,7 +261,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
261
261
  grpc_iomgr_object iomgr_obj_ ABSL_GUARDED_BY(mu_);
262
262
  grpc_slice_buffer incoming_ ABSL_GUARDED_BY(mu_);
263
263
  grpc_slice_buffer outgoing_ ABSL_GUARDED_BY(mu_);
264
- grpc_error_handle overall_error_ ABSL_GUARDED_BY(mu_) = GRPC_ERROR_NONE;
264
+ grpc_error_handle overall_error_ ABSL_GUARDED_BY(mu_) = absl::OkStatus();
265
+ std::shared_ptr<DNSResolver> resolver_;
265
266
  absl::optional<DNSResolver::TaskHandle> dns_request_handle_
266
267
  ABSL_GUARDED_BY(mu_) = DNSResolver::kNullHandle;
267
268
  };
@@ -109,22 +109,20 @@ class grpc_httpcli_ssl_channel_security_connector final
109
109
  const ChannelArgs& /*args*/,
110
110
  RefCountedPtr<grpc_auth_context>* /*auth_context*/,
111
111
  grpc_closure* on_peer_checked) override {
112
- grpc_error_handle error = GRPC_ERROR_NONE;
112
+ grpc_error_handle error;
113
113
 
114
114
  /* Check the peer name. */
115
115
  if (secure_peer_name_ != nullptr &&
116
116
  !tsi_ssl_peer_matches_name(&peer, secure_peer_name_)) {
117
- error = GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
118
- "Peer name ", secure_peer_name_, " is not in peer certificate"));
117
+ error = GRPC_ERROR_CREATE(absl::StrCat("Peer name ", secure_peer_name_,
118
+ " is not in peer certificate"));
119
119
  }
120
120
  ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
121
121
  tsi_peer_destruct(&peer);
122
122
  }
123
123
 
124
124
  void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
125
- grpc_error_handle error) override {
126
- GRPC_ERROR_UNREF(error);
127
- }
125
+ grpc_error_handle /*error*/) override {}
128
126
 
129
127
  int cmp(const grpc_security_connector* other_sc) const override {
130
128
  auto* other =