• v3.7.2 0ec28660ba

    fix: prune RPM metadata when a local file is evicted (#100)
    ci/woodpecker/tag/docker Pipeline was successful

    unkinben released this 2026-07-03 14:54:28 +10:00 | 22 commits to master since this release

    Follow-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.net

    Downloads