From 7460cf460dc53e4def748e5ea1e9b83344321331 Mon Sep 17 00:00:00 2001 From: Tim Neutkens Date: Mon, 3 Feb 2025 11:09:53 +0100 Subject: [PATCH] Run output() in parallel Revert "Run output() in parallel" This reverts commit 6e487dd01c1fc1a6acd6e11df51d4b2da408fbfa. Reapply "Run output() in parallel" This reverts commit cf8927ec3c43f295c79d77d6bb98ddce6b36b506. --- crates/napi/src/next_api/project.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/crates/napi/src/next_api/project.rs b/crates/napi/src/next_api/project.rs index ffdca7957a6e57..4ba34e6c945a88 100644 --- a/crates/napi/src/next_api/project.rs +++ b/crates/napi/src/next_api/project.rs @@ -1,7 +1,6 @@ use std::{path::PathBuf, sync::Arc, thread, time::Duration}; use anyhow::{anyhow, bail, Context, Result}; -use indexmap::IndexSet; use napi::{ bindgen_prelude::{within_runtime_if_available, External}, threadsafe_function::{ThreadsafeFunction, ThreadsafeFunctionCallMode}, @@ -29,8 +28,8 @@ use tracing::Instrument; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, Registry}; use turbo_rcstr::RcStr; use turbo_tasks::{ - get_effects, Completion, Effects, OperationVc, ReadRef, ResolvedVc, TransientInstance, - UpdateInfo, Vc, + get_effects, Completion, Effects, FxIndexSet, OperationVc, ReadRef, ResolvedVc, + TransientInstance, TryJoinIterExt, UpdateInfo, Vc, }; use turbo_tasks_fs::{ get_relative_path_to, util::uri_from_file, DiskFileSystem, FileContent, FileSystem, @@ -841,14 +840,23 @@ async fn output_assets_operation( container: ResolvedVc, app_dir_only: ResolvedVc, ) -> Result> { - let mut output_assets: IndexSet>> = IndexSet::new(); let app_dir_only = *app_dir_only.await?; - for endpoint in container.project().get_all_endpoints(app_dir_only).await? { - output_assets.extend(endpoint.output().await?.output_assets.await?); + let endpoint_assets = container + .project() + .get_all_endpoints(app_dir_only) + .await? + .iter() + .map(|endpoint| async move { endpoint.output().await?.output_assets.await }) + .try_join() + .await?; + + let mut output_assets: FxIndexSet>> = FxIndexSet::default(); + for assets in endpoint_assets { + output_assets.extend(assets.iter()); } - Ok(Vc::cell(output_assets.iter().copied().collect())) + Ok(Vc::cell(output_assets.into_iter().collect())) } #[napi(ts_return_type = "{ __napiType: \"RootTask\" }")]