Skip to content

v0.3.0 — TidesDB engine v9.3.0 (unpatched); TDB_ERR_BUSY mapping; active-memtable ceiling

Choose a tag to compare

@EvgeniyPatlan EvgeniyPatlan released this 25 May 17:00
· 48 commits to main since this release

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.patch we carried (the bloom_filter_new use-after-free, TidesDB PR #626) landed upstream verbatim in v9.3.0 — both the *bf = NULL guards and the return-checked tidesdb_partitioned_merge caller. With 0001-walfix.patch already retired at v9.2.5, the docker/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 returned TDB_ERR_IO or TDB_ERR_MEMORY_LIMIT. The handler now maps it to HA_ERR_LOCK_WAIT_TIMEOUT (transient, statement-only rollback, retriable) instead of letting it surface as a false HA_ERR_CRASHED.
  • tidesdb_default_l0_queue_stall_threshold default 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_flushes pinned to num_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