Closed alsuren closed 2 months ago
Wow this really looks great!
Looking at the message:
error: there is nothing to install in watchexec v4.1.0, because it has no binaries
I think we could filter out crates without any binary provided.
We could filter it out efficiently using crates-io db dump, given that a crate with binary is likely going to keep providing a binary, and if a crate just adds a binary to it, then it might have to wait for 1d.
https://crates.io/api/v1/crates/ripgrep/14.1.0 has a bin_names
field for all binaries, unfortunately it's not available in sparse index.
The next best thing we can do, is to download the crate file and check if it has a binary.
Because if users requests a non-binary crate to be built, we would waste time building all of the dependencies and the crate, until cargo-install
finds that no binary is available.
That'd be a waste of time, it's bad because we have limited free runner time on GitHub.
We could filter it out efficiently using crates-io db dump, given that a crate with binary is likely going to keep providing a binary, and if a crate just adds a binary to it, then it might have to wait for 1d.
It turns out we're only building these crates because they're in popular-crates.txt (
$ git grep gptma HEAD~50 -- .
HEAD~50:popular-crates.txt:162:gptman
)
None of them are present in our influxdb logs.
If your get_popular_crates() thing filters out crates with no binaries then we should be safe, and this should stop happening on its own.
That'd be a waste of time, it's bad because we have limited free runner time on GitHub.
have we ever actually hit this limit? I will have another go at grouping things, but I suspect this case is still only a fraction of the openssl-sys errors.
If your get_popular_crates() thing filters out crates with no binaries then we should be safe, and this should stop happening on its own.
Yeah get_crates_io_popular_crates
only keeps crates with binaries, otherwise serde, syn, proc-macro2 would be the top crates to be built.
have we ever actually hit this limit? I will have another go at grouping things, but I suspect this case is still only a fraction of the openssl-sys errors.
IIRC it happens once before, not very common but occasionally does happen
Since we're in a polars mood at the moment, I thought I would try using it to analyse our logs.
It's pretty aggressively cached (to keep the runtime around 0.3s when developing), so you currently have to manually
rm -rf /tmp/get_runs
if you want a fresh set of runs.I recommend something like
cronjob_scripts/find-common-failures.py > /tmp/fail.md && code /tmp/fail
, then use vscode's preview mode to view the result.Example output
| message | count | example_job | example_url | | --- | --- | --- | --- | | error: failed to run custom build command for `openssl-sys