Недоступный Telegram отдаёт 502, а не 500 #3456
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3456
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/tg-network-error-502"
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.2026, 01:35 и 01:38 MSK — два 500 на
POST /api/v1/trade-in/ops/glitchtip-webhook. Причина не в вебхуке.TelegramClient._requestпосле исчерпания сетевых ретраев делал голыйraise, и наружу летелhttpx.ConnectTimeout. Все три HTTP-ручки ловятTelegramApiError— сырой httpx пролетал мимо, FastAPI отдавал 500 вместо задуманного 502. Для вызывающего отказ площадки и её недоступность неразличимы: переслать не смогли и там, и там.Что сделано
Клиент больше не выпускает наружу чужой тип. Иерархия:
TelegramError— общий предок;TelegramApiError— площадка ответилаok: false(как было);TelegramNetworkError— ответа не было, ретраи исчерпаны (новый).Раздельно, а не наследником: у сетевого отказа нет ни
error_code, ниdescription, брать их неоткуда. Иbridgeпоerror_code == 403разбирает «бот заблокирован» — недоступность в этот разбор попадать не должна. Исходное исключение сохраняется в__cause__, так что в GlitchTip по-прежнему видно, таймаут это соединения или сброс TLS (#3156).Три ручки ловят предок: вебхук GlitchTip и обе ручки поддержки, авторизованная и анонимная.
Что НЕ менялось
Воркеры. Poll loop в
bridgeи так ловитException, бюджеты ретраев и потолки отката прежние — тесты на них остались, изменился только ожидаемый тип исключения.Тесты
Пять новых: два на клиенте (свой тип наружу, причина не потеряна, это не
TelegramApiError), три на ручках (502 на недоступности, ничего не персистится, анонимной куки не выдаём). Четыре теста бюджета ретраев ждалиhttpx.ConnectTimeout— ждут новый тип.Полный прогон: 5907 passed, 37 skipped.
🤖 Generated with Claude Code
https://claude.ai/code/session_01VQ8jqr4SFirX5tFLwdSrXh