Document the repodata fingerprint invariant (#178)
ci/woodpecker/tag/docker Pipeline was successful

The cache_repodata fingerprint (count, max id) only detects every change while one writer at a time touches a remote's rows; with interleaved writers a late-committing lower id plus a delete can leave it unchanged. In the deployed server, github_rpm scans run under the per-remote sync lease, which holds only while the lease outlives the scan timeout.

- note the invariant on RPMMetadataFingerprint, scoped to github_rpm remotes
- state it in the Repodata cache section of the github_rpm docs
- add a test asserting syncLeaseDuration > defaultScanTimeout

Reviewed-on: #178
Co-authored-by: unkin-agent <unkin-agent@unkin.net>
Co-committed-by: unkin-agent <unkin-agent@unkin.net>
This commit was merged in pull request #178.
This commit is contained in:
2026-10-25 22:53:04 +11:00
committed by BenVincent
parent e4833b6f96
commit e59d9728b2
3 changed files with 10 additions and 1 deletions
+3 -1
View File
@@ -92,4 +92,6 @@ Repodata is regenerated from the metadata rows on every request by default. Set
`cache_repodata = true` on the remote to keep the generated `repomd.xml` and its
`primary`/`filelists`/`other` files in memory per replica. Each request checks a
cheap row fingerprint (count + newest id) in the database and rebuilds only when
it moved, so every replica picks up a scan's changes on its next request.
it moved, so every replica picks up a scan's changes on its next request. The
fingerprint relies on only one scan writing a remote's rows at a time; in the
deployed server, the sync lease serialises scans across replicas.