ScuttleBot

perf: async topology provisioning — don't block API startup Topology provisioning (ChanServ REGISTER + AMODE for all channels and bots) was blocking the API server from starting. With 6 channels × 12 bots, this took ~90s during which the API returned 502 and relays/watchdog saw the server as down. Now provisioning runs in a goroutine so the API starts immediately.

lmata 2026-04-05 22:37 trunk
Commit 1250865af71c95f182733b93e4807eebc83e3f3eb1b82c67f1a59d526ef20afe
1 file changed +5 -3
--- cmd/scuttlebot/main.go
+++ cmd/scuttlebot/main.go
@@ -220,13 +220,15 @@
220220
Voice: sc.Voice,
221221
Autojoin: sc.Autojoin,
222222
Modes: sc.Modes,
223223
})
224224
}
225
- if err := topoMgr.Provision(staticChannels); err != nil {
226
- log.Error("topology provision failed", "err", err)
227
- }
225
+ go func() {
226
+ if err := topoMgr.Provision(staticChannels); err != nil {
227
+ log.Error("topology provision failed", "err", err)
228
+ }
229
+ }()
228230
topoMgr.StartReaper(ctx)
229231
go func() {
230232
<-ctx.Done()
231233
topoMgr.Close()
232234
}()
233235
--- cmd/scuttlebot/main.go
+++ cmd/scuttlebot/main.go
@@ -220,13 +220,15 @@
220 Voice: sc.Voice,
221 Autojoin: sc.Autojoin,
222 Modes: sc.Modes,
223 })
224 }
225 if err := topoMgr.Provision(staticChannels); err != nil {
226 log.Error("topology provision failed", "err", err)
227 }
 
 
228 topoMgr.StartReaper(ctx)
229 go func() {
230 <-ctx.Done()
231 topoMgr.Close()
232 }()
233
--- cmd/scuttlebot/main.go
+++ cmd/scuttlebot/main.go
@@ -220,13 +220,15 @@
220 Voice: sc.Voice,
221 Autojoin: sc.Autojoin,
222 Modes: sc.Modes,
223 })
224 }
225 go func() {
226 if err := topoMgr.Provision(staticChannels); err != nil {
227 log.Error("topology provision failed", "err", err)
228 }
229 }()
230 topoMgr.StartReaper(ctx)
231 go func() {
232 <-ctx.Done()
233 topoMgr.Close()
234 }()
235

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button