diff --git a/crates/uv-distribution/src/distribution_database.rs b/crates/uv-distribution/src/distribution_database.rs index 3c3ef575f..fc25b387f 100644 --- a/crates/uv-distribution/src/distribution_database.rs +++ b/crates/uv-distribution/src/distribution_database.rs @@ -2,7 +2,6 @@ use std::future::Future; use std::io; use std::path::Path; use std::pin::Pin; -use std::rc::Rc; use std::sync::Arc; use std::task::{Context, Poll}; @@ -31,7 +30,6 @@ use uv_pypi_types::HashDigest; use uv_types::{BuildContext, BuildStack}; use crate::archive::Archive; -use crate::locks::Locks; use crate::metadata::{ArchiveMetadata, Metadata}; use crate::source::SourceDistributionBuilder; use crate::{Error, LocalWheel, Reporter, RequiresDist}; @@ -51,7 +49,6 @@ use crate::{Error, LocalWheel, Reporter, RequiresDist}; pub struct DistributionDatabase<'a, Context: BuildContext> { build_context: &'a Context, builder: SourceDistributionBuilder<'a, Context>, - locks: Rc, client: ManagedClient<'a>, reporter: Option>, } @@ -65,7 +62,6 @@ impl<'a, Context: BuildContext> DistributionDatabase<'a, Context> { Self { build_context, builder: SourceDistributionBuilder::new(build_context), - locks: Rc::new(Locks::default()), client: ManagedClient::new(client, concurrent_downloads), reporter: None, } @@ -347,9 +343,6 @@ impl<'a, Context: BuildContext> DistributionDatabase<'a, Context> { tags: &Tags, hashes: HashPolicy<'_>, ) -> Result { - let lock = self.locks.acquire(dist).await; - let _guard = lock.lock().await; - let built_wheel = self .builder .download_and_build(&BuildableSource::Dist(dist), tags, hashes, &self.client) @@ -496,9 +489,6 @@ impl<'a, Context: BuildContext> DistributionDatabase<'a, Context> { } } - let lock = self.locks.acquire(source).await; - let _guard = lock.lock().await; - let metadata = self .builder .download_and_build_metadata(source, hashes, &self.client) diff --git a/crates/uv-distribution/src/lib.rs b/crates/uv-distribution/src/lib.rs index a91ed6ccf..d7679a5fb 100644 --- a/crates/uv-distribution/src/lib.rs +++ b/crates/uv-distribution/src/lib.rs @@ -14,7 +14,6 @@ mod distribution_database; mod download; mod error; mod index; -mod locks; mod metadata; mod reporter; mod source; diff --git a/crates/uv-distribution/src/locks.rs b/crates/uv-distribution/src/locks.rs deleted file mode 100644 index 934b97dba..000000000 --- a/crates/uv-distribution/src/locks.rs +++ /dev/null @@ -1,20 +0,0 @@ -use std::rc::Rc; - -use rustc_hash::FxHashMap; -use tokio::sync::Mutex; - -use uv_distribution_types::{Identifier, ResourceId}; - -/// A set of locks used to prevent concurrent access to the same resource. -#[derive(Debug, Default)] -pub(crate) struct Locks(Mutex>>>); - -impl Locks { - /// Acquire a lock on the given resource. - pub(crate) async fn acquire(&self, dist: &impl Identifier) -> Rc> { - let mut map = self.0.lock().await; - map.entry(dist.resource_id()) - .or_insert_with(|| Rc::new(Mutex::new(()))) - .clone() - } -} diff --git a/crates/uv-requirements/src/source_tree.rs b/crates/uv-requirements/src/source_tree.rs index 94aba87d7..4bdeb86ba 100644 --- a/crates/uv-requirements/src/source_tree.rs +++ b/crates/uv-requirements/src/source_tree.rs @@ -195,6 +195,8 @@ impl<'a, Context: BuildContext> SourceTreeResolver<'a, Context> { }; // Fetch the metadata for the distribution. + // + // TODO(charlie): Respect in-flight fetches. let metadata = { let id = VersionId::from_url(source.url()); if let Some(archive) =