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
@@ -47,6 +47,7 @@
47
47
  #include "src/core/lib/config/core_configuration.h"
48
48
  #include "src/core/lib/gprpp/debug_location.h"
49
49
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
50
+ #include "src/core/lib/gprpp/status_helper.h"
50
51
  #include "src/core/lib/gprpp/time.h"
51
52
  #include "src/core/lib/iomgr/closure.h"
52
53
  #include "src/core/lib/iomgr/endpoint.h"
@@ -203,9 +204,9 @@ struct inproc_stream {
203
204
  cs->write_buffer_trailing_md.Clear();
204
205
  cs->write_buffer_trailing_md_filled = false;
205
206
  }
206
- if (!GRPC_ERROR_IS_NONE(cs->write_buffer_cancel_error)) {
207
+ if (!cs->write_buffer_cancel_error.ok()) {
207
208
  cancel_other_error = cs->write_buffer_cancel_error;
208
- cs->write_buffer_cancel_error = GRPC_ERROR_NONE;
209
+ cs->write_buffer_cancel_error = absl::OkStatus();
209
210
  maybe_process_ops_locked(this, cancel_other_error);
210
211
  }
211
212
 
@@ -213,13 +214,7 @@ struct inproc_stream {
213
214
  }
214
215
  }
215
216
 
216
- ~inproc_stream() {
217
- GRPC_ERROR_UNREF(write_buffer_cancel_error);
218
- GRPC_ERROR_UNREF(cancel_self_error);
219
- GRPC_ERROR_UNREF(cancel_other_error);
220
-
221
- t->unref();
222
- }
217
+ ~inproc_stream() { t->unref(); }
223
218
 
224
219
  #ifndef NDEBUG
225
220
  #define STREAM_REF(refs, reason) grpc_stream_ref(refs, reason)
@@ -257,7 +252,7 @@ struct inproc_stream {
257
252
  grpc_core::Timestamp::InfFuture();
258
253
  grpc_metadata_batch write_buffer_trailing_md{arena};
259
254
  bool write_buffer_trailing_md_filled = false;
260
- grpc_error_handle write_buffer_cancel_error = GRPC_ERROR_NONE;
255
+ grpc_error_handle write_buffer_cancel_error;
261
256
 
262
257
  struct inproc_stream* other_side;
263
258
  bool other_side_closed = false; // won't talk anymore
@@ -281,8 +276,8 @@ struct inproc_stream {
281
276
 
282
277
  bool closed = false;
283
278
 
284
- grpc_error_handle cancel_self_error = GRPC_ERROR_NONE;
285
- grpc_error_handle cancel_other_error = GRPC_ERROR_NONE;
279
+ grpc_error_handle cancel_self_error;
280
+ grpc_error_handle cancel_other_error;
286
281
 
287
282
  grpc_core::Timestamp deadline = grpc_core::Timestamp::InfFuture();
288
283
 
@@ -414,14 +409,13 @@ void complete_if_batch_end_locked(inproc_stream* s, grpc_error_handle error,
414
409
 
415
410
  if ((is_sm + is_stm + is_rim + is_rm + is_rtm) == 1) {
416
411
  INPROC_LOG(GPR_INFO, "%s %p %p %s", msg, s, op,
417
- grpc_error_std_string(error).c_str());
418
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_complete,
419
- GRPC_ERROR_REF(error));
412
+ grpc_core::StatusToString(error).c_str());
413
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_complete, error);
420
414
  }
421
415
  }
422
416
 
