fix(abi): inspect flat objects of packages CRAN has removed #212
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/backfill-inspect-archived-packages"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
The backfill decided which flat objects were worth inspecting by looking the package up in CRAN's current index:
CRAN lists only what it currently ships. A package CRAN has archived is absent from that index, so it is never recognised as compiled and never inspected, and no verdict is ever recorded for it.
union_index_records()meanwhile reads the slot's ownNeedsCompilation, findsyes, and drops the record because the source classifier flags the package and no safe verdict exists to clear it. The repair cannot rescue it either: it works from recorded verdicts, and there is no row.The result is unrecoverable, and identical in shape to #132 but from a different cause: dropped from every per-minor index, on every re-index, forever.
Evidence
mixedMemandvcpensurvived a backfill, two re-indexes and a repair while missing from all three rhel8 per-minor indexes on both architectures:Neither appears anywhere in either repair log, because neither was ever in the unsafe set. Their per-minor objects are 404 at every minor. And in CRAN's index:
Both removed from CRAN. Their flat records in our own index say
NeedsCompilation: yes.What changed
NeedsCompilationnow comes from the slot's own flat index, which describes exactly the objects being inspected rather than a different repository's opinion of them.<package>_<version>, not the package name: a slot can carry several versions and only some of them compile.Effect
Re-running the backfill on a slot will now inspect these objects and record verdicts, after which the index writer keeps the safe ones and the repair can act on the unsafe ones. Already-recorded objects are still skipped, so re-running stays cheap.