A stopped tool drops its membership handler and a stopped bundle starts no copy on a call, so a replaced bundle's old tools stay gone (issue 1945, review round 2)
mesh/delivery merged: source.main moved to novox/mesh-tools@5d6cee9d844e
mesh/check pass 2cd5550dc70f on 77b05089c8df | unit 0 run 126 kept | int 0 run 128 kept | clone 9.5s | composition passed on 4 machines

Its events are refused before the old bundle stops, the bundle watch follows a directory made between
its stat and its watch, and a bundle's reason is read without node's colour codes.
This commit is contained in:
2026-10-25 15:44:10 +01:00
parent d8ac69904d
commit 2cd5550dc7
5 changed files with 78 additions and 16 deletions
+2 -1
View File
@@ -480,8 +480,9 @@ func (r *runner) reload(module, what string) {
old := r.of[module]
r.of[module] = &loadedModule{served: old.served, seen: old.seen}
r.mu.Unlock()
old.unload()
// Its events are refused first, so one heard while the old bundle stops is refused at once.
r.events.dropModule(module)
old.unload()
r.logf("[mesh-tools] %s's bundle %s; loading it again", module, what)
fresh := r.load(old.served)