fix(#1160): restart agent on failed rebuild if it was running
This commit is contained in:
parent
452766b35f
commit
a9ce8a945f
1 changed files with 20 additions and 1 deletions
|
|
@ -467,7 +467,26 @@ pub async fn rebuild_no_meta(
|
||||||
priv_run("stop", name).await?;
|
priv_run("stop", name).await?;
|
||||||
}
|
}
|
||||||
on_step("nixos-container update");
|
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 {
|
if was_running {
|
||||||
// Cold-start fallback on activation errors.
|
// Cold-start fallback on activation errors.
|
||||||
// See `docs/coordinator.md::Cold-start fallback`.
|
// See `docs/coordinator.md::Cold-start fallback`.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue