diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-03-04 20:07:11 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-04 20:07:11 -0500 |
commit | 2f7222da8a26d8be915b9467fc21649a18f54b77 (patch) | |
tree | adb54f49608bd6cdd27e98ad56130532f49a04f5 /cli/npm | |
parent | 7afa3aceb04e6b2c8820b7326d6f648db6b571c6 (diff) |
refactor: remove `Semaphore::new(1)` and use `TaskQueue` (#18014)
Diffstat (limited to 'cli/npm')
-rw-r--r-- | cli/npm/resolution/mod.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/cli/npm/resolution/mod.rs b/cli/npm/resolution/mod.rs index f43f3c5cb..e1e3307c3 100644 --- a/cli/npm/resolution/mod.rs +++ b/cli/npm/resolution/mod.rs @@ -10,6 +10,7 @@ use deno_core::anyhow::Context; use deno_core::error::AnyError; use deno_core::parking_lot::Mutex; use deno_core::parking_lot::RwLock; +use deno_core::TaskQueue; use deno_graph::npm::NpmPackageNv; use deno_graph::npm::NpmPackageNvReference; use deno_graph::npm::NpmPackageReq; @@ -241,7 +242,7 @@ pub struct NpmResolution(Arc<NpmResolutionInner>); struct NpmResolutionInner { api: NpmRegistryApi, snapshot: RwLock<NpmResolutionSnapshot>, - update_semaphore: tokio::sync::Semaphore, + update_queue: TaskQueue, maybe_lockfile: Option<Arc<Mutex<Lockfile>>>, } @@ -263,7 +264,7 @@ impl NpmResolution { Self(Arc::new(NpmResolutionInner { api, snapshot: RwLock::new(initial_snapshot.unwrap_or_default()), - update_semaphore: tokio::sync::Semaphore::new(1), + update_queue: Default::default(), maybe_lockfile, })) } @@ -275,7 +276,7 @@ impl NpmResolution { let inner = &self.0; // only allow one thread in here at a time - let _permit = inner.update_semaphore.acquire().await?; + let _permit = inner.update_queue.acquire().await; let snapshot = inner.snapshot.read().clone(); let snapshot = add_package_reqs_to_snapshot( @@ -296,7 +297,7 @@ impl NpmResolution { ) -> Result<(), AnyError> { let inner = &self.0; // only allow one thread in here at a time - let _permit = inner.update_semaphore.acquire().await?; + let _permit = inner.update_queue.acquire().await; let snapshot = inner.snapshot.read().clone(); let reqs_set = package_reqs.iter().collect::<HashSet<_>>(); @@ -326,7 +327,7 @@ impl NpmResolution { pub async fn resolve_pending(&self) -> Result<(), AnyError> { let inner = &self.0; // only allow one thread in here at a time - let _permit = inner.update_semaphore.acquire().await?; + let _permit = inner.update_queue.acquire().await; let snapshot = inner.snapshot.read().clone(); let snapshot = add_package_reqs_to_snapshot( |