423
417
  void maybe_process_ops_locked(inproc_stream* s, grpc_error_handle error) {
424
- if (s && (!GRPC_ERROR_IS_NONE(error) || s->ops_needed)) {
418
+ if (s && (!error.ok() || s->ops_needed)) {
425
419
  s->ops_needed = false;
426
420
  op_state_machine_locked(s, error);
427
421
  }
@@ -445,12 +439,12 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
445
439
  fill_in_metadata(s, &fake_md, dest, destfilled);
446
440
 
447
441
  if (other != nullptr) {
448
- if (GRPC_ERROR_IS_NONE(other->cancel_other_error)) {
449
- other->cancel_other_error = GRPC_ERROR_REF(error);
442
+ if (other->cancel_other_error.ok()) {
443
+ other->cancel_other_error = error;
450
444
  }
451
445
  maybe_process_ops_locked(other, error);
452
- } else if (GRPC_ERROR_IS_NONE(s->write_buffer_cancel_error)) {
453
- s->write_buffer_cancel_error = GRPC_ERROR_REF(error);
446
+ } else if (s->write_buffer_cancel_error.ok()) {
447
+ s->write_buffer_cancel_error = error;
454
448
  }
455
449
  }
456
450
  if (s->recv_initial_md_op) {
@@ -468,9 +462,9 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
468
462
  s->recv_initial_md_op->payload->recv_initial_metadata
469
463
  .recv_initial_metadata,
470
464
  nullptr);
471
- err = GRPC_ERROR_NONE;
465
+ err = absl::OkStatus();
472
466
  } else {
473
- err = GRPC_ERROR_REF(error);
467
+ err = error;
474
468
  }
475
469
  if (s->recv_initial_md_op->payload->recv_initial_metadata
476
470
  .trailing_metadata_available != nullptr) {
@@ -482,8 +476,8 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
482
476
  }
483
477
  INPROC_LOG(GPR_INFO,
484
478
  "fail_helper %p scheduling initial-metadata-ready %s %s", s,
485
- grpc_error_std_string(error).c_str(),
486
- grpc_error_std_string(err).c_str());
479
+ grpc_core::StatusToString(error).c_str(),
480
+ grpc_core::StatusToString(err).c_str());
487
481
  grpc_core::ExecCtx::Run(
488
482
  DEBUG_LOCATION,
489
483
  s->recv_initial_md_op->payload->recv_initial_metadata
@@ -498,7 +492,7 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
498
492
  }
499
493
  if (s->recv_message_op) {
500
494
  INPROC_LOG(GPR_INFO, "fail_helper %p scheduling message-ready %s", s,
501
- grpc_error_std_string(error).c_str());
495
+ grpc_core::StatusToString(error).c_str());
502
496
  if (s->recv_message_op->payload->recv_message
503
497
  .call_failed_before_recv_message != nullptr) {
504
498
  *s->recv_message_op->payload->recv_message
@@ -506,8 +500,7 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
506
500
  }
507
501
  grpc_core::ExecCtx::Run(
508
502
  DEBUG_LOCATION,
509
- s->recv_message_op->payload->recv_message.recv_message_ready,
510
- GRPC_ERROR_REF(error));
503
+ s->recv_message_op->payload->recv_message.recv_message_ready, error);
511
504
  complete_if_batch_end_locked(
512
505
  s, error, s->recv_message_op,
513
506
  "fail_helper scheduling recv-message-on-complete");
@@ -528,14 +521,14 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
528
521
  }
529
522
  if (s->recv_trailing_md_op) {
530
523
  INPROC_LOG(GPR_INFO, "fail_helper %p scheduling trailing-metadata-ready %s",
531
- s, grpc_error_std_string(error).c_str());
524
+ s, grpc_core::StatusToString(error).c_str());
532
525
  grpc_core::ExecCtx::Run(
533
526
  DEBUG_LOCATION,
534
527
  s->recv_trailing_md_op->payload->recv_trailing_metadata
535
528
  .recv_trailing_metadata_ready,
536
- GRPC_ERROR_REF(error));
529
+ error);
537
530
  INPROC_LOG(GPR_INFO, "fail_helper %p scheduling trailing-md-on-complete %s",
538
- s, grpc_error_std_string(error).c_str());
531
+ s, grpc_core::StatusToString(error).c_str());
539
532
  complete_if_batch_end_locked(
540
533
  s, error, s->recv_trailing_md_op,
541
534
  "fail_helper scheduling recv-trailing-metadata-on-complete");
@@ -543,8 +536,6 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
543
536
  }
544
537
  close_other_side_locked(s, "fail_helper:other_side");
545
538
  close_stream_locked(s);
546
-
547
- GRPC_ERROR_UNREF(error);
548
539
  }
549
540
 
550
541
  // TODO(vjpai): It should not be necessary to drain the incoming byte
