fix(#1160): restart agent on failed rebuild if it was running

This commit is contained in:
damocles 2026-06-03 18:23:18 +02:00 committed by mara
commit a9ce8a945f

View file

@ -467,7 +467,26 @@ pub async fn rebuild_no_meta(
priv_run("stop", name).await?;
}
on_step("nixos-container update");
priv_run("update", name).await?;
let update_result = priv_run("update", name).await;
if let Err(ref update_err) = update_result {
// The update failed (e.g. nix build error). If the agent was
// running before we stopped it, try to bring it back up on the
// previous successful configuration so it doesn't stay dead.
// The start failure is logged but not promoted to an error —
// we always propagate the original update error (below).
if was_running {
tracing::warn!(
%name,
error = %update_err,
"nixos-container update failed; attempting restart on old config"
);
on_step("nixos-container start (recovery)");
if let Err(e) = priv_run("start", name).await {
tracing::warn!(%name, error = %e, "recovery start after failed update also failed");
}
}
}
update_result?;
if was_running {
// Cold-start fallback on activation errors.
// See `docs/coordinator.md::Cold-start fallback`.