v0.16.6
This is a patch release for the 0.16 line. It closes several shutdown races in the data server that could crash the process while a shard leader was closing, fixes notification handling after restarts and failed stream initialization, and makes the coordinator retry loading ConfigMap-backed cluster configuration at startup instead of exiting.
Fixed
Data server shutdown safety
- Follower cursors are drained on close (#1141). Leader controller shutdown could close the Pebble DB while follower-cursor goroutines were still sending a snapshot and holding snapshot/file references. Shutdown now waits for those goroutines to finish first.
- In-flight leader operations are drained before the Pebble DB closes (#1146). Reads, lists, range scans, notification dispatches, and proposals could still hold DB/WAL resources while the leader was closing, triggering Pebble
element has outstanding referencespanics. The leader now drains this work — and unblocks pending commit waiters — before closing the WAL and DB.
Notifications
- The notification dispatcher stops after a failed initial send (#1145). If the initial (dummy) notification could not be sent, the dispatcher previously kept running on a stream that was never properly initialized; it now stops immediately.
- The notification tracker initializes from the last real notification (#1149). Control commands advance the commit offset without writing notification rows, so after a restart a tracker initialized from the commit offset could spin on empty reads at a control-only tail. It now initializes from the highest actual notification key.
Coordinator
- Startup retries loading the cluster config (#1148). A coordinator could exit during startup when the ConfigMap-backed cluster config was not readable yet; it now retries with backoff until the config can be loaded.
Upgrade notes
- No data migration, configuration, public API, or metrics changes.
Full Changelog: v0.16.5...v0.16.6