feat(cdn): enable per-R-minor routing in production #184

Merged
pat-s merged 1 commit from feat/enable-union-slots into main 2026-08-31 12:52:30 +00:00
Showing only changes of commit fa408071e1 - Show all commits

feat(cdn): enable per-R-minor routing in production

Everything built today is unreachable until this is set. An R 4.6.1
client on amd64/resolute resolves against the generic index, downloads
the 4.5-built rlang (2079570 bytes) and dies at load with 'undefined
symbol: SETLENGTH', while the correct 4.6 build (2075106 bytes) sits
unused one directory away.

Verified on the staging zone first, which runs the same script against
the same origin: 16/16 slots report zero regressions against the generic
slot, an excluded R minor is sent to CRAN for sources, a client that
reports no R minor still gets the generic index, and tarball requests are
never rewritten.

Coverage on a non-primary minor drops where the per-minor build backlog
has not been worked off - resolute serves a 4.6 client 22169 packages
rather than the generic slot's 24310. Those are ABI-risky packages built
under another minor: the ones this removes are the ones that would have
failed at load.
Patrick Schratz 2026-08-31 12:51:41 +00:00
No known key found for this signature in database
GPG key ID: 62050D5BC68AB6DC

16
cdn.tf
View file

@ -89,9 +89,19 @@ resource "bunnynet_compute_script" "rpkgs_router" {
# slot that is not listed here would hide every package the per-minor index does
# not carry, so this stays empty until a slot has been backfilled.
resource "bunnynet_compute_script_variable" "rpkgs_router_union_slots" {
script = bunnynet_compute_script.rpkgs_router.id
name = "UNION_SLOTS"
default_value = ""
script = bunnynet_compute_script.rpkgs_router.id
name = "UNION_SLOTS"
# Enabled. Until this was set, every client resolved against the generic
# index and never reached a per-minor binary: an R 4.6.1 client on resolute
# downloaded the 4.5-built rlang (2079570 bytes) while the correct 4.6 build
# (2075106 bytes) sat unused one directory away, and died at load with
# `undefined symbol: SETLENGTH`.
#
# Verified before enabling, against the staging zone with the same script and
# the same origin: all 16 slots report zero regressions against the generic
# slot, an excluded R minor is sent to CRAN, a client without an R minor
# still gets the generic index, and tarball requests are never rewritten.
default_value = join(",", local.rpkgs_slots)
required = false
}