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
@@ -11,6 +11,8 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
+ #include "absl/strings/str_cat.h"
15
+
14
16
  #include <grpc/event_engine/event_engine.h>
15
17
  #include <grpc/support/port_platform.h>
16
18
 
@@ -21,24 +23,47 @@ const EventEngine::TaskHandle EventEngine::TaskHandle::kInvalid = {-1, -1};
21
23
  const EventEngine::ConnectionHandle EventEngine::ConnectionHandle::kInvalid = {
22
24
  -1, -1};
23
25
 
26
+ namespace {
27
+ template <typename T>
28
+ bool eq(const T& lhs, const T& rhs) {
29
+ return lhs.keys[0] == rhs.keys[0] && lhs.keys[1] == rhs.keys[1];
30
+ }
31
+ template <typename T>
32
+ std::ostream& printout(std::ostream& out, const T& handle) {
33
+ out << absl::StrCat("{", absl::Hex(handle.keys[0], absl::kZeroPad16), ",",
34
+ absl::Hex(handle.keys[1], absl::kZeroPad16), "}");
35
+ return out;
36
+ }
37
+ } // namespace
38
+
24
39
  bool operator==(const EventEngine::TaskHandle& lhs,
25
40
  const EventEngine::TaskHandle& rhs) {
26
- return lhs.keys[0] == rhs.keys[0] && lhs.keys[1] == rhs.keys[1];
41
+ return eq(lhs, rhs);
27
42
  }
28
43
 
29
44
  bool operator!=(const EventEngine::TaskHandle& lhs,
30
45
  const EventEngine::TaskHandle& rhs) {
31
- return !(lhs == rhs);
46
+ return !eq(lhs, rhs);
47
+ }
48
+
49
+ std::ostream& operator<<(std::ostream& out,
50
+ const EventEngine::TaskHandle& handle) {
51
+ return printout(out, handle);
32
52
  }
33
53
 
34
54
  bool operator==(const EventEngine::ConnectionHandle& lhs,
35
55
  const EventEngine::ConnectionHandle& rhs) {
36
- return lhs.keys[0] == rhs.keys[0] && lhs.keys[1] == rhs.keys[1];
56
+ return eq(lhs, rhs);
37
57
  }
38
58
 
39
59
  bool operator!=(const EventEngine::ConnectionHandle& lhs,
40
60
  const EventEngine::ConnectionHandle& rhs) {
41
- return !(lhs == rhs);
61
+ return !eq(lhs, rhs);
62
+ }
63
+
64
+ std::ostream& operator<<(std::ostream& out,
65
+ const EventEngine::ConnectionHandle& handle) {
66
+ return printout(out, handle);
42
67
  }
43
68
 
44
69
  } // namespace experimental
@@ -112,6 +112,13 @@ class EventEngineSupportsFdExtension {
112
112
  int fd, const EndpointConfig& config,
113
113
  MemoryAllocator memory_allocator) = 0;
114
114
 
115
+ /// Creates an EventEngine::Endpoint from an fd which is already assumed to be
116
+ /// connected to a remote peer. See \a CreatePosixEndpointFromFd for details.
117
+ /// This has the same behavior, but the \a memory_allocator is taken from the
118
+ /// EndpointConfig's resource quota.
119
+ virtual std::unique_ptr<EventEngine::Endpoint> CreateEndpointFromFd(
120
+ int fd, const EndpointConfig& config) = 0;
121
+
115
122
  /// Called when the posix listener has accepted a new client connection.
116
123
  /// \a listener_fd - The listening socket fd that accepted the new client
117
124
  /// connection.
