Issue 094 diagnosed and resolved; 096, 097 and 098 opened from what it uncovered #84
@@ -1,8 +1,8 @@
|
||||
---
|
||||
status: located
|
||||
status: resolved
|
||||
opened: 2026-09-23
|
||||
located-in: [mesh-controller internal/catalogue/filtering.go, mesh-controller cmd/mesh-controller/plan.go]
|
||||
fixed-by:
|
||||
fixed-by: mesh-controller — a node may move a port a module publishes as a mapping's machine side
|
||||
amended-design:
|
||||
---
|
||||
|
||||
|
||||
@@ -53,3 +53,28 @@ still **stored** without a manifest in view, so a key that names nothing a modul
|
||||
accepted where it is set and refused at composition — where it stops the node being told anything
|
||||
at all, rather than stopping that module. The fix removes one reason a key could be wrong; it does
|
||||
not remove the shape of the failure. Carried to [issue 096](../096-a-setting-that-cannot-work-is-stored-and-stops-the-node/00-report.md).
|
||||
|
||||
## Resolved — 2026-09-23
|
||||
|
||||
A given port names either end of a mapping and is answered **once**, under the end the module
|
||||
names in its own `listens` — the number the plan, the filter, the openings, the guard and the
|
||||
consumer all ask for. A number that names two of a module's mappings is refused, whether the
|
||||
setting used it or the answer would be filed under it.
|
||||
|
||||
The first pass filed the answer under both ends. Review found that this is wrong wherever two
|
||||
mappings share a number: the second key lands where another mapping's reader looks, the later
|
||||
write wins, and a module publishing `8080:80` beside `9090:8080` had an explicit setting silently
|
||||
replaced — the container moving to one number while the filter, the opening and the consumer kept
|
||||
another. Reintroducing the fault, inside the fix for it. Two mappings onto one machine port came
|
||||
with it, where before the setting had been safely refused. Neither was reachable against the
|
||||
catalogue as it stands; both were silent, which is worse than reachable.
|
||||
|
||||
**Verified on the machine**, not only in tests: the forge was given `{"2222": 222}`, its container
|
||||
now publishes `222:22`, the opening derived for it is `tcp-222-forwarded` to 22 from anywhere —
|
||||
the node's `expose` for that port carried across the move — and nothing is opened at the number it
|
||||
left. Git over ssh answers from outside again, on the port the forge's own configuration has
|
||||
advertised in every clone URL all along.
|
||||
|
||||
Checked from the other side as well, and it matters: `SSH_PORT` in the forge's configuration says
|
||||
222. While the port could not be moved, the mesh published 2222 and the forge told everyone 222.
|
||||
A service can be wrong about itself without anything failing.
|
||||
|
||||
Reference in New Issue
Block a user