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
@@ -41,11 +41,12 @@
41
41
  #include <grpc/support/sync.h>
42
42
 
43
43
  #include "src/core/lib/debug/stats.h"
44
+ #include "src/core/lib/debug/stats_data.h"
44
45
  #include "src/core/lib/gpr/spinlock.h"
45
- #include "src/core/lib/gpr/tls.h"
46
46
  #include "src/core/lib/gprpp/atomic_utils.h"
47
47
  #include "src/core/lib/gprpp/debug_location.h"
48
48
  #include "src/core/lib/gprpp/ref_counted.h"
49
+ #include "src/core/lib/gprpp/status_helper.h"
49
50
  #include "src/core/lib/gprpp/time.h"
50
51
  #include "src/core/lib/iomgr/closure.h"
51
52
  #include "src/core/lib/iomgr/exec_ctx.h"
@@ -66,8 +67,8 @@ namespace {
66
67
  // with a cq cache will go into that cache, and
67
68
  // will only be returned on the thread that initialized the cache.
68
69
  // NOTE: Only one event will ever be cached.
69
- GPR_THREAD_LOCAL(grpc_cq_completion*) g_cached_event;
70
- GPR_THREAD_LOCAL(grpc_completion_queue*) g_cached_cq;
70
+ thread_local grpc_cq_completion* g_cached_event;
71
+ thread_local grpc_completion_queue* g_cached_cq;
71
72
 
72
73
  struct plucker {
73
74
  grpc_pollset_worker** worker;
@@ -115,10 +116,10 @@ grpc_error_handle non_polling_poller_work(grpc_pollset* pollset,
115
116
  grpc_pollset_worker** worker,
116
117
  grpc_core::Timestamp deadline) {
117
118
  non_polling_poller* npp = reinterpret_cast<non_polling_poller*>(pollset);
118
- if (npp->shutdown) return GRPC_ERROR_NONE;
119
+ if (npp->shutdown) return absl::OkStatus();
119
120
  if (npp->kicked_without_poller) {
120
121
  npp->kicked_without_poller = false;
121
- return GRPC_ERROR_NONE;
122
+ return absl::OkStatus();
122
123
  }
123
124
  non_polling_worker w;
124
125
  gpr_cv_init(&w.cv);
@@ -140,7 +141,8 @@ grpc_error_handle non_polling_poller_work(grpc_pollset* pollset,
140
141
  npp->root = w.next;
141
142
  if (&w == npp->root) {
142
143
  if (npp->shutdown) {
143
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, npp->shutdown, GRPC_ERROR_NONE);
144
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, npp->shutdown,
145
+ absl::OkStatus());
144
146
  }
145
147
  npp->root = nullptr;
146
148
  }
@@ -149,7 +151,7 @@ grpc_error_handle non_polling_poller_work(grpc_pollset* pollset,
149
151
  w.prev->next = w.next;
150
152
  gpr_cv_destroy(&w.cv);
151
153
  if (worker != nullptr) *worker = nullptr;
152
- return GRPC_ERROR_NONE;
154
+ return absl::OkStatus();
153
155
  }
154
156
 
155
157
  grpc_error_handle non_polling_poller_kick(
@@ -168,7 +170,7 @@ grpc_error_handle non_polling_poller_kick(
168
170
  } else {
169
171
  p->kicked_without_poller = true;
170
172
  }
171
- return GRPC_ERROR_NONE;
173
+ return absl::OkStatus();
172
174
  }
173
175
 
174
176
  void non_polling_poller_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
@@ -176,7 +178,7 @@ void non_polling_poller_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
176
178
  GPR_ASSERT(closure != nullptr);
177
179
  p->shutdown = closure;
178
180
  if (p->root == nullptr) {
179
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
181
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, absl::OkStatus());
180
182
  } else {
181
183
  non_polling_worker* w = p->root;
182
184
  do {
@@ -512,13 +514,13 @@ grpc_completion_queue* grpc_completion_queue_create_internal(
512
514
 
513
515
  switch (completion_type) {
514
516
  case GRPC_CQ_NEXT:
515
- GRPC_STATS_INC_CQ_NEXT_CREATES();
517
+ grpc_core::global_stats().IncrementCqNextCreates();
516
518
  break;
517
519
  case GRPC_CQ_PLUCK:
518
- GRPC_STATS_INC_CQ_PLUCK_CREATES();
520
+ grpc_core::global_stats().IncrementCqPluckCreates();
519
521
  break;
520
522
  case GRPC_CQ_CALLBACK:
521
- GRPC_STATS_INC_CQ_CALLBACK_CREATES();
523
+ grpc_core::global_stats().IncrementCqCallbackCreates();
522
524
  break;
523
525
  }
524
526
 
@@ -691,21 +693,19 @@ static void cq_end_op_for_next(
691
693
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
692
694
  grpc_cq_completion* storage, bool /*internal*/) {
693
695
  if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
694
- (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
695
- !GRPC_ERROR_IS_NONE(error))) {
696
- std::string errmsg = grpc_error_std_string(error);
696
+ (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) && !error.ok())) {
697
+ std::string errmsg = grpc_core::StatusToString(error);
697
698
  GRPC_API_TRACE(
698
699
  "cq_end_op_for_next(cq=%p, tag=%p, error=%s, "
699
700
  "done=%p, done_arg=%p, storage=%p)",
700
701
  6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
701
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
702
- !GRPC_ERROR_IS_NONE(error)) {
702
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) && !error.ok()) {
703
703
  gpr_log(GPR_INFO, "Operation failed: tag=%p, error=%s", tag,
704
704
  errmsg.c_str());
705
705
  }
706
706
  }
707
707
  cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
708
- int is_success = (GRPC_ERROR_IS_NONE(error));
708
+ int is_success = (error.ok());
709
709
 
710
710
  storage->tag = tag;
711
711
  storage->done = done;
@@ -733,10 +733,9 @@ static void cq_end_op_for_next(
733
733
  cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), nullptr);
734
734
  gpr_mu_unlock(cq->mu);
735
735
 
736
- if (!GRPC_ERROR_IS_NONE(kick_error)) {
736
+ if (!kick_error.ok()) {
737
737
  gpr_log(GPR_ERROR, "Kick failed: %s",
738
- grpc_error_std_string(kick_error).c_str());
739
- GRPC_ERROR_UNREF(kick_error);
738
+ grpc_core::StatusToString(kick_error).c_str());
740
739
  }
741
740
  }