@@ -0,0 +1,43 @@
1
+ // Copyright 2024 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXTENSIONS_TCP_TRACE_H
16
+ #define GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXTENSIONS_TCP_TRACE_H
17
+
18
+ #include <memory>
19
+
20
+ #include "absl/strings/string_view.h"
21
+
22
+ #include "src/core/telemetry/tcp_tracer.h"
23
+
24
+ namespace grpc_event_engine {
25
+ namespace experimental {
26
+
27
+ /** If non-zero, enable TCP tracing and stats collection. */
28
+ #define GRPC_ARG_TCP_TRACING_ENABLED "grpc.tcp_tracing_enabled"
29
+
30
+ class TcpTraceExtension {
31
+ public:
32
+ virtual ~TcpTraceExtension() = default;
33
+ static absl::string_view EndpointExtensionName() {
34
+ return "io.grpc.event_engine.extension.tcp_trace";
35
+ }
36
+ virtual std::shared_ptr<grpc_core::TcpTracerInterface>
37
+ InitializeAndReturnTcpTracer() = 0;
38
+ };
39
+
40
+ } // namespace experimental
41
+ } // namespace grpc_event_engine
42
+
43
+ #endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_EXTENSIONS_TCP_TRACE_H
@@ -28,12 +28,11 @@
28
28
  #include <vector>
29
29
 
30
30
  #include "src/core/lib/config/config_vars.h"
31
+ #include "src/core/lib/debug/trace.h"
31
32
 