@@ -566,12 +557,12 @@ void message_transfer_locked(inproc_stream* sender, inproc_stream* receiver) {
566
557
  grpc_core::ExecCtx::Run(
567
558
  DEBUG_LOCATION,
568
559
  receiver->recv_message_op->payload->recv_message.recv_message_ready,
569
- GRPC_ERROR_NONE);
560
+ absl::OkStatus());
570
561
  complete_if_batch_end_locked(
571
- sender, GRPC_ERROR_NONE, sender->send_message_op,
562
+ sender, absl::OkStatus(), sender->send_message_op,
572
563
  "message_transfer scheduling sender on_complete");
573
564
  complete_if_batch_end_locked(
574
- receiver, GRPC_ERROR_NONE, receiver->recv_message_op,
565
+ receiver, absl::OkStatus(), receiver->recv_message_op,
575
566
  "message_transfer scheduling receiver on_complete");
576
567
 
577
568
  receiver->recv_message_op = nullptr;
@@ -584,7 +575,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
584
575
  // Schedule our appropriate closures
585
576
  // and then return to ops_needed state if still needed
586
577
 
587
- grpc_error_handle new_err = GRPC_ERROR_NONE;
578
+ grpc_error_handle new_err;
588
579
 
589
580
  bool needs_close = false;
590
581
 
@@ -592,26 +583,26 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
592
583
  // cancellation takes precedence
593
584
  inproc_stream* other = s->other_side;
594
585
 
595
- if (!GRPC_ERROR_IS_NONE(s->cancel_self_error)) {
596
- fail_helper_locked(s, GRPC_ERROR_REF(s->cancel_self_error));
586
+ if (!s->cancel_self_error.ok()) {
587
+ fail_helper_locked(s, s->cancel_self_error);
597
588
  goto done;
598
- } else if (!GRPC_ERROR_IS_NONE(s->cancel_other_error)) {
599
- fail_helper_locked(s, GRPC_ERROR_REF(s->cancel_other_error));
589
+ } else if (!s->cancel_other_error.ok()) {
590
+ fail_helper_locked(s, s->cancel_other_error);
600
591
  goto done;
601
- } else if (!GRPC_ERROR_IS_NONE(error)) {
602
- fail_helper_locked(s, GRPC_ERROR_REF(error));
592
+ } else if (!error.ok()) {
593
+ fail_helper_locked(s, error);
603
594
  goto done;
604
595
  }
605
596
 
606
597
  if (s->send_message_op && other) {
607
598
  if (other->recv_message_op) {
608
599
  message_transfer_locked(s, other);
609
- maybe_process_ops_locked(other, GRPC_ERROR_NONE);
600
+ maybe_process_ops_locked(other, absl::OkStatus());
610
601
  } else if (!s->t->is_client && s->trailing_md_sent) {
611
602
  // A server send will never be matched if the server already sent status
612
603
  ResetSendMessage(s->send_message_op);
613
604
  complete_if_batch_end_locked(
614
- s, GRPC_ERROR_NONE, s->send_message_op,
605
+ s, absl::OkStatus(), s->send_message_op,
615
606
  "op_state_machine scheduling send-message-on-complete case 1");
616
607
  s->send_message_op = nullptr;
617
608
  }
@@ -636,8 +627,8 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
636
627
  if (*destfilled || s->trailing_md_sent) {
637
628
  // The buffer is already in use; that's an error!
638
629
  INPROC_LOG(GPR_INFO, "Extra trailing metadata %p", s);
639
- new_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Extra trailing metadata");
640
- fail_helper_locked(s, GRPC_ERROR_REF(new_err));
630
+ new_err = GRPC_ERROR_CREATE("Extra trailing metadata");
631
+ fail_helper_locked(s, new_err);
641
632
  goto done;
642
633
  } else {
643
634
  if (!other || !other->closed) {
@@ -657,32 +648,31 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
657
648
  DEBUG_LOCATION,
658
649
  s->recv_trailing_md_op->payload->recv_trailing_metadata
659
650
  .recv_trailing_metadata_ready,
660
- GRPC_ERROR_NONE);
651
+ absl::OkStatus());
661
652
  INPROC_LOG(GPR_INFO,
662
653
  "op_state_machine %p scheduling trailing-md-on-complete", s);
663
654
  grpc_core::ExecCtx::Run(DEBUG_LOCATION,
664
655
  s->recv_trailing_md_op->on_complete,
665
- GRPC_ERROR_NONE);
656
+ absl::OkStatus());
666
657
  s->recv_trailing_md_op = nullptr;
667
658
  needs_close = true;
668
659
  }
669
660
  }
670
- maybe_process_ops_locked(other, GRPC_ERROR_NONE);
661
+ maybe_process_ops_locked(other, absl::OkStatus());
671
662
  complete_if_batch_end_locked(
672
- s, GRPC_ERROR_NONE, s->send_trailing_md_op,
663
+ s, absl::OkStatus(), s->send_trailing_md_op,
673
664
  "op_state_machine scheduling send-trailing-metadata-on-complete");
674
665
  s->send_trailing_md_op = nullptr;
675
666
  }
676
667
  if (s->recv_initial_md_op) {
677
668
  if (s->initial_md_recvd) {
678
- new_err =
679
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Already recvd initial md");
669
+ new_err = GRPC_ERROR_CREATE("Already recvd initial md");
680
670
  INPROC_LOG(
681
671
  GPR_INFO,
682
672
  "op_state_machine %p scheduling on_complete errors for already "
683
673
  "recvd initial md %s",
684
- s, grpc_error_std_string(new_err).c_str());
685
- fail_helper_locked(s, GRPC_ERROR_REF(new_err));
674
+ s, grpc_core::StatusToString(new_err).c_str());
675
+ fail_helper_locked(s, new_err);
686
676
  goto done;
687
677
  }
688
678
 
@@ -709,9 +699,9 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
709
699
  DEBUG_LOCATION,
710
700
  s->recv_initial_md_op->payload->recv_initial_metadata
711
701
  .recv_initial_metadata_ready,
712
- GRPC_ERROR_NONE);
702
+ absl::OkStatus());
713
703
  complete_if_batch_end_locked(
714
- s, GRPC_ERROR_NONE, s->recv_initial_md_op,
704
+ s, absl::OkStatus(), s->recv_initial_md_op,
715
705
  "op_state_machine scheduling recv-initial-metadata-on-complete");
716
706
  s->recv_initial_md_op = nullptr;
717
707
  }
@@ -719,7 +709,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
719
709
  if (s->recv_message_op) {
720
710
  if (other && other->send_message_op) {
721
711
  message_transfer_locked(other, s);
722
- maybe_process_ops_locked(other, GRPC_ERROR_NONE);
712
+ maybe_process_ops_locked(other, absl::OkStatus());
723
713
  }
724
714
  }
725
715
  if (s->to_read_trailing_md_filled) {
@@ -733,14 +723,13 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
733
723
  s->to_read_trailing_md_filled = false;
734
724
  s->trailing_md_recvd_implicit_only = false;
735
725
  } else {
736
- new_err =
737
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Already recvd trailing md");
726
+ new_err = GRPC_ERROR_CREATE("Already recvd trailing md");
738
727
  INPROC_LOG(
739
728
  GPR_INFO,
740
729
  "op_state_machine %p scheduling on_complete errors for already "
741
730
  "recvd trailing md %s",
742
- s, grpc_error_std_string(new_err).c_str());
743
- fail_helper_locked(s, GRPC_ERROR_REF(new_err));
731
+ s, grpc_core::StatusToString(new_err).c_str());
732
+ fail_helper_locked(s, new_err);
744
733
  goto done;
745
734
  }
746
735
  }
@@ -752,7 +741,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
752
741
  grpc_core::ExecCtx::Run(
753
742
  DEBUG_LOCATION,
754
743
  s->recv_message_op->payload->recv_message.recv_message_ready,
755
- GRPC_ERROR_NONE);
744
+ absl::OkStatus());
756
745
  complete_if_batch_end_locked(
757
746
  s, new_err, s->recv_message_op,
758
747
  "op_state_machine scheduling recv-message-on-complete");
@@ -789,10 +778,10 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
789
778
  DEBUG_LOCATION,
790
779
  s->recv_trailing_md_op->payload->recv_trailing_metadata
791
780
  .recv_trailing_metadata_ready,
