Skip to content

fix(deps): restore uv.lock so hydra images are reproducible - #15703

Merged
fruch merged 1 commit into
scylladb:branch-perf-v17from
fruch:restore-uv-lock-perf-v17
Aug 6, 2026
Merged

fix(deps): restore uv.lock so hydra images are reproducible#15703
fruch merged 1 commit into
scylladb:branch-perf-v17from
fruch:restore-uv-lock-perf-v17

Conversation

@fruch

@fruch fruch commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Split out of #15694, which no longer depends on it.

Problem

uv.lock was removed from this branch by a2ce6998c9 "feat(argus): add always-on replay log and replay-only client", alongside that commit's other changes.

Nothing broke loudly, because docker/env/build_n_push.sh regenerates it:

    echo "Hydra image with version $VERSION not found locally. Building..."
    uv lock                                                    # <-- line 26
    docker build --network=host -t scylladb/hydra:${VERSION} .

so the lock that the root Dockerfile consumes —

ADD uv.lock  .
ADD pyproject.toml .
RUN pip install uv
RUN uv sync --frozen

— exists by the time ADD runs.

That is precisely the problem. With no committed lock, --frozen is frozen against a file resolved seconds earlier, which makes it a no-op: two builds of the same commit can resolve different transitive versions. On a branch whose entire purpose is performance measurement, the toolchain underneath the numbers should not drift silently from one hydra image to the next. master commits its uv.lock for the same reason, and this branch did too until July.

What changed

uv.lock restored from a2ce6998c9^ and re-resolved against the current pyproject.toml. The only content changes are five pins that moved in the meantime — pyzmq 26.2.0→27.1.0, questionary 2.1.0→2.1.1, requests 2.32.4→2.33.0, rich 14.3.2→14.2.0, scylla-driver 3.29.5→3.29.9 — and each is already declared in pyproject.toml at exactly that version (lines 62-66), so the lock is not choosing anything new, it is catching up to what the manifest already says.

Verification

  • uv lock --check — clean, 244 packages.
  • uv sync --frozen — completes, i.e. the exact step the Dockerfile runs.
  • Byte-identical to what CI resolves. fix(integration-tests): run the integration suite in parallel #15694 was pushed with this lockfile committed and its New Hydra Version build ran green; the resulting bot commit d57bc6ae53 "chore(hydra): create image 1.108-PR15694-82b64e2" touched only docker/env/version — the runner's own uv lock found nothing to change. The published image scylladb/hydra:v1.108-PR15694-82b64e2 was then confirmed to carry the expected interpreter and packages.

No behaviour change on its own; build_n_push.sh keeps working either way, and from here on it has a committed lock to reproduce rather than a fresh resolution to invent.

a2ce699 ("feat(argus): add always-on replay log and replay-only
client") removed uv.lock along with its other changes. Nothing broke
loudly, because docker/env/build_n_push.sh runs `uv lock` immediately
before `docker build`, so the lock the Dockerfile consumes via
`ADD uv.lock .` + `uv sync --frozen` is regenerated on every build.

That is precisely the problem: with no committed lock, `--frozen` is
frozen against a file resolved seconds earlier, so two builds of the same
commit can resolve different transitive versions. On a branch whose whole
purpose is performance measurement, the toolchain underneath the numbers
should not drift silently between images.

Restored from a2ce699^ and re-resolved against the current
pyproject.toml. The only content changes are five pins that moved in the
meantime — pyzmq, questionary, requests, rich and scylla-driver — each
already declared in pyproject.toml, so the lock now simply agrees with it.

Verified with `uv lock --check` and a real `uv sync --frozen`. Confirmed
byte-identical to what the CI runner's own `uv lock` produces: the
build_image run on scylladb#15694 (which had this lock committed) committed only
docker/env/version, leaving the lock untouched.
@pehala

pehala commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

uv.lock was removed from this branch by a2ce6998c9 "feat(argus): add always-on replay log and replay-only client", alongside that commit's other changes.

I would restore it on all branches, if it was deleted in this commit, it seems accidental and that PR/commit for sure shouldnt have touched this

@fruch
fruch merged commit 0307d26 into scylladb:branch-perf-v17 Aug 6, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants