Skip to content

Release v3.1.9

Choose a tag to compare

@github-actions github-actions released this 28 Oct 16:17
· 2 commits to main since this release

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: :desc for 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/3 and 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 and update_if/3 retain 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: true for 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.