Skip to content

fix(fleet): retry repin verify read-back to absorb contents-API lag - #358

Merged
joshua-temple merged 1 commit into
mainfrom
fix/repin-verify-read-after-write-race
Jun 25, 2026
Merged

joshua-temple merged 1 commit into
mainfrom
fix/repin-verify-read-after-write-race

Conversation

@joshua-temple

Copy link
Copy Markdown
Collaborator

Problem

The fleet repin pushes the rc cli_version to each example repo, then reads main back to confirm it landed. The GitHub contents API serves stale cached bytes for a few seconds after a push, so a single lagged read reds the entire fleet on a random repo each run even though every push succeeded. Observed twice in a row on different repos (rc.2 run: 3env/single-env/no-env; rc.4 run: 2env/callbacks), with all repos confirmed at the target version immediately after.

Fix

Retry the verify read with linear backoff, reusing MAX_ATTEMPTS (the same resilience the push loop already has). Succeed as soon as the read settles to the expected version; only error after all attempts.

Verification

actionlint clean. The next rc fleet run exercises the repin path end to end; all ten repos are already at the target rc, so the verify now passes instead of flaking.

The repin pushes the rc cli_version to each example repo then reads main back to confirm it landed. The GitHub contents API can serve stale cached bytes for a few seconds after a push, so a single lagged read reds the whole fleet on a random repo each run even though every push succeeded. Retry the verify read with linear backoff (reusing MAX_ATTEMPTS, the same resilience the push loop already has) and only error after all attempts.

Signed-off-by: Joshua Temple <joshua.temple@stablekernel.com>
@joshua-temple
joshua-temple merged commit 3cb4cfe into main Jun 25, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant