Repository navigation
Release v3.1.9
Concord 3.1.9 fixes transaction deadlines and adds descending pages, bounded revision CAS, and finite queued Turso reads.
All three packages are published at 3.1.9: concord, ex_turso, and viewstamped_replication. Concord pins both companion requirements to this exact version.
{:concord, "3.1.9"}Fixed
- Share one finite Turso transaction deadline across connection acquisition,
database readiness, application statements and pre-commit checks. An expired
readiness budget cannot start the application transaction. Native work cannot
be forcibly interrupted; timeout after admission is not proof of no effect,
and a known successful native commit retains its acknowledgement. - Enforce the original CAS deadline through validation, compression and engine
admission, including queued Local and VSR commands.
Added
- Support
order: :descfor bounded prefix/range lists through reverse ordered
seeks and Turso covering-index queries. Preserve sparse pagination, current
visibility, Local/VSR historical reads and the ascending default. - Add
Concord.KV.compare_and_swap/3and convenience APIs for atomic revision
comparisons with one new value, up to the normal 16 MiB logical value and
64 MiB command limits. Return value-free committed or conflicting metadata;
generic transactions andupdate_if/3retain their 1,000,000-byte limit.
VSR CAS requires every replica to support command envelope 2 and explicit
writer opt-in. The default remains 0; replay meanings for 0/1 are unchanged.
Follow the documented reader-first rollout before enabling version 2. - Support
queue: truefor Turso lists with a finite positive timeout. One
deadline covers bounded admission, checkout, readiness and querying. Configure
list_queue_capacity(default 64); overload returns an explicit error, and
active native work retains capacity until cleanup finishes.
Changed
- Synchronize all three umbrella packages and exact Hex dependencies at 3.1.9.
- Exercise both legacy and version-2 commands in three-node release tests,
including large CAS values, competing writers, failover and durable restart.
VSR CAS requires a reader-first upgrade of every replica and explicit writer version 2. Downgrades after version-2 writes are not guaranteed. An admitted write may finish after a caller timeout; reconcile receipts or stored state before retrying.
Validation: all nine CI jobs passed at 4fe007dd46bf4619ab56602183dee2a1c8ae00c7, including 819 tests plus two properties and both three-node E2E command modes. The release workflow passed all three jobs. Public archive/source checksums, exact dependencies, docs, and tag/main alignment were independently verified. A fresh registry-only consumer passed 21 stages and 109 regression tests, including all four new requests, both WAL formats, and 3.1.8 → 3.1.9 → 3.1.8 Turso reader/writer compatibility. This old-reader proof excludes version-2 writes.
Fixes #107, #108, #109, and #110. Synapsis still requires scoped adoption and its unchanged functional acceptance tests; those downstream tests were not run here.