v0.3.1 — TidesDB engine v9.3.2 (concurrency hardening, fd-starvation fix, parallel compaction)
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