792
- GRPC_ERROR_NONE);
781
+ absl::OkStatus());
793
782
  grpc_core::ExecCtx::Run(DEBUG_LOCATION,
794
783
  s->recv_trailing_md_op->on_complete,
795
- GRPC_ERROR_NONE);
784
+ absl::OkStatus());
796
785
  s->recv_trailing_md_op = nullptr;
797
786
  needs_close = s->trailing_md_sent;
798
787
  }
@@ -808,12 +797,12 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
808
797
  // because we have already sent status and the RPC is over as far as we
809
798
  // are concerned.
810
799
  INPROC_LOG(GPR_INFO, "op_state_machine %p scheduling trailing-md-ready %s",
811
- s, grpc_error_std_string(new_err).c_str());
800
+ s, grpc_core::StatusToString(new_err).c_str());
812
801
  grpc_core::ExecCtx::Run(
813
802
  DEBUG_LOCATION,
814
803
  s->recv_trailing_md_op->payload->recv_trailing_metadata
815
804
  .recv_trailing_metadata_ready,
816
- GRPC_ERROR_REF(new_err));
805
+ new_err);
817
806
  complete_if_batch_end_locked(
818
807
  s, new_err, s->recv_trailing_md_op,
819
808
  "op_state_machine scheduling recv-trailing-md-on-complete");
@@ -831,7 +820,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
831
820
  grpc_core::ExecCtx::Run(
832
821
  DEBUG_LOCATION,
833
822
  s->recv_message_op->payload->recv_message.recv_message_ready,
834
- GRPC_ERROR_NONE);
823
+ absl::OkStatus());
835
824
  complete_if_batch_end_locked(
836
825
  s, new_err, s->recv_message_op,
837
826
  "op_state_machine scheduling recv-message-on-complete");
@@ -861,16 +850,15 @@ done:
861
850
  close_other_side_locked(s, "op_state_machine");
862
851
  close_stream_locked(s);
863
852
  }
864
- GRPC_ERROR_UNREF(new_err);
865
853
  }
866
854
 
867
855
  bool cancel_stream_locked(inproc_stream* s, grpc_error_handle error) {
868
856
  bool ret = false; // was the cancel accepted
869
857
  INPROC_LOG(GPR_INFO, "cancel_stream %p with %s", s,
870
- grpc_error_std_string(error).c_str());
871
- if (GRPC_ERROR_IS_NONE(s->cancel_self_error)) {
858
+ grpc_core::StatusToString(error).c_str());
859
+ if (s->cancel_self_error.ok()) {
872
860
  ret = true;
873
- s->cancel_self_error = GRPC_ERROR_REF(error);
861
+ s->cancel_self_error = error;
874
862
  // Catch current value of other before it gets closed off
875
863
  inproc_stream* other = s->other_side;
876
864
  maybe_process_ops_locked(s, s->cancel_self_error);
@@ -888,12 +876,12 @@ bool cancel_stream_locked(inproc_stream* s, grpc_error_handle error) {
888
876
  fill_in_metadata(s, &cancel_md, dest, destfilled);
889
877
 
890
878
  if (other != nullptr) {
891
- if (GRPC_ERROR_IS_NONE(other->cancel_other_error)) {
892
- other->cancel_other_error = GRPC_ERROR_REF(s->cancel_self_error);
879
+ if (other->cancel_other_error.ok()) {
880
+ other->cancel_other_error = s->cancel_self_error;
893
881
  }
894
882
  maybe_process_ops_locked(other, other->cancel_other_error);
895
- } else if (GRPC_ERROR_IS_NONE(s->write_buffer_cancel_error)) {
896
- s->write_buffer_cancel_error = GRPC_ERROR_REF(s->cancel_self_error);
883
+ } else if (s->write_buffer_cancel_error.ok()) {
884
+ s->write_buffer_cancel_error = s->cancel_self_error;
897
885
  }
898
886
 
899
887
  // if we are a server and already received trailing md but
@@ -904,7 +892,7 @@ bool cancel_stream_locked(inproc_stream* s, grpc_error_handle error) {
904
892
  DEBUG_LOCATION,
905
893
  s->recv_trailing_md_op->payload->recv_trailing_metadata
906
894
  .recv_trailing_metadata_ready,
907
- GRPC_ERROR_REF(s->cancel_self_error));
895
+ s->cancel_self_error);
908
896
  complete_if_batch_end_locked(
909
897
  s, s->cancel_self_error, s->recv_trailing_md_op,
910
898
  "cancel_stream scheduling trailing-md-on-complete");
@@ -915,7 +903,6 @@ bool cancel_stream_locked(inproc_stream* s, grpc_error_handle error) {
915
903
  close_other_side_locked(s, "cancel_stream:other_side");
916
904
  close_stream_locked(s);
917
905
 
918
- GRPC_ERROR_UNREF(error);
919
906
  return ret;
920
907
  }
921
908
 
@@ -938,7 +925,7 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
938
925
  s->t->is_client, false);
939
926
  }
940
927
  }
