mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-13 22:32:04 +00:00
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.
13 lines
741 B
SQL
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);
|