issue 130: undeclaring a service stops it, even one the mesh only reloads or keeps running #142

Merged
jschoubben merged 5 commits from issue/130-undeclaring-a-service-stops-it into main 2026-09-26 22:58:43 +00:00
2 changed files with 3 additions and 3 deletions
Showing only changes of commit 248c99ca6c - Show all commits
@@ -40,7 +40,7 @@ undeclare can do. Found reviewing the uplink modules
- the uplink modules would have stopped the network manager, taking the machine off the only
link the mesh reaches it by.
ADR 0117 (in review) answered that for its own modules with a
[ADR 0117](0117-a-machines-uplink-is-a-seat.md) answered that for its own modules with a
service declared with no `state`. Every other module that declares a unit it did not make is
exposed in the same way, and relying on each author to remember an opt-out is how the next one
is missed.
@@ -113,7 +113,7 @@ records the state it first found the unit in, and undeclaring returns the unit t
## References
- [issue 130](../04-ISSUES/130-undeclaring-a-service-stops-it/00-report.md): the finding
- ADR 0117 (in review): the uplink modules, and a service with no state
- [ADR 0117](0117-a-machines-uplink-is-a-seat.md): the uplink modules, and a service with no state
- [ADR 0102](0102-the-mesh-writes-into-a-shared-file-never-over-it.md), [ADR 0100](0100-a-node-in-use-is-adopted-before-it-is-converged.md):
what is given back, and how
- mesh-host `internal/apply/apply.go` (`remove`, the service case)
@@ -9,7 +9,7 @@ amended-design: 02-DECISIONS/0118-undeclaring-gives-a-unit-back-the-state-it-was
## What was observed
Reviewing the uplink modules (ADR 0117, in review)
Reviewing the uplink modules ([ADR 0117](../../02-DECISIONS/0117-a-machines-uplink-is-a-seat.md))
found that the host's `remove` path stops every `service` resource that is no longer declared:
`SetServiceState(..., "stopped")`, reported as "stopped; the unit file is not the host's to
delete". `store.Orphans` matches by id alone. So any of these stops the unit: