Measured everywhere: a concurrent test suite that caught real bugs, three-way benchmarks, and self-hosted docs
Summary: Measured everywhere: a concurrent test suite that caught real bugs, three-way benchmarks, and self-hosted docs (v0.5.4b236).
SecantusDB now measures itself against real mongod in both dimensions.
The per-operation benchmark became a three-way comparison — the Rust
server lands at 2.1×–4.5× of mongod, roughly 2.7×–5.2× faster than
the Python server workload-for-workload — and a new concurrent test
suite (bench.concurrency --server all) sweeps 1–8 parallel writers
across the Python server, the Rust server, and mongod. That harness paid
for itself immediately: its first runs caught a write-path bug where a
WiredTiger transaction marked rollback-only by a concurrent competitor
surfaced to clients as a generic InternalError instead of a retryable
write conflict, plus a Windows-only ordering bug in the admin console's
recent-connections list.
The conflict story now matches mongod end to end. Commit-time conflicts
map to the same retryable WriteConflict machinery as operation-time
ones; plain writes retry without a deadline — a client never sees
WriteConflict outside a multi-document transaction, exactly like
mongod's writeConflictRetry; and the two hot-path writes to the shared
oplog-metadata row (per oplog emit, and per cluster-time mint — the
latter ran on every driver heartbeat) are gone, with restart
monotonicity guaranteed structurally by a one-second recovery bump of
the cluster clock.
The documentation moved home. Both docs trees — the main reference and a
new dedicated Rust-server tree — are now built and deployed with the
website at secantusdb.com/docs/ and /docs/rust/, wearing the site's
banner; readthedocs.org keeps a pointer banner to the new location, and
the release pipeline dropped its four Read-the-Docs legs. The SQL server
kept marching on the psycopg gauge: range/multirange parameters as
first-class values, enum result OIDs in RowDescription, composite-type
materialization, JSON/datetime binary codec fidelity, and a batch of
protocol quick-wins.