Have a replacement image before removing a running container (issue 1742) #129

Merged
mesh-tools merged 1 commits from fix/1732-held-moves-asked into main 2026-10-21 19:07:56 +00:00
Member

Milestone "held and failed moves reach the operator; no image the store lacks is sent", one delivery group with mesh-controller on fix/1732-held-moves-asked.

Issue 1742, node-engine half: on novox at 17:13 the node-engine removed the running mailu-automx and then could not pull its replacement image, leaving automx down and every later apply failing. internal/apply/apply.go (applyContainer, case existed) now calls ensureImage (inspect, pull, inspect) before docker rm -f of a running container being replaced; an image it cannot get leaves the old container running and fails that resource alone with "not replacing container X, which keeps running: pulling image ". The per-resource failure contract is unchanged.

Tests: 1742/AC-host-1 TestARunningContainerIsKeptWhenItsReplacementImageCannotBeObtained, AC-host-2 TestAReplacementImageIsPresentBeforeTheRunningContainerIsRemoved (both fail on main on their assertions); the fake machine's pull now leaves the image present, as a real runtime does. Try build-1792603125796743965 passed (an earlier try of the same commit failed once in an untouched bus test: issue 1754). Context: fix-1742-host@shanks.

Reviewed-by: reviewer-1732@shanks at 09c77d57b8

Milestone "held and failed moves reach the operator; no image the store lacks is sent", one delivery group with mesh-controller on `fix/1732-held-moves-asked`. Issue 1742, node-engine half: on novox at 17:13 the node-engine removed the running mailu-automx and then could not pull its replacement image, leaving automx down and every later apply failing. internal/apply/apply.go (applyContainer, case existed) now calls ensureImage (inspect, pull, inspect) before `docker rm -f` of a running container being replaced; an image it cannot get leaves the old container running and fails that resource alone with "not replacing container X, which keeps running: pulling image <image>". The per-resource failure contract is unchanged. Tests: 1742/AC-host-1 TestARunningContainerIsKeptWhenItsReplacementImageCannotBeObtained, AC-host-2 TestAReplacementImageIsPresentBeforeTheRunningContainerIsRemoved (both fail on main on their assertions); the fake machine's pull now leaves the image present, as a real runtime does. Try build-1792603125796743965 passed (an earlier try of the same commit failed once in an untouched bus test: issue 1754). Context: fix-1742-host@shanks. Reviewed-by: reviewer-1732@shanks at 09c77d57b82304ae39771d6c288de712464ac75d
mesh-tools added 1 commit 2026-10-21 18:26:53 +00:00
Have a replacement container's image before removing the running one, so an unobtainable image leaves the service up (issue 1742)
mesh/repo-check head 09c77d57b823 merged into trunk c231d1031fc7 beside mesh-controller#428@d6db3348 — pass: its merge-check.sh passed
mesh/merge-gate head 09c77d57b823 merged into trunk c231d1031fc7 — pass: group fix/1732-held-moves-asked composed: every machine composes with the change a…
mesh/delivery delivered
mesh/delivery-group group fix/1732-held-moves-asked delivered: every member is delivered
09c77d57b8
Author
Member

Delivery novox/mesh-host@09c77d57b823 — delivered since 2026-10-21T19:28:46Z

Delivery plan — builds mesh-host → ace, g14, novox, shanks; no bus step

  • tier 0: mesh-host
  • ace: receives mesh-host
  • g14: receives mesh-host
  • novox: receives mesh-host
  • shanks: receives mesh-host
  • grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine

Group fix/1732-held-moves-asked: novox/mesh-controller@d6db334840, novox/mesh-host@09c77d57b8

  • composed together: pass — every machine composes with the change as it did without (4 of 4 compose)

Machines

  • mesh-host on every machine running it: sent
  • route-proxy on every machine running it: sent
  • mesh-controller on every machine running it: sent
  • build-agent on every machine running it: sent

Transitions

  • 2026-10-21 18:26 (new) → proposed (announced): novox/mesh-host#129's head announced
  • 2026-10-21 18:33 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-21 18:33 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-21 19:19 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-21 19:19 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
  • 2026-10-21 19:28 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-host@09c77d57b823` — **delivered** since 2026-10-21T19:28:46Z **Delivery plan** — builds mesh-host → ace, g14, novox, shanks; no bus step - tier 0: mesh-host - ace: receives mesh-host - g14: receives mesh-host - novox: receives mesh-host - shanks: receives mesh-host - grants step: if this changes what the bus's user list says (a new tool, subject or user), novox is sent that list alone, every build there kept, before mesh-host is judged on its first machine **Group** `fix/1732-held-moves-asked`: novox/mesh-controller@d6db334840a5, novox/mesh-host@09c77d57b823 - composed together: pass — every machine composes with the change as it did without (4 of 4 compose) **Machines** - mesh-host on every machine running it: sent - route-proxy on every machine running it: sent - mesh-controller on every machine running it: sent - build-agent on every machine running it: sent **Transitions** - 2026-10-21 18:26 (new) → proposed (announced): novox/mesh-host#129's head announced - 2026-10-21 18:33 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-21 18:33 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-21 19:19 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-21 19:19 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit - 2026-10-21 19:28 delivering → delivered (done): its walk is done, carrying its own commit: every machine of its deploy plan passed, or was left as its policy says The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
mesh-tools merged commit 4065b45ae8 into main 2026-10-21 19:07:56 +00:00
mesh-tools deleted branch fix/1732-held-moves-asked 2026-10-21 19:07:56 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-host#129