grpc 1.64.3 → 1.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (632) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +57 -58
  3. data/include/grpc/event_engine/event_engine.h +13 -6
  4. data/include/grpc/impl/channel_arg_names.h +7 -3
  5. data/include/grpc/module.modulemap +1 -0
  6. data/include/grpc/passive_listener.h +62 -0
  7. data/include/grpc/support/log.h +7 -17
  8. data/include/grpc/support/port_platform.h +3 -0
  9. data/src/core/channelz/channel_trace.cc +1 -1
  10. data/src/core/channelz/channel_trace.h +1 -1
  11. data/src/core/channelz/channelz.cc +3 -3
  12. data/src/core/channelz/channelz.h +7 -7
  13. data/src/core/channelz/channelz_registry.cc +4 -3
  14. data/src/core/client_channel/backup_poller.cc +4 -5
  15. data/src/core/client_channel/client_channel.cc +1324 -0
  16. data/src/core/client_channel/client_channel.h +243 -0
  17. data/src/core/client_channel/client_channel_filter.cc +266 -709
  18. data/src/core/client_channel/client_channel_filter.h +11 -64
  19. data/src/core/client_channel/client_channel_internal.h +16 -5
  20. data/src/core/client_channel/client_channel_plugin.cc +1 -14
  21. data/src/core/client_channel/client_channel_service_config.h +3 -3
  22. data/src/core/client_channel/config_selector.cc +1 -1
  23. data/src/core/client_channel/config_selector.h +1 -1
  24. data/src/core/client_channel/dynamic_filters.cc +3 -3
  25. data/src/core/client_channel/dynamic_filters.h +1 -3
  26. data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
  27. data/src/core/client_channel/load_balanced_call_destination.h +49 -0
  28. data/src/core/client_channel/retry_filter.cc +2 -9
  29. data/src/core/client_channel/retry_filter.h +2 -7
  30. data/src/core/client_channel/retry_filter_legacy_call_data.cc +65 -72
  31. data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
  32. data/src/core/client_channel/retry_service_config.cc +4 -5
  33. data/src/core/client_channel/retry_service_config.h +3 -3
  34. data/src/core/client_channel/subchannel.cc +220 -112
  35. data/src/core/client_channel/subchannel.h +31 -18
  36. data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
  37. data/src/core/client_channel/subchannel_pool_interface.h +2 -4
  38. data/src/core/client_channel/subchannel_stream_client.cc +36 -49
  39. data/src/core/client_channel/subchannel_stream_client.h +2 -4
  40. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -10
  41. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +1 -0
  42. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
  43. data/src/core/ext/filters/census/grpc_context.cc +2 -4
  44. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -15
  45. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -0
  46. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -7
  47. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -0
  48. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
  49. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
  50. data/src/core/ext/filters/http/client/http_client_filter.h +1 -0
  51. data/src/core/ext/filters/http/client_authority_filter.cc +1 -0
  52. data/src/core/ext/filters/http/client_authority_filter.h +1 -0
  53. data/src/core/ext/filters/http/message_compress/compression_filter.cc +10 -15
  54. data/src/core/ext/filters/http/message_compress/compression_filter.h +2 -0
  55. data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
  56. data/src/core/ext/filters/http/server/http_server_filter.h +1 -0
  57. data/src/core/ext/filters/message_size/message_size_filter.cc +6 -9
  58. data/src/core/ext/filters/message_size/message_size_filter.h +6 -6
  59. data/src/core/ext/filters/rbac/rbac_filter.cc +2 -5
  60. data/src/core/ext/filters/rbac/rbac_filter.h +1 -0
  61. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
  62. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  63. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +2 -6
  64. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +1 -0
  65. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
  66. data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
  67. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -25
  68. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -5
  69. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +223 -148
  70. data/src/core/ext/transport/chttp2/server/chttp2_server.h +33 -0
  71. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +131 -107
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -8
  73. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -1
  74. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -4
  75. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -2
  76. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -6
  77. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -2
  78. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +9 -5
  79. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -4
  80. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +9 -2
  81. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -43
  82. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
  83. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +3 -8
  84. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  85. data/src/core/ext/transport/chttp2/transport/http2_settings.h +1 -1
  86. data/src/core/ext/transport/chttp2/transport/internal.h +29 -19
  87. data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -25
  88. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +0 -2
  89. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +0 -2
  90. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +29 -13
  91. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +5 -4
  92. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -5
  93. data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
  94. data/src/core/ext/transport/inproc/inproc_transport.cc +56 -32
  95. data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
  96. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +13 -15
  97. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
  98. data/src/core/handshaker/handshaker.cc +6 -14
  99. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +9 -17
  100. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +3 -2
  101. data/src/core/handshaker/security/secure_endpoint.cc +38 -32
  102. data/src/core/handshaker/security/secure_endpoint.h +0 -2
  103. data/src/core/handshaker/security/security_handshaker.cc +25 -37
  104. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -1
  105. data/src/core/lib/address_utils/parse_address.cc +27 -39
  106. data/src/core/lib/address_utils/sockaddr_utils.cc +5 -6
  107. data/src/core/lib/avl/avl.h +1 -1
  108. data/src/core/lib/channel/channel_args.cc +13 -17
  109. data/src/core/lib/channel/channel_args.h +19 -8
  110. data/src/core/lib/channel/channel_stack.cc +5 -63
  111. data/src/core/lib/channel/channel_stack.h +13 -37
  112. data/src/core/lib/channel/channel_stack_builder.h +0 -5
  113. data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -142
  114. data/src/core/lib/channel/channel_stack_builder_impl.h +0 -2
  115. data/src/core/lib/channel/connected_channel.cc +37 -676
  116. data/src/core/lib/channel/promise_based_filter.cc +41 -47
  117. data/src/core/lib/channel/promise_based_filter.h +124 -477
  118. data/src/core/lib/channel/status_util.cc +1 -1
  119. data/src/core/lib/compression/compression.cc +1 -1
  120. data/src/core/lib/compression/message_compress.cc +6 -6
  121. data/src/core/lib/config/config_vars.cc +3 -8
  122. data/src/core/lib/config/config_vars.h +1 -5
  123. data/src/core/lib/debug/event_log.h +1 -1
  124. data/src/core/lib/debug/trace.cc +43 -59
  125. data/src/core/lib/debug/trace.h +2 -97
  126. data/src/core/lib/debug/trace_flags.cc +255 -0
  127. data/src/core/lib/debug/trace_flags.h +133 -0
  128. data/src/core/lib/debug/trace_impl.h +115 -0
  129. data/src/core/lib/event_engine/ares_resolver.cc +5 -7
  130. data/src/core/lib/event_engine/ares_resolver.h +1 -3
  131. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
  132. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +17 -22
  133. data/src/core/lib/event_engine/event_engine.cc +29 -4
  134. data/src/core/lib/event_engine/extensions/supports_fd.h +7 -0
  135. data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
  136. data/src/core/lib/event_engine/forkable.cc +4 -5
  137. data/src/core/lib/event_engine/forkable.h +0 -11
  138. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +10 -11
  139. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -3
  140. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
  141. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +19 -33
  142. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -2
  143. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +24 -7
  144. data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -0
  145. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +14 -16
  146. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +18 -22
  147. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +13 -17
  148. data/src/core/lib/event_engine/posix_engine/timer.cc +1 -1
  149. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -6
  150. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -1
  151. data/src/core/lib/event_engine/shim.cc +1 -1
  152. data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
  153. data/src/core/lib/event_engine/thread_local.h +1 -1
  154. data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
  155. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +19 -21
  156. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -6
  157. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +14 -13
  158. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +4 -3
  159. data/src/core/lib/event_engine/trace.h +6 -17
  160. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  161. data/src/core/lib/event_engine/windows/win_socket.cc +23 -17
  162. data/src/core/lib/event_engine/windows/win_socket.h +4 -5
  163. data/src/core/lib/event_engine/windows/windows_endpoint.cc +6 -9
  164. data/src/core/lib/event_engine/windows/windows_engine.cc +201 -87
  165. data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
  166. data/src/core/lib/event_engine/windows/windows_listener.cc +12 -23
  167. data/src/core/lib/experiments/experiments.cc +35 -151
  168. data/src/core/lib/experiments/experiments.h +12 -45
  169. data/src/core/lib/gprpp/bitset.h +1 -1
  170. data/src/core/lib/gprpp/crash.cc +2 -3
  171. data/src/core/lib/gprpp/dual_ref_counted.h +45 -33
  172. data/src/core/lib/gprpp/dump_args.cc +54 -0
  173. data/src/core/lib/gprpp/dump_args.h +69 -0
  174. data/src/core/lib/gprpp/glob.cc +70 -0
  175. data/src/core/lib/gprpp/glob.h +29 -0
  176. data/src/core/lib/gprpp/per_cpu.cc +1 -1
  177. data/src/core/lib/gprpp/posix/stat.cc +3 -4
  178. data/src/core/lib/gprpp/posix/thd.cc +8 -9
  179. data/src/core/lib/gprpp/ref_counted.h +30 -22
  180. data/src/core/lib/gprpp/single_set_ptr.h +5 -3
  181. data/src/core/lib/gprpp/status_helper.cc +11 -30
  182. data/src/core/lib/gprpp/status_helper.h +3 -31
  183. data/src/core/lib/gprpp/time.cc +3 -4
  184. data/src/core/lib/gprpp/time.h +3 -2
  185. data/src/core/lib/gprpp/unique_type_name.h +1 -1
  186. data/src/core/lib/gprpp/validation_errors.cc +10 -1
  187. data/src/core/lib/gprpp/validation_errors.h +11 -0
  188. data/src/core/lib/gprpp/windows/stat.cc +3 -4
  189. data/src/core/lib/gprpp/windows/thd.cc +3 -2
  190. data/src/core/lib/gprpp/work_serializer.cc +48 -57
  191. data/src/core/lib/iomgr/buffer_list.cc +4 -2
  192. data/src/core/lib/iomgr/call_combiner.cc +18 -27
  193. data/src/core/lib/iomgr/call_combiner.h +1 -3
  194. data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
  195. data/src/core/lib/iomgr/closure.h +2 -4
  196. data/src/core/lib/iomgr/combiner.cc +6 -8
  197. data/src/core/lib/iomgr/combiner.h +0 -2
  198. data/src/core/lib/iomgr/endpoint.cc +0 -6
  199. data/src/core/lib/iomgr/endpoint.h +0 -2
  200. data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -41
  201. data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
  202. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  203. data/src/core/lib/iomgr/error.cc +13 -21
  204. data/src/core/lib/iomgr/error.h +1 -1
  205. data/src/core/lib/iomgr/ev_apple.cc +3 -5
  206. data/src/core/lib/iomgr/ev_epoll1_linux.cc +43 -42
  207. data/src/core/lib/iomgr/ev_poll_posix.cc +38 -29
  208. data/src/core/lib/iomgr/ev_posix.cc +8 -9
  209. data/src/core/lib/iomgr/ev_posix.h +10 -7
  210. data/src/core/lib/iomgr/event_engine_shims/closure.cc +2 -2
  211. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -28
  212. data/src/core/lib/iomgr/exec_ctx.cc +2 -2
  213. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  214. data/src/core/lib/iomgr/executor.cc +6 -15
  215. data/src/core/lib/iomgr/executor.h +1 -1
  216. data/src/core/lib/iomgr/fork_posix.cc +8 -10
  217. data/src/core/lib/iomgr/fork_windows.cc +3 -1
  218. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
  219. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
  220. data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
  221. data/src/core/lib/iomgr/iocp_windows.cc +4 -3
  222. data/src/core/lib/iomgr/iomgr.cc +13 -17
  223. data/src/core/lib/iomgr/lockfree_event.cc +3 -5
  224. data/src/core/lib/iomgr/pollset.h +0 -2
  225. data/src/core/lib/iomgr/pollset_windows.cc +0 -2
  226. data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
  227. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  228. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  229. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  230. data/src/core/lib/iomgr/socket_utils_common_posix.cc +11 -17
  231. data/src/core/lib/iomgr/socket_windows.cc +4 -6
  232. data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
  233. data/src/core/lib/iomgr/tcp_client_posix.cc +9 -15
  234. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -4
  235. data/src/core/lib/iomgr/tcp_posix.cc +57 -84
  236. data/src/core/lib/iomgr/tcp_posix.h +0 -2
  237. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
  238. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +4 -6
  239. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -7
  240. data/src/core/lib/iomgr/tcp_server_windows.cc +10 -16
  241. data/src/core/lib/iomgr/tcp_windows.cc +25 -41
  242. data/src/core/lib/iomgr/timer_generic.cc +17 -20
  243. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  244. data/src/core/lib/iomgr/timer_manager.cc +17 -30
  245. data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
  246. data/src/core/lib/iomgr/vsock.cc +1 -1
  247. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
  248. data/src/core/lib/promise/activity.h +27 -4
  249. data/src/core/lib/promise/cancel_callback.h +24 -0
  250. data/src/core/lib/promise/context.h +11 -0
  251. data/src/core/lib/promise/detail/basic_seq.h +1 -2
  252. data/src/core/lib/promise/detail/join_state.h +354 -398
  253. data/src/core/lib/promise/detail/promise_like.h +6 -5
  254. data/src/core/lib/promise/detail/seq_state.h +1178 -1178
  255. data/src/core/lib/promise/for_each.h +6 -6
  256. data/src/core/lib/promise/interceptor_list.h +6 -7
  257. data/src/core/lib/promise/latch.h +9 -9
  258. data/src/core/lib/promise/map.h +17 -0
  259. data/src/core/lib/promise/observable.h +182 -0
  260. data/src/core/lib/promise/party.cc +7 -8
  261. data/src/core/lib/promise/party.h +10 -8
  262. data/src/core/lib/promise/pipe.h +16 -35
  263. data/src/core/lib/promise/promise.h +1 -0
  264. data/src/core/lib/promise/status_flag.h +2 -0
  265. data/src/core/lib/resource_quota/arena.cc +56 -79
  266. data/src/core/lib/resource_quota/arena.h +118 -209
  267. data/src/core/lib/resource_quota/memory_quota.cc +12 -13
  268. data/src/core/lib/resource_quota/memory_quota.h +2 -3
  269. data/src/core/lib/resource_quota/periodic_update.cc +1 -1
  270. data/src/core/lib/resource_quota/resource_quota.h +1 -1
  271. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  272. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  273. data/src/core/lib/security/authorization/evaluate_args.cc +6 -8
  274. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -6
  275. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -0
  276. data/src/core/lib/security/authorization/matchers.cc +3 -3
  277. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
  278. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -3
  279. data/src/core/lib/security/context/security_context.cc +12 -13
  280. data/src/core/lib/security/context/security_context.h +31 -8
  281. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  282. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +3 -1
  283. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
  284. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -5
  285. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
  286. data/src/core/lib/security/credentials/call_creds_util.cc +2 -1
  287. data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
  288. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +5 -3
  289. data/src/core/lib/security/credentials/composite/composite_credentials.h +1 -1
  290. data/src/core/lib/security/credentials/credentials.cc +6 -6
  291. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -4
  292. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
  293. data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
  294. data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
  295. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +2 -2
  296. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -4
  297. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -1
  298. data/src/core/lib/security/credentials/fake/fake_credentials.h +1 -1
  299. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
  300. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +11 -11
  301. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -1
  302. data/src/core/lib/security/credentials/iam/iam_credentials.h +1 -1
  303. data/src/core/lib/security/credentials/jwt/json_token.cc +14 -15
  304. data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
  305. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +6 -5
  306. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -1
  307. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -54
  308. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  309. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  310. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +12 -11
  311. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
  312. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
  313. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -3
  314. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +15 -21
  315. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  316. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +21 -30
  317. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +1 -1
  318. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +1 -1
  319. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -4
  320. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
  321. data/src/core/lib/security/credentials/tls/tls_credentials.cc +14 -16
  322. data/src/core/lib/security/credentials/tls/tls_utils.cc +4 -4
  323. data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -1
  324. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -16
  325. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +15 -12
  326. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +6 -6
  327. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
  328. data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -12
  329. data/src/core/lib/security/security_connector/security_connector.cc +1 -4
  330. data/src/core/lib/security/security_connector/security_connector.h +1 -3
  331. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +17 -19
  332. data/src/core/lib/security/security_connector/ssl_utils.cc +19 -21
  333. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +29 -40
  334. data/src/core/lib/security/transport/auth_filters.h +1 -0
  335. data/src/core/lib/security/transport/client_auth_filter.cc +7 -13
  336. data/src/core/lib/security/transport/server_auth_filter.cc +3 -8
  337. data/src/core/lib/security/util/json_util.h +1 -1
  338. data/src/core/lib/slice/slice.h +1 -1
  339. data/src/core/lib/slice/slice_refcount.h +2 -4
  340. data/src/core/lib/slice/slice_string_helpers.cc +1 -1
  341. data/src/core/lib/surface/api_trace.h +1 -3
  342. data/src/core/lib/surface/call.cc +64 -3738
  343. data/src/core/lib/surface/call.h +41 -143
  344. data/src/core/lib/surface/call_log_batch.cc +1 -1
  345. data/src/core/lib/surface/call_utils.cc +276 -0
  346. data/src/core/lib/surface/call_utils.h +449 -0
  347. data/src/core/lib/surface/channel.cc +8 -3
  348. data/src/core/lib/surface/channel.h +10 -7
  349. data/src/core/lib/surface/channel_create.cc +14 -6
  350. data/src/core/lib/surface/channel_create.h +3 -2
  351. data/src/core/lib/surface/channel_init.cc +21 -77
  352. data/src/core/lib/surface/channel_init.h +19 -97
  353. data/src/core/lib/surface/client_call.cc +419 -0
  354. data/src/core/lib/surface/client_call.h +180 -0
  355. data/src/core/lib/surface/completion_queue.cc +28 -33
  356. data/src/core/lib/surface/completion_queue.h +0 -8
  357. data/src/core/lib/surface/filter_stack_call.cc +1157 -0
  358. data/src/core/lib/surface/filter_stack_call.h +369 -0
  359. data/src/core/lib/surface/init.cc +7 -6
  360. data/src/core/lib/surface/lame_client.cc +1 -1
  361. data/src/core/lib/surface/legacy_channel.cc +40 -27
  362. data/src/core/lib/surface/legacy_channel.h +9 -18
  363. data/src/core/lib/surface/server_call.cc +222 -0
  364. data/src/core/lib/surface/server_call.h +167 -0
  365. data/src/core/lib/surface/version.cc +2 -2
  366. data/src/core/lib/transport/bdp_estimator.cc +3 -5
  367. data/src/core/lib/transport/bdp_estimator.h +2 -4
  368. data/src/core/lib/transport/call_arena_allocator.h +9 -7
  369. data/src/core/lib/transport/call_destination.h +76 -0
  370. data/src/core/lib/transport/call_filters.cc +28 -10
  371. data/src/core/lib/transport/call_filters.h +128 -22
  372. data/src/core/lib/transport/call_spine.cc +5 -6
  373. data/src/core/lib/transport/call_spine.h +159 -334
  374. data/src/core/lib/transport/connectivity_state.cc +8 -10
  375. data/src/core/lib/transport/connectivity_state.h +0 -2
  376. data/src/core/lib/transport/interception_chain.cc +155 -0
  377. data/src/core/lib/transport/interception_chain.h +236 -0
  378. data/src/core/lib/transport/metadata_batch.h +10 -1
  379. data/src/core/lib/transport/metadata_info.h +1 -1
  380. data/src/core/lib/transport/transport.cc +3 -6
  381. data/src/core/lib/transport/transport.h +43 -40
  382. data/src/core/load_balancing/child_policy_handler.cc +8 -8
  383. data/src/core/load_balancing/endpoint_list.cc +5 -5
  384. data/src/core/load_balancing/endpoint_list.h +1 -1
  385. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -0
  386. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -0
  387. data/src/core/load_balancing/grpclb/grpclb.cc +25 -29
  388. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -1
  389. data/src/core/load_balancing/grpclb/load_balancer_api.cc +3 -4
  390. data/src/core/load_balancing/health_check_client.cc +10 -13
  391. data/src/core/load_balancing/lb_policy.cc +5 -8
  392. data/src/core/load_balancing/lb_policy.h +19 -3
  393. data/src/core/load_balancing/lb_policy_factory.h +1 -1
  394. data/src/core/load_balancing/lb_policy_registry.cc +2 -3
  395. data/src/core/load_balancing/lb_policy_registry.h +1 -1
  396. data/src/core/load_balancing/oob_backend_metric.cc +2 -4
  397. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +33 -35
  398. data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -3
  399. data/src/core/load_balancing/pick_first/pick_first.cc +65 -65
  400. data/src/core/load_balancing/priority/priority.cc +26 -28
  401. data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -13
  402. data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
  403. data/src/core/load_balancing/rls/rls.cc +82 -82
  404. data/src/core/load_balancing/round_robin/round_robin.cc +17 -20
  405. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +54 -43
  406. data/src/core/load_balancing/weighted_target/weighted_target.cc +21 -24
  407. data/src/core/load_balancing/xds/cds.cc +14 -16
  408. data/src/core/load_balancing/xds/xds_cluster_impl.cc +16 -18
  409. data/src/core/load_balancing/xds/xds_cluster_manager.cc +15 -17
  410. data/src/core/load_balancing/xds/xds_override_host.cc +40 -41
  411. data/src/core/load_balancing/xds/xds_override_host.h +3 -3
  412. data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
  413. data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
  414. data/src/core/resolver/binder/binder_resolver.cc +3 -2
  415. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +3 -2
  416. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  417. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +7 -14
  418. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -5
  419. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  420. data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -5
  421. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +4 -9
  422. data/src/core/resolver/dns/event_engine/service_config_helper.cc +5 -5
  423. data/src/core/resolver/dns/native/dns_resolver.cc +8 -9
  424. data/src/core/resolver/endpoint_addresses.cc +1 -1
  425. data/src/core/resolver/fake/fake_resolver.cc +1 -1
  426. data/src/core/resolver/fake/fake_resolver.h +1 -1
  427. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +13 -14
  428. data/src/core/resolver/polling_resolver.cc +30 -35
  429. data/src/core/resolver/resolver.cc +2 -6
  430. data/src/core/resolver/resolver.h +0 -2
  431. data/src/core/resolver/resolver_registry.cc +6 -8
  432. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -3
  433. data/src/core/resolver/xds/xds_dependency_manager.cc +22 -23
  434. data/src/core/resolver/xds/xds_resolver.cc +13 -15
  435. data/src/core/server/server.cc +269 -389
  436. data/src/core/server/server.h +37 -19
  437. data/src/core/server/server_call_tracer_filter.cc +7 -14
  438. data/src/core/server/server_config_selector.h +1 -1
  439. data/src/core/server/server_config_selector_filter.cc +3 -3
  440. data/src/core/server/server_interface.h +2 -0
  441. data/src/core/server/xds_channel_stack_modifier.cc +1 -1
  442. data/src/core/server/xds_channel_stack_modifier.h +1 -1
  443. data/src/core/server/xds_server_config_fetcher.cc +1 -4
  444. data/src/core/service_config/service_config.h +1 -1
  445. data/src/core/service_config/service_config_call_data.h +13 -11
  446. data/src/core/service_config/service_config_channel_arg_filter.cc +6 -4
  447. data/src/core/service_config/service_config_impl.cc +5 -5
  448. data/src/core/service_config/service_config_impl.h +1 -1
  449. data/src/core/service_config/service_config_parser.cc +3 -6
  450. data/src/core/service_config/service_config_parser.h +1 -1
  451. data/src/core/{lib/channel → telemetry}/call_tracer.cc +20 -30
  452. data/src/core/{lib/channel → telemetry}/call_tracer.h +32 -9
  453. data/src/core/{lib/debug → telemetry}/histogram_view.cc +1 -1
  454. data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -3
  455. data/src/core/telemetry/metrics.cc +178 -0
  456. data/src/core/telemetry/metrics.h +562 -0
  457. data/src/core/{lib/debug → telemetry}/stats.cc +1 -1
  458. data/src/core/{lib/debug → telemetry}/stats.h +5 -5
  459. data/src/core/{lib/debug → telemetry}/stats_data.cc +1 -1
  460. data/src/core/{lib/debug → telemetry}/stats_data.h +4 -4
  461. data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -3
  462. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +12 -13
  463. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +25 -27
  464. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -33
  465. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  466. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -1
  467. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
  468. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +5 -3
  469. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  470. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -3
  471. data/src/core/tsi/fake_transport_security.cc +14 -17
  472. data/src/core/tsi/local_transport_security.cc +6 -5
  473. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -4
  474. data/src/core/tsi/ssl_transport_security.cc +76 -81
  475. data/src/core/tsi/ssl_transport_security_utils.cc +74 -18
  476. data/src/core/tsi/ssl_transport_security_utils.h +11 -0
  477. data/src/core/tsi/transport_security.cc +0 -4
  478. data/src/core/tsi/transport_security.h +0 -2
  479. data/src/core/tsi/transport_security_interface.h +0 -4
  480. data/src/core/{lib/gpr → util}/alloc.h +3 -3
  481. data/src/core/{lib/gpr → util}/android/log.cc +0 -19
  482. data/src/core/{lib/gpr → util}/atm.cc +1 -1
  483. data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +25 -26
  484. data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -11
  485. data/src/core/{lib/http → util/http_client}/format_request.cc +4 -3
  486. data/src/core/{lib/http → util/http_client}/format_request.h +6 -5
  487. data/src/core/{lib/http → util/http_client}/httpcli.cc +9 -10
  488. data/src/core/{lib/http → util/http_client}/httpcli.h +6 -5
  489. data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +9 -9
  490. data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -4
  491. data/src/core/{lib/http → util/http_client}/parser.cc +4 -5
  492. data/src/core/{lib/http → util/http_client}/parser.h +5 -6
  493. data/src/core/{lib → util}/json/json.h +5 -4
  494. data/src/core/{lib → util}/json/json_args.h +5 -5
  495. data/src/core/{lib → util}/json/json_channel_args.h +6 -6
  496. data/src/core/{lib → util}/json/json_object_loader.cc +3 -2
  497. data/src/core/{lib → util}/json/json_object_loader.h +7 -7
  498. data/src/core/{lib → util}/json/json_reader.cc +3 -2
  499. data/src/core/{lib → util}/json/json_reader.h +6 -6
  500. data/src/core/{lib → util}/json/json_util.cc +4 -4
  501. data/src/core/{lib → util}/json/json_util.h +6 -6
  502. data/src/core/{lib → util}/json/json_writer.cc +3 -3
  503. data/src/core/{lib → util}/json/json_writer.h +6 -6
  504. data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
  505. data/src/core/util/log.cc +165 -0
  506. data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
  507. data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
  508. data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
  509. data/src/core/{lib/gpr → util}/posix/time.cc +1 -1
  510. data/src/core/{lib/gpr → util}/posix/tmpfile.cc +2 -2
  511. data/src/core/{lib/gpr → util}/spinlock.h +3 -3
  512. data/src/core/{lib/gpr → util}/string.cc +2 -2
  513. data/src/core/{lib/gpr → util}/string.h +3 -3
  514. data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
  515. data/src/core/{lib/gpr → util}/time_precise.h +3 -3
  516. data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
  517. data/src/core/{lib/gpr → util}/useful.h +3 -3
  518. data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
  519. data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
  520. data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
  521. data/src/core/{lib/gpr → util}/windows/time.cc +1 -1
  522. data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
  523. data/src/core/xds/grpc/certificate_provider_store.cc +3 -3
  524. data/src/core/xds/grpc/certificate_provider_store.h +4 -4
  525. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  526. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +3 -3
  527. data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
  528. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +5 -5
  529. data/src/core/xds/grpc/xds_bootstrap_grpc.h +3 -3
  530. data/src/core/xds/grpc/xds_certificate_provider.h +1 -1
  531. data/src/core/xds/grpc/xds_client_grpc.cc +27 -23
  532. data/src/core/xds/grpc/xds_client_grpc.h +2 -2
  533. data/src/core/xds/grpc/xds_cluster.cc +4 -5
  534. data/src/core/xds/grpc/xds_cluster.h +1 -1
  535. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  536. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
  537. data/src/core/xds/grpc/xds_common_types.cc +1 -1
  538. data/src/core/xds/grpc/xds_common_types.h +1 -1
  539. data/src/core/xds/grpc/xds_endpoint.cc +4 -5
  540. data/src/core/xds/grpc/xds_http_fault_filter.cc +2 -2
  541. data/src/core/xds/grpc/xds_http_filters.h +2 -2
  542. data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -3
  543. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +2 -2
  544. data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
  545. data/src/core/xds/grpc/xds_listener.cc +4 -6
  546. data/src/core/xds/grpc/xds_route_config.cc +7 -8
  547. data/src/core/xds/grpc/xds_transport_grpc.cc +2 -2
  548. data/src/core/xds/grpc/xds_transport_grpc.h +1 -1
  549. data/src/core/xds/xds_client/xds_api.cc +5 -9
  550. data/src/core/xds/xds_client/xds_bootstrap.cc +1 -1
  551. data/src/core/xds/xds_client/xds_bootstrap.h +1 -1
  552. data/src/core/xds/xds_client/xds_client.cc +39 -45
  553. data/src/core/xds/xds_client/xds_client.h +0 -3
  554. data/src/core/xds/xds_client/xds_client_stats.cc +6 -6
  555. data/src/core/xds/xds_client/xds_client_stats.h +2 -2
  556. data/src/ruby/bin/math_pb.rb +1 -22
  557. data/src/ruby/ext/grpc/rb_call.c +8 -1
  558. data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
  559. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  560. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  561. data/src/ruby/ext/grpc/rb_server.c +39 -22
  562. data/src/ruby/lib/grpc/version.rb +1 -1
  563. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  564. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  565. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  566. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  567. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  568. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  569. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  570. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
  571. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +12 -12
  572. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
  573. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1497 -0
  574. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
  575. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -3
  576. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -2
  577. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
  578. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -0
  579. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +45 -1
  580. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
  581. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
  582. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +9 -4
  583. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +6 -0
  584. data/third_party/boringssl-with-bazel/src/crypto/internal.h +7 -0
  585. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
  586. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
  587. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
  588. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +7 -17
  589. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
  590. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +3 -0
  591. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +125 -0
  592. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
  593. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
  594. data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -10
  595. metadata +103 -93
  596. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  597. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  598. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  599. data/src/core/handshaker/security/tsi_error.cc +0 -31
  600. data/src/core/handshaker/security/tsi_error.h +0 -30
  601. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  602. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  603. data/src/core/lib/channel/context.h +0 -105
  604. data/src/core/lib/channel/metrics.cc +0 -334
  605. data/src/core/lib/channel/metrics.h +0 -365
  606. data/src/core/lib/event_engine/trace.cc +0 -25
  607. data/src/core/lib/gpr/log.cc +0 -166
  608. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  609. data/src/core/lib/promise/trace.cc +0 -20
  610. data/src/core/lib/promise/trace.h +0 -24
  611. data/src/core/lib/resource_quota/trace.cc +0 -19
  612. data/src/core/lib/resource_quota/trace.h +0 -24
  613. data/src/core/lib/slice/slice_refcount.cc +0 -20
  614. data/src/core/lib/surface/api_trace.cc +0 -25
  615. data/src/core/lib/surface/call_trace.h +0 -24
  616. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  617. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  618. data/src/core/lib/transport/batch_builder.cc +0 -172
  619. data/src/core/lib/transport/batch_builder.h +0 -474
  620. data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
  621. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  622. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  623. /data/src/core/{lib/gpr → util}/alloc.cc +0 -0
  624. /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
  625. /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
  626. /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
  627. /data/src/core/{lib/gpr → util}/posix/sync.cc +0 -0
  628. /data/src/core/{lib/gpr → util}/sync.cc +0 -0
  629. /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
  630. /data/src/core/{lib/gpr → util}/time.cc +0 -0
  631. /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
  632. /data/src/core/{lib/gpr → util}/windows/sync.cc +0 -0
