Files
HealthLog/prisma/migrations/0413_strava_backfill_resume/migration.sql
T
Marc-André Bombeck 9c89503019 fix(migrations): bound 0412's lock wait where it takes effect and retry a lock timeout on boot
migrate deploy runs a migration file statement by statement, so the
top-level SET LOCAL lock_timeout in 0412 did nothing: the migration
waited as long as the lock was held, with every write to measurements
queued behind it, and a file that failed half-way stayed half-applied.
0412 now takes its locks inside one DO block with a statement-scoped
timeout, which rolls back whole, after an idempotent CREATE OR REPLACE.

The entrypoint runs migrate deploy through scripts/migrate-deploy.mjs.
A 55P03 failure of a migration marked -- @retry-on-lock-timeout is
marked rolled back and retried after 15/30/60/120/240 s, read from
Prisma's report or, after P3009, from the stored row. Every other
failure stays fatal. A guard holds migrations to the shape that makes
the marker true, and 0411/0413 add their columns with IF NOT EXISTS so
a manual re-run is safe too.
2026-10-20 10:45:14 +02:00

13 lines
741 B
SQL

-- Where an unfinished Strava backfill picks up.
--
-- One backfill run reads at most forty pages of a hundred activities. A
-- longer history ended the run as incomplete without a note of how far it
-- got, so every boot read the same newest forty pages again, up to 190 of
-- the 200 requests the whole instance may make in fifteen minutes, and the
-- older history was never reached. The column holds the start of the oldest
-- activity the last run read; the next run asks for activities before it.
-- Nullable and unset for every existing row: an unfinished backfill starts
-- once more from the newest page and records its place from then on.
ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "strava_backfill_resume_before" TIMESTAMP(3);