Some checks failed
Deploy Trade-In / changes (push) Successful in 12s
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / test (push) Failing after 3m29s
Deploy Trade-In / build-backend (push) Has been skipped
Deploy Trade-In / deploy (push) Has been skipped
41 lines
2.7 KiB
PL/PgSQL
41 lines
2.7 KiB
PL/PgSQL
-- 258_houses_imv_transient_attempts.sql
|
||
-- Счётчик подряд идущих временных отказов домовой оценки Авито (эпик #2674).
|
||
--
|
||
-- ЗАЧЕM. imv_status='transient_error' был состоянием БЕЗ ВЫХОДА: очередь
|
||
-- backfill'а выбирает ровно один статус за прогон (only_status, по умолчанию
|
||
-- 'pending'), и за всю историю (41 прогон, 26.06–11.08) ни один не был запущен
|
||
-- с другим значением. На 12.08.2026 в этом статусе лежали 1390 домов, 1337 из
|
||
-- них — с причиной «503/500 от tradein-browser:3000/fetch-json» или «All
|
||
-- connection attempts failed», то есть с ИНФРАСТРУКТУРНОЙ причиной, которой
|
||
-- больше нет (сайдкар починен #2698; за 7 суток до 12.08 в его access-логе
|
||
-- 108 из 108 POST /fetch-json = 200).
|
||
--
|
||
-- Сервис теперь отдаёт часть пакета на повтор transient_error автоматически
|
||
-- (house_imv_backfill._RETRY_QUEUE_SQL). Этот счётчик — условие ВЫХОДА из
|
||
-- повтора: дом, падающий по своей причине, а не по инфраструктурной, перестаёт
|
||
-- занимать слот пакета после _MAX_TRANSIENT_ATTEMPTS (3) подряд.
|
||
--
|
||
-- Наблюдаемость НЕ переименовывается: статус остаётся 'transient_error',
|
||
-- прежние разрезы по imv_status/imv_error_reason работают как работали, а
|
||
-- «застряли окончательно» — это
|
||
-- SELECT count(*) FROM houses
|
||
-- WHERE imv_status='transient_error' AND imv_transient_attempts >= 3;
|
||
--
|
||
-- Индекс не добавляем: houses_imv_status_idx (064) уже частичный по
|
||
-- imv_status IN ('pending','transient_error') с сортировкой по
|
||
-- last_imv_attempt_at — фильтр по счётчику остаётся остаточным условием на
|
||
-- выборке в тысячи строк.
|
||
|
||
BEGIN;
|
||
|
||
SET LOCAL lock_timeout = '5s';
|
||
|
||
ALTER TABLE houses
|
||
ADD COLUMN IF NOT EXISTS imv_transient_attempts smallint NOT NULL DEFAULT 0;
|
||
|
||
COMMENT ON COLUMN houses.imv_transient_attempts IS
|
||
'Сколько раз подряд домовая IMV-оценка падала в transient_error. '
|
||
'Растёт только на transient_error, обнуляется успехом. '
|
||
'>= 3 — дом больше не берётся в автоматический повтор (эпик #2674).';
|
||
|
||
COMMIT;
|