941
- grpc_error_handle error = GRPC_ERROR_NONE;
928
+ grpc_error_handle error;
942
929
  grpc_closure* on_complete = op->on_complete;
943
930
  // TODO(roth): This is a hack needed because we use data inside of the
944
931
  // closure itself to do the barrier calculation (i.e., to ensure that
@@ -955,9 +942,9 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
955
942
  // this function is responsible to make sure that that field gets unref'ed
956
943
  cancel_stream_locked(s, op->payload->cancel_stream.cancel_error);
957
944
  // this op can complete without an error
958
- } else if (!GRPC_ERROR_IS_NONE(s->cancel_self_error)) {
945
+ } else if (!s->cancel_self_error.ok()) {
959
946
  // already self-canceled so still give it an error
960
- error = GRPC_ERROR_REF(s->cancel_self_error);
947
+ error = s->cancel_self_error;
961
948
  } else {
962
949
  INPROC_LOG(GPR_INFO, "perform_stream_op %p %s%s%s%s%s%s%s", s,
963
950
  s->t->is_client ? "client" : "server",
@@ -970,12 +957,11 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
970
957
  }
971
958
 
972
959
  inproc_stream* other = s->other_side;
973
- if (GRPC_ERROR_IS_NONE(error) &&
974
- (op->send_initial_metadata || op->send_trailing_metadata)) {
960
+ if (error.ok() && (op->send_initial_metadata || op->send_trailing_metadata)) {
975
961
  if (s->t->is_closed) {
976
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Endpoint already shutdown");
962
+ error = GRPC_ERROR_CREATE("Endpoint already shutdown");
977
963
  }
978
- if (GRPC_ERROR_IS_NONE(error) && op->send_initial_metadata) {
964
+ if (error.ok() && op->send_initial_metadata) {
979
965
  grpc_metadata_batch* dest = (other == nullptr)
980
966
  ? &s->write_buffer_initial_md
981
967
  : &other->to_read_initial_md;
@@ -984,7 +970,7 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
984
970
  if (*destfilled || s->initial_md_sent) {
985
971
  // The buffer is already in use; that's an error!
986
972
  INPROC_LOG(GPR_INFO, "Extra initial metadata %p", s);
987
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Extra initial metadata");
973
+ error = GRPC_ERROR_CREATE("Extra initial metadata");
988
974
  } else {
989
975
  if (!s->other_side_closed) {
990
976
  fill_in_metadata(
@@ -1005,10 +991,9 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1005
991
  }
1006
992
  }
1007
993
 
1008
- if (GRPC_ERROR_IS_NONE(error) &&
1009
- (op->send_message || op->send_trailing_metadata ||
1010
- op->recv_initial_metadata || op->recv_message ||
1011
- op->recv_trailing_metadata)) {
994
+ if (error.ok() && (op->send_message || op->send_trailing_metadata ||
995
+ op->recv_initial_metadata || op->recv_message ||
996
+ op->recv_trailing_metadata)) {
1012
997
  // Mark ops that need to be processed by the state machine
1013
998
  if (op->send_message) {
1014
999
  s->send_message_op = op;
@@ -1045,7 +1030,7 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1045
1030
  s->ops_needed = true;
1046
1031
  }
1047
1032
  } else {
1048
- if (!GRPC_ERROR_IS_NONE(error)) {
1033
+ if (!error.ok()) {
1049
1034
  // Consume any send message that was sent here but that we are not
1050
1035
  // pushing to the other side
1051
1036
  if (op->send_message) {
@@ -1065,42 +1050,41 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1065
1050
  INPROC_LOG(
1066
1051
  GPR_INFO,
1067
1052
  "perform_stream_op error %p scheduling initial-metadata-ready %s",
1068
- s, grpc_error_std_string(error).c_str());
1053
+ s, grpc_core::StatusToString(error).c_str());
1069
1054
  grpc_core::ExecCtx::Run(
1070
1055
  DEBUG_LOCATION,
1071
1056
  op->payload->recv_initial_metadata.recv_initial_metadata_ready,
1072
- GRPC_ERROR_REF(error));
1057
+ error);
1073
1058
  }
1074
1059
  if (op->recv_message) {
1075
1060
  INPROC_LOG(
1076
1061
  GPR_INFO,
1077
1062
  "perform_stream_op error %p scheduling recv message-ready %s", s,
1078
- grpc_error_std_string(error).c_str());
1063
+ grpc_core::StatusToString(error).c_str());
1079
1064
  if (op->payload->recv_message.call_failed_before_recv_message !=
1080
1065
  nullptr) {
1081
1066
  *op->payload->recv_message.call_failed_before_recv_message = true;
1082
1067
  }
1083
1068
  grpc_core::ExecCtx::Run(DEBUG_LOCATION,
1084
1069
  op->payload->recv_message.recv_message_ready,
1085
- GRPC_ERROR_REF(error));
1070
+ error);
1086
1071
  }
1087
1072
  if (op->recv_trailing_metadata) {
1088
1073
  INPROC_LOG(GPR_INFO,
1089
1074
  "perform_stream_op error %p scheduling "
1090
1075
  "trailing-metadata-ready %s",
1091
- s, grpc_error_std_string(error).c_str());
1076
+ s, grpc_core::StatusToString(error).c_str());
1092
1077
  grpc_core::ExecCtx::Run(
1093
1078
  DEBUG_LOCATION,
1094
1079
  op->payload->recv_trailing_metadata.recv_trailing_metadata_ready,
1095
- GRPC_ERROR_REF(error));
1080
+ error);
1096
1081
  }
1097
1082
  }
1098
1083
  INPROC_LOG(GPR_INFO, "perform_stream_op %p scheduling on_complete %s", s,
1099
- grpc_error_std_string(error).c_str());
1100
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_complete, GRPC_ERROR_REF(error));
1084
+ grpc_core::StatusToString(error).c_str());
1085
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_complete, error);
1101
1086
  }
1102
1087
  gpr_mu_unlock(mu);
1103
- GRPC_ERROR_UNREF(error);
1104
1088
  }
1105
1089
 
1106
1090
  void close_transport_locked(inproc_transport* t) {
@@ -1114,9 +1098,9 @@ void close_transport_locked(inproc_transport* t) {
1114
1098
  // cancel_stream_locked also adjusts stream list
1115
1099
  cancel_stream_locked(
1116
1100
  t->stream_list,
1117
- grpc_error_set_int(
1118
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Transport closed"),
1119
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE));
1101
+ grpc_error_set_int(GRPC_ERROR_CREATE("Transport closed"),
1102
+ grpc_core::StatusIntProperty::kRpcStatus,
1103
+ GRPC_STATUS_UNAVAILABLE));
1120
1104
  }
1121
1105
  }
1122
1106
  }
@@ -1137,17 +1121,15 @@ void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1137
1121
  t->accept_stream_data = op->set_accept_stream_user_data;
1138
1122
  }
1139
1123
  if (op->on_consumed) {
1140
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, GRPC_ERROR_NONE);
1124
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus());
1141
1125
  }
1142
1126
 
1143
1127
  bool do_close = false;
1144
- if (!GRPC_ERROR_IS_NONE(op->goaway_error)) {
1128
+ if (!op->goaway_error.ok()) {
1145
1129
  do_close = true;
1146
- GRPC_ERROR_UNREF(op->goaway_error);
1147
1130
  }
1148
- if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
1131
+ if (!op->disconnect_with_error.ok()) {
1149
1132
  do_close = true;
1150
- GRPC_ERROR_UNREF(op->disconnect_with_error);
1151
1133
  }
1152
1134
 
1153
1135
  if (do_close) {
@@ -1166,7 +1148,7 @@ void destroy_stream(grpc_transport* gt, grpc_stream* gs,
1166
1148
  gpr_mu_unlock(&t->mu->mu);
1167
1149
  s->~inproc_stream();
1168
1150
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure,
1169
- GRPC_ERROR_NONE);
1151
+ absl::OkStatus());
1170
1152
  }
