From 8de9831e256cf2fe51a67f39663456e2914065da Mon Sep 17 00:00:00 2001 From: bot-backend Date: Fri, 21 Aug 2026 14:45:29 +0500 Subject: [PATCH] =?UTF-8?q?fix(db):=20=D0=BC=D0=B8=D0=B3=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20269=20=E2=80=94=20SET=20LOCAL=20lock=5Ftimeout?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20ALTER=20TABLE=20houses=20(#?= =?UTF-8?q?2752)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Гейт CI «блокирующий DDL без lock_timeout» покраснел по делу: ALTER TABLE берёт ACCESS EXCLUSIVE на houses и при живом писателе ждал бы бесконечно, копя очередь. 5с — миграция падает честно и деплой перезапускается. Предыдущий пустой коммит «перезапуск — флуктуация раннера» был ошибкой диагноза: я не дочитал лог changes до ::error и приписал падение checkout'у. Единственный источник истины — строка ::error в логе самого changes; «Job 'changes' failed» у зависимых джобов и «'runs-on' key not defined» в act_runner v6.3.1 — шум. Co-Authored-By: Claude Opus 5 --- .../data/sql/269_houses_yandex_jk_resolve_tried_at.sql | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tradein-mvp/backend/data/sql/269_houses_yandex_jk_resolve_tried_at.sql b/tradein-mvp/backend/data/sql/269_houses_yandex_jk_resolve_tried_at.sql index 4d696b4f..e2ce5e2c 100644 --- a/tradein-mvp/backend/data/sql/269_houses_yandex_jk_resolve_tried_at.sql +++ b/tradein-mvp/backend/data/sql/269_houses_yandex_jk_resolve_tried_at.sql @@ -8,6 +8,10 @@ -- очереди (ORDER BY tried_at NULLS FIRST), а не в начало. -- -- Идемпотентно. Колонка nullable, без дефолта — существующие строки = «не пробовали». +-- lock_timeout (#2752): ALTER TABLE берёт ACCESS EXCLUSIVE на houses — при живом +-- писателе (свип) ждал бы его бесконечно и копил очередь за собой; 5с — и миграция +-- падает честно, деплой перезапускается, а не вешает базу. +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 = не пробовали или резолв удался';