742
741
  if (cqd->pending_events.fetch_sub(1, std::memory_order_acq_rel) == 1) {
@@ -755,8 +754,6 @@ static void cq_end_op_for_next(
755
754
  GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down");
756
755
  }
757
756
  }
758
-
759
- GRPC_ERROR_UNREF(error);
760
757
  }
761
758
 
762
759
  /* Queue a GRPC_OP_COMPLETED operation to a completion queue (with a
@@ -767,18 +764,16 @@ static void cq_end_op_for_pluck(
767
764
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
768
765
  grpc_cq_completion* storage, bool /*internal*/) {
769
766
  cq_pluck_data* cqd = static_cast<cq_pluck_data*> DATA_FROM_CQ(cq);
770
- int is_success = (GRPC_ERROR_IS_NONE(error));
767
+ int is_success = (error.ok());
771
768
 
772
769
  if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
773
- (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
774
- !GRPC_ERROR_IS_NONE(error))) {
775
- std::string errmsg = grpc_error_std_string(error).c_str();
770
+ (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) && !error.ok())) {
771
+ std::string errmsg = grpc_core::StatusToString(error).c_str();
776
772
  GRPC_API_TRACE(
777
773
  "cq_end_op_for_pluck(cq=%p, tag=%p, error=%s, "
778
774
  "done=%p, done_arg=%p, storage=%p)",
779
775
  6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
780
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
781
- !GRPC_ERROR_IS_NONE(error)) {
776
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) && !error.ok()) {
782
777
  gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
783
778
  errmsg.c_str());
784
779
  }
@@ -814,19 +809,16 @@ static void cq_end_op_for_pluck(
814
809
  grpc_error_handle kick_error =
815
810
  cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), pluck_worker);
816
811
  gpr_mu_unlock(cq->mu);
817
- if (!GRPC_ERROR_IS_NONE(kick_error)) {
812
+ if (!kick_error.ok()) {
818
813
  gpr_log(GPR_ERROR, "Kick failed: %s",
819
- grpc_error_std_string(kick_error).c_str());
820
- GRPC_ERROR_UNREF(kick_error);
814
+ grpc_core::StatusToString(kick_error).c_str());
821
815
  }
822
816
  }
823
-
824
- GRPC_ERROR_UNREF(error);
825
817
  }
826
818
 
827
819
  static void functor_callback(void* arg, grpc_error_handle error) {
828
820
  auto* functor = static_cast<grpc_completion_queue_functor*>(arg);
829
- functor->functor_run(functor, GRPC_ERROR_IS_NONE(error));
821
+ functor->functor_run(functor, error.ok());
830
822
  }
