-
fix: prune RPM metadata when a local file is evicted (#100)
ci/woodpecker/tag/docker Pipeline was successfulreleased this
2026-07-03 14:54:28 +10:00 | 22 commits to master since this releaseFollow-up to #99.
Why
Evicting or deleting a local RPM removed the `local_files` row but left its `rpm_metadata` behind. Since generated repodata is built from `rpm_metadata`, `primary.xml` kept advertising a package that no longer exists, producing 404s for clients that tried to fetch it.
Changes
- Add `PostDeleteHook` and `MetadataDeleter` provider interfaces (symmetric to the existing `PostUploadHook`/`MetadataStore`), plus a `DeleteRPMMetadata` DB method.
- Implement `AfterDelete` in the RPM provider to drop the metadata row for the deleted file.
- Route both local delete paths — the new `evictLocal` and the existing files handler's `remove` — through a shared `deleteLocalFile` helper that removes the file then runs the provider's post-delete hook. Non-RPM providers have no hook, so nothing changes for them.
- Cover the cleanup with a dockerised test.
Reviewed-on: #100
Co-authored-by: Ben Vincent ben@unkin.net
Co-committed-by: Ben Vincent ben@unkin.netDownloads