Skip to content

v0.8.1

Choose a tag to compare

@sagarsuperuser sagarsuperuser released this 17 Oct 15:29
· 202 commits to main since this release
5df594e

Safer upgrades: a repair command for a database upgrade that stopped midway, and a limit on how long a migration waits for a table lock. Also a faster invoice list, and the Compose stack passes the Postmark webhook login and VELOX_API_BASE_URL. No database migrations.

Before you upgrade

  • No migrations in this release. The database stays at 0180, the last migration of v0.8.0. Take a backup as for any upgrade.
  • A migration waits at most 5 seconds for a table lock, then stops. This applies to later upgrades: while a migration waits for a lock, every other query on that table waits behind it. A migration that runs in one transaction leaves nothing behind when it stops, and the error says to run the upgrade again. MIGRATION_LOCK_TIMEOUT changes the wait (for example 30s, or 0 for no limit). Index builds marked CONCURRENTLY have no limit. Steps: runbook. (#1167)
  • A dirty schema_migrations has a named error and a repair command. Velox still refuses to start or migrate. The error now names the migration, says whether some of its changes may be in the database, and gives the velox migrate force <version> commands to run. velox migrate status prints the same advice. Steps: runbook. (#1165)
  • Compose reads POSTMARK_WEBHOOK_USER, POSTMARK_WEBHOOK_PASS, VELOX_API_BASE_URL and MIGRATION_LOCK_TIMEOUT from .env. If you passed them with an override file or by editing docker-compose.yml, move them to .env. (#1164)

What changed

Upgrades

  • velox migrate force <version> clears the dirty mark a failed migration leaves. It refuses while a migration is running, when nothing is dirty, and for a version that is not next to the dirty one. (#1165)
  • Each migration session sets a Postgres lock_timeout (5 seconds unless MIGRATION_LOCK_TIMEOUT says otherwise). CI now fails a new migration that builds an index or adds a constraint the write-blocking way. (#1167)

Dashboard

  • The invoice list reads each banner fact (card on file, Stripe connection, dunning, pause, payment page) once per page instead of once per row. Banners are unchanged. (#1166)

Self-hosting

  • The Compose stack passes the Postmark bounce webhook login and VELOX_API_BASE_URL through to Velox, and deploy/compose/.env.example lists them. (#1164)
  • Measured sizing for one small server: a €6.49/month Hetzner CX23 took about 1 million events a day with 0 errors (scale). The one-VM production guide got fixes from a first walk through it. (#1163)

Every change, with its reasoning: CHANGELOG.