summaryrefslogtreecommitdiff
path: root/cli/npm
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-03-04 20:07:11 -0500
committerGitHub <noreply@github.com>2023-03-04 20:07:11 -0500
commit2f7222da8a26d8be915b9467fc21649a18f54b77 (patch)
treeadb54f49608bd6cdd27e98ad56130532f49a04f5 /cli/npm
parent7afa3aceb04e6b2c8820b7326d6f648db6b571c6 (diff)
refactor: remove `Semaphore::new(1)` and use `TaskQueue` (#18014)
Diffstat (limited to 'cli/npm')
-rw-r--r--cli/npm/resolution/mod.rs11
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(