Skip to content

v0.3.1 — TidesDB engine v9.3.2 (concurrency hardening, fd-starvation fix, parallel compaction)

Choose a tag to compare

@EvgeniyPatlan EvgeniyPatlan released this 02 Jun 06:34
· 46 commits to main since this release

v0.3.1 — TidesDB engine v9.3.2 (concurrency hardening, fd-starvation fix, parallel compaction)

Patch-level bump of the bundled storage engine from TidesDB v9.3.0 to v9.3.2 (two upstream patch releases). The engine continues to ship unpatched, and no plugin code changes were required — v9.3.1 and v9.3.2 are patch-level and introduce no new public enums or error codes for the handler's tdb_rc_to_ha to map.

What's new (inherited from upstream)

From v9.3.1 — concurrency and durability hardening:

  • Five memory-safety / race fixes: clock-cache reader-pin wraparound at 128 concurrent readers, flush-cleanup use-after-free over the 16-immutable threshold, transaction-reset dangling pointer (repeatable-read / snapshot), duplicate column-family registration race, 32-bit MSVC atomics.
  • Reader FD starvation fixed — engine-side counterpart to the fd-pressure behaviour the v0.3.0 100 GiB stress run documented. A flush-path descriptor-accounting leak is fixed, and reader/reaper budgets are unified so the reserve always stays available.
  • Backpressure simplified — L1 file-count hard stop removed; write admission is now governed by the L0 queue stall and the active-memtable ceiling.
  • Parallel compaction within a round — per-CF compaction borrows ephemeral helper threads with work-stealing and shards merge output across key-range subcompactions; ~25 % higher ingest throughput in upstream's tests with clean mid-round-kill recovery.

From v9.3.2:

  • Backwards-compatible chunking of bloom filters and block indexes that exceed the 4 GB block-manager size.
  • _tidesdb_cancel_background_work_ helper for quick shutdown under large flush / compaction queues.

Validation

Full suite re-run against the v9.3.2 images (see docs/v9.3.2-validation-report.md):

Gate Result
MTR --suite=tidesdb 61/61 pass (2 skipped)
mwbench engine-integrity (8 GiB, deletes on) 0 misses / 0 mismatches
HammerDB SIGKILL crash-recovery PASS — WAL recovered all committed work
HammerDB WARE=100 throughput PASS — 23,500 NOPM, no OOM (v0.3.0: 22,583 — within run-to-run noise)

Migration

Drop-in for v0.3.0 users. Data directory layout unchanged (<datadir>/.tidesdb). No on-disk format change; v9.3.2's chunked bloom/block-index format is backwards-compatible.

Docker

docker pull perconalab/tidesdb-mysql:0.3.1