1171
1153
 
1172
1154
  void destroy_transport(grpc_transport* gt) {
@@ -1251,19 +1233,19 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
1251
1233
  grpc_error_handle error = core_server->SetupTransport(
1252
1234
  server_transport, nullptr, server_args, nullptr);
1253
1235
  grpc_channel* channel = nullptr;
1254
- if (GRPC_ERROR_IS_NONE(error)) {
1236
+ if (error.ok()) {
1255
1237
  auto new_channel = grpc_core::Channel::Create(
1256
1238
  "inproc", client_args, GRPC_CLIENT_DIRECT_CHANNEL, client_transport);
1257
1239
  if (!new_channel.ok()) {
1258
1240
  GPR_ASSERT(!channel);
1259
1241
  gpr_log(GPR_ERROR, "Failed to create client channel: %s",
1260
- grpc_error_std_string(error).c_str());
1242
+ grpc_core::StatusToString(error).c_str());
1261
1243
  intptr_t integer;
1262
1244
  grpc_status_code status = GRPC_STATUS_INTERNAL;
1263
- if (grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &integer)) {
1245
+ if (grpc_error_get_int(error, grpc_core::StatusIntProperty::kRpcStatus,
1246
+ &integer)) {
1264
1247
  status = static_cast<grpc_status_code>(integer);
1265
1248
  }
1266
- GRPC_ERROR_UNREF(error);
1267
1249
  // client_transport was destroyed when grpc_channel_create_internal saw an
1268
1250
  // error.
1269
1251
  grpc_transport_destroy(server_transport);
@@ -1275,13 +1257,13 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
1275
1257
  } else {
1276
1258
  GPR_ASSERT(!channel);
1277
1259
  gpr_log(GPR_ERROR, "Failed to create server channel: %s",
1278
- grpc_error_std_string(error).c_str());
1260
+ grpc_core::StatusToString(error).c_str());
1279
1261
  intptr_t integer;
1280
1262
  grpc_status_code status = GRPC_STATUS_INTERNAL;
1281
- if (grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &integer)) {
1263
+ if (grpc_error_get_int(error, grpc_core::StatusIntProperty::kRpcStatus,
1264
+ &integer)) {
1282
1265
  status = static_cast<grpc_status_code>(integer);
1283
1266
  }
1284
- GRPC_ERROR_UNREF(error);
1285
1267
  grpc_transport_destroy(client_transport);
1286
1268
  grpc_transport_destroy(server_transport);
1287
1269
  channel = grpc_lame_client_channel_create(
@@ -25,6 +25,7 @@
25
25
  #include <grpc/support/log.h>
26
26
 
27
27
  #include "src/core/lib/config/core_configuration.h"
28
+ #include "src/core/lib/gprpp/status_helper.h"
28
29
  #include "src/core/lib/iomgr/error.h"
29
30
  #include "src/core/lib/security/certificate_provider/certificate_provider_registry.h"
30
31
 
@@ -74,12 +75,11 @@ void CertificateProviderStore::PluginDefinition::JsonPostLoad(
74
75
  }
75
76
  if (factory == nullptr) return;
76
77
  // Use plugin to validate and parse config.
77
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
78
+ grpc_error_handle parse_error;
78
79
  config =
79
80
  factory->CreateCertificateProviderConfig(config_json, &parse_error);
80
- if (!GRPC_ERROR_IS_NONE(parse_error)) {
81
- errors->AddError(grpc_error_std_string(parse_error));
82
- GRPC_ERROR_UNREF(parse_error);
81
+ if (!parse_error.ok()) {
82
+ errors->AddError(StatusToString(parse_error));
83
83
  }
84
84
  }
85
85
  }