831
823
 
832
824
  /* Complete an event on a completion queue of type GRPC_CQ_CALLBACK */
@@ -837,15 +829,13 @@ static void cq_end_op_for_callback(
837
829
  cq_callback_data* cqd = static_cast<cq_callback_data*> DATA_FROM_CQ(cq);
838
830
 
839
831
  if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
840
- (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
841
- !GRPC_ERROR_IS_NONE(error))) {
842
- std::string errmsg = grpc_error_std_string(error);
832
+ (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) && !error.ok())) {
833
+ std::string errmsg = grpc_core::StatusToString(error);
843
834
  GRPC_API_TRACE(
844
835
  "cq_end_op_for_callback(cq=%p, tag=%p, error=%s, "
845
836
  "done=%p, done_arg=%p, storage=%p)",
846
837
  6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
847
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
848
- !GRPC_ERROR_IS_NONE(error)) {
838
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) && !error.ok()) {
849
839
  gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
850
840
  errmsg.c_str());
851
841
  }
@@ -871,9 +861,7 @@ static void cq_end_op_for_callback(
871
861
  if (((internal || functor->inlineable) &&
872
862
  grpc_core::ApplicationCallbackExecCtx::Available()) ||
873
863
  grpc_iomgr_is_any_background_poller_thread()) {
874
- grpc_core::ApplicationCallbackExecCtx::Enqueue(functor,
875
- (GRPC_ERROR_IS_NONE(error)));
876
- GRPC_ERROR_UNREF(error);
864
+ grpc_core::ApplicationCallbackExecCtx::Enqueue(functor, (error.ok()));
877
865
  return;
878
866
  }
879
867
 
@@ -1047,11 +1035,10 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
1047
1035
  POLLSET_FROM_CQ(cq), nullptr, iteration_deadline);
1048
1036
  gpr_mu_unlock(cq->mu);
1049
1037
 
