Merge pull request 'Issue 163: a delivered host stood aside on every push and reported nothing' (#214) from issue/163-a-delivered-host-stands-aside-on-every-push into main
This commit was merged in pull request #214.
This commit is contained in:
+56
@@ -0,0 +1,56 @@
|
|||||||
|
---
|
||||||
|
status: resolved
|
||||||
|
opened: 2026-09-30
|
||||||
|
located-in: [mesh-host cmd/mesh-host/main.go (the successor check after an apply)]
|
||||||
|
fixed-by: mesh-host PR 58 — the check asks with the running version, read from the binary's path, not the link-time stamp
|
||||||
|
amended-design:
|
||||||
|
---
|
||||||
|
|
||||||
|
# 163 — A delivered host stood aside on every push, and reported nothing
|
||||||
|
|
||||||
|
## What was observed
|
||||||
|
|
||||||
|
*2026-09-30, rolling the mesh-built host onto the last two machines.*
|
||||||
|
|
||||||
|
Every push to a machine running a delivered host produced, in order:
|
||||||
|
|
||||||
|
```
|
||||||
|
host 093231796eb0 is delivered; standing aside so the launcher runs it
|
||||||
|
applied 333 resource(s)
|
||||||
|
applied, and could not tell the mesh: reporting: context canceled
|
||||||
|
nox-mesh-host-launch: the host exited cleanly; starting it again
|
||||||
|
nox-mesh-host-launch: running /usr/lib/nox-mesh-host/versions/093231796eb0/nox-mesh-host
|
||||||
|
```
|
||||||
|
|
||||||
|
— for the version it was **already running**. It restarted itself on every push, for ever, and the mesh
|
||||||
|
never received a single report from it: `node show` kept the version from before the crossover, and
|
||||||
|
the operator's push waited its full three minutes for an answer that was never coming.
|
||||||
|
|
||||||
|
Read as healthy throughout: unit active, bus link up, "hearing what this node should be".
|
||||||
|
|
||||||
|
## Why
|
||||||
|
|
||||||
|
After an apply the host asks whether a newer host has been delivered than the one running, and the
|
||||||
|
question was asked with the **link-time version stamp**. Since
|
||||||
|
[issue 161](../161-a-delivered-host-carries-none-of-its-link-time-facts/01-resolution.md) a delivered
|
||||||
|
host's version comes from where it sits and its stamp is `development build` — so the comparison never
|
||||||
|
matched the newest delivered version, and "a newer host is waiting" was always true.
|
||||||
|
|
||||||
|
Standing aside cancels the context the report is published with, so the report was lost on every one
|
||||||
|
of those applies. Two faults from one wrong argument.
|
||||||
|
|
||||||
|
The change that moved the version to the path was applied to the report and to the known-good record,
|
||||||
|
and not here. Half a change, and the half left behind was the one that decides whether to exit.
|
||||||
|
|
||||||
|
## Why the three-minute wait made it invisible
|
||||||
|
|
||||||
|
The push's `--wait` timing out read as *slow*. It was not slow: **the report was never going to arrive.**
|
||||||
|
The operator put it exactly: *if you don't get a response in five seconds, something is wrong.* A wait
|
||||||
|
long enough to absorb a machine's whole apply is a wait long enough to hide that the machine never
|
||||||
|
answered.
|
||||||
|
|
||||||
|
## How it is checked
|
||||||
|
|
||||||
|
A machine running a delivered host is pushed a declaration that delivers nothing new; it applies,
|
||||||
|
reports, and does not stand aside. A machine running a delivered host is pushed a genuinely newer
|
||||||
|
version; it stands aside once, and the next push it does not.
|
||||||
Reference in New Issue
Block a user