32
33
  namespace grpc_event_engine {
33
34
  namespace experimental {
34
35
 
35
- grpc_core::TraceFlag grpc_trace_fork(false, "fork");
36
-
37
36
  namespace {
38
37
  bool IsForkEnabled() {
39
38
  static bool enabled = grpc_core::ConfigVars::Get().EnableForkSupport();
@@ -58,7 +57,7 @@ void ObjectGroupForkHandler::RegisterForkable(
58
57
  void ObjectGroupForkHandler::Prefork() {
59
58
  if (IsForkEnabled()) {
60
59
  CHECK(!std::exchange(is_forking_, true));
61
- GRPC_FORK_TRACE_LOG_STRING("PrepareFork");
60
+ GRPC_TRACE_LOG(fork, INFO) << "PrepareFork";
62
61
  for (auto it = forkables_.begin(); it != forkables_.end();) {
63
62
  auto shared = it->lock();
64
63
  if (shared) {
@@ -74,7 +73,7 @@ void ObjectGroupForkHandler::Prefork() {
74
73
  void ObjectGroupForkHandler::PostforkParent() {
75
74
  if (IsForkEnabled()) {
76
75
  CHECK(is_forking_);
77
- GRPC_FORK_TRACE_LOG_STRING("PostforkParent");
76
+ GRPC_TRACE_LOG(fork, INFO) << "PostforkParent";
78
77
  for (auto it = forkables_.begin(); it != forkables_.end();) {
79
78
  auto shared = it->lock();
80
79
  if (shared) {
@@ -91,7 +90,7 @@ void ObjectGroupForkHandler::PostforkParent() {
91
90
  void ObjectGroupForkHandler::PostforkChild() {
92
91
  if (IsForkEnabled()) {
93
92
  CHECK(is_forking_);
94
- GRPC_FORK_TRACE_LOG_STRING("PostforkChild");
93
+ GRPC_TRACE_LOG(fork, INFO) << "PostforkChild";
95
94
  for (auto it = forkables_.begin(); it != forkables_.end();) {
96
95
  auto shared = it->lock();
97
96
  if (shared) {
@@ -25,17 +25,6 @@
25
25
  namespace grpc_event_engine {
26
26
  namespace experimental {
27
27
 
28
- extern grpc_core::TraceFlag grpc_trace_fork;
29
-
30
- #define GRPC_FORK_TRACE_LOG(format, ...) \
31
- do { \
32
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_fork)) { \
33
- gpr_log(GPR_DEBUG, "[fork] " format, __VA_ARGS__); \
34
- } \
35
- } while (0)
36
-
37
- #define GRPC_FORK_TRACE_LOG_STRING(format) GRPC_FORK_TRACE_LOG("%s", format)
38
-
39
28
  // An interface to be implemented by EventEngines that wish to have managed fork
40
29
  // support. The child class must guarantee that those methods are thread-safe.
41
30
  class Forkable {
@@ -19,13 +19,13 @@
19
19
  #include <memory>
20
20
 
21
21
  #include "absl/log/check.h"
22
+ #include "absl/log/log.h"
22
23
  #include "absl/status/status.h"
23
24
  #include "absl/status/statusor.h"
24
25
  #include "absl/strings/str_format.h"
25
26
 
26
27
  #include <grpc/event_engine/event_engine.h>
27
28
  #include <grpc/status.h>
28
- #include <grpc/support/log.h>
29
29
  #include <grpc/support/port_platform.h>
30
30
  #include <grpc/support/sync.h>
31
31
 
@@ -164,14 +164,14 @@ int EpollCreateAndCloexec() {
164
164
  #ifdef GRPC_LINUX_EPOLL_CREATE1
165
165
  int fd = epoll_create1(EPOLL_CLOEXEC);
166
166
  if (fd < 0) {
167
- gpr_log(GPR_ERROR, "epoll_create1 unavailable");
167
+ LOG(ERROR) << "epoll_create1 unavailable";
168
168
  }
169
169
  #else
170
170
  int fd = epoll_create(MAX_EPOLL_EVENTS);
171
171
  if (fd < 0) {
172
- gpr_log(GPR_ERROR, "epoll_create unavailable");
172
+ LOG(ERROR) << "epoll_create unavailable";
173
173
  } else if (fcntl(fd, F_SETFD, FD_CLOEXEC) != 0) {
174
- gpr_log(GPR_ERROR, "fcntl following epoll_create failed");
174
+ LOG(ERROR) << "fcntl following epoll_create failed";
175
175
  return -1;
176
176
  }
177
177
  #endif
@@ -297,8 +297,8 @@ void Epoll1EventHandle::OrphanHandle(PosixEngineClosure* on_done,
297
297
  epoll_event phony_event;
298
298
  if (epoll_ctl(poller_->g_epoll_set_.epfd, EPOLL_CTL_DEL, fd_,
299
299
  &phony_event) != 0) {
300
- gpr_log(GPR_ERROR, "OrphanHandle: epoll_ctl failed: %s",
301
- grpc_core::StrError(errno).c_str());
300
+ LOG(ERROR) << "OrphanHandle: epoll_ctl failed: "
301
+ << grpc_core::StrError(errno);
302
302
  }
303
303
  }
304
304
  *release_fd = fd_;
@@ -341,8 +341,8 @@ void Epoll1EventHandle::HandleShutdownInternal(absl::Status why,
341
341
  epoll_event phony_event;
342
342
  if (epoll_ctl(poller_->g_epoll_set_.epfd, EPOLL_CTL_DEL, fd_,
343
343
  &phony_event) != 0) {
344
- gpr_log(GPR_ERROR, "HandleShutdownInternal: epoll_ctl failed: %s",
345
- grpc_core::StrError(errno).c_str());
344
+ LOG(ERROR) << "HandleShutdownInternal: epoll_ctl failed: "
345
+ << grpc_core::StrError(errno);
346
346
  }
347
347
  }
348
348
  write_closure_->SetShutdown(why);
@@ -356,7 +356,7 @@ Epoll1Poller::Epoll1Poller(Scheduler* scheduler)
356
356
  wakeup_fd_ = *CreateWakeupFd();
357
357
  CHECK(wakeup_fd_ != nullptr);
358
358
  CHECK_GE(g_epoll_set_.epfd, 0);
359
- gpr_log(GPR_INFO, "grpc epoll fd: %d", g_epoll_set_.epfd);
359
+ LOG(INFO) << "grpc epoll fd: " << g_epoll_set_.epfd;
360
360
  struct epoll_event ev;
361
361
  ev.events = static_cast<uint32_t>(EPOLLIN | EPOLLET);
362
362
  ev.data.ptr = wakeup_fd_.get();
@@ -414,8 +414,7 @@ EventHandle* Epoll1Poller::CreateHandle(int fd, absl::string_view /*name*/,
414
414
  ev.data.ptr = reinterpret_cast<void*>(reinterpret_cast<intptr_t>(new_handle) |
415
415
  (track_err ? 1 : 0));
416
416
  if (epoll_ctl(g_epoll_set_.epfd, EPOLL_CTL_ADD, fd, &ev) != 0) {
417
- gpr_log(GPR_ERROR, "epoll_ctl failed: %s",
418
- grpc_core::StrError(errno).c_str());
417
+ LOG(ERROR) << "epoll_ctl failed: " << grpc_core::StrError(errno);
419
418
  }
420
419
 
421
420
  return new_handle;
@@ -14,7 +14,8 @@
14
14
 
15
15
  #include "src/core/lib/event_engine/posix_engine/internal_errqueue.h"
16
16
 
17
- #include <grpc/support/log.h>
17
+ #include "absl/log/log.h"
18
+
18
19
  #include <grpc/support/port_platform.h>
19
20
 
20
21
  #include "src/core/lib/iomgr/port.h"
@@ -49,7 +50,7 @@ bool KernelSupportsErrqueue() {
49
50
  // least 4.0.0
50
51
  struct utsname buffer;
51
52
  if (uname(&buffer) != 0) {
52
- gpr_log(GPR_ERROR, "uname: %s", grpc_core::StrError(errno).c_str());
53
+ LOG(ERROR) << "uname: " << grpc_core::StrError(errno);
53
54
  return false;
54
55
  }
55
56
  char* release = buffer.release;
@@ -60,7 +61,7 @@ bool KernelSupportsErrqueue() {
60
61
  if (strtol(release, nullptr, 10) >= 4) {
61
62
  return true;
62
63
  } else {
63
- gpr_log(GPR_DEBUG, "ERRQUEUE support not enabled");
64
+ VLOG(2) << "ERRQUEUE support not enabled";
64
65
  }
65
66
  #endif // GRPC_LINUX_ERRQUEUE
66
67
  return false;
@@ -34,8 +34,8 @@
34
34
  #include "absl/strings/str_format.h"
35
35
 
36
36
  #include "src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h"
37
- #include "src/core/lib/gpr/useful.h"
38
37
  #include "src/core/lib/gprpp/host_port.h"
38
+ #include "src/core/util/useful.h"
39
39
 
40
40
  namespace grpc_event_engine {
41
41
  namespace experimental {
@@ -27,6 +27,7 @@
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/status/status.h"
31
32
  #include "absl/status/statusor.h"
32
33
  #include "absl/strings/str_cat.h"
@@ -36,7 +37,6 @@
36
37
  #include <grpc/event_engine/slice.h>
37
38
  #include <grpc/event_engine/slice_buffer.h>
38
39
  #include <grpc/status.h>
39
- #include <grpc/support/log.h>
40
40
  #include <grpc/support/port_platform.h>
41
41
 
42
42
  #include "src/core/lib/event_engine/posix_engine/event_poller.h"
@@ -211,14 +211,9 @@ bool CmsgIsZeroCopy(const cmsghdr& cmsg) {
211
211
  }
212
212
  #endif // GRPC_LINUX_ERRQUEUE
213
213
 
214
- absl::Status PosixOSError(int error_no, const char* call_name) {
215
- absl::Status s = absl::UnknownError(grpc_core::StrError(error_no));
216
- grpc_core::StatusSetInt(&s, grpc_core::StatusIntProperty::kErrorNo, error_no);
217
- grpc_core::StatusSetStr(&s, grpc_core::StatusStrProperty::kOsError,
218
- grpc_core::StrError(error_no));
219
- grpc_core::StatusSetStr(&s, grpc_core::StatusStrProperty::kSyscall,
220
- call_name);
221
- return s;
214
+ absl::Status PosixOSError(int error_no, absl::string_view call_name) {
215
+ return absl::UnknownError(absl::StrCat(
216
+ call_name, ": ", grpc_core::StrError(error_no), " (", error_no, ")"));
222
217
  }
223
218
 
224
219
  } // namespace
@@ -281,12 +276,7 @@ void PosixEndpointImpl::FinishEstimate() {
281
276
  bytes_read_this_round_ = 0;
282
277
  }
283
278
 
284
- absl::Status PosixEndpointImpl::TcpAnnotateError(absl::Status src_error) {
285
- auto peer_string = ResolvedAddressToNormalizedString(peer_address_);
286
-
287
- grpc_core::StatusSetStr(&src_error,
288
- grpc_core::StatusStrProperty::kTargetAddress,
289
- peer_string.ok() ? *peer_string : "");
279
+ absl::Status PosixEndpointImpl::TcpAnnotateError(absl::Status src_error) const {
290
280
  grpc_core::StatusSetInt(&src_error, grpc_core::StatusIntProperty::kFd,
291
281
  handle_->WrappedFd());
292
282
  grpc_core::StatusSetInt(&src_error, grpc_core::StatusIntProperty::kRpcStatus,
@@ -512,9 +502,7 @@ void PosixEndpointImpl::UpdateRcvLowat() {
512
502
  if (result.ok()) {
513
503
  set_rcvlowat_ = *result;
514
504
  } else {
515
- gpr_log(GPR_ERROR, "%s",
516
- absl::StrCat("ERROR in SO_RCVLOWAT: ", result.status().message())
517
- .c_str());
505
+ LOG(ERROR) << "ERROR in SO_RCVLOWAT: " << result.status().message();
518
506
  }
519
507
  }
520
508
 
@@ -718,7 +706,7 @@ bool PosixEndpointImpl::ProcessErrors() {
718
706
  return processed_err;
719
707
  }
720
708
  if (GPR_UNLIKELY((msg.msg_flags & MSG_CTRUNC) != 0)) {
721
- gpr_log(GPR_ERROR, "Error message was truncated.");
709
+ LOG(ERROR) << "Error message was truncated.";
722
710
  }
723
711
 
724
712
  if (msg.msg_controllen == 0) {
@@ -813,7 +801,7 @@ struct cmsghdr* PosixEndpointImpl::ProcessTimestamp(msghdr* msg,
813
801
  auto serr = reinterpret_cast<struct sock_extended_err*>(CMSG_DATA(next_cmsg));
814
802
  if (serr->ee_errno != ENOMSG ||
815
803
  serr->ee_origin != SO_EE_ORIGIN_TIMESTAMPING) {
816
- gpr_log(GPR_ERROR, "Unexpected control message");
804
+ LOG(ERROR) << "Unexpected control message";
817
805
  return cmsg;
818
806
  }
819
807
  traced_buffers_.ProcessTimestamp(serr, opt_stats, tss);
@@ -1289,29 +1277,27 @@ PosixEndpointImpl::PosixEndpointImpl(EventHandle* handle,
1289
1277
  if (zerocopy_enabled) {
1290
1278
  if (GetRLimitMemLockMax() == 0) {
1291
1279
  zerocopy_enabled = false;
1292
- gpr_log(
1293
- GPR_ERROR,
1294
- "Tx zero-copy will not be used by gRPC since RLIMIT_MEMLOCK value is "
1295
- "not set. Consider raising its value with setrlimit().");
1280
+ LOG(ERROR) << "Tx zero-copy will not be used by gRPC since RLIMIT_MEMLOCK"
1281
+ << " value is not set. Consider raising its value with "
1282
+ << "setrlimit().";
1296
1283
  } else if (GetUlimitHardMemLock() == 0) {
1297
1284
  zerocopy_enabled = false;
1298
- gpr_log(GPR_ERROR,
1299
- "Tx zero-copy will not be used by gRPC since hard memlock ulimit "
1300
- "value is not set. Use ulimit -l <value> to set its value.");
1285
+ LOG(ERROR) << "Tx zero-copy will not be used by gRPC since hard memlock "
1286
+ << "ulimit value is not set. Use ulimit -l <value> to set its "
1287
+ << "value.";
1301
1288
  } else {
1302
1289
  const int enable = 1;
1303
1290
  if (setsockopt(fd_, SOL_SOCKET, SO_ZEROCOPY, &enable, sizeof(enable)) !=
1304
1291
  0) {
1305
1292
  zerocopy_enabled = false;
1306
- gpr_log(GPR_ERROR, "Failed to set zerocopy options on the socket.");
1293
+ LOG(ERROR) << "Failed to set zerocopy options on the socket.";
1307
1294
  }
1308
1295
  }
1309
1296
 
1310
1297
  if (zerocopy_enabled) {
1311
- gpr_log(GPR_INFO,
1312
- "Tx-zero copy enabled for gRPC sends. RLIMIT_MEMLOCK value = "
1313
- "%" PRIu64 ",ulimit hard memlock value = %" PRIu64,
1314
- GetRLimitMemLockMax(), GetUlimitHardMemLock());
1298
+ LOG(INFO) << "Tx-zero copy enabled for gRPC sends. RLIMIT_MEMLOCK value "
1299
+ << "=" << GetRLimitMemLockMax()
1300
+ << ",ulimit hard memlock value = " << GetUlimitHardMemLock();
1315
1301
  }
1316
1302
  }
1317
1303
  #endif // GRPC_LINUX_ERRQUEUE
@@ -1323,7 +1309,7 @@ PosixEndpointImpl::PosixEndpointImpl(EventHandle* handle,
1323
1309
  if (setsockopt(fd_, SOL_TCP, TCP_INQ, &one, sizeof(one)) == 0) {
1324
1310
  inq_capable_ = true;
1325
1311
  } else {
1326
- gpr_log(GPR_DEBUG, "cannot set inq fd=%d errno=%d", fd_, errno);
1312
+ VLOG(2) << "cannot set inq fd=" << fd_ << " errno=" << errno;
1327
1313
  inq_capable_ = false;
1328
1314
  }
1329
1315
  #else
@@ -30,6 +30,7 @@
30
30
  #include "absl/functional/any_invocable.h"
31
31
  #include "absl/hash/hash.h"
32
32
  #include "absl/log/check.h"
33
+ #include "absl/log/log.h"
33
34
  #include "absl/status/status.h"
34
35
  #include "absl/status/statusor.h"
35
36
 
@@ -183,7 +184,7 @@ class TcpZerocopySendCtx {
183
184
  if (send_records_ == nullptr || free_send_records_ == nullptr) {
184
185
  gpr_free(send_records_);
185
186
  gpr_free(free_send_records_);
186
- gpr_log(GPR_INFO, "Disabling TCP TX zerocopy due to memory pressure.\n");
187
+ LOG(INFO) << "Disabling TCP TX zerocopy due to memory pressure.\n";
187
188
  memory_limited_ = true;
188
189
  enabled_ = false;
189
190
  } else {
@@ -524,7 +525,7 @@ class PosixEndpointImpl : public grpc_core::RefCounted<PosixEndpointImpl> {
524
525
  bool WriteWithTimestamps(struct msghdr* msg, size_t sending_length,
525
526
  ssize_t* sent_length, int* saved_errno,
526
527
  int additional_flags);
527
- absl::Status TcpAnnotateError(absl::Status src_error);
528
+ absl::Status TcpAnnotateError(absl::Status src_error) const;
528
529
  #ifdef GRPC_LINUX_ERRQUEUE
529
530
  bool ProcessErrors();
530
531
  // Reads a cmsg to process zerocopy control messages.
@@ -26,6 +26,7 @@
26
26
  #include "absl/cleanup/cleanup.h"
27
27
  #include "absl/functional/any_invocable.h"
28
28
  #include "absl/log/check.h"
29
+ #include "absl/log/log.h"
29
30
  #include "absl/status/status.h"
30
31
  #include "absl/strings/match.h"
31
32
  #include "absl/strings/str_cat.h"
@@ -51,10 +52,10 @@
51
52
  #include "src/core/lib/event_engine/tcp_socket_utils.h"
52
53
  #include "src/core/lib/event_engine/trace.h"
53
54
  #include "src/core/lib/event_engine/utils.h"
54
- #include "src/core/lib/gpr/useful.h"
55
55
  #include "src/core/lib/gprpp/crash.h"
56
56
  #include "src/core/lib/gprpp/no_destruct.h"
57
57
  #include "src/core/lib/gprpp/sync.h"
58
+ #include "src/core/util/useful.h"
58
59
 
59
60
  #ifdef GRPC_POSIX_SOCKET_TCP
60
61
  #include <errno.h> // IWYU pragma: keep
@@ -231,7 +232,7 @@ void AsyncConnect::OnWritable(absl::Status status)
231
232
  // your program or another program on the same computer
232
233
  // opened too many network connections. The "easy" fix:
233
234
  // don't do that!
234
- gpr_log(GPR_ERROR, "kernel out of buffers");
235
+ LOG(ERROR) << "kernel out of buffers";
235
236
  mu_.Unlock();
236
237
  fd->NotifyOnWrite(on_writable_);
237
238
  // Don't run the cleanup function for this case.
@@ -459,7 +460,7 @@ struct PosixEventEngine::ClosureData final : public EventEngine::Closure {
459
460
  PosixEventEngine::~PosixEventEngine() {
460
461
  {
461
462
  grpc_core::MutexLock lock(&mu_);
462
- if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
463
+ if (GRPC_TRACE_FLAG_ENABLED(event_engine)) {
463
464
  for (auto handle : known_handles_) {
464
465
  gpr_log(GPR_ERROR,
465
466
  "(event_engine) PosixEventEngine:%p uncleared "
@@ -558,8 +559,8 @@ PosixEventEngine::GetDNSResolver(
558
559
  // configuration.
559
560
  if (ShouldUseAresDnsResolver()) {
560
561
  #if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
561
- GRPC_EVENT_ENGINE_DNS_TRACE("PosixEventEngine:%p creating AresResolver",
562
- this);
562
+ GRPC_TRACE_LOG(event_engine_dns, INFO)
563
+ << "PosixEventEngine::" << this << " creating AresResolver";
563
564
  auto ares_resolver = AresResolver::CreateAresResolver(
564
565
  options.dns_server,
565
566
  std::make_unique<GrpcPolledFdFactoryPosix>(poller_manager_->Poller()),
@@ -571,8 +572,8 @@ PosixEventEngine::GetDNSResolver(
571
572
  std::move(*ares_resolver));
572
573
  #endif // GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
573
574
  }
574
- GRPC_EVENT_ENGINE_DNS_TRACE(
575
- "PosixEventEngine:%p creating NativePosixDNSResolver", this);
575
+ GRPC_TRACE_LOG(event_engine_dns, INFO)
576
+ << "PosixEventEngine::" << this << " creating NativePosixDNSResolver";
576
577
  return std::make_unique<NativePosixDNSResolver>(shared_from_this());
577
578
  #endif // GRPC_POSIX_SOCKET_RESOLVE_ADDRESS
578
579
  }
@@ -677,6 +678,22 @@ PosixEventEngine::CreatePosixEndpointFromFd(int fd,
677
678
  #endif // GRPC_PLATFORM_SUPPORTS_POSIX_POLLING
678
679
  }
679
680
 
681
+ std::unique_ptr<EventEngine::Endpoint> PosixEventEngine::CreateEndpointFromFd(
682
+ int fd, const EndpointConfig& config) {
683
+ auto options = TcpOptionsFromEndpointConfig(config);
684
+ MemoryAllocator allocator;
685
+ if (options.memory_allocator_factory != nullptr) {
686
+ return CreatePosixEndpointFromFd(
687
+ fd, config,
688
+ options.memory_allocator_factory->CreateMemoryAllocator(
689
+ absl::StrCat("allocator:", fd)));
690
+ }
691
+ return CreatePosixEndpointFromFd(
692
+ fd, config,
693
+ options.resource_quota->memory_quota()->CreateMemoryAllocator(
694
+ absl::StrCat("allocator:", fd)));
695
+ }
696
+
680
697
  absl::StatusOr<std::unique_ptr<EventEngine::Listener>>
681
698
  PosixEventEngine::CreateListener(
682
699
  Listener::AcceptCallback on_accept,
@@ -172,6 +172,8 @@ class PosixEventEngine final : public PosixEventEngineWithFdSupport,
172
172
  std::unique_ptr<EventEngine::Endpoint> CreatePosixEndpointFromFd(
173
173
  int fd, const EndpointConfig& config,
174
174
  MemoryAllocator memory_allocator) override;
175
+ std::unique_ptr<EventEngine::Endpoint> CreateEndpointFromFd(
176
+ int fd, const EndpointConfig& config) override;
175
177
 
176
178
  absl::StatusOr<std::unique_ptr<Listener>> CreateListener(
177
179
  Listener::AcceptCallback on_accept,
@@ -32,13 +32,13 @@
32
32
 
33
33
  #include "absl/functional/any_invocable.h"
34
34
  #include "absl/log/check.h"
35
+ #include "absl/log/log.h"
35
36
  #include "absl/status/status.h"
36
37
  #include "absl/strings/str_cat.h"
37
38
  #include "absl/types/optional.h"
38
39
 
39
40
  #include <grpc/event_engine/event_engine.h>
40
41
  #include <grpc/event_engine/memory_allocator.h>
41
- #include <grpc/support/log.h>
42
42
 
43
43
  #include "src/core/lib/event_engine/posix_engine/event_poller.h"
44
44
  #include "src/core/lib/event_engine/posix_engine/posix_endpoint.h"
@@ -155,8 +155,8 @@ void PosixEngineListenerImpl::AsyncConnectionAcceptor::NotifyOnAccept(
155
155
  // nothing to accept. This is not a performant code path, but if an fd
156
156
  // limit has been reached, the system is likely in an unhappy state
157
157
  // regardless.
158
- GRPC_LOG_EVERY_N_SEC(1, GPR_ERROR, "%s",
159
- "File descriptor limit reached. Retrying.");
158
+ LOG_EVERY_N_SEC(ERROR, 1)
159
+ << "File descriptor limit reached. Retrying.";
160
160
  handle_->NotifyOnRead(notify_on_accept_);
161
161
  // Do not schedule another timer if one is already armed.
162
162
  if (retry_timer_armed_.exchange(true)) return;
@@ -177,8 +177,8 @@ void PosixEngineListenerImpl::AsyncConnectionAcceptor::NotifyOnAccept(
177
177
  handle_->NotifyOnRead(notify_on_accept_);
178
178
  return;
179
179
  default:
180
- gpr_log(GPR_ERROR, "Closing acceptor. Failed accept4: %s",
181
- grpc_core::StrError(errno).c_str());
180
+ LOG(ERROR) << "Closing acceptor. Failed accept4: "
181
+ << grpc_core::StrError(errno);
182
182
  // Shutting down the acceptor. Unref the ref grabbed in
183
183
  // AsyncConnectionAcceptor::Start().
184
184
  Unref();
@@ -192,13 +192,12 @@ void PosixEngineListenerImpl::AsyncConnectionAcceptor::NotifyOnAccept(
192
192
  socklen_t len = EventEngine::ResolvedAddress::MAX_SIZE_BYTES;
193
193
  if (getpeername(fd, const_cast<sockaddr*>(addr.address()), &len) < 0) {
194
194
  auto listener_addr_uri = ResolvedAddressToURI(socket_.addr);
195
- gpr_log(
196
- GPR_ERROR,
197
- "Failed getpeername: %s. Dropping the connection, and continuing "
198
- "to listen on %s:%d.",
199
- grpc_core::StrError(errno).c_str(),
200
- listener_addr_uri.ok() ? listener_addr_uri->c_str() : "<unknown>",
201
- socket_.port);
195
+ LOG(ERROR) << "Failed getpeername: " << grpc_core::StrError(errno)
196
+ << ". Dropping the connection, and continuing "
197
+ "to listen on "
198
+ << (listener_addr_uri.ok() ? *listener_addr_uri
199
+ : "<unknown>")
200
+ << ":" << socket_.port;
202
201
  close(fd);
203
202
  handle_->NotifyOnRead(notify_on_accept_);
204
203
  return;
@@ -211,8 +210,8 @@ void PosixEngineListenerImpl::AsyncConnectionAcceptor::NotifyOnAccept(
211
210
  auto result = sock.ApplySocketMutatorInOptions(
212
211
  GRPC_FD_SERVER_CONNECTION_USAGE, listener_->options_);
213
212
  if (!result.ok()) {
214
- gpr_log(GPR_ERROR, "Closing acceptor. Failed to apply socket mutator: %s",
215
- result.ToString().c_str());
213
+ LOG(ERROR) << "Closing acceptor. Failed to apply socket mutator: "
214
+ << result;
216
215
  // Shutting down the acceptor. Unref the ref grabbed in
217
216
  // AsyncConnectionAcceptor::Start().
218
217
  Unref();
@@ -222,8 +221,7 @@ void PosixEngineListenerImpl::AsyncConnectionAcceptor::NotifyOnAccept(
222
221
  // Create an Endpoint here.
223
222
  auto peer_name = ResolvedAddressToURI(addr);
224
223
  if (!peer_name.ok()) {
225
- gpr_log(GPR_ERROR, "Invalid address: %s",
226
- peer_name.status().ToString().c_str());
224
+ LOG(ERROR) << "Invalid address: " << peer_name.status();
227
225
  // Shutting down the acceptor. Unref the ref grabbed in
228
226
  // AsyncConnectionAcceptor::Start().
229
227
  Unref();