v0.16.1
This patch release focuses on production stability, client resilience, and the foundation for shard splitting. It improves leadership-loss handling, follower recovery, Kubernetes health checks, and retry behavior for streaming client operations.
Compatibility
- No breaking compatibility changes are expected.
- Shard splitting APIs are introduced as groundwork for the split workflow.
Requirements
- No data migration is required.
- Source builds now use Go 1.26.
Public API Changes
- Added admin
SplitShardRPC andoxia admin split-shardcommand. - Added split lifecycle model with
SplitPhasevalues: Init, Bootstrap, CatchUp, Cutover, Cleanup. - Added dedicated
CodeNodeIsNotMember/ErrNodeIsNotMemberhandling so leaders can recover clean-data followers. - Client
ListandRangeScanoperations now retry with leader hints and exponential backoff.
Metrics Changes
- None.
Operational Changes
- Coordinator leadership loss now returns typed errors and restarts cleanly instead of panicking on metadata version conflicts.
- Follower recovery now resets stale cursors and sends snapshots when a restarted node reports
NOT_MEMBER. - gRPC health servers start before leader election so Kubernetes probes can succeed on non-leader coordinator pods.
- Coordinator
GetInfocalls now run on state transitions instead of every health check. - Fixed data races and test flakes in follower cursor, shard balancing, sync client, and leader balancing paths.
Changes Since v0.16.0
- admin: add shard split RPC, CLI, and split phase model (#911)
- coordinator: handle metadata leadership loss without panic (#935)
- replication: recover followers that restart with clean data (#929)
- client: add retry support for List and RangeScan (#937, #938)
- health: start coordinator health server before leader election (#930)
- coordinator: call GetInfo only on state transitions (#933)
- build: upgrade to Go 1.26 (#926)
Full Changelog: v0.16.0...v0.16.1