Releases: feichai0017/NoKV
Releases · feichai0017/NoKV
v0.7.1
Highlights
- Added practical LSM range-filter pruning for point reads and bounded scans, including exact-candidate point fast paths, table-internal block-range pruning, and read-path cleanup.
- Tightened value separation and value-log defaults: CF/keyspace-aware routing landed, ordinary multi-bucket vlog routing remains enabled,
ValueThresholdmoved to2048, and HotRing is now narrowed to an optional write-hot detector/throttling tool instead of a default data-path strategy. - Continued correctness and boundary cleanup across startup recovery, WAL/LSM integration, iterator semantics, range tombstones, region metadata APIs, and stale internal wrappers.
What's Changed
- feat: add range filter pruning for LSM reads by @feichai0017 in #127
- feat: add value-separation policy by CF/keyspace by @ByteByteUp in #126
- perf(wal): decouple WAL fsync from commit pipeline via sync worker by @zzzzwc in #123
- feat/external-sst-import by @ByteByteUp in #122
- fix: stop iteration on value-log read errors instead of silently skipping by @sreekar2307 in #124
- fix: replace log.Fatal with error return in compact.State.Delete() by @sreekar2307 in #120
- fix: prevent short-circuit in decrRefs to ensure complete cleanup by @sreekar2307 in #119
- fix: enforce user iterator semantics by @nothiny in #118
- fix: replace mapfile with POSIX-compatible read loop for macOS by @Anekoique in #117
- fix: reorder munmap/truncate in Truncature to prevent mapping corruption by @LinnkidChen in #111
- fix: prevent RWMutex reentrant deadlock in lsm compaction by @zzzzwc in #110
- perf: optimize sequential inserts in skiplist with O(1) append by @zzzzwc in #108
- proto: add read consistency fields to kv context and raft header by @wchwawa in #107
- feat: add atomic batch write path for WAL-backed writes by @feichai0017 in #103
- Add DeleteRange Support with Range Tombstones by @nothiny in #99
- deps(deps): bump github.com/panjf2000/ants/v2 from 2.11.6 to 2.12.0 by @dependabot[bot] in #128
- deps(deps): bump github.com/panjf2000/ants/v2 from 2.11.5 to 2.11.6 by @dependabot[bot] in #125
Additional Changes
- fix: enforce strict startup recovery and return open errors in 2d8820e
- refactor: simplify lsm compaction and diagnostics in 4a3e571
- refactor: tighten kv entry ownership and key semantics in cc77b33
- refactor: narrow hotring usage and raise vlog threshold in b6e3450
- refactor: remove stale wrappers and hot tracker shim in e4e8574
- docs: align benchmark and engine documentation in 6cae04c
New Contributors
- @sreekar2307 made their first contribution in #119
- @Anekoique made their first contribution in #117
- @LinnkidChen made their first contribution in #111
- @wchwawa made their first contribution in #107
Full Changelog: v0.7.0...v0.7.1
v0.7.0
Highlights
- Added PD-based control plane integration for distributed mode (routing, metadata persistence, allocator bootstrap).
- Removed standalone/local transaction APIs from the embedded path; transaction semantics are now aligned with distributed Percolator flow.
- Continued iterator and LSM correctness improvements.
What's Changed
- fix [Bug/Feature] Iterator Does Not Support Reverse Iteration by @nothiny in #75
- fix: preserve L0 fid ordering in replaceTables by @ByteByteUp in #95
- feat(pd): integrate PD-lite control plane with persistence and config-driven bootstrap by @feichai0017 in #100
- feat: add iterator bounds to IteratorOptions by @CyberSleeper in #101
- refactor: remove standalone txn APIs and align docs by @feichai0017 in #102
Additional Changes
- fix: release pooled redis entries and clarify SetEntry version semantics by @feichai0017 in 2eae696
- refactor: remove SetEntry API and add SetWithTTL by @feichai0017 in 31053fd
New Contributors
- @nothiny made their first contribution in #75
- @CyberSleeper made their first contribution in #101
Full Changelog: v0.6.1...v0.7.0
v0.6.1
What's Changed
- docker: bump golang from 1.25 to 1.26 by @dependabot[bot] in #68
- deps(deps): bump google.golang.org/grpc from 1.78.0 to 1.79.1 by @dependabot[bot] in #69
- feat: add batch insert support for badger and pure insert workload by @ByteByteUp in #70
- fix: add refcount lifecycle validation with panic on invalid state by @ByteByteUp in #72
- fix: add underflow guard to request.DecrRef by @hacker4257 in #74
- fix: resolve locks during read operations by @zzzzwc in #77
- fix: add underflow check in DecrRef method and corresponding test by @zqr10159 in #67
- fix: add refcount underflow guards to ART.DecrRef and table.DecrRef by @vasilytrofimchuk in #78
- fix: enforce strong durability semantics in LogFile.DoneWriting by @ByteByteUp in #82
New Contributors
- @hacker4257 made their first contribution in #74
- @vasilytrofimchuk made their first contribution in #78
Full Changelog: v0.6.0...v0.6.1
v0.6.0
What's Changed
- deps(deps): bump golang.org/x/sys from 0.40.0 to 0.41.0 by @dependabot[bot] in #34
- deps(deps): bump github.com/pelletier/go-toml/v2 from 2.2.3 to 2.2.4 by @dependabot[bot] in #35
- deps(deps): bump github.com/dgraph-io/badger/v4 from 4.9.0 to 4.9.1 by @dependabot[bot] in #37
- deps(deps): bump github.com/panjf2000/ants/v2 from 2.11.4 to 2.11.5 by @dependabot[bot] in #36
- refactor: unify metrics collection and stats export by @feichai0017 in #38
- refactor: split raftstore store services and reduce duplication by @feichai0017 in #50
- feat: support min_commit_ts validation for percolator commit by @zzzzwc in #51
- fix: commit secondary when primary already committed by @zzzzwc in #53
- fix: unify Entry lifecycle ownership across DB/Txn read paths by @feichai0017 in #56
- fix(txn): decrement active txn counter for empty commits by @zqr10159 in #64
- fix: attempt to close all resources in DB.Close() even on error by @ByteByteUp in #65
- refactor: unify storage IO on vfs and add file-level fault injection by @feichai0017 in #66
New Contributors
- @zzzzwc made their first contribution in #51
- @zqr10159 made their first contribution in #64
- @ByteByteUp made their first contribution in #65
Full Changelog: v0.5.0...v0.6.0
Release v0.5.0
v0.5.0
Highlights
- Bucketed ValueLog (hashkv) with hot/cold routing for better large-value isolation and GC control
- HotRing externalized and split into read/write tracking; new write-hot metrics exposed
- TOML-based engine config loader for embedded deployments
Storage / ValueLog
- Bucketed ValueLog with hot/cold buckets
- Parallel VLog GC with compaction/backlog pressure control
- Fixes for GC skip thresholds and candidate filtering
HotRing & Observability
- Read/write HotRing split to avoid read hotness impacting write throttling
- Added HotWriteKeys / HotWriteRing metrics
- HotRing defaults and config normalization tuned
Config & UX
- New TOML loader:
LoadOptionsFile/ApplyOptionsFile - Example config:
nokv.options.toml
Fixes
- Hardened raftstore reads and MVCC scans
- Iterator ordering and write-throttle alignment fixes
Docs
- Expanded HotRing/VLog/Compaction docs
- DBDB badge
Release v0.4.2
This release provides critical security fixes, cache stability improvements, and enhanced CI/CD integration. It addresses issues identified by CodeQL and optimizes the W-TinyLFU cache implementation for long-term stability.
🚀 Key Highlights
🛡️ Security Fixes
- LSM/FID Boundary Check: Fixed a high-severity integer overflow vulnerability in SSTable file ID parsing (utils.FID). This prevents potential memory corruption or logical errors when processing large file IDs. (Addressed CodeQL scan alert).
⚡ Cache Optimization (W-TinyLFU)
- Automatic Freshness (Reset Mechanism): Fixed a bug where the threshold for Frequency Sketch and Bloom Filter resets was uninitialized. Resets now trigger every 10 * size operations, preventing historical data from polluting the frequency estimates.
- Improved Entry Validation: Added explicit bounds checks in the Set path for the internal cache. Key hashes exceeding uint32 are now handled safely without silent truncation, ensuring consistency with the Get logic.
🛠 Infrastructure & CI/CD
- AI-Powered Code Review: Integrated CodeRabbit for automated PR reviews, configured specifically for the Go toolchain (go-vet, golangci-lint).
- Dependency Updates: Bumped github.com/panjf2000/ants/v2 to v2.11.4 for improved concurrency pooling stability.
📈 What's Changed
- fix(cache): initialize reset threshold for TinyLFU by @feichai0017
- fix(security): prevent integer overflow in FID parsing by @feichai0017
- chore: add .coderabbit.yaml for intelligent PR analysis
- deps: upgrade ants/v2 pool manager
🔗 Full Changelog
For a detailed list of all 100 commits since v0.4.1, please refer to the commit history
(v0.4.1...v0.4.2).
Release v0.4.1
Highlights
- Refined the value log write pipeline by centralizing batch append logic
in vlog.Manager, reducing duplicate buffering and simplifying error
handling. - Added a clear two‑stage commit flow (value log → apply) to improve
throughput and reduce blocking on write-heavy workloads.
Changes
- Value log write path now uses AppendEntries with a write mask; rotation
handled inside the manager. - Removed duplicate Sync Pool usage for vlog entry buffers.
- Added safer head reads in vlog manager (locked snapshot for Head/
ActiveFID/MaxFID) to eliminate data races. - Moved value log max size sync to initialization/update time instead of
every write. - Updated docs to reflect the current commit pipeline and vlog/WAL
ordering.
Notes
- make test-race is clean for data races; however, TestValueGC may still
fail intermittently and needs follow-up. - If you require strict durability under power loss, consider syncing vlog
before WAL when SyncWrites is enabled.
NoKV v0.3.0
Highlights
- Unified all local and container scripts around a single
raft_config.json, preventing config drift and skipping manifest reseeding when stores already exist. - Added Redis gateway improvements: configurable address scope, better retry loops, and documentation for embedding and Docker Compose usage.
- Extended the raftstore API with batch KV reads and read-index support while tightening shutdown and replay paths.
Details
Features
- Align local cluster bootstrap, serve scripts, and Docker Compose with the shared topology JSON; existing store directories are reused automatically.
- Introduce the binary manifest tooling and supplemental helpers for config-managed bootstraps.
- Support KvBatchGet RPC and read index reads across raftstore clients.
Performance
- Reduce range copy overhead and streamline commit scheduling in the storage engine.
- Refresh benchmark harness defaults to track the regressions that motivated these changes.
Fixes
- Harden
lsmshutdown paths and add regression coverage around DB.Close. - Improve Redis gateway retries to recover from transient transport errors.
- General code cleanups and gofmt touch-ups.
Documentation
- Refresh README with feature table and Quick Start matrix covering embedded, distributed, and Redis modes.
- Expand scripts documentation to explain the new reuse behaviour and topology workflows.
Verification
go test ./...