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
@@ -22,15 +22,15 @@
22
22
  #include <utility>
23
23
 
24
24
  #include "absl/log/check.h"
25
+ #include "absl/log/log.h"
25
26
 
26
- #include <grpc/support/log.h>
27
27
  #include <grpc/support/port_platform.h>
28
28
 
29
+ #include "src/core/lib/debug/trace.h"
29
30
  #include "src/core/lib/gprpp/bitset.h"
30
31
  #include "src/core/lib/gprpp/construct_destruct.h"
31
32
  #include "src/core/lib/promise/detail/promise_like.h"
32
33
  #include "src/core/lib/promise/poll.h"
33
- #include "src/core/lib/promise/trace.h"
34
34
 
35
35
  namespace grpc_core {
36
36
  namespace promise_detail {
@@ -93,15 +93,14 @@ struct JoinState<Traits, P0, P1> {
93
93
  typename Traits::template ResultType<std::tuple<Result0, Result1>>;
94
94
  Poll<Result> PollOnce() {
95
95
  if (!ready.is_set(0)) {
96
- if (grpc_trace_promise_primitives.enabled()) {
97
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 1/2", this);
98
- }
96
+ GRPC_TRACE_VLOG(promise_primitives, 2)
97
+ << "join[" << this << "]: begin poll joint 1/2";
99
98
  auto poll = promise0();
100
- if (grpc_trace_promise_primitives.enabled()) {
99
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
101
100
  auto* p = poll.value_if_ready();
102
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/2 %s", this,
103
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
104
- : "pending");
101
+ VLOG(2) << "join[" << this << "]: joint 1/2 "
102
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
103
+ : "pending");
105
104
  }
106
105
  if (auto* p = poll.value_if_ready()) {
107
106
  if (Traits::IsOk(*p)) {
@@ -112,19 +111,18 @@ struct JoinState<Traits, P0, P1> {
112
111
  return Traits::template EarlyReturn<Result>(std::move(*p));
113
112
  }
114
113
  }
115
- } else if (grpc_trace_promise_primitives.enabled()) {
116
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/2 already ready", this);
114
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
115
+ VLOG(2) << "join[" << this << "]: joint 1/2 already ready";
117
116
  }
118
117
  if (!ready.is_set(1)) {
119
- if (grpc_trace_promise_primitives.enabled()) {
120
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 2/2", this);
121
- }
118
+ GRPC_TRACE_VLOG(promise_primitives, 2)
119
+ << "join[" << this << "]: begin poll joint 2/2";
122
120
  auto poll = promise1();
123
- if (grpc_trace_promise_primitives.enabled()) {
121
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
124
122
  auto* p = poll.value_if_ready();
125
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/2 %s", this,
126
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
127
- : "pending");
123
+ VLOG(2) << "join[" << this << "]: joint 2/2 "
124
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
125
+ : "pending");
128
126
  }
129
127
  if (auto* p = poll.value_if_ready()) {
130
128
  if (Traits::IsOk(*p)) {
@@ -135,8 +133,8 @@ struct JoinState<Traits, P0, P1> {
135
133
  return Traits::template EarlyReturn<Result>(std::move(*p));
136
134
  }
137
135
  }
138
- } else if (grpc_trace_promise_primitives.enabled()) {
139
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/2 already ready", this);
136
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
137
+ VLOG(2) << "join[" << this << "]: joint 2/2 already ready";
140
138
  }
141
139
  if (ready.all()) {
142
140
  return Traits::FinalReturn(std::move(result0), std::move(result1));
@@ -219,15 +217,14 @@ struct JoinState<Traits, P0, P1, P2> {
219
217
  std::tuple<Result0, Result1, Result2>>;
220
218
  Poll<Result> PollOnce() {
221
219
  if (!ready.is_set(0)) {
222
- if (grpc_trace_promise_primitives.enabled()) {
223
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 1/3", this);
224
- }
220
+ GRPC_TRACE_VLOG(promise_primitives, 2)
221
+ << "join[" << this << "]: begin poll joint 1/3";
225
222
  auto poll = promise0();
226
- if (grpc_trace_promise_primitives.enabled()) {
223
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
227
224
  auto* p = poll.value_if_ready();
228
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/3 %s", this,
229
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
230
- : "pending");
225
+ VLOG(2) << "join[" << this << "]: joint 1/3 "
226
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
227
+ : "pending");
231
228
  }
232
229
  if (auto* p = poll.value_if_ready()) {
233
230
  if (Traits::IsOk(*p)) {
@@ -238,19 +235,18 @@ struct JoinState<Traits, P0, P1, P2> {
238
235
  return Traits::template EarlyReturn<Result>(std::move(*p));
239
236
  }
240
237
  }
241
- } else if (grpc_trace_promise_primitives.enabled()) {
242
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/3 already ready", this);
238
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
239
+ VLOG(2) << "join[" << this << "]: joint 1/3 already ready";
243
240
  }
244
241
  if (!ready.is_set(1)) {
245
- if (grpc_trace_promise_primitives.enabled()) {
246
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 2/3", this);
247
- }
242
+ GRPC_TRACE_VLOG(promise_primitives, 2)
243
+ << "join[" << this << "]: begin poll joint 2/3";
248
244
  auto poll = promise1();
249
- if (grpc_trace_promise_primitives.enabled()) {
245
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
250
246
  auto* p = poll.value_if_ready();
251
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/3 %s", this,
252
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
253
- : "pending");
247
+ VLOG(2) << "join[" << this << "]: joint 2/3 "
248
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
249
+ : "pending");
254
250
  }
255
251
  if (auto* p = poll.value_if_ready()) {
256
252
  if (Traits::IsOk(*p)) {
@@ -261,19 +257,18 @@ struct JoinState<Traits, P0, P1, P2> {
261
257
  return Traits::template EarlyReturn<Result>(std::move(*p));
262
258
  }
263
259
  }
264
- } else if (grpc_trace_promise_primitives.enabled()) {
265
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/3 already ready", this);
260
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
261
+ VLOG(2) << "join[" << this << "]: joint 2/3 already ready";
266
262
  }
267
263
  if (!ready.is_set(2)) {
268
- if (grpc_trace_promise_primitives.enabled()) {
269
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 3/3", this);
270
- }
264
+ GRPC_TRACE_VLOG(promise_primitives, 2)
265
+ << "join[" << this << "]: begin poll joint 3/3";
271
266
  auto poll = promise2();
272
- if (grpc_trace_promise_primitives.enabled()) {
267
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
273
268
  auto* p = poll.value_if_ready();
274
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/3 %s", this,
275
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
276
- : "pending");
269
+ VLOG(2) << "join[" << this << "]: joint 3/3 "
270
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
271
+ : "pending");
277
272
  }
278
273
  if (auto* p = poll.value_if_ready()) {
279
274
  if (Traits::IsOk(*p)) {
@@ -284,8 +279,8 @@ struct JoinState<Traits, P0, P1, P2> {
284
279
  return Traits::template EarlyReturn<Result>(std::move(*p));
285
280
  }
286
281
  }
287
- } else if (grpc_trace_promise_primitives.enabled()) {
288
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/3 already ready", this);
282
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
283
+ VLOG(2) << "join[" << this << "]: joint 3/3 already ready";
289
284
  }
290
285
  if (ready.all()) {
291
286
  return Traits::FinalReturn(std::move(result0), std::move(result1),
@@ -387,15 +382,14 @@ struct JoinState<Traits, P0, P1, P2, P3> {
387
382
  std::tuple<Result0, Result1, Result2, Result3>>;
388
383
  Poll<Result> PollOnce() {
389
384
  if (!ready.is_set(0)) {
390
- if (grpc_trace_promise_primitives.enabled()) {
391
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 1/4", this);
392
- }
385
+ GRPC_TRACE_VLOG(promise_primitives, 2)
386
+ << "join[" << this << "]: begin poll joint 1/4";
393
387
  auto poll = promise0();
394
- if (grpc_trace_promise_primitives.enabled()) {
388
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
395
389
  auto* p = poll.value_if_ready();
396
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/4 %s", this,
397
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
398
- : "pending");
390
+ VLOG(2) << "join[" << this << "]: joint 1/4 "
391
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
392
+ : "pending");
399
393
  }
400
394
  if (auto* p = poll.value_if_ready()) {
401
395
  if (Traits::IsOk(*p)) {
@@ -406,19 +400,18 @@ struct JoinState<Traits, P0, P1, P2, P3> {
406
400
  return Traits::template EarlyReturn<Result>(std::move(*p));
407
401
  }
408
402
  }
409
- } else if (grpc_trace_promise_primitives.enabled()) {
410
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/4 already ready", this);
403
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
404
+ VLOG(2) << "join[" << this << "]: joint 1/4 already ready";
411
405
  }
412
406
  if (!ready.is_set(1)) {
413
- if (grpc_trace_promise_primitives.enabled()) {
414
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 2/4", this);
415
- }
407
+ GRPC_TRACE_VLOG(promise_primitives, 2)
408
+ << "join[" << this << "]: begin poll joint 2/4";
416
409
  auto poll = promise1();
417
- if (grpc_trace_promise_primitives.enabled()) {
410
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
418
411
  auto* p = poll.value_if_ready();
419
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/4 %s", this,
420
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
421
- : "pending");
412
+ VLOG(2) << "join[" << this << "]: joint 2/4 "
413
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
414
+ : "pending");
422
415
  }
423
416
  if (auto* p = poll.value_if_ready()) {
424
417
  if (Traits::IsOk(*p)) {
@@ -429,19 +422,18 @@ struct JoinState<Traits, P0, P1, P2, P3> {
429
422
  return Traits::template EarlyReturn<Result>(std::move(*p));
430
423
  }
431
424
  }
432
- } else if (grpc_trace_promise_primitives.enabled()) {
433
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/4 already ready", this);
425
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
426
+ VLOG(2) << "join[" << this << "]: joint 2/4 already ready";
434
427
  }
435
428
  if (!ready.is_set(2)) {
436
- if (grpc_trace_promise_primitives.enabled()) {
437
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 3/4", this);
438
- }
429
+ GRPC_TRACE_VLOG(promise_primitives, 2)
430
+ << "join[" << this << "]: begin poll joint 3/4";
439
431
  auto poll = promise2();
440
- if (grpc_trace_promise_primitives.enabled()) {
432
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
441
433
  auto* p = poll.value_if_ready();
442
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/4 %s", this,
443
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
444
- : "pending");
434
+ VLOG(2) << "join[" << this << "]: joint 3/4 "
435
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
436
+ : "pending");
445
437
  }
446
438
  if (auto* p = poll.value_if_ready()) {
447
439
  if (Traits::IsOk(*p)) {
@@ -452,19 +444,18 @@ struct JoinState<Traits, P0, P1, P2, P3> {
452
444
  return Traits::template EarlyReturn<Result>(std::move(*p));
453
445
  }
454
446
  }
455
- } else if (grpc_trace_promise_primitives.enabled()) {
456
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/4 already ready", this);
447
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
448
+ VLOG(2) << "join[" << this << "]: joint 3/4 already ready";
457
449
  }
458
450
  if (!ready.is_set(3)) {
459
- if (grpc_trace_promise_primitives.enabled()) {
460
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 4/4", this);
461
- }
451
+ GRPC_TRACE_VLOG(promise_primitives, 2)
452
+ << "join[" << this << "]: begin poll joint 4/4";
462
453
  auto poll = promise3();
463
- if (grpc_trace_promise_primitives.enabled()) {
454
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
464
455
  auto* p = poll.value_if_ready();
465
- gpr_log(GPR_DEBUG, "join[%p]: joint 4/4 %s", this,
466
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
467
- : "pending");
456
+ VLOG(2) << "join[" << this << "]: joint 4/4 "
457
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
458
+ : "pending");
468
459
  }
469
460
  if (auto* p = poll.value_if_ready()) {
470
461
  if (Traits::IsOk(*p)) {
@@ -475,8 +466,8 @@ struct JoinState<Traits, P0, P1, P2, P3> {
475
466
  return Traits::template EarlyReturn<Result>(std::move(*p));
476
467
  }
477
468
  }
478
- } else if (grpc_trace_promise_primitives.enabled()) {
479
- gpr_log(GPR_DEBUG, "join[%p]: joint 4/4 already ready", this);
469
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
470
+ VLOG(2) << "join[" << this << "]: joint 4/4 already ready";
480
471
  }
481
472
  if (ready.all()) {
482
473
  return Traits::FinalReturn(std::move(result0), std::move(result1),
@@ -597,15 +588,14 @@ struct JoinState<Traits, P0, P1, P2, P3, P4> {
597
588
  std::tuple<Result0, Result1, Result2, Result3, Result4>>;
598
589
  Poll<Result> PollOnce() {
599
590
  if (!ready.is_set(0)) {
600
- if (grpc_trace_promise_primitives.enabled()) {
601
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 1/5", this);
602
- }
591
+ GRPC_TRACE_VLOG(promise_primitives, 2)
592
+ << "join[" << this << "]: begin poll joint 1/5";
603
593
  auto poll = promise0();
604
- if (grpc_trace_promise_primitives.enabled()) {
594
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
605
595
  auto* p = poll.value_if_ready();
606
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/5 %s", this,
607
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
608
- : "pending");
596
+ VLOG(2) << "join[" << this << "]: joint 1/5 "
597
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
598
+ : "pending");
609
599
  }
610
600
  if (auto* p = poll.value_if_ready()) {
611
601
  if (Traits::IsOk(*p)) {
@@ -616,19 +606,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4> {
616
606
  return Traits::template EarlyReturn<Result>(std::move(*p));
617
607
  }
618
608
  }
619
- } else if (grpc_trace_promise_primitives.enabled()) {
620
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/5 already ready", this);
609
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
610
+ VLOG(2) << "join[" << this << "]: joint 1/5 already ready";
621
611
  }
622
612
  if (!ready.is_set(1)) {
623
- if (grpc_trace_promise_primitives.enabled()) {
624
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 2/5", this);
625
- }
613
+ GRPC_TRACE_VLOG(promise_primitives, 2)
614
+ << "join[" << this << "]: begin poll joint 2/5";
626
615
  auto poll = promise1();
627
- if (grpc_trace_promise_primitives.enabled()) {
616
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
628
617
  auto* p = poll.value_if_ready();
629
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/5 %s", this,
630
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
631
- : "pending");
618
+ VLOG(2) << "join[" << this << "]: joint 2/5 "
619
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
620
+ : "pending");
632
621
  }
633
622
  if (auto* p = poll.value_if_ready()) {
634
623
  if (Traits::IsOk(*p)) {
@@ -639,19 +628,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4> {
639
628
  return Traits::template EarlyReturn<Result>(std::move(*p));
640
629
  }
641
630
  }
642
- } else if (grpc_trace_promise_primitives.enabled()) {
643
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/5 already ready", this);
631
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
632
+ VLOG(2) << "join[" << this << "]: joint 2/5 already ready";
644
633
  }
645
634
  if (!ready.is_set(2)) {
646
- if (grpc_trace_promise_primitives.enabled()) {
647
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 3/5", this);
648
- }
635
+ GRPC_TRACE_VLOG(promise_primitives, 2)
636
+ << "join[" << this << "]: begin poll joint 3/5";
649
637
  auto poll = promise2();
650
- if (grpc_trace_promise_primitives.enabled()) {
638
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
651
639
  auto* p = poll.value_if_ready();
652
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/5 %s", this,
653
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
654
- : "pending");
640
+ VLOG(2) << "join[" << this << "]: joint 3/5 "
641
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
642
+ : "pending");
655
643
  }
656
644
  if (auto* p = poll.value_if_ready()) {
657
645
  if (Traits::IsOk(*p)) {
@@ -662,19 +650,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4> {
662
650
  return Traits::template EarlyReturn<Result>(std::move(*p));
663
651
  }
664
652
  }
665
- } else if (grpc_trace_promise_primitives.enabled()) {
666
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/5 already ready", this);
653
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
654
+ VLOG(2) << "join[" << this << "]: joint 3/5 already ready";
667
655
  }
668
656
  if (!ready.is_set(3)) {
669
- if (grpc_trace_promise_primitives.enabled()) {
670
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 4/5", this);
671
- }
657
+ GRPC_TRACE_VLOG(promise_primitives, 2)
658
+ << "join[" << this << "]: begin poll joint 4/5";
672
659
  auto poll = promise3();
673
- if (grpc_trace_promise_primitives.enabled()) {
660
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
674
661
  auto* p = poll.value_if_ready();
675
- gpr_log(GPR_DEBUG, "join[%p]: joint 4/5 %s", this,
676
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
677
- : "pending");
662
+ VLOG(2) << "join[" << this << "]: joint 4/5 "
663
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
664
+ : "pending");
678
665
  }
679
666
  if (auto* p = poll.value_if_ready()) {
680
667
  if (Traits::IsOk(*p)) {
@@ -685,19 +672,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4> {
685
672
  return Traits::template EarlyReturn<Result>(std::move(*p));
686
673
  }
687
674
  }
688
- } else if (grpc_trace_promise_primitives.enabled()) {
689
- gpr_log(GPR_DEBUG, "join[%p]: joint 4/5 already ready", this);
675
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
676
+ VLOG(2) << "join[" << this << "]: joint 4/5 already ready";
690
677
  }
691
678
  if (!ready.is_set(4)) {
692
- if (grpc_trace_promise_primitives.enabled()) {
693
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 5/5", this);
694
- }
679
+ GRPC_TRACE_VLOG(promise_primitives, 2)
680
+ << "join[" << this << "]: begin poll joint 5/5";
695
681
  auto poll = promise4();
696
- if (grpc_trace_promise_primitives.enabled()) {
682
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
697
683
  auto* p = poll.value_if_ready();
698
- gpr_log(GPR_DEBUG, "join[%p]: joint 5/5 %s", this,
699
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
700
- : "pending");
684
+ VLOG(2) << "join[" << this << "]: joint 5/5 "
685
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
686
+ : "pending");
701
687
  }
702
688
  if (auto* p = poll.value_if_ready()) {
703
689
  if (Traits::IsOk(*p)) {
@@ -708,8 +694,8 @@ struct JoinState<Traits, P0, P1, P2, P3, P4> {
708
694
  return Traits::template EarlyReturn<Result>(std::move(*p));
709
695
  }
710
696
  }
711
- } else if (grpc_trace_promise_primitives.enabled()) {
712
- gpr_log(GPR_DEBUG, "join[%p]: joint 5/5 already ready", this);
697
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
698
+ VLOG(2) << "join[" << this << "]: joint 5/5 already ready";
713
699
  }
714
700
  if (ready.all()) {
715
701
  return Traits::FinalReturn(std::move(result0), std::move(result1),
@@ -849,15 +835,14 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5> {
849
835
  std::tuple<Result0, Result1, Result2, Result3, Result4, Result5>>;
850
836
  Poll<Result> PollOnce() {
851
837
  if (!ready.is_set(0)) {
852
- if (grpc_trace_promise_primitives.enabled()) {
853
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 1/6", this);
854
- }
838
+ GRPC_TRACE_VLOG(promise_primitives, 2)
839
+ << "join[" << this << "]: begin poll joint 1/6";
855
840
  auto poll = promise0();
856
- if (grpc_trace_promise_primitives.enabled()) {
841
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
857
842
  auto* p = poll.value_if_ready();
858
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/6 %s", this,
859
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
860
- : "pending");
843
+ VLOG(2) << "join[" << this << "]: joint 1/6 "
844
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
845
+ : "pending");
861
846
  }
862
847
  if (auto* p = poll.value_if_ready()) {
863
848
  if (Traits::IsOk(*p)) {
@@ -868,19 +853,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5> {
868
853
  return Traits::template EarlyReturn<Result>(std::move(*p));
869
854
  }
870
855
  }
871
- } else if (grpc_trace_promise_primitives.enabled()) {
872
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/6 already ready", this);
856
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
857
+ VLOG(2) << "join[" << this << "]: joint 1/6 already ready";
873
858
  }
874
859
  if (!ready.is_set(1)) {
875
- if (grpc_trace_promise_primitives.enabled()) {
876
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 2/6", this);
877
- }
860
+ GRPC_TRACE_VLOG(promise_primitives, 2)
861
+ << "join[" << this << "]: begin poll joint 2/6";
878
862
  auto poll = promise1();
879
- if (grpc_trace_promise_primitives.enabled()) {
863
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
880
864
  auto* p = poll.value_if_ready();
881
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/6 %s", this,
882
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
883
- : "pending");
865
+ VLOG(2) << "join[" << this << "]: joint 2/6 "
866
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
867
+ : "pending");
884
868
  }
885
869
  if (auto* p = poll.value_if_ready()) {
886
870
  if (Traits::IsOk(*p)) {
@@ -891,19 +875,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5> {
891
875
  return Traits::template EarlyReturn<Result>(std::move(*p));
892
876
  }
893
877
  }
894
- } else if (grpc_trace_promise_primitives.enabled()) {
895
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/6 already ready", this);
878
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
879
+ VLOG(2) << "join[" << this << "]: joint 2/6 already ready";
896
880
  }
897
881
  if (!ready.is_set(2)) {
898
- if (grpc_trace_promise_primitives.enabled()) {
899
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 3/6", this);
900
- }
882
+ GRPC_TRACE_VLOG(promise_primitives, 2)
883
+ << "join[" << this << "]: begin poll joint 3/6";
901
884
  auto poll = promise2();
902
- if (grpc_trace_promise_primitives.enabled()) {
885
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
903
886
  auto* p = poll.value_if_ready();
904
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/6 %s", this,
905
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
906
- : "pending");
887
+ VLOG(2) << "join[" << this << "]: joint 3/6 "
888
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
889
+ : "pending");
907
890
  }
908
891
  if (auto* p = poll.value_if_ready()) {
909
892
  if (Traits::IsOk(*p)) {
@@ -914,19 +897,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5> {
914
897
  return Traits::template EarlyReturn<Result>(std::move(*p));
915
898
  }
916
899
  }
917
- } else if (grpc_trace_promise_primitives.enabled()) {
918
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/6 already ready", this);
900
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
901
+ VLOG(2) << "join[" << this << "]: joint 3/6 already ready";
919
902
  }
920
903
  if (!ready.is_set(3)) {
921
- if (grpc_trace_promise_primitives.enabled()) {
922
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 4/6", this);
923
- }
904
+ GRPC_TRACE_VLOG(promise_primitives, 2)
905
+ << "join[" << this << "]: begin poll joint 4/6";
924
906
  auto poll = promise3();
925
- if (grpc_trace_promise_primitives.enabled()) {
907
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
926
908
  auto* p = poll.value_if_ready();
927
- gpr_log(GPR_DEBUG, "join[%p]: joint 4/6 %s", this,
928
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
929
- : "pending");
909
+ VLOG(2) << "join[" << this << "]: joint 4/6 "
910
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
911
+ : "pending");
930
912
  }
931
913
  if (auto* p = poll.value_if_ready()) {
932
914
  if (Traits::IsOk(*p)) {
@@ -937,19 +919,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5> {
937
919
  return Traits::template EarlyReturn<Result>(std::move(*p));
938
920
  }
939
921
  }
940
- } else if (grpc_trace_promise_primitives.enabled()) {
941
- gpr_log(GPR_DEBUG, "join[%p]: joint 4/6 already ready", this);
922
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
923
+ VLOG(2) << "join[" << this << "]: joint 4/6 already ready";
942
924
  }
943
925
  if (!ready.is_set(4)) {
944
- if (grpc_trace_promise_primitives.enabled()) {
945
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 5/6", this);
946
- }
926
+ GRPC_TRACE_VLOG(promise_primitives, 2)
927
+ << "join[" << this << "]: begin poll joint 5/6";
947
928
  auto poll = promise4();
948
- if (grpc_trace_promise_primitives.enabled()) {
929
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
949
930
  auto* p = poll.value_if_ready();
950
- gpr_log(GPR_DEBUG, "join[%p]: joint 5/6 %s", this,
951
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
952
- : "pending");
931
+ VLOG(2) << "join[" << this << "]: joint 5/6 "
932
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
933
+ : "pending");
953
934
  }
954
935
  if (auto* p = poll.value_if_ready()) {
955
936
  if (Traits::IsOk(*p)) {
@@ -960,19 +941,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5> {
960
941
  return Traits::template EarlyReturn<Result>(std::move(*p));
961
942
  }
962
943
  }
963
- } else if (grpc_trace_promise_primitives.enabled()) {
964
- gpr_log(GPR_DEBUG, "join[%p]: joint 5/6 already ready", this);
944
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
945
+ VLOG(2) << "join[" << this << "]: joint 5/6 already ready";
965
946
  }
966
947
  if (!ready.is_set(5)) {
967
- if (grpc_trace_promise_primitives.enabled()) {
968
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 6/6", this);
969
- }
948
+ GRPC_TRACE_VLOG(promise_primitives, 2)
949
+ << "join[" << this << "]: begin poll joint 6/6";
970
950
  auto poll = promise5();
971
- if (grpc_trace_promise_primitives.enabled()) {
951
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
972
952
  auto* p = poll.value_if_ready();
973
- gpr_log(GPR_DEBUG, "join[%p]: joint 6/6 %s", this,
974
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
975
- : "pending");
953
+ VLOG(2) << "join[" << this << "]: joint 6/6 "
954
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
955
+ : "pending");
976
956
  }
977
957
  if (auto* p = poll.value_if_ready()) {
978
958
  if (Traits::IsOk(*p)) {
@@ -983,8 +963,8 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5> {
983
963
  return Traits::template EarlyReturn<Result>(std::move(*p));
984
964
  }
985
965
  }
986
- } else if (grpc_trace_promise_primitives.enabled()) {
987
- gpr_log(GPR_DEBUG, "join[%p]: joint 6/6 already ready", this);
966
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
967
+ VLOG(2) << "join[" << this << "]: joint 6/6 already ready";
988
968
  }
989
969
  if (ready.all()) {
990
970
  return Traits::FinalReturn(std::move(result0), std::move(result1),
@@ -1142,15 +1122,14 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6> {
1142
1122
  Result0, Result1, Result2, Result3, Result4, Result5, Result6>>;
1143
1123
  Poll<Result> PollOnce() {
1144
1124
  if (!ready.is_set(0)) {
1145
- if (grpc_trace_promise_primitives.enabled()) {
1146
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 1/7", this);
1147
- }
1125
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1126
+ << "join[" << this << "]: begin poll joint 1/7";
1148
1127
  auto poll = promise0();
1149
- if (grpc_trace_promise_primitives.enabled()) {
1128
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1150
1129
  auto* p = poll.value_if_ready();
1151
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/7 %s", this,
1152
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1153
- : "pending");
1130
+ VLOG(2) << "join[" << this << "]: joint 1/7 "
1131
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1132
+ : "pending");
1154
1133
  }
1155
1134
  if (auto* p = poll.value_if_ready()) {
1156
1135
  if (Traits::IsOk(*p)) {
@@ -1161,19 +1140,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6> {
1161
1140
  return Traits::template EarlyReturn<Result>(std::move(*p));
1162
1141
  }
1163
1142
  }
1164
- } else if (grpc_trace_promise_primitives.enabled()) {
1165
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/7 already ready", this);
1143
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1144
+ VLOG(2) << "join[" << this << "]: joint 1/7 already ready";
1166
1145
  }
1167
1146
  if (!ready.is_set(1)) {
1168
- if (grpc_trace_promise_primitives.enabled()) {
1169
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 2/7", this);
1170
- }
1147
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1148
+ << "join[" << this << "]: begin poll joint 2/7";
1171
1149
  auto poll = promise1();
1172
- if (grpc_trace_promise_primitives.enabled()) {
1150
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1173
1151
  auto* p = poll.value_if_ready();
1174
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/7 %s", this,
1175
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1176
- : "pending");
1152
+ VLOG(2) << "join[" << this << "]: joint 2/7 "
1153
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1154
+ : "pending");
1177
1155
  }
1178
1156
  if (auto* p = poll.value_if_ready()) {
1179
1157
  if (Traits::IsOk(*p)) {
@@ -1184,19 +1162,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6> {
1184
1162
  return Traits::template EarlyReturn<Result>(std::move(*p));
1185
1163
  }
1186
1164
  }
1187
- } else if (grpc_trace_promise_primitives.enabled()) {
1188
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/7 already ready", this);
1165
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1166
+ VLOG(2) << "join[" << this << "]: joint 2/7 already ready";
1189
1167
  }
1190
1168
  if (!ready.is_set(2)) {
1191
- if (grpc_trace_promise_primitives.enabled()) {
1192
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 3/7", this);
1193
- }
1169
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1170
+ << "join[" << this << "]: begin poll joint 3/7";
1194
1171
  auto poll = promise2();
1195
- if (grpc_trace_promise_primitives.enabled()) {
1172
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1196
1173
  auto* p = poll.value_if_ready();
1197
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/7 %s", this,
1198
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1199
- : "pending");
1174
+ VLOG(2) << "join[" << this << "]: joint 3/7 "
1175
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1176
+ : "pending");
1200
1177
  }
1201
1178
  if (auto* p = poll.value_if_ready()) {
1202
1179
  if (Traits::IsOk(*p)) {
@@ -1207,19 +1184,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6> {
1207
1184
  return Traits::template EarlyReturn<Result>(std::move(*p));
1208
1185
  }
1209
1186
  }
1210
- } else if (grpc_trace_promise_primitives.enabled()) {
1211
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/7 already ready", this);
1187
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1188
+ VLOG(2) << "join[" << this << "]: joint 3/7 already ready";
1212
1189
  }
1213
1190
  if (!ready.is_set(3)) {
1214
- if (grpc_trace_promise_primitives.enabled()) {
1215
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 4/7", this);
1216
- }
1191
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1192
+ << "join[" << this << "]: begin poll joint 4/7";
1217
1193
  auto poll = promise3();
1218
- if (grpc_trace_promise_primitives.enabled()) {
1194
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1219
1195
  auto* p = poll.value_if_ready();
1220
- gpr_log(GPR_DEBUG, "join[%p]: joint 4/7 %s", this,
1221
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1222
- : "pending");
1196
+ VLOG(2) << "join[" << this << "]: joint 4/7 "
1197
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1198
+ : "pending");
1223
1199
  }
1224
1200
  if (auto* p = poll.value_if_ready()) {
1225
1201
  if (Traits::IsOk(*p)) {
@@ -1230,19 +1206,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6> {
1230
1206
  return Traits::template EarlyReturn<Result>(std::move(*p));
1231
1207
  }
1232
1208
  }
1233
- } else if (grpc_trace_promise_primitives.enabled()) {
1234
- gpr_log(GPR_DEBUG, "join[%p]: joint 4/7 already ready", this);
1209
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1210
+ VLOG(2) << "join[" << this << "]: joint 4/7 already ready";
1235
1211
  }
1236
1212
  if (!ready.is_set(4)) {
1237
- if (grpc_trace_promise_primitives.enabled()) {
1238
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 5/7", this);
1239
- }
1213
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1214
+ << "join[" << this << "]: begin poll joint 5/7";
1240
1215
  auto poll = promise4();
1241
- if (grpc_trace_promise_primitives.enabled()) {
1216
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1242
1217
  auto* p = poll.value_if_ready();
1243
- gpr_log(GPR_DEBUG, "join[%p]: joint 5/7 %s", this,
1244
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1245
- : "pending");
1218
+ VLOG(2) << "join[" << this << "]: joint 5/7 "
1219
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1220
+ : "pending");
1246
1221
  }
1247
1222
  if (auto* p = poll.value_if_ready()) {
1248
1223
  if (Traits::IsOk(*p)) {
@@ -1253,19 +1228,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6> {
1253
1228
  return Traits::template EarlyReturn<Result>(std::move(*p));
1254
1229
  }
1255
1230
  }
1256
- } else if (grpc_trace_promise_primitives.enabled()) {
1257
- gpr_log(GPR_DEBUG, "join[%p]: joint 5/7 already ready", this);
1231
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1232
+ VLOG(2) << "join[" << this << "]: joint 5/7 already ready";
1258
1233
  }
1259
1234
  if (!ready.is_set(5)) {
1260
- if (grpc_trace_promise_primitives.enabled()) {
1261
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 6/7", this);
1262
- }
1235
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1236
+ << "join[" << this << "]: begin poll joint 6/7";
1263
1237
  auto poll = promise5();
1264
- if (grpc_trace_promise_primitives.enabled()) {
1238
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1265
1239
  auto* p = poll.value_if_ready();
1266
- gpr_log(GPR_DEBUG, "join[%p]: joint 6/7 %s", this,
1267
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1268
- : "pending");
1240
+ VLOG(2) << "join[" << this << "]: joint 6/7 "
1241
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1242
+ : "pending");
1269
1243
  }
1270
1244
  if (auto* p = poll.value_if_ready()) {
1271
1245
  if (Traits::IsOk(*p)) {
@@ -1276,19 +1250,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6> {
1276
1250
  return Traits::template EarlyReturn<Result>(std::move(*p));
1277
1251
  }
1278
1252
  }
1279
- } else if (grpc_trace_promise_primitives.enabled()) {
1280
- gpr_log(GPR_DEBUG, "join[%p]: joint 6/7 already ready", this);
1253
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1254
+ VLOG(2) << "join[" << this << "]: joint 6/7 already ready";
1281
1255
  }
1282
1256
  if (!ready.is_set(6)) {
1283
- if (grpc_trace_promise_primitives.enabled()) {
1284
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 7/7", this);
1285
- }
1257
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1258
+ << "join[" << this << "]: begin poll joint 7/7";
1286
1259
  auto poll = promise6();
1287
- if (grpc_trace_promise_primitives.enabled()) {
1260
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1288
1261
  auto* p = poll.value_if_ready();
1289
- gpr_log(GPR_DEBUG, "join[%p]: joint 7/7 %s", this,
1290
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1291
- : "pending");
1262
+ VLOG(2) << "join[" << this << "]: joint 7/7 "
1263
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1264
+ : "pending");
1292
1265
  }
1293
1266
  if (auto* p = poll.value_if_ready()) {
1294
1267
  if (Traits::IsOk(*p)) {
@@ -1299,8 +1272,8 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6> {
1299
1272
  return Traits::template EarlyReturn<Result>(std::move(*p));
1300
1273
  }
1301
1274
  }
1302
- } else if (grpc_trace_promise_primitives.enabled()) {
1303
- gpr_log(GPR_DEBUG, "join[%p]: joint 7/7 already ready", this);
1275
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1276
+ VLOG(2) << "join[" << this << "]: joint 7/7 already ready";
1304
1277
  }
1305
1278
  if (ready.all()) {
1306
1279
  return Traits::FinalReturn(std::move(result0), std::move(result1),
@@ -1478,15 +1451,14 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7> {
1478
1451
  Result0, Result1, Result2, Result3, Result4, Result5, Result6, Result7>>;
1479
1452
  Poll<Result> PollOnce() {
1480
1453
  if (!ready.is_set(0)) {
1481
- if (grpc_trace_promise_primitives.enabled()) {
1482
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 1/8", this);
1483
- }
1454
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1455
+ << "join[" << this << "]: begin poll joint 1/8";
1484
1456
  auto poll = promise0();
1485
- if (grpc_trace_promise_primitives.enabled()) {
1457
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1486
1458
  auto* p = poll.value_if_ready();
1487
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/8 %s", this,
1488
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1489
- : "pending");
1459
+ VLOG(2) << "join[" << this << "]: joint 1/8 "
1460
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1461
+ : "pending");
1490
1462
  }
1491
1463
  if (auto* p = poll.value_if_ready()) {
1492
1464
  if (Traits::IsOk(*p)) {
@@ -1497,19 +1469,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7> {
1497
1469
  return Traits::template EarlyReturn<Result>(std::move(*p));
1498
1470
  }
1499
1471
  }
1500
- } else if (grpc_trace_promise_primitives.enabled()) {
1501
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/8 already ready", this);
1472
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1473
+ VLOG(2) << "join[" << this << "]: joint 1/8 already ready";
1502
1474
  }
1503
1475
  if (!ready.is_set(1)) {
1504
- if (grpc_trace_promise_primitives.enabled()) {
1505
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 2/8", this);
1506
- }
1476
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1477
+ << "join[" << this << "]: begin poll joint 2/8";
1507
1478
  auto poll = promise1();
1508
- if (grpc_trace_promise_primitives.enabled()) {
1479
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1509
1480
  auto* p = poll.value_if_ready();
1510
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/8 %s", this,
1511
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1512
- : "pending");
1481
+ VLOG(2) << "join[" << this << "]: joint 2/8 "
1482
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1483
+ : "pending");
1513
1484
  }
1514
1485
  if (auto* p = poll.value_if_ready()) {
1515
1486
  if (Traits::IsOk(*p)) {
@@ -1520,19 +1491,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7> {
1520
1491
  return Traits::template EarlyReturn<Result>(std::move(*p));
1521
1492
  }
1522
1493
  }
1523
- } else if (grpc_trace_promise_primitives.enabled()) {
1524
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/8 already ready", this);
1494
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1495
+ VLOG(2) << "join[" << this << "]: joint 2/8 already ready";
1525
1496
  }
1526
1497
  if (!ready.is_set(2)) {
1527
- if (grpc_trace_promise_primitives.enabled()) {
1528
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 3/8", this);
1529
- }
1498
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1499
+ << "join[" << this << "]: begin poll joint 3/8";
1530
1500
  auto poll = promise2();
1531
- if (grpc_trace_promise_primitives.enabled()) {
1501
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1532
1502
  auto* p = poll.value_if_ready();
1533
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/8 %s", this,
1534
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1535
- : "pending");
1503
+ VLOG(2) << "join[" << this << "]: joint 3/8 "
1504
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1505
+ : "pending");
1536
1506
  }
1537
1507
  if (auto* p = poll.value_if_ready()) {
1538
1508
  if (Traits::IsOk(*p)) {
@@ -1543,19 +1513,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7> {
1543
1513
  return Traits::template EarlyReturn<Result>(std::move(*p));
1544
1514
  }
1545
1515
  }
1546
- } else if (grpc_trace_promise_primitives.enabled()) {
1547
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/8 already ready", this);
1516
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1517
+ VLOG(2) << "join[" << this << "]: joint 3/8 already ready";
1548
1518
  }
1549
1519
  if (!ready.is_set(3)) {
1550
- if (grpc_trace_promise_primitives.enabled()) {
1551
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 4/8", this);
1552
- }
1520
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1521
+ << "join[" << this << "]: begin poll joint 4/8";
1553
1522
  auto poll = promise3();
1554
- if (grpc_trace_promise_primitives.enabled()) {
1523
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1555
1524
  auto* p = poll.value_if_ready();
1556
- gpr_log(GPR_DEBUG, "join[%p]: joint 4/8 %s", this,
1557
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1558
- : "pending");
1525
+ VLOG(2) << "join[" << this << "]: joint 4/8 "
1526
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1527
+ : "pending");
1559
1528
  }
1560
1529
  if (auto* p = poll.value_if_ready()) {
1561
1530
  if (Traits::IsOk(*p)) {
@@ -1566,19 +1535,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7> {
1566
1535
  return Traits::template EarlyReturn<Result>(std::move(*p));
1567
1536
  }
1568
1537
  }
1569
- } else if (grpc_trace_promise_primitives.enabled()) {
1570
- gpr_log(GPR_DEBUG, "join[%p]: joint 4/8 already ready", this);
1538
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1539
+ VLOG(2) << "join[" << this << "]: joint 4/8 already ready";
1571
1540
  }
1572
1541
  if (!ready.is_set(4)) {
1573
- if (grpc_trace_promise_primitives.enabled()) {
1574
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 5/8", this);
1575
- }
1542
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1543
+ << "join[" << this << "]: begin poll joint 5/8";
1576
1544
  auto poll = promise4();
1577
- if (grpc_trace_promise_primitives.enabled()) {
1545
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1578
1546
  auto* p = poll.value_if_ready();
1579
- gpr_log(GPR_DEBUG, "join[%p]: joint 5/8 %s", this,
1580
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1581
- : "pending");
1547
+ VLOG(2) << "join[" << this << "]: joint 5/8 "
1548
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1549
+ : "pending");
1582
1550
  }
1583
1551
  if (auto* p = poll.value_if_ready()) {
1584
1552
  if (Traits::IsOk(*p)) {
@@ -1589,19 +1557,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7> {
1589
1557
  return Traits::template EarlyReturn<Result>(std::move(*p));
1590
1558
  }
1591
1559
  }
1592
- } else if (grpc_trace_promise_primitives.enabled()) {
1593
- gpr_log(GPR_DEBUG, "join[%p]: joint 5/8 already ready", this);
1560
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1561
+ VLOG(2) << "join[" << this << "]: joint 5/8 already ready";
1594
1562
  }
1595
1563
  if (!ready.is_set(5)) {
1596
- if (grpc_trace_promise_primitives.enabled()) {
1597
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 6/8", this);
1598
- }
1564
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1565
+ << "join[" << this << "]: begin poll joint 6/8";
1599
1566
  auto poll = promise5();
1600
- if (grpc_trace_promise_primitives.enabled()) {
1567
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1601
1568
  auto* p = poll.value_if_ready();
1602
- gpr_log(GPR_DEBUG, "join[%p]: joint 6/8 %s", this,
1603
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1604
- : "pending");
1569
+ VLOG(2) << "join[" << this << "]: joint 6/8 "
1570
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1571
+ : "pending");
1605
1572
  }
1606
1573
  if (auto* p = poll.value_if_ready()) {
1607
1574
  if (Traits::IsOk(*p)) {
@@ -1612,19 +1579,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7> {
1612
1579
  return Traits::template EarlyReturn<Result>(std::move(*p));
1613
1580
  }
1614
1581
  }
1615
- } else if (grpc_trace_promise_primitives.enabled()) {
1616
- gpr_log(GPR_DEBUG, "join[%p]: joint 6/8 already ready", this);
1582
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1583
+ VLOG(2) << "join[" << this << "]: joint 6/8 already ready";
1617
1584
  }
1618
1585
  if (!ready.is_set(6)) {
1619
- if (grpc_trace_promise_primitives.enabled()) {
1620
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 7/8", this);
1621
- }
1586
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1587
+ << "join[" << this << "]: begin poll joint 7/8";
1622
1588
  auto poll = promise6();
1623
- if (grpc_trace_promise_primitives.enabled()) {
1589
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1624
1590
  auto* p = poll.value_if_ready();
1625
- gpr_log(GPR_DEBUG, "join[%p]: joint 7/8 %s", this,
1626
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1627
- : "pending");
1591
+ VLOG(2) << "join[" << this << "]: joint 7/8 "
1592
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1593
+ : "pending");
1628
1594
  }
1629
1595
  if (auto* p = poll.value_if_ready()) {
1630
1596
  if (Traits::IsOk(*p)) {
@@ -1635,19 +1601,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7> {
1635
1601
  return Traits::template EarlyReturn<Result>(std::move(*p));
1636
1602
  }
1637
1603
  }
1638
- } else if (grpc_trace_promise_primitives.enabled()) {
1639
- gpr_log(GPR_DEBUG, "join[%p]: joint 7/8 already ready", this);
1604
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1605
+ VLOG(2) << "join[" << this << "]: joint 7/8 already ready";
1640
1606
  }
1641
1607
  if (!ready.is_set(7)) {
1642
- if (grpc_trace_promise_primitives.enabled()) {
1643
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 8/8", this);
1644
- }
1608
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1609
+ << "join[" << this << "]: begin poll joint 8/8";
1645
1610
  auto poll = promise7();
1646
- if (grpc_trace_promise_primitives.enabled()) {
1611
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1647
1612
  auto* p = poll.value_if_ready();
1648
- gpr_log(GPR_DEBUG, "join[%p]: joint 8/8 %s", this,
1649
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1650
- : "pending");
1613
+ VLOG(2) << "join[" << this << "]: joint 8/8 "
1614
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1615
+ : "pending");
1651
1616
  }
1652
1617
  if (auto* p = poll.value_if_ready()) {
1653
1618
  if (Traits::IsOk(*p)) {
@@ -1658,8 +1623,8 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7> {
1658
1623
  return Traits::template EarlyReturn<Result>(std::move(*p));
1659
1624
  }
1660
1625
  }
1661
- } else if (grpc_trace_promise_primitives.enabled()) {
1662
- gpr_log(GPR_DEBUG, "join[%p]: joint 8/8 already ready", this);
1626
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1627
+ VLOG(2) << "join[" << this << "]: joint 8/8 already ready";
1663
1628
  }
1664
1629
  if (ready.all()) {
1665
1630
  return Traits::FinalReturn(std::move(result0), std::move(result1),
@@ -1856,15 +1821,14 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7, P8> {
1856
1821
  Result7, Result8>>;
1857
1822
  Poll<Result> PollOnce() {
1858
1823
  if (!ready.is_set(0)) {
1859
- if (grpc_trace_promise_primitives.enabled()) {
1860
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 1/9", this);
1861
- }
1824
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1825
+ << "join[" << this << "]: begin poll joint 1/9";
1862
1826
  auto poll = promise0();
1863
- if (grpc_trace_promise_primitives.enabled()) {
1827
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1864
1828
  auto* p = poll.value_if_ready();
1865
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/9 %s", this,
1866
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1867
- : "pending");
1829
+ VLOG(2) << "join[" << this << "]: joint 1/9 "
1830
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1831
+ : "pending");
1868
1832
  }
1869
1833
  if (auto* p = poll.value_if_ready()) {
1870
1834
  if (Traits::IsOk(*p)) {
@@ -1875,19 +1839,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7, P8> {
1875
1839
  return Traits::template EarlyReturn<Result>(std::move(*p));
1876
1840
  }
1877
1841
  }
1878
- } else if (grpc_trace_promise_primitives.enabled()) {
1879
- gpr_log(GPR_DEBUG, "join[%p]: joint 1/9 already ready", this);
1842
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1843
+ VLOG(2) << "join[" << this << "]: joint 1/9 already ready";
1880
1844
  }
1881
1845
  if (!ready.is_set(1)) {
1882
- if (grpc_trace_promise_primitives.enabled()) {
1883
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 2/9", this);
1884
- }
1846
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1847
+ << "join[" << this << "]: begin poll joint 2/9";
1885
1848
  auto poll = promise1();
1886
- if (grpc_trace_promise_primitives.enabled()) {
1849
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1887
1850
  auto* p = poll.value_if_ready();
1888
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/9 %s", this,
1889
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1890
- : "pending");
1851
+ VLOG(2) << "join[" << this << "]: joint 2/9 "
1852
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1853
+ : "pending");
1891
1854
  }
1892
1855
  if (auto* p = poll.value_if_ready()) {
1893
1856
  if (Traits::IsOk(*p)) {
@@ -1898,19 +1861,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7, P8> {
1898
1861
  return Traits::template EarlyReturn<Result>(std::move(*p));
1899
1862
  }
1900
1863
  }
1901
- } else if (grpc_trace_promise_primitives.enabled()) {
1902
- gpr_log(GPR_DEBUG, "join[%p]: joint 2/9 already ready", this);
1864
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1865
+ VLOG(2) << "join[" << this << "]: joint 2/9 already ready";
1903
1866
  }
1904
1867
  if (!ready.is_set(2)) {
1905
- if (grpc_trace_promise_primitives.enabled()) {
1906
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 3/9", this);
1907
- }
1868
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1869
+ << "join[" << this << "]: begin poll joint 3/9";
1908
1870
  auto poll = promise2();
1909
- if (grpc_trace_promise_primitives.enabled()) {
1871
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1910
1872
  auto* p = poll.value_if_ready();
1911
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/9 %s", this,
1912
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1913
- : "pending");
1873
+ VLOG(2) << "join[" << this << "]: joint 3/9 "
1874
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1875
+ : "pending");
1914
1876
  }
1915
1877
  if (auto* p = poll.value_if_ready()) {
1916
1878
  if (Traits::IsOk(*p)) {
@@ -1921,19 +1883,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7, P8> {
1921
1883
  return Traits::template EarlyReturn<Result>(std::move(*p));
1922
1884
  }
1923
1885
  }
1924
- } else if (grpc_trace_promise_primitives.enabled()) {
1925
- gpr_log(GPR_DEBUG, "join[%p]: joint 3/9 already ready", this);
1886
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1887
+ VLOG(2) << "join[" << this << "]: joint 3/9 already ready";
1926
1888
  }
1927
1889
  if (!ready.is_set(3)) {
1928
- if (grpc_trace_promise_primitives.enabled()) {
1929
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 4/9", this);
1930
- }
1890
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1891
+ << "join[" << this << "]: begin poll joint 4/9";
1931
1892
  auto poll = promise3();
1932
- if (grpc_trace_promise_primitives.enabled()) {
1893
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1933
1894
  auto* p = poll.value_if_ready();
1934
- gpr_log(GPR_DEBUG, "join[%p]: joint 4/9 %s", this,
1935
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1936
- : "pending");
1895
+ VLOG(2) << "join[" << this << "]: joint 4/9 "
1896
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1897
+ : "pending");
1937
1898
  }
1938
1899
  if (auto* p = poll.value_if_ready()) {
1939
1900
  if (Traits::IsOk(*p)) {
@@ -1944,19 +1905,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7, P8> {
1944
1905
  return Traits::template EarlyReturn<Result>(std::move(*p));
1945
1906
  }
1946
1907
  }
1947
- } else if (grpc_trace_promise_primitives.enabled()) {
1948
- gpr_log(GPR_DEBUG, "join[%p]: joint 4/9 already ready", this);
1908
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1909
+ VLOG(2) << "join[" << this << "]: joint 4/9 already ready";
1949
1910
  }
1950
1911
  if (!ready.is_set(4)) {
1951
- if (grpc_trace_promise_primitives.enabled()) {
1952
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 5/9", this);
1953
- }
1912
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1913
+ << "join[" << this << "]: begin poll joint 5/9";
1954
1914
  auto poll = promise4();
1955
- if (grpc_trace_promise_primitives.enabled()) {
1915
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1956
1916
  auto* p = poll.value_if_ready();
1957
- gpr_log(GPR_DEBUG, "join[%p]: joint 5/9 %s", this,
1958
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1959
- : "pending");
1917
+ VLOG(2) << "join[" << this << "]: joint 5/9 "
1918
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1919
+ : "pending");
1960
1920
  }
1961
1921
  if (auto* p = poll.value_if_ready()) {
1962
1922
  if (Traits::IsOk(*p)) {
@@ -1967,19 +1927,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7, P8> {
1967
1927
  return Traits::template EarlyReturn<Result>(std::move(*p));
1968
1928
  }
1969
1929
  }
1970
- } else if (grpc_trace_promise_primitives.enabled()) {
1971
- gpr_log(GPR_DEBUG, "join[%p]: joint 5/9 already ready", this);
1930
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1931
+ VLOG(2) << "join[" << this << "]: joint 5/9 already ready";
1972
1932
  }
1973
1933
  if (!ready.is_set(5)) {
1974
- if (grpc_trace_promise_primitives.enabled()) {
1975
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 6/9", this);
1976
- }
1934
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1935
+ << "join[" << this << "]: begin poll joint 6/9";
1977
1936
  auto poll = promise5();
1978
- if (grpc_trace_promise_primitives.enabled()) {
1937
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1979
1938
  auto* p = poll.value_if_ready();
1980
- gpr_log(GPR_DEBUG, "join[%p]: joint 6/9 %s", this,
1981
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1982
- : "pending");
1939
+ VLOG(2) << "join[" << this << "]: joint 6/9 "
1940
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1941
+ : "pending");
1983
1942
  }
1984
1943
  if (auto* p = poll.value_if_ready()) {
1985
1944
  if (Traits::IsOk(*p)) {
@@ -1990,19 +1949,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7, P8> {
1990
1949
  return Traits::template EarlyReturn<Result>(std::move(*p));
1991
1950
  }
1992
1951
  }
1993
- } else if (grpc_trace_promise_primitives.enabled()) {
1994
- gpr_log(GPR_DEBUG, "join[%p]: joint 6/9 already ready", this);
1952
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1953
+ VLOG(2) << "join[" << this << "]: joint 6/9 already ready";
1995
1954
  }
1996
1955
  if (!ready.is_set(6)) {
1997
- if (grpc_trace_promise_primitives.enabled()) {
1998
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 7/9", this);
1999
- }
1956
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1957
+ << "join[" << this << "]: begin poll joint 7/9";
2000
1958
  auto poll = promise6();
2001
- if (grpc_trace_promise_primitives.enabled()) {
1959
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
2002
1960
  auto* p = poll.value_if_ready();
2003
- gpr_log(GPR_DEBUG, "join[%p]: joint 7/9 %s", this,
2004
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
2005
- : "pending");
1961
+ VLOG(2) << "join[" << this << "]: joint 7/9 "
1962
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1963
+ : "pending");
2006
1964
  }
2007
1965
  if (auto* p = poll.value_if_ready()) {
2008
1966
  if (Traits::IsOk(*p)) {
@@ -2013,19 +1971,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7, P8> {
2013
1971
  return Traits::template EarlyReturn<Result>(std::move(*p));
2014
1972
  }
2015
1973
  }
2016
- } else if (grpc_trace_promise_primitives.enabled()) {
2017
- gpr_log(GPR_DEBUG, "join[%p]: joint 7/9 already ready", this);
1974
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1975
+ VLOG(2) << "join[" << this << "]: joint 7/9 already ready";
2018
1976
  }
2019
1977
  if (!ready.is_set(7)) {
2020
- if (grpc_trace_promise_primitives.enabled()) {
2021
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 8/9", this);
2022
- }
1978
+ GRPC_TRACE_VLOG(promise_primitives, 2)
1979
+ << "join[" << this << "]: begin poll joint 8/9";
2023
1980
  auto poll = promise7();
2024
- if (grpc_trace_promise_primitives.enabled()) {
1981
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
2025
1982
  auto* p = poll.value_if_ready();
2026
- gpr_log(GPR_DEBUG, "join[%p]: joint 8/9 %s", this,
2027
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
2028
- : "pending");
1983
+ VLOG(2) << "join[" << this << "]: joint 8/9 "
1984
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
1985
+ : "pending");
2029
1986
  }
2030
1987
  if (auto* p = poll.value_if_ready()) {
2031
1988
  if (Traits::IsOk(*p)) {
@@ -2036,19 +1993,18 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7, P8> {
2036
1993
  return Traits::template EarlyReturn<Result>(std::move(*p));
2037
1994
  }
2038
1995
  }
2039
- } else if (grpc_trace_promise_primitives.enabled()) {
2040
- gpr_log(GPR_DEBUG, "join[%p]: joint 8/9 already ready", this);
1996
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
1997
+ VLOG(2) << "join[" << this << "]: joint 8/9 already ready";
2041
1998
  }
2042
1999
  if (!ready.is_set(8)) {
2043
- if (grpc_trace_promise_primitives.enabled()) {
2044
- gpr_log(GPR_DEBUG, "join[%p]: begin poll joint 9/9", this);
2045
- }
2000
+ GRPC_TRACE_VLOG(promise_primitives, 2)
2001
+ << "join[" << this << "]: begin poll joint 9/9";
2046
2002
  auto poll = promise8();
2047
- if (grpc_trace_promise_primitives.enabled()) {
2003
+ if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
2048
2004
  auto* p = poll.value_if_ready();
2049
- gpr_log(GPR_DEBUG, "join[%p]: joint 9/9 %s", this,
2050
- p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
2051
- : "pending");
2005
+ VLOG(2) << "join[" << this << "]: joint 9/9 "
2006
+ << (p != nullptr ? (Traits::IsOk(*p) ? "ready" : "early-error")
2007
+ : "pending");
2052
2008
  }
2053
2009
  if (auto* p = poll.value_if_ready()) {
2054
2010
  if (Traits::IsOk(*p)) {
@@ -2059,8 +2015,8 @@ struct JoinState<Traits, P0, P1, P2, P3, P4, P5, P6, P7, P8> {
2059
2015
  return Traits::template EarlyReturn<Result>(std::move(*p));
2060
2016
  }
2061
2017
  }
2062
- } else if (grpc_trace_promise_primitives.enabled()) {
2063
- gpr_log(GPR_DEBUG, "join[%p]: joint 9/9 already ready", this);
2018
+ } else if (GRPC_TRACE_FLAG_ENABLED(promise_primitives)) {
2019
+ VLOG(2) << "join[" << this << "]: joint 9/9 already ready";
2064
2020
  }
2065
2021
  if (ready.all()) {
2066
2022
  return Traits::FinalReturn(