fix(db): миграция 269 — SET LOCAL lock_timeout внутри BEGIN/COMMIT (#2752)
All checks were successful
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 11s
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m24s

Вне транзакции SET LOCAL молча ничего не делает — гейт это ловит, и он
поймал меня второй раз подряд, теперь локально, до CI.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
bot-backend 2026-08-21 14:46:17 +05:00
parent 8de9831e25
commit bf119de7bb

View file

@ -11,7 +11,11 @@
-- lock_timeout (#2752): ALTER TABLE берёт ACCESS EXCLUSIVE на houses — при живом
-- писателе (свип) ждал бы его бесконечно и копил очередь за собой; 5с — и миграция
-- падает честно, деплой перезапускается, а не вешает базу.
-- SET LOCAL действует только внутри транзакции — вне BEGIN он молча ничего не делает
-- (гейт check-migration-lock-timeout это проверяет; на этом я и споткнулся).
BEGIN;
SET LOCAL lock_timeout = '5s';
ALTER TABLE houses ADD COLUMN IF NOT EXISTS yandex_jk_resolve_tried_at timestamptz;
COMMENT ON COLUMN houses.yandex_jk_resolve_tried_at IS
'#2924: когда yandex_newbuilding_sweep последний раз пытался разрезолвить yandex_jk_slug и не смог; NULL = не пробовали или резолв удался';
COMMIT;