Watch
0
0
Fork
You've already forked hyperhive
0

hive-c0re: a deploy request for a rev applied/main already contains is a no-op

advance_applied_main refused every rev that does not descend from
applied/main, including an ancestor of it. Ancestors arrive in normal
operation: swarm-controller queues each merge's TriggerDeploy as an
independent node with no resource or edge between them and spawns each
runnable node on its own task, so two merges of one agent can publish in
either order; the meta-update cascade fast-forwards applied/main to the
forge's main on its own; and the webhook handler does not dedup a
redelivered merge event. Since a refusal now logs at ERROR and fires the
`hh-config-rev-refused` alert, each of those would page as a refusal.

An ancestor is now RevAdvance::Superseded, logged at info, nothing queued.
Only a rev that has diverged (neither descendant nor ancestor) is refused.

Refs #4851
This commit is contained in:
atlas 2026-10-09 22:07:14 +02:00 • committed by mara
commit 29d956140e
3 changed files with 31 additions and 6 deletions

View file

@ -328,6 +328,10 @@ async fn apply_rev(agent: &str, rev: &str) -> bool {
tracing::info!(%agent, %rev, "swarm events: deploy requested for the applied rev; nothing queued");
false
}
Ok(crate::actions::RevAdvance::Superseded) => {
tracing::info!(%agent, %rev, "swarm events: deploy requested for a rev applied/main already contains; nothing queued");
false
}
Err(e) => {
tracing::error!(%agent, %rev, error = %format!("{e:#}"), "swarm events: rev not applied; nothing queued");
false