Skip to content

v0.3.1-beta

Choose a tag to compare

@nishujangra nishujangra released this 27 Jun 07:07
· 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 reloadPOST /admin/runtime/reload atomically 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 Conflict with 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