1050
- if (!GRPC_ERROR_IS_NONE(err)) {
1038
+ if (!err.ok()) {
1051
1039
  gpr_log(GPR_ERROR, "Completion queue next failed: %s",
1052
- grpc_error_std_string(err).c_str());
1053
- GRPC_ERROR_UNREF(err);
1054
- if (err == GRPC_ERROR_CANCELLED) {
1040
+ grpc_core::StatusToString(err).c_str());
1041
+ if (err == absl::CancelledError()) {
1055
1042
  ret.type = GRPC_QUEUE_SHUTDOWN;
1056
1043
  } else {
1057
1044
  ret.type = GRPC_QUEUE_TIMEOUT;
@@ -1147,7 +1134,7 @@ static void del_plucker(grpc_completion_queue* cq, void* tag,
1147
1134
  return;
1148
1135
  }
1149
1136
  }
1150
- GPR_UNREACHABLE_CODE(return );
1137
+ GPR_UNREACHABLE_CODE(return);
1151
1138
  }
1152
1139
 
1153
1140
  class ExecCtxPluck : public grpc_core::ExecCtx {
@@ -1290,12 +1277,11 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
1290
1277
  cq->num_polls++;
1291
1278
  grpc_error_handle err =
1292
1279
  cq->poller_vtable->work(POLLSET_FROM_CQ(cq), &worker, deadline_millis);
1293
- if (!GRPC_ERROR_IS_NONE(err)) {
1280
+ if (!err.ok()) {
1294
1281
  del_plucker(cq, tag, &worker);
1295
1282
  gpr_mu_unlock(cq->mu);
1296
1283
  gpr_log(GPR_ERROR, "Completion queue pluck failed: %s",
1297
- grpc_error_std_string(err).c_str());
1298
- GRPC_ERROR_UNREF(err);
1284
+ grpc_core::StatusToString(err).c_str());
1299
1285
  ret.type = GRPC_QUEUE_TIMEOUT;
1300
1286
  ret.success = 0;
1301
1287
  dump_pending_tags(cq);
@@ -1370,7 +1356,7 @@ static void cq_finish_shutdown_callback(grpc_completion_queue* cq) {
1370
1356
  // from a background poller thread.
1371
1357
  grpc_core::Executor::Run(
1372
1358
  GRPC_CLOSURE_CREATE(functor_callback, callback, nullptr),
1373
- GRPC_ERROR_NONE);
1359
+ absl::OkStatus());
1374
1360
  }
1375
1361
 
1376
1362
  static void cq_shutdown_callback(grpc_completion_queue* cq) {
@@ -21,7 +21,6 @@
21
21
  #include "src/core/lib/surface/init.h"
22
22
 
23
23
  #include <limits.h>
24
- #include <stdint.h>
25
24
 
26
25
  #include "absl/base/thread_annotations.h"
27
26
 
@@ -38,7 +37,6 @@
38
37
  #include "src/core/lib/channel/channel_stack_builder.h"
39
38
  #include "src/core/lib/config/core_configuration.h"
40
39
  #include "src/core/lib/debug/trace.h"
41
- #include "src/core/lib/event_engine/default_event_engine.h"
42
40
  #include "src/core/lib/event_engine/forkable.h"
43
41
  #include "src/core/lib/event_engine/posix_engine/timer_manager.h"
44
42
  #include "src/core/lib/experiments/config.h"
@@ -53,12 +51,12 @@
53
51
  #include "src/core/lib/security/security_connector/security_connector.h"
54
52
  #include "src/core/lib/security/transport/auth_filters.h"
55
53
  #include "src/core/lib/surface/api_trace.h"
56
- #include "src/core/lib/surface/channel_init.h"
57
54
  #include "src/core/lib/surface/channel_stack_type.h"
58
55
  #include "src/core/lib/surface/init_internally.h"
59
56
 
60
- /* (generated) built in registry of plugins */
61
- extern void grpc_register_built_in_plugins(void);
57
+ // Remnants of the old plugin system
58
+ void grpc_resolver_dns_ares_init(void);
59
+ void grpc_resolver_dns_ares_shutdown(void);
62
60
 
63
61
  #define MAX_PLUGINS 128
64
62
 
@@ -123,7 +121,6 @@ static void do_basic_init(void) {
123
121
  gpr_log_verbosity_init();
124
122
  g_init_mu = new grpc_core::Mutex();
125
123
  g_shutting_down_cv = new grpc_core::CondVar();
126
- grpc_register_built_in_plugins();
127
124
  gpr_time_init();
128
125
  grpc_core::PrintExperimentsList();
129
126
  grpc_core::Fork::GlobalInit();
@@ -133,23 +130,6 @@ static void do_basic_init(void) {
133
130
  grpc_client_channel_global_init_backup_polling();
134
131
  }
135
132
 
136
- typedef struct grpc_plugin {
137
- void (*init)();
138
- void (*destroy)();
139
- } grpc_plugin;
140
-
141
- static grpc_plugin g_all_of_the_plugins[MAX_PLUGINS];
142
- static int g_number_of_plugins = 0;
143
-
144
- void grpc_register_plugin(void (*init)(void), void (*destroy)(void)) {
145
- GRPC_API_TRACE("grpc_register_plugin(init=%p, destroy=%p)", 2,
146
- ((void*)(intptr_t)init, (void*)(intptr_t)destroy));
147
- GPR_ASSERT(g_number_of_plugins != MAX_PLUGINS);
148
- g_all_of_the_plugins[g_number_of_plugins].init = init;
149
- g_all_of_the_plugins[g_number_of_plugins].destroy = destroy;
150
- g_number_of_plugins++;
151
- }
152
-
153
133
  void grpc_init(void) {
154
134
  gpr_once_init(&g_basic_init, do_basic_init);
155
135
 
@@ -160,11 +140,7 @@ void grpc_init(void) {
160
140
  g_shutting_down_cv->SignalAll();
161
141
  }
162
142
  grpc_iomgr_init();
163
- for (int i = 0; i < g_number_of_plugins; i++) {
164
- if (g_all_of_the_plugins[i].init != nullptr) {
165
- g_all_of_the_plugins[i].init();
166
- }
167
- }
143
+ grpc_resolver_dns_ares_init();
168
144
  grpc_iomgr_start();
169
145
  }
170
146
 
@@ -173,19 +149,11 @@ void grpc_init(void) {
173
149
 
174
150
  void grpc_shutdown_internal_locked(void)
175
151
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(g_init_mu) {
176
- int i;
177
152
  {
178
153
  grpc_core::ExecCtx exec_ctx(0);
179
154
  grpc_iomgr_shutdown_background_closure();
180
- {
181
- grpc_timer_manager_set_threading(false); // shutdown timer_manager thread
182
- for (i = g_number_of_plugins; i >= 0; i--) {
183
- if (g_all_of_the_plugins[i].destroy != nullptr) {
184
- g_all_of_the_plugins[i].destroy();
185
- }
186
- }
187
- }
188
- grpc_event_engine::experimental::ResetDefaultEventEngine();
155
+ grpc_timer_manager_set_threading(false); // shutdown timer_manager thread
156
+ grpc_resolver_dns_ares_shutdown();
189
157
  grpc_iomgr_shutdown();
190
158
  }
191
159
  g_shutting_down = false;
@@ -215,7 +183,8 @@ void grpc_shutdown(void) {
215
183
  IsTimerManagerThread() &&
216
184
  (acec == nullptr ||
217
185
  (acec->Flags() & GRPC_APP_CALLBACK_EXEC_CTX_FLAG_IS_INTERNAL_THREAD) ==
218
- 0)) {
186
+ 0) &&
187
+ grpc_core::ExecCtx::Get() == nullptr) {
219
188
  // just run clean-up when this is called on non-executor thread.
220
189
  gpr_log(GPR_DEBUG, "grpc_shutdown starts clean-up now");
221
190
  g_shutting_down = true;
@@ -23,6 +23,14 @@ namespace grpc_core {
23
23
  extern void (*InitInternally)();
24
24
  extern void (*ShutdownInternally)();
25
25
 
26
+ class KeepsGrpcInitialized {
27
+ public:
28
+ KeepsGrpcInitialized() { InitInternally(); }
29
+ ~KeepsGrpcInitialized() { ShutdownInternally(); }
30
+ KeepsGrpcInitialized(const KeepsGrpcInitialized&) = delete;
31
+ KeepsGrpcInitialized& operator=(const KeepsGrpcInitialized&) = delete;
32
+ };
33
+
26
34
  } // namespace grpc_core
27
35
 
28
36
  #endif // GRPC_CORE_LIB_SURFACE_INIT_INTERNALLY_H
@@ -23,7 +23,6 @@
23
23
  #include <memory>
24
24
  #include <utility>
25
25
 
26
- #include "absl/memory/memory.h"
27
26
  #include "absl/status/statusor.h"
28
27
 
29
28
  #include <grpc/grpc.h>
@@ -42,6 +41,7 @@
42
41
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
43
42
  #include "src/core/lib/gprpp/sync.h"
44
43
  #include "src/core/lib/iomgr/exec_ctx.h"
44
+ #include "src/core/lib/promise/pipe.h"
45
45
  #include "src/core/lib/promise/promise.h"
46
46
  #include "src/core/lib/surface/api_trace.h"
47
47
  #include "src/core/lib/surface/channel.h"
@@ -67,14 +67,17 @@ absl::StatusOr<LameClientFilter> LameClientFilter::Create(
67
67
  }
68
68
 
69
69
  LameClientFilter::LameClientFilter(absl::Status error)
70
- : error_(std::move(error)), state_(absl::make_unique<State>()) {}
70
+ : error_(std::move(error)), state_(std::make_unique<State>()) {}
71
71
 
72
72
  LameClientFilter::State::State()
73
73
  : state_tracker("lame_client", GRPC_CHANNEL_SHUTDOWN) {}
74
74
 
75
75
  ArenaPromise<ServerMetadataHandle> LameClientFilter::MakeCallPromise(
76
- CallArgs, NextPromiseFactory) {
77
- return Immediate(ServerMetadataHandle(error_));
76
+ CallArgs args, NextPromiseFactory) {
77
+ // TODO(ctiller): remove if check once promise_based_filter is removed (Close
78
+ // is still needed)
79
+ if (args.incoming_messages != nullptr) args.incoming_messages->Close();
80
+ return Immediate(ServerMetadataFromStatus(error_));
78
81
  }
79
82
 
80
83
  bool LameClientFilter::GetChannelInfo(const grpc_channel_info*) { return true; }
@@ -92,15 +95,14 @@ bool LameClientFilter::StartTransportOp(grpc_transport_op* op) {
92
95
  }
93
96
  if (op->send_ping.on_initiate != nullptr) {
94
97
  ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
95
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"));
98
+ GRPC_ERROR_CREATE("lame client channel"));
96
99
  }
97
100
  if (op->send_ping.on_ack != nullptr) {
98
101
  ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_ack,
99
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"));
102
+ GRPC_ERROR_CREATE("lame client channel"));
100
103
  }
101
- GRPC_ERROR_UNREF(op->disconnect_with_error);
102
104
  if (op->on_consumed != nullptr) {
103
- ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, GRPC_ERROR_NONE);
105
+ ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, absl::OkStatus());
104
106
  }
105
107
  return true;
106
108
  }