Skip to content

v0.14.6-tt1 — first TripTech stewardship release

Choose a tag to compare

@isaacrowntree isaacrowntree released this 12 Jun 02:54
· 3 commits to main since this release

Superseded by v0.14.6-tt2. This build crashes at boot unless SENTRY_DSN was baked in at build time or CRASH_REPORTING_DISABLED=1 is set — Sequin.Sentry.init/0 raises on a nil compile-time DSN. Fixed in tt2.

First release of the maintained fork, on top of upstream's final release (v0.14.6).

Fixed

  • MutexOwner no longer crashes on transient Redis errors (upstream PR sequinstream/sequin#2131, fixes sequinstream/sequin#2072). When Redis (or a Redis-compatible store like Dragonfly/KeyDB) restarted, MutexOwner returned an invalid gen_statem value, crashed, and the :one_for_all supervisor cascade took down every consumer — unrecoverable without a full restart. It now retries with exponential backoff (capped at 1 hour) and re-acquires when Redis returns. Multi-node split-brain window documented in the moduledoc.
  • LiveView metrics pages no longer crash when Redis-backed metrics are unavailable{:ok, _} = crash patterns replaced with float-safe fallbacks (an integer fallback would have re-crashed Float.ceil/1).
  • Empty SENTRY_DSN no longer breaks the Docker build — normalized to nil in config/prod.exs.

Tests

MutexOwner behavior is now exercised against the real handle_event/4 and a live process via an injectable Redis client — deterministic, no iptables/root required.

Diff: v0.14.6...v0.14.6-tt1