v0.3.1-beta
·
1019 commits
to master
since this release
Spooky 0.3.1-beta — Full Config Hot Reload
Minor release covering all changes since 0.3.0-beta.
Added
- Full config hot reload —
POST /admin/runtime/reloadatomically swaps the runtime bundle without restarting the process or dropping active connections. Routes, backends, upstream pools, and resilience settings all take effect immediately. - Listener group reconciliation on reload — new listener groups defined in the incoming config are started live; removed groups are retired gracefully with a configurable drain timeout.
- Live admin endpoint rebinding — control API and metrics endpoint addresses update in place on reload; no restart required for admin plane address changes.
RuntimeTaskRegistry— generation-aware background task tracking ensures retired tasks from the previous generation drain cleanly before the new generation takes full ownership.
Fixed
- Hot reload now rejects configs that remove a listener or change its bind address, returning
409 Conflictwith a clear error instead of partially applying the change. - Hot reload now rejects changes to startup-owned settings (log level, thread counts, listen protocol/address), returning
409 Conflict— reload refused, restart required. - Control API and cert reload endpoints now target the live runtime bundle after a hot reload, not the original startup bundle.
- Metrics endpoint, bootstrap listener, and control API settings are now refreshed from the live runtime bundle on each generation swap.
Known Limitations
- No dynamic backend discovery (static config only)
- Listener bind address and protocol changes still require a restart
- Pre-GA — extended soak testing recommended before broad production rollout