Watch
0
0
Fork
You've already forked hyperhive
0

cache-miss pass pushes a record the builder did not push

A meta build whose attic push failed (attic or its token not up yet) is
recorded with cached false and the deploy goes ahead. Nothing sent that
build again until internal/meta moved, so the create for that agent
failed on every hive and a rebuild was silently never pending.

The controller's cache-miss pass now also takes a record from the head
with cached false: it sends the same build without asking the cache, with
the pass's existing backoff (30 min doubling to 12 h), and rewrites the
record with cached true once the push lands, under the same
compare-and-set guard as a path change. The push.rs module doc no longer
claims the next build pushes again.

Mixed versions: controller-only, same wire type and builder request. An
old controller leaves an uncached record as before; a builder needs no
change.

Closes #6173
This commit is contained in:
atlas 2026-11-07 04:50:20 +01:00 • committed by mara
commit 64dfe0d205

View file

@ -9,8 +9,8 @@
//! against the system roots.
//!
//! A push that does not happen or does not finish leaves the build green with
//! `cached` false: the closure is still in the host's store, and the next build
//! of the agent pushes again.
//! `cached` false: the closure is still in the host's store. The controller's
//! cache-miss pass sends the same build again, which pushes it.
use std::future::Future;
use std::path::{Path, PathBuf};