From f61d3d28e063a11f81ac1ca7d5a425273ec45ac8 Mon Sep 17 00:00:00 2001 From: Michael Sloan Date: Tue, 18 Mar 2025 02:22:18 -0600 Subject: [PATCH] Use `futures::future::join_all` instead of `futures::stream` in assistant_eval (#26974) Release Notes: - N/A --- crates/assistant_eval/src/main.rs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/crates/assistant_eval/src/main.rs b/crates/assistant_eval/src/main.rs index f2fdde1a92..2bde8b074f 100644 --- a/crates/assistant_eval/src/main.rs +++ b/crates/assistant_eval/src/main.rs @@ -4,7 +4,7 @@ mod judge; use clap::Parser; use eval::{Eval, EvalOutput}; -use futures::{stream, StreamExt}; +use futures::future; use gpui::{Application, AsyncApp}; use headless_assistant::{authenticate_model_provider, find_model, HeadlessAppState}; use itertools::Itertools; @@ -126,12 +126,13 @@ fn main() { .await .unwrap(); - let loaded_evals = stream::iter(evals_to_run) + let eval_load_futures = evals_to_run + .into_iter() .map(|eval_name| { let eval_path = evaluation_data_dir.join(&eval_name); - let repos_dir = repos_dir.clone(); + let load_future = Eval::load(eval_name.clone(), eval_path, &repos_dir); async move { - match Eval::load(eval_name.clone(), eval_path, &repos_dir).await { + match load_future.await { Ok(eval) => Some(eval), Err(err) => { // TODO: Persist errors / surface errors at the end. @@ -141,8 +142,9 @@ fn main() { } } }) - .buffer_unordered(args.concurrency) - .collect::>() + .collect::>(); + + let loaded_evals = future::join_all(eval_load_futures) .await .into_iter() .flatten() @@ -160,7 +162,8 @@ fn main() { // Sort groups in descending order, so that bigger groups start first. evals_grouped_by_url.sort_by_key(|evals| cmp::Reverse(evals.len())); - let results = stream::iter(evals_grouped_by_url) + let result_futures = evals_grouped_by_url + .into_iter() .map(|evals| { let model = model.clone(); let judge_model = judge_model.clone(); @@ -185,8 +188,9 @@ fn main() { results } }) - .buffer_unordered(args.concurrency) - .collect::>() + .collect::>(); + + let results = future::join_all(result_futures) .await .into_iter() .flatten()