Skip to content

Commit

Permalink
fix(generate-lockfile): hold lock before querying index
Browse files Browse the repository at this point in the history
  • Loading branch information
weihanglo committed Mar 26, 2024
1 parent 5587af7 commit f1c1396
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 8 deletions.
5 changes: 5 additions & 0 deletions src/cargo/ops/cargo_generate_lockfile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -166,12 +166,17 @@ pub fn update_lockfile(ws: &Workspace<'_>, opts: &UpdateOptions<'_>) -> CargoRes
Ok(())
}

/// Prints lockfile change statuses.
///
/// This would acquire the package-cache lock, as it may update the index to
/// show users latest available versions.
pub fn print_lockfile_changes(
gctx: &GlobalContext,
previous_resolve: Option<&Resolve>,
resolve: &Resolve,
registry: &mut PackageRegistry<'_>,
) -> CargoResult<()> {
let _lock = gctx.acquire_package_cache_lock(CacheLockMode::DownloadExclusive)?;
if let Some(previous_resolve) = previous_resolve {
print_lockfile_sync(gctx, previous_resolve, resolve, registry)
} else {
Expand Down
5 changes: 0 additions & 5 deletions src/cargo/ops/resolve.rs
Original file line number Diff line number Diff line change
Expand Up @@ -256,11 +256,6 @@ fn resolve_with_registry<'gctx>(
false
};
if print {
// We only want one Cargo at a time resolving a crate graph since this can
// involve a lot of frobbing of the global caches.
let _lock = ws
.gctx()
.acquire_package_cache_lock(CacheLockMode::DownloadExclusive)?;
ops::print_lockfile_changes(ws.gctx(), prev.as_ref(), &resolve, registry)?;
}
Ok(resolve)
Expand Down
4 changes: 1 addition & 3 deletions tests/testsuite/generate_lockfile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -266,11 +266,9 @@ fn generate_lockfile_holds_lock_and_offline() {
.run();

p.cargo("generate-lockfile --offline")
.with_status(101)
.with_stderr_contains(
"\
[..]thread 'main' panicked[..]
[..]package cache lock is not currently held[..]
[LOCKING] 2 packages
",
)
.run();
Expand Down

0 comments on commit f1c1396

Please sign in to comment.