fix(smoke): «ответа нет» ≠ «неверный код» — ретраи и честная формулировка в смоуке периметра МЕРА #3441
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3441
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/perimeter-smoke-retry-on-no-response"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Смоук публичного периметра краснел там, где периметр цел.
Факт (11.09). Прогон
perimeter-smoke-meraна голове maina659b187— failure; упали две последние проверки:000у curl — ответа не было вовсе, а не «пришёл неверный код». Ручная проверка тех же путей сразу после: 503 и 405 от приложения (server: uvicorn, без заглушки Caddy). Периметр исправен.Замер причины (11.09, внешний IP): серия к
gendsgn.ru/trade-in/api/v1/meбез пауз — 5 обрывов из 12; пауза 0.5 с — 6 из 12; пауза 2 с — 0 из 8. С самого хоста Poincare — 0 из 10. Оба домена резолвятся в один адрес, вход общий. Смоук шлёт ~28 запросов подряд и попадает под тот же эффект — падают именно последние проверки списка.Правка. Общая обёртка
curl_tryвокруг ВСЕХ запросов скрипта (6 функций-проверок + загрузка HTML лэндинга), а не заплатка у двух строк. «Ответа не было» определяется по коду возврата curl (28/35/52/56/6) — строго эквивалентноhttp_code=000, но доступно и проверкам, которые http_code не запрашивают. Побочно чинит два ложных диагноза: обрыв вcheck_redirect_locationчитался как «Location не тот» (то есть как потеря query!), обрыв при загрузке лэндинга — как «лэндинг сломан».FAIL (ответа нет): … вход не отдал ответ после 3 попыток; это НЕ измеренный код ответа, периметр этой проверкой НЕ проверен+ итоговая строкаБЕЗ ОТВЕТА: N проверок. Прогон красный — мы честно не знаем, цел ли периметр.SMOKE_PAUSE=0 SMOKE_ATTEMPTS=1возвращает прежнее поведение.timeout-minutes: 5 → 10: неотвечающая проверка стоит до 3×15 с плюс паузы, трёх таких хватило бы, чтобы job убили ДО печати FAIL-строк.Ожидания, коды и список путей не тронуты — в диффе нет ни одного изменённого ожидаемого кода или URL.
Проверка по значению (пара «до/после» ничего не доказывает — сегодня оба прогона зелёные, эффект перемежающийся; поэтому проверки детерминированные):
127.0.0.1:9): 38 ×FAIL (ответа нет), итогБЕЗ ОТВЕТА: 38, выход 1;/me401→200 и URL/oferta→несуществующий): 2 × FAIL, RETRY-строк ноль, строкиБЕЗ ОТВЕТАнет.Прогоны: прод до правки 43/43 PASS (89 с), после 43/43 PASS, 0 RETRY (160 с). Гейт синтаксиса из
ci.yml—✓ 30 shell-скриптов; pre-commit чисто.Что остаётся проверить руками: прогнать
perimeter-smoke-meraна ветке черезworkflow_dispatch— это единственный вантаж, где000реально случается. Если бан раннера длится минутами, 3 попытки его не пересидят — но прогон тогда скажетБЕЗ ОТВЕТА: N, а не соврёт про регресс.