Skip to content

Releases: feichai0017/NoKV

v0.7.1

23 Mar 12:27

Choose a tag to compare

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, ValueThreshold moved to 2048, 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

Full Changelog: v0.7.0...v0.7.1

v0.7.0

03 Mar 05:02

Choose a tag to compare

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

New Contributors

Full Changelog: v0.6.1...v0.7.0

v0.6.1

25 Feb 17:05

Choose a tag to compare

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

Full Changelog: v0.6.0...v0.6.1

v0.6.0

16 Feb 01:31

Choose a tag to compare

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

Full Changelog: v0.5.0...v0.6.0

Release v0.5.0

07 Feb 16:36

Choose a tag to compare

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

22 Jan 14:04

Choose a tag to compare

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

30 Dec 17:08

Choose a tag to compare

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

01 Nov 05:48

Choose a tag to compare

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 lsm shutdown 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 ./...