Skip to content

CI: parallel jobs race saving setup-uv cache (Unable to reserve cache) #20652

Description

@dpy013

The CI/CD workflow (testAndPublish.yml) logs a warning on runs, on the "Post Install the latest version of uv" step:

Failed to save: Unable to reserve cache with key setup-uv-2-x86_64-pc-windows-msvc-windows-2025-3.13.13-pruned-1e387602e09b4fa38d714219f180dd28433196ef167474bb137a607d3d0351d6, another job may be creating this cache.

Example run: https://github.com/dpy013/nvda/actions/runs/31646907648/job/94283911319#step:11:10

This looks like a cache-save race. A bunch of jobs run in parallel and each one runs astral-sh/setup-uv@v7 with the same uv version, runner image and Python version, so they all end up with the same internal cache key. GitHub's cache service only allows one job to reserve a key at a time, so every job except the first fails to save and prints that warning.

I also noticed the warning only shows up on pull requests — it doesn't happen when building the master branch or alpha.

The run still passes, so it's noise rather than an actual failure — but it clutters the Checks/Annotations view, and it would be good to tidy it up.

Possible ways to fix:

  • Prime the uv cache once in a dedicated job before the parallel jobs start, so the rest just hit the cache.
  • Give each job a distinct setup-uv cache key (e.g. via cache-suffix).
  • Check whether a newer astral-sh/setup-uv handles concurrent saves better.

I'm happy to follow up with a PR once there's agreement on the direction.
testing action
https://github.com/dpy013/nvda/actions/runs/31646907648

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions