You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm using a shared target directory for a CI runner that allows to run builds (fmt, clippy, doc, build, etc) concurrently. Incremental builds are disabled.
Since the sharing target the builds are failing sporadically with usually with compile errors like this:
error[E0463]: can't find crate for eyre
And eyre hasn't been touched for a while. What I found so far is the following case. Two CI jobs was executing simultaneously on the same runner:
cargo nextest run --profile ci --all-targets --all-features <-- building just the first target
cargo test --doc --all-features <-- building doc test for some crate (after running same nextest cmd and built default test target)
The project is a workspace with lots of members. The compile error for the first job is no method named <func> found for .. in the current scope and the commit for the second jobs actually removes this function, which lead me to conclusion this setup does not work correctly. Apparently locks only held only per-target basis thus leading to race condition where dependency has been overwritten.
So far I'm not sure it's a bug really but at least there's #2486 which led me thinking the setup should work.
Version
cargo 1.77.2 (e52e36006 2024-03-26).
The text was updated successfully, but these errors were encountered:
There are two aspects here that are likely going wrong
You are using a third-party test runner which likely doesn't participate in our locking (though it would be delegating to cargo for builds which would be locked)
What all operations are performed under the target directory lock.
How much room for improvement there is, I'm unsure. That would take a bit more investigation.
Problem
I'm using a shared target directory for a CI runner that allows to run builds (fmt, clippy, doc, build, etc) concurrently. Incremental builds are disabled.
Since the sharing target the builds are failing sporadically with usually with compile errors like this:
And
eyre
hasn't been touched for a while. What I found so far is the following case. Two CI jobs was executing simultaneously on the same runner:cargo nextest run --profile ci --all-targets --all-features
<-- building just the first targetcargo test --doc --all-features
<-- building doc test for some crate (after running same nextest cmd and built defaulttest
target)The project is a workspace with lots of members. The compile error for the first job is
no method named <func> found for .. in the current scope
and the commit for the second jobs actually removes this function, which lead me to conclusion this setup does not work correctly. Apparently locks only held only per-target basis thus leading to race condition where dependency has been overwritten.So far I'm not sure it's a bug really but at least there's #2486 which led me thinking the setup should work.
Version
cargo 1.77.2 (e52e36006 2024-03-26)
.The text was updated successfully, but these errors were encountered: