v0.3.0 — TidesDB engine v9.3.0 (unpatched); TDB_ERR_BUSY mapping; active-memtable ceiling
v0.3.0 — TidesDB engine v9.3.0 (unpatched)
Bumps the bundled storage engine from TidesDB v9.2.5 to v9.3.0, now shipped with zero patches, and adapts the plugin to v9.3.0's new backpressure semantics.
What changed
- Engine → TidesDB v9.3.0, unpatched. The
0001-bloomfix.patchwe carried (thebloom_filter_newuse-after-free, TidesDB PR #626) landed upstream verbatim in v9.3.0 — both the*bf = NULLguards and the return-checkedtidesdb_partitioned_mergecaller. With0001-walfix.patchalready retired at v9.2.5, thedocker/patches/engine step is gone entirely. TDB_ERR_BUSY(-14) mapping. v9.3.0 returns this from backpressure-stall timeouts (L0 queue, active-memtable ceiling, memory-pressure critical) that previously returnedTDB_ERR_IOorTDB_ERR_MEMORY_LIMIT. The handler now maps it toHA_ERR_LOCK_WAIT_TIMEOUT(transient, statement-only rollback, retriable) instead of letting it surface as a falseHA_ERR_CRASHED.tidesdb_default_l0_queue_stall_thresholddefault lowered 20 → 10, matching upstream now that v9.3.0's active-memtable backpressure ceiling (2× write_buffer_size) bounds the other growth surface.- Inherited from v9.3.0 (no plugin change): the active-memtable ceiling, four additional use-after-free/race fixes, compaction-trigger correctness, and
max_concurrent_flushespinned tonum_flush_threads.
Validation
Full suite against the v9.3.0 images (see docs/v9.3.0-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 — 22,583 NOPM, no OOM |
The WARE=100 profile that OOM-killed mysqld during v0.2.5 validation now runs clean to completion under v9.3.0's active-memtable ceiling.
A mwbench harness false-positive (the delete phase published its deleted-set predicate after issuing deletes, mis-scoring reads of just-deleted keys as misses) was root-caused and fixed in test tooling, then confirmed clean against the engine. To be reported upstream to
tidesdb/mwbench.
Migration
Drop-in for v0.2.5 users. Data directory layout is unchanged (<datadir>/.tidesdb). No on-disk format change.
Docker
docker pull perconalab/tidesdb-mysql:0.3.0