From 3341c50b6ae676cdc8f7b1c44221aa633f2bde68 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Mon, 3 Jun 2024 17:17:08 -0400 Subject: refactor: don't share `reqwest::HttpClient` across tokio runtimes (#24092) This also fixes several issues where we weren't properly creating http clients with the user's settings. --- cli/standalone/binary.rs | 17 +++++++++-------- cli/standalone/mod.rs | 8 ++++---- 2 files changed, 13 insertions(+), 12 deletions(-) (limited to 'cli/standalone') diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs index 042d3c3c6..00b8d19f3 100644 --- a/cli/standalone/binary.rs +++ b/cli/standalone/binary.rs @@ -40,7 +40,7 @@ use crate::args::PermissionFlags; use crate::args::UnstableConfig; use crate::cache::DenoDir; use crate::file_fetcher::FileFetcher; -use crate::http_util::HttpClient; +use crate::http_util::HttpClientProvider; use crate::npm::CliNpmResolver; use crate::npm::InnerCliNpmResolverRef; use crate::util::progress_bar::ProgressBar; @@ -417,9 +417,9 @@ pub fn unpack_into_dir( Ok(exe_path) } pub struct DenoCompileBinaryWriter<'a> { - file_fetcher: &'a FileFetcher, - client: &'a HttpClient, deno_dir: &'a DenoDir, + file_fetcher: &'a FileFetcher, + http_client_provider: &'a HttpClientProvider, npm_resolver: &'a dyn CliNpmResolver, npm_system_info: NpmSystemInfo, package_json_deps_provider: &'a PackageJsonDepsProvider, @@ -428,17 +428,17 @@ pub struct DenoCompileBinaryWriter<'a> { impl<'a> DenoCompileBinaryWriter<'a> { #[allow(clippy::too_many_arguments)] pub fn new( - file_fetcher: &'a FileFetcher, - client: &'a HttpClient, deno_dir: &'a DenoDir, + file_fetcher: &'a FileFetcher, + http_client_provider: &'a HttpClientProvider, npm_resolver: &'a dyn CliNpmResolver, npm_system_info: NpmSystemInfo, package_json_deps_provider: &'a PackageJsonDepsProvider, ) -> Self { Self { - file_fetcher, - client, deno_dir, + file_fetcher, + http_client_provider, npm_resolver, npm_system_info, package_json_deps_provider, @@ -536,7 +536,8 @@ impl<'a> DenoCompileBinaryWriter<'a> { let progress = progress_bars.update(&download_url); self - .client + .http_client_provider + .get_or_create()? .download_with_progress(download_url, None, &progress) .await? }; diff --git a/cli/standalone/mod.rs b/cli/standalone/mod.rs index 8c268d928..92c061a99 100644 --- a/cli/standalone/mod.rs +++ b/cli/standalone/mod.rs @@ -15,7 +15,7 @@ use crate::args::StorageKeyResolver; use crate::cache::Caches; use crate::cache::DenoDirProvider; use crate::cache::NodeAnalysisCache; -use crate::http_util::HttpClient; +use crate::http_util::HttpClientProvider; use crate::node::CliCjsCodeAnalyzer; use crate::npm::create_cli_npm_resolver; use crate::npm::CliNpmResolverByonmCreateOptions; @@ -346,7 +346,7 @@ pub async fn run( cell: Default::default(), }); let progress_bar = ProgressBar::new(ProgressBarStyle::TextOnly); - let http_client = Arc::new(HttpClient::new( + let http_client_provider = Arc::new(HttpClientProvider::new( Some(root_cert_store_provider.clone()), metadata.unsafely_ignore_certificate_errors.clone(), )); @@ -390,7 +390,7 @@ pub async fn run( snapshot: CliNpmResolverManagedSnapshotOption::Specified(Some(snapshot)), maybe_lockfile: None, fs: fs.clone(), - http_client: http_client.clone(), + http_client_provider: http_client_provider.clone(), npm_global_cache_dir, cache_setting, text_only_progress_bar: progress_bar, @@ -448,7 +448,7 @@ pub async fn run( snapshot: CliNpmResolverManagedSnapshotOption::Specified(None), maybe_lockfile: None, fs: fs.clone(), - http_client: http_client.clone(), + http_client_provider: http_client_provider.clone(), npm_global_cache_dir, cache_setting, text_only_progress_bar: progress_bar, -- cgit v1.2.3