# Changelog

All notable changes to this project are documented in this file.

## [2.8.0] - 2026-07-14

### Added

- Added follower reads with configurable staleness bounds, reducing leader load for read-heavy workloads.
- Added online range splitting for hot partitions based on sustained request rate and data size.
- Added Prometheus metrics for Raft proposal latency, snapshot transfer progress, and per-range queue depth.
- Added support for rotating TLS certificates without restarting nodes.

### Fixed

- Fixed a race that could briefly expose stale values after a leadership transfer.
- Fixed snapshot recovery failing when the destination node had an incomplete snapshot from an earlier attempt.
- Fixed excessive memory retention in long-running watch streams after client disconnection.
- Fixed incorrect disk-usage reporting when tombstoned SSTables were awaiting compaction.

### Changed

- Changed the default compaction concurrency from two workers to one worker per four available CPU cores.
- Improved rebalance planning to avoid moving replicas across multiple failure domains simultaneously.
- Increased the default maximum Raft entry size from 4 MiB to 8 MiB.
- Deprecated the legacy `/v1/cluster/members` endpoint in favor of `/v2/admin/members`.

## [2.7.3] - 2026-06-18

### Added

- Added request identifiers to structured logs and slow-query diagnostics.
- Added an administrative command to verify replica checksums without taking ranges offline.

### Fixed

- Fixed lease renewal stalls caused by clock adjustments on virtualized hosts.
- Fixed a deadlock between flush and compaction workers under sustained write pressure.
- Fixed range scans occasionally returning a duplicate key when resuming at a page boundary.
- Fixed node startup failing when the most recent WAL segment ended with a partially written record.
- Fixed incorrect retry hints returned to clients during rolling upgrades.

### Changed

- Reduced log verbosity for expected Raft election timeouts on isolated followers.
- Improved backpressure so overloaded nodes reject requests before exhausting their connection pools.
- Updated the bundled RocksDB library to include upstream corruption-detection fixes.

## [2.7.2] - 2026-05-29

### Added

- Added configurable per-tenant limits for concurrent transactions and watch streams.
- Added latency histograms for quorum reads and conditional writes.
- Added a dry-run mode to the replica-repair command.

### Fixed

- Fixed expired keys remaining visible to range scans until the next compaction.
- Fixed transactions incorrectly retrying after a non-retryable authorization failure.
- Fixed a replica-placement issue that could concentrate replicas on newly joined nodes.
- Fixed watch events being delivered out of order after reconnecting through a different gateway.
- Fixed an IPv6 parsing error in peer discovery when zone identifiers were present.

### Changed

- Changed snapshot compression to Zstandard by default; existing gzip snapshots remain readable.
- Improved startup recovery by replaying independent WAL partitions concurrently.
- Tightened validation for cluster join tokens and peer-advertised addresses.
- Changed health checks to report degraded status when quorum is available but one or more ranges are under-replicated.