Re-evaluate when a cached eval's drvs are missing from the cache (SPEC §6.1) #17
Loading…
Reference in a new issue
No description provided.
Delete branch "eval-drv-verify"
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?
When a cached eval/expand result is about to be reused, the control plane now checks that the
.drvfiles it emitted are actually in the cache (SPEC §6.1, §7.3). Until now a cached eval whose drvs never reached the cache (for example becauseattic watch-storewas backlogged) was replayed forever, and every dependent failed with "derivation not present locally and not fetchable". Retrying couldn't recover (seen on graphs 573, 575 and 580).missing_drv()probes the narinfo of every emittedNixDrv.drvon the configured substituters, up to 16 at a time. If every substituter answers 404, the hit is stale and the eval runs again.tests/stale_eval.rscovers the 404 re-eval, 200 replay with one probe in total, 503 fail-open, and afailed_onlyrerun that recovers.🤖 Generated with Claude Code
Merged main (#18) and moved
stale_evalintotests/it/. Previous head was fully green (graph 588).@krisbuild r+ p=5
Merged as
5fcfc8d3fb.