@@ -23,12 +23,12 @@
23
23
 
24
24
  #include "absl/cleanup/cleanup.h"
25
25
  #include "absl/log/check.h"
26
+ #include "absl/log/log.h"
26
27
  #include "absl/status/status.h"
27
28
  #include "absl/strings/str_cat.h"
28
29
  #include "absl/strings/str_replace.h"
29
30
 
30
31
  #include <grpc/event_engine/event_engine.h>
31
- #include <grpc/support/log.h>
32
32
  #include <grpc/support/port_platform.h>
33
33
 
34
34
  #include "src/core/lib/event_engine/posix_engine/tcp_socket_utils.h"
@@ -120,10 +120,8 @@ int InitMaxAcceptQueueSize() {
120
120
  max_accept_queue_size = n;
121
121
 
122
122
  if (max_accept_queue_size < MIN_SAFE_ACCEPT_QUEUE_SIZE) {
123
- gpr_log(GPR_INFO,
124
- "Suspiciously small accept queue (%d) will probably lead to "
125
- "connection drops",
126
- max_accept_queue_size);
123
+ LOG(INFO) << "Suspiciously small accept queue (" << max_accept_queue_size
124
+ << ") will probably lead to connection drops";
127
125
  }
128
126
  return max_accept_queue_size;
129
127
  }
@@ -156,7 +154,7 @@ absl::Status PrepareSocket(const PosixTcpOptions& options,
156
154
  #ifdef GRPC_LINUX_ERRQUEUE
157
155
  if (!socket.sock.SetSocketZeroCopy().ok()) {
158
156
  // it's not fatal, so just log it.
159
- gpr_log(GPR_DEBUG, "Node does not support SO_ZEROCOPY, continuing.");
157
+ VLOG(2) << "Node does not support SO_ZEROCOPY, continuing.";
160
158
  } else {
161
159
  socket.zero_copy_enabled = true;
162
160
  }
@@ -179,8 +177,8 @@ absl::Status PrepareSocket(const PosixTcpOptions& options,
179
177
  if (bind(fd, socket.addr.address(), socket.addr.size()) < 0) {
180
178
  auto sockaddr_str = ResolvedAddressToString(socket.addr);
181
179
  if (!sockaddr_str.ok()) {
182
- gpr_log(GPR_ERROR, "Could not convert sockaddr to string: %s",
183
- sockaddr_str.status().ToString().c_str());
180
+ LOG(ERROR) << "Could not convert sockaddr to string: "
181
+ << sockaddr_str.status();
184
182
  sockaddr_str = "<unparsable>";
185
183
  }
186
184
  sockaddr_str = absl::StrReplaceAll(*sockaddr_str, {{"\0", "@"}});
@@ -244,7 +242,7 @@ absl::StatusOr<int> ListenerContainerAddAllLocalAddresses(
244
242
  auto result = GetUnusedPort();
245
243
  GRPC_RETURN_IF_ERROR(result.status());
246
244
  requested_port = *result;
247
- gpr_log(GPR_DEBUG, "Picked unused port %d", requested_port);
245
+ VLOG(2) << "Picked unused port " << requested_port;
248
246
  }
249
247
  if (getifaddrs(&ifa) != 0 || ifa == nullptr) {
250
248
  return absl::FailedPreconditionError(
@@ -276,14 +274,14 @@ absl::StatusOr<int> ListenerContainerAddAllLocalAddresses(
276
274
  addr = EventEngine::ResolvedAddress(ifa_it->ifa_addr, len);
277
275
  ResolvedAddressSetPort(addr, requested_port);
278
276
  std::string addr_str = *ResolvedAddressToString(addr);
279
- gpr_log(GPR_DEBUG,
280
- "Adding local addr from interface %s flags 0x%x to server: %s",
281
- ifa_name, ifa_it->ifa_flags, addr_str.c_str());
277
+ VLOG(2) << absl::StrFormat(
278
+ "Adding local addr from interface %s flags 0x%x to server: %s",
279
+ ifa_name, ifa_it->ifa_flags, addr_str.c_str());
282
280
  // We could have multiple interfaces with the same address (e.g.,
283
281
  // bonding), so look for duplicates.
284
282
  if (listener_sockets.Find(addr).ok()) {
285
- gpr_log(GPR_DEBUG, "Skipping duplicate addr %s on interface %s",
286
- addr_str.c_str(), ifa_name);
283
+ VLOG(2) << "Skipping duplicate addr " << addr_str << " on interface "
284
+ << ifa_name;
287
285
  continue;
288
286
  }
289
287
  auto result = CreateAndPrepareListenerSocket(options, addr);
@@ -347,16 +345,14 @@ absl::StatusOr<int> ListenerContainerAddWildcardAddresses(
347
345
  }
348
346
  if (assigned_port > 0) {
349
347
  if (!v6_sock.ok()) {
350
- gpr_log(GPR_INFO,
351
- "Failed to add :: listener, the environment may not support "
352
- "IPv6: %s",
353
- v6_sock.status().ToString().c_str());
348
+ LOG(INFO) << "Failed to add :: listener, the environment may not support "
349
+ "IPv6: "
350
+ << v6_sock.status();
354
351
  }
355
352
  if (!v4_sock.ok()) {
356
- gpr_log(GPR_INFO,
357
- "Failed to add 0.0.0.0 listener, "
358
- "the environment may not support IPv4: %s",
359
- v4_sock.status().ToString().c_str());
353
+ LOG(INFO) << "Failed to add 0.0.0.0 listener, "
354
+ "the environment may not support IPv4: "
355
+ << v4_sock.status();
360
356
  }
361
357
  return assigned_port;
362
358
  } else {
@@ -27,10 +27,10 @@
27
27
  #include <grpc/impl/channel_arg_names.h>
28
28
  #include <grpc/support/port_platform.h>
29
29
 
30
- #include "src/core/lib/gpr/useful.h"
31
30
  #include "src/core/lib/gprpp/crash.h" // IWYU pragma: keep
32
31
  #include "src/core/lib/gprpp/time.h"
33
32
  #include "src/core/lib/iomgr/port.h"
33
+ #include "src/core/util/useful.h"
34
34
 
35
35
  #ifdef GRPC_POSIX_SOCKET_UTILS_COMMON
36
36
  #include <arpa/inet.h> // IWYU pragma: keep
@@ -49,10 +49,9 @@
49
49
  #include <cstring>
50
50
 
51
51
  #include "absl/log/check.h"
52
+ #include "absl/log/log.h"
52
53
  #include "absl/status/status.h"
53
54
 
54
- #include <grpc/support/log.h>
55
-
56
55
  #include "src/core/lib/event_engine/tcp_socket_utils.h"
57
56
  #include "src/core/lib/gprpp/status_helper.h"
58
57
  #include "src/core/lib/gprpp/strerror.h"
@@ -628,32 +627,30 @@ void PosixSocketWrapper::TrySetSocketTcpUserTimeout(
628
627
  // if it is available.
629
628
  if (g_socket_supports_tcp_user_timeout.load() == 0) {
630
629
  if (0 != getsockopt(fd_, IPPROTO_TCP, TCP_USER_TIMEOUT, &newval, &len)) {
631
- gpr_log(GPR_INFO,
632
- "TCP_USER_TIMEOUT is not available. TCP_USER_TIMEOUT won't "
633
- "be used thereafter");
630
+ LOG(INFO) << "TCP_USER_TIMEOUT is not available. TCP_USER_TIMEOUT "
631
+ "won't be used thereafter";
634
632
  g_socket_supports_tcp_user_timeout.store(-1);
635
633
  } else {
636
- gpr_log(GPR_INFO,
637
- "TCP_USER_TIMEOUT is available. TCP_USER_TIMEOUT will be "
638
- "used thereafter");
634
+ LOG(INFO) << "TCP_USER_TIMEOUT is available. TCP_USER_TIMEOUT will be "
635
+ "used thereafter";
639
636
  g_socket_supports_tcp_user_timeout.store(1);
640
637
  }
641
638
  }
642
639
  if (g_socket_supports_tcp_user_timeout.load() > 0) {
643
640
  if (0 != setsockopt(fd_, IPPROTO_TCP, TCP_USER_TIMEOUT, &timeout,
644
641
  sizeof(timeout))) {
645
- gpr_log(GPR_ERROR, "setsockopt(TCP_USER_TIMEOUT) %s",
646
- grpc_core::StrError(errno).c_str());
642
+ LOG(ERROR) << "setsockopt(TCP_USER_TIMEOUT) "
643
+ << grpc_core::StrError(errno);
647
644
  return;
648
645
  }
649
646
  if (0 != getsockopt(fd_, IPPROTO_TCP, TCP_USER_TIMEOUT, &newval, &len)) {
650
- gpr_log(GPR_ERROR, "getsockopt(TCP_USER_TIMEOUT) %s",
651
- grpc_core::StrError(errno).c_str());
647
+ LOG(ERROR) << "getsockopt(TCP_USER_TIMEOUT) "
648
+ << grpc_core::StrError(errno);
652
649
  return;
653
650
  }
654
651
  if (newval != timeout) {
655
652
  // Do not fail on failing to set TCP_USER_TIMEOUT
656
- gpr_log(GPR_ERROR, "Failed to set TCP_USER_TIMEOUT");
653
+ LOG(ERROR) << "Failed to set TCP_USER_TIMEOUT";
657
654
  return;
658
655
  }
659
656
  }
@@ -684,7 +681,7 @@ bool PosixSocketWrapper::IsIpv6LoopbackAvailable() {
684
681
  int fd = socket(AF_INET6, SOCK_STREAM, 0);
685
682
  bool loopback_available = false;
686
683
  if (fd < 0) {
687
- gpr_log(GPR_INFO, "Disabling AF_INET6 sockets because socket() failed.");
684
+ LOG(INFO) << "Disabling AF_INET6 sockets because socket() failed.";
688
685
  } else {
689
686
  sockaddr_in6 addr;
690
687
  memset(&addr, 0, sizeof(addr));
@@ -693,8 +690,7 @@ bool PosixSocketWrapper::IsIpv6LoopbackAvailable() {
693
690
  if (bind(fd, reinterpret_cast<sockaddr*>(&addr), sizeof(addr)) == 0) {
694
691
  loopback_available = true;
695
692
  } else {
696
- gpr_log(GPR_INFO,
697
- "Disabling AF_INET6 sockets because ::1 is not available.");
693
+ LOG(INFO) << "Disabling AF_INET6 sockets because ::1 is not available.";
698
694
  }
699
695
  close(fd);
700
696
  }
@@ -27,8 +27,8 @@
27
27
  #include <grpc/support/port_platform.h>
28
28
 
29
29
  #include "src/core/lib/event_engine/posix_engine/timer_heap.h"
30
- #include "src/core/lib/gpr/useful.h"
31
30
  #include "src/core/lib/gprpp/time.h"
31
+ #include "src/core/util/useful.h"
32
32
 
33
33
  namespace grpc_event_engine {
34
34
  namespace experimental {
@@ -36,8 +36,6 @@ static thread_local bool g_timer_thread;
36
36
  namespace grpc_event_engine {
37
37
  namespace experimental {
38
38
 
39
- grpc_core::DebugOnlyTraceFlag grpc_event_engine_timer_trace(false, "timer");
40
-
41
39
  void TimerManager::RunSomeTimers(
42
40
  std::vector<experimental::EventEngine::Closure*> timers) {
43
41
  for (auto* timer : timers) {
@@ -101,7 +99,7 @@ grpc_core::Timestamp TimerManager::Host::Now() {
101
99
 
102
100
  void TimerManager::TimerInit(Timer* timer, grpc_core::Timestamp deadline,
103
101
  experimental::EventEngine::Closure* closure) {
104
- if (grpc_event_engine_timer_trace.enabled()) {
102
+ if (GRPC_TRACE_FLAG_ENABLED(timer)) {
105
103
  grpc_core::MutexLock lock(&mu_);
106
104
  if (shutdown_) {
107
105
  gpr_log(GPR_ERROR,
@@ -121,7 +119,7 @@ void TimerManager::Shutdown() {
121
119
  {
122
120
  grpc_core::MutexLock lock(&mu_);
123
121
  if (shutdown_) return;
124
- if (grpc_event_engine_timer_trace.enabled()) {
122
+ if (GRPC_TRACE_FLAG_ENABLED(timer)) {
125
123
  gpr_log(GPR_DEBUG, "TimerManager::%p shutting down", this);
126
124
  }
127
125
  shutdown_ = true;
@@ -129,7 +127,7 @@ void TimerManager::Shutdown() {
129
127
  cv_wait_.Signal();
130
128
  }
131
129
  main_loop_exit_signal_->WaitForNotification();
132
- if (grpc_event_engine_timer_trace.enabled()) {
130
+ if (GRPC_TRACE_FLAG_ENABLED(timer)) {
133
131
  gpr_log(GPR_DEBUG, "TimerManager::%p shutdown complete", this);
134
132
  }
135
133
  }
@@ -147,7 +145,7 @@ void TimerManager::Kick() {
147
145
  void TimerManager::RestartPostFork() {
148
146
  grpc_core::MutexLock lock(&mu_);
149
147
  CHECK(GPR_LIKELY(shutdown_));
150
- if (grpc_event_engine_timer_trace.enabled()) {
148
+ if (GRPC_TRACE_FLAG_ENABLED(timer)) {
151
149
  gpr_log(GPR_DEBUG, "TimerManager::%p restarting after shutdown", this);
152
150
  }
153
151
  shutdown_ = false;
@@ -22,6 +22,7 @@
22
22
  #include <utility>
23
23
 
24
24
  #include "absl/functional/any_invocable.h"
25
+ #include "absl/log/log.h"
25
26
 
26
27
  #include <grpc/support/log.h>
27
28
  #include <grpc/support/port_platform.h>
@@ -48,7 +49,7 @@ void FillGprFromTimestamp(gpr_timespec* gts, const struct timespec* ts) {
48
49
 
49
50
  void DefaultTimestampsCallback(void* /*arg*/, Timestamps* /*ts*/,
50
51
  absl::Status /*shudown_err*/) {
51
- gpr_log(GPR_DEBUG, "Timestamps callback has not been registered");
52
+ VLOG(2) << "Timestamps callback has not been registered";
52
53
  }
53
54
 
54
55
  // The saved callback function that will be invoked when we get all the
@@ -30,7 +30,7 @@ bool UseEventEngineClient() {
30
30
  return grpc_core::IsEventEngineClientEnabled();
31
31
  #elif defined(GPR_WINDOWS) && !defined(GRPC_DO_NOT_INSTANTIATE_POSIX_POLLER)
32
32
  return grpc_core::IsEventEngineClientEnabled();
33
- #elif defined(GRPC_IOS_EVENT_ENGINE_CLIENT)
33
+ #elif GRPC_IOS_EVENT_ENGINE_CLIENT
34
34
  return true;
35
35
  #else
36
36
  return false;
@@ -54,12 +54,11 @@
54
54
  #include <utility>
55
55
 
56
56
  #include "absl/log/check.h"
57
+ #include "absl/log/log.h"
57
58
  #include "absl/status/status.h"
58
59
  #include "absl/strings/str_cat.h"
59
60
  #include "absl/strings/str_format.h"
60
61
 
61
- #include <grpc/support/log.h>
62
-
63
62
  #include "src/core/lib/gprpp/host_port.h"
64
63
  #include "src/core/lib/gprpp/status_helper.h"
65
64
  #include "src/core/lib/iomgr/resolved_address.h"
@@ -286,8 +285,8 @@ int ResolvedAddressGetPort(const EventEngine::ResolvedAddress& resolved_addr) {
286
285
  return 1;
287
286
  #endif
288
287
  default:
289
- gpr_log(GPR_ERROR, "Unknown socket family %d in ResolvedAddressGetPort",
290
- addr->sa_family);
288
+ LOG(ERROR) << "Unknown socket family " << addr->sa_family
289
+ << " in ResolvedAddressGetPort";
291
290
  abort();
292
291
  }
293
292
  }
@@ -309,8 +308,8 @@ void ResolvedAddressSetPort(EventEngine::ResolvedAddress& resolved_addr,
309
308
  htons(static_cast<uint16_t>(port));
310
309
  return;
311
310
  default:
312
- gpr_log(GPR_ERROR, "Unknown socket family %d in grpc_sockaddr_set_port",
313
- addr->sa_family);
311
+ LOG(ERROR) << "Unknown socket family " << addr->sa_family
312
+ << " in grpc_sockaddr_set_port";
314
313
  abort();
315
314
  }
316
315
  }
@@ -446,8 +445,7 @@ absl::StatusOr<EventEngine::ResolvedAddress> URIToResolvedAddress(
446
445
  grpc_resolved_address addr;
447
446
  absl::StatusOr<grpc_core::URI> uri = grpc_core::URI::Parse(address_str);
448
447
  if (!uri.ok()) {
449
- gpr_log(GPR_ERROR, "Failed to parse URI. Error: %s",
450
- uri.status().ToString().c_str());
448
+ LOG(ERROR) << "Failed to parse URI. Error: " << uri.status();
451
449
  }
452
450
  GRPC_RETURN_IF_ERROR(uri.status());
453
451
  CHECK(grpc_parse_uri(*uri, &addr));
@@ -29,4 +29,4 @@ class ThreadLocal {
29
29
  } // namespace experimental
30
30
  } // namespace grpc_event_engine
31
31
 
32
- #endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_THREAD_LOCAL_H
32
+ #endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_THREAD_LOCAL_H
@@ -26,9 +26,9 @@
26
26
  #include <grpc/support/cpu.h>
27
27
  #include <grpc/support/port_platform.h>
28
28
 
29
- #include "src/core/lib/gpr/useful.h"
30
29
  #include "src/core/lib/gprpp/sync.h"
31
30
  #include "src/core/lib/gprpp/time.h"
31
+ #include "src/core/util/useful.h"
32
32
 
33
33
  namespace grpc_event_engine {
34
34
  namespace experimental {
@@ -27,11 +27,11 @@
27
27
 
28
28
  #include "absl/functional/any_invocable.h"
29
29
  #include "absl/log/check.h"
30
+ #include "absl/log/log.h"
30
31
  #include "absl/time/clock.h"
31
32
  #include "absl/time/time.h"
32
33
  #include "absl/types/optional.h"
33
34
 
34
- #include <grpc/support/log.h>
35
35
  #include <grpc/support/port_platform.h>
36
36
  #include <grpc/support/thd_id.h>
37
37
 
@@ -156,11 +156,10 @@ std::atomic<size_t> g_reported_dump_count{0};
156
156
  void DumpSignalHandler(int /* sig */) {
157
157
  const auto trace = grpc_core::GetCurrentStackTrace();
158
158
  if (!trace.has_value()) {
159
- gpr_log(GPR_ERROR, "DumpStack::%" PRIdPTR ": Stack trace not available",
160
- gpr_thd_currentid());
159
+ LOG(ERROR) << "DumpStack::" << gpr_thd_currentid()
160
+ << ": Stack trace not available";
161
161
  } else {
162
- gpr_log(GPR_ERROR, "DumpStack::%" PRIdPTR ": %s", gpr_thd_currentid(),
163
- trace->c_str());
162
+ LOG(ERROR) << "DumpStack::" << gpr_thd_currentid() << ": " << trace.value();
164
163
  }
165
164
  g_reported_dump_count.fetch_add(1);
166
165
  grpc_core::Thread::Kill(gpr_thd_currentid());
@@ -227,18 +226,19 @@ void WorkStealingThreadPool::PostforkChild() { pool_->Postfork(); }
227
226
 
228
227
  WorkStealingThreadPool::WorkStealingThreadPoolImpl::WorkStealingThreadPoolImpl(
229
228
  size_t reserve_threads)
230
- : reserve_threads_(reserve_threads), queue_(this), lifeguard_(this) {}
229
+ : reserve_threads_(reserve_threads), queue_(this) {}
231
230
 
232
231
  void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Start() {
233
232
  for (size_t i = 0; i < reserve_threads_; i++) {
234
233
  StartThread();
235
234
  }
236
- lifeguard_.Start();
235
+ grpc_core::MutexLock lock(&lifeguard_ptr_mu_);
236
+ lifeguard_ = std::make_unique<Lifeguard>(this);
237
237
  }
238
238
 
239
239
  void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Run(
240
240
  EventEngine::Closure* closure) {
241
- DCHECK(quiesced_.load(std::memory_order_relaxed) == false);
241
+ CHECK(!IsQuiesced());
242
242
  if (g_local_queue != nullptr && g_local_queue->owner() == this) {
243
243
  g_local_queue->Add(closure);
244
244
  } else {
@@ -266,7 +266,7 @@ void WorkStealingThreadPool::WorkStealingThreadPoolImpl::StartThread() {
266
266
  }
267
267
 
268
268
  void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Quiesce() {
269
- gpr_log(GPR_INFO, "WorkStealingThreadPoolImpl::Quiesce");
269
+ LOG(INFO) << "WorkStealingThreadPoolImpl::Quiesce";
270
270
  SetShutdown(true);
271
271
  // Wait until all threads have exited.
272
272
  // Note that if this is a threadpool thread then we won't exit this thread
@@ -283,7 +283,8 @@ void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Quiesce() {
283
283
  }
284
284
  CHECK(queue_.Empty());
285
285
  quiesced_.store(true, std::memory_order_relaxed);
286
- lifeguard_.BlockUntilShutdownAndReset();
286
+ grpc_core::MutexLock lock(&lifeguard_ptr_mu_);
287
+ lifeguard_.reset();
287
288
  }
288
289
 
289
290
  bool WorkStealingThreadPool::WorkStealingThreadPoolImpl::SetThrottled(
@@ -317,7 +318,7 @@ bool WorkStealingThreadPool::WorkStealingThreadPoolImpl::IsQuiesced() {
317
318
  }
318
319
 
319
320
  void WorkStealingThreadPool::WorkStealingThreadPoolImpl::PrepareFork() {
320
- gpr_log(GPR_INFO, "WorkStealingThreadPoolImpl::PrepareFork");
321
+ LOG(INFO) << "WorkStealingThreadPoolImpl::PrepareFork";
321
322
  SetForking(true);
322
323
  work_signal_.SignalAll();
323
324
  auto threads_were_shut_down = living_thread_count_.BlockUntilThreadCount(
@@ -325,7 +326,8 @@ void WorkStealingThreadPool::WorkStealingThreadPoolImpl::PrepareFork() {
325
326
  if (!threads_were_shut_down.ok() && g_log_verbose_failures) {
326
327
  DumpStacksAndCrash();
327
328
  }
328
- lifeguard_.BlockUntilShutdownAndReset();
329
+ grpc_core::MutexLock lock(&lifeguard_ptr_mu_);
330
+ lifeguard_.reset();
329
331
  }
330
332
 
331
333
  void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Postfork() {
@@ -347,10 +349,9 @@ void WorkStealingThreadPool::WorkStealingThreadPoolImpl::UntrackThread(
347
349
 
348
350
  void WorkStealingThreadPool::WorkStealingThreadPoolImpl::DumpStacksAndCrash() {
349
351
  grpc_core::MutexLock lock(&thd_set_mu_);
350
- gpr_log(GPR_ERROR,
351
- "Pool did not quiesce in time, gRPC will not shut down cleanly. "
352
- "Dumping all %zu thread stacks.",
353
- thds_.size());
352
+ LOG(ERROR) << "Pool did not quiesce in time, gRPC will not shut down "
353
+ "cleanly. Dumping all "
354
+ << thds_.size() << " thread stacks.";
354
355
  for (const auto tid : thds_) {
355
356
  grpc_core::Thread::Signal(tid, kDumpStackSignal);
356
357
  }
@@ -374,9 +375,7 @@ WorkStealingThreadPool::WorkStealingThreadPoolImpl::Lifeguard::Lifeguard(
374
375
  .set_max_backoff(kLifeguardMaxSleepBetweenChecks)
375
376
  .set_multiplier(1.3)),
376
377
  lifeguard_should_shut_down_(std::make_unique<grpc_core::Notification>()),
377
- lifeguard_is_shut_down_(std::make_unique<grpc_core::Notification>()) {}
378
-
379
- void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Lifeguard::Start() {
378
+ lifeguard_is_shut_down_(std::make_unique<grpc_core::Notification>()) {
380
379
  // lifeguard_running_ is set early to avoid a quiesce race while the
381
380
  // lifeguard is still starting up.
382
381
  lifeguard_running_.store(true);
@@ -411,8 +410,7 @@ void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Lifeguard::
411
410
  lifeguard_is_shut_down_->Notify();
412
411
  }
413
412
 
414
- void WorkStealingThreadPool::WorkStealingThreadPoolImpl::Lifeguard::
415
- BlockUntilShutdownAndReset() {
413
+ WorkStealingThreadPool::WorkStealingThreadPoolImpl::Lifeguard::~Lifeguard() {
416
414
  lifeguard_should_shut_down_->Notify();
417
415
  while (lifeguard_running_.load(std::memory_order_relaxed)) {
418
416
  GRPC_LOG_EVERY_N_SEC_DELAYED(kBlockingQuiesceLogRateSeconds, GPR_DEBUG,
@@ -155,11 +155,7 @@ class WorkStealingThreadPool final : public ThreadPool {
155
155
  class Lifeguard {
156
156
  public:
157
157
  explicit Lifeguard(WorkStealingThreadPoolImpl* pool);
158
- // Start the lifeguard thread.
159
- void Start();
160
- // Block until the lifeguard thread is shut down.
161
- // Afterwards, reset the lifeguard state so it can start again cleanly.
162
- void BlockUntilShutdownAndReset();
158
+ ~Lifeguard();
163
159
 
164
160
  private:
165
161
  // The main body of the lifeguard thread.
@@ -194,7 +190,8 @@ class WorkStealingThreadPool final : public ThreadPool {
194
190
  // at a time.
195
191
  std::atomic<bool> throttled_{false};
196
192
  WorkSignal work_signal_;
197
- Lifeguard lifeguard_;
193
+ grpc_core::Mutex lifeguard_ptr_mu_;
194
+ std::unique_ptr<Lifeguard> lifeguard_ ABSL_GUARDED_BY(lifeguard_ptr_mu_);
198
195
  // Set of threads for verbose failure debugging
199
196
  grpc_core::Mutex thd_set_mu_;
200
197
  absl::flat_hash_set<gpr_thd_id> thds_ ABSL_GUARDED_BY(thd_set_mu_);
@@ -85,7 +85,9 @@ bool ThreadyEventEngine::IsWorkerThread() {
85
85
  absl::StatusOr<std::unique_ptr<EventEngine::DNSResolver>>
86
86
  ThreadyEventEngine::GetDNSResolver(
87
87
  const DNSResolver::ResolverOptions& options) {
88
- return std::make_unique<ThreadyDNSResolver>(*impl_->GetDNSResolver(options));
88
+ return std::make_unique<ThreadyDNSResolver>(
89
+ *impl_->GetDNSResolver(options),
90
+ std::static_pointer_cast<ThreadyEventEngine>(shared_from_this()));
89
91
  }
90
92
 
91
93
  void ThreadyEventEngine::Run(Closure* closure) {
@@ -116,10 +118,10 @@ void ThreadyEventEngine::ThreadyDNSResolver::LookupHostname(
116
118
  LookupHostnameCallback on_resolve, absl::string_view name,
117
119
  absl::string_view default_port) {
118
120
  return impl_->LookupHostname(
119
- [this, on_resolve = std::move(on_resolve)](
121
+ [engine = engine_, on_resolve = std::move(on_resolve)](
120
122
  absl::StatusOr<std::vector<ResolvedAddress>> addresses) mutable {
121
- engine_->Asynchronously([on_resolve = std::move(on_resolve),
122
- addresses = std::move(addresses)]() mutable {
123
+ engine->Asynchronously([on_resolve = std::move(on_resolve),
124
+ addresses = std::move(addresses)]() mutable {
123
125
  on_resolve(std::move(addresses));
124
126
  });
125
127
  },
@@ -129,13 +131,12 @@ void ThreadyEventEngine::ThreadyDNSResolver::LookupHostname(
129
131
  void ThreadyEventEngine::ThreadyDNSResolver::LookupSRV(
130
132
  LookupSRVCallback on_resolve, absl::string_view name) {
131
133
  return impl_->LookupSRV(
132
- [this, on_resolve = std::move(on_resolve)](
134
+ [engine = engine_, on_resolve = std::move(on_resolve)](
133
135
  absl::StatusOr<std::vector<SRVRecord>> records) mutable {
134
- return engine_->Asynchronously(
135
- [on_resolve = std::move(on_resolve),
136
- records = std::move(records)]() mutable {
137
- on_resolve(std::move(records));
138
- });
136
+ return engine->Asynchronously([on_resolve = std::move(on_resolve),
137
+ records = std::move(records)]() mutable {
138
+ on_resolve(std::move(records));
139
+ });
139
140
  },
140
141
  name);
141
142
  }
@@ -143,10 +144,10 @@ void ThreadyEventEngine::ThreadyDNSResolver::LookupSRV(
143
144
  void ThreadyEventEngine::ThreadyDNSResolver::LookupTXT(
144
145
  LookupTXTCallback on_resolve, absl::string_view name) {
145
146
  return impl_->LookupTXT(
146
- [this, on_resolve = std::move(on_resolve)](
147
+ [engine = engine_, on_resolve = std::move(on_resolve)](
147
148
  absl::StatusOr<std::vector<std::string>> record) mutable {
148
- return engine_->Asynchronously([on_resolve = std::move(on_resolve),
149
- record = std::move(record)]() mutable {
149
+ return engine->Asynchronously([on_resolve = std::move(on_resolve),
150
+ record = std::move(record)]() mutable {
150
151
  on_resolve(std::move(record));
151
152
  });
152
153
  },
@@ -77,8 +77,9 @@ class ThreadyEventEngine final : public EventEngine {
77
77
  private:
78
78
  class ThreadyDNSResolver final : public DNSResolver {
79
79
  public:
80
- explicit ThreadyDNSResolver(std::unique_ptr<DNSResolver> impl)
81
- : impl_(std::move(impl)) {}
80
+ ThreadyDNSResolver(std::unique_ptr<DNSResolver> impl,
81
+ std::shared_ptr<ThreadyEventEngine> engine)
82
+ : impl_(std::move(impl)), engine_(std::move(engine)) {}
82
83
  void LookupHostname(LookupHostnameCallback on_resolve,
83
84
  absl::string_view name,
84
85
  absl::string_view default_port) override;
@@ -89,7 +90,7 @@ class ThreadyEventEngine final : public EventEngine {
89
90
 
90
91
  private:
91
92
  std::unique_ptr<DNSResolver> impl_;
92
- ThreadyEventEngine* engine_;
93
+ std::shared_ptr<ThreadyEventEngine> engine_;
93
94
  };
94
95
 
95
96
  void Asynchronously(absl::AnyInvocable<void()> fn);
@@ -19,30 +19,19 @@
19
19
 
20
20
  #include "src/core/lib/debug/trace.h"
21
21
 
22
- extern grpc_core::TraceFlag grpc_event_engine_trace;
23
- extern grpc_core::TraceFlag grpc_event_engine_dns_trace;
24
- extern grpc_core::TraceFlag grpc_event_engine_endpoint_data_trace;
25
- extern grpc_core::TraceFlag grpc_event_engine_poller_trace;
26
- extern grpc_core::TraceFlag grpc_event_engine_endpoint_trace;
27
-
28
22
  #define GRPC_EVENT_ENGINE_TRACE(format, ...) \
29
- if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) { \
30
- gpr_log(GPR_DEBUG, "(event_engine) " format, __VA_ARGS__); \
23
+ if (GRPC_TRACE_FLAG_ENABLED(event_engine)) { \
24
+ gpr_log(GPR_ERROR, "(event_engine) " format, __VA_ARGS__); \
31
25
  }
32
26
 
33
27
  #define GRPC_EVENT_ENGINE_ENDPOINT_TRACE(format, ...) \
34
- if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_endpoint_trace)) { \
35
- gpr_log(GPR_DEBUG, "(event_engine endpoint) " format, __VA_ARGS__); \
28
+ if (GRPC_TRACE_FLAG_ENABLED(event_engine_endpoint)) { \
29
+ gpr_log(GPR_ERROR, "(event_engine endpoint) " format, __VA_ARGS__); \
36
30
  }
37
31
 
38
32
  #define GRPC_EVENT_ENGINE_POLLER_TRACE(format, ...) \
39
- if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_poller_trace)) { \
40
- gpr_log(GPR_DEBUG, "(event_engine poller) " format, __VA_ARGS__); \
41
- }
42
-
43
- #define GRPC_EVENT_ENGINE_DNS_TRACE(format, ...) \
44
- if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_dns_trace)) { \
45
- gpr_log(GPR_DEBUG, "(event_engine dns) " format, __VA_ARGS__); \
33
+ if (GRPC_TRACE_FLAG_ENABLED(event_engine_poller)) { \
34
+ gpr_log(GPR_ERROR, "(event_engine poller) " format, __VA_ARGS__); \
46
35
  }
47
36
 
48
37
  #endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_TRACE_H
@@ -32,7 +32,7 @@ namespace experimental {
32
32
  class IOCP final : public Poller {
33
33
  public:
34
34
  explicit IOCP(ThreadPool* thread_pool) noexcept;
35
- ~IOCP();
35
+ ~IOCP() override;
36
36
  // Not copyable
37
37
  IOCP(const IOCP&) = delete;
38
38
  IOCP& operator=(const IOCP&) = delete;