fix(tradein-browser): non-fatal launch + background proxy retry (crash-loop 3141x) #1330

Merged
bot-backend merged 1 commit from fix/tradein-browser-crashloop-resilience into main 2026-06-14 15:18:59 +00:00
Collaborator

Summary

  • tradein-browser крашлупил 3141×: camoufox geoip=True+proxy → eager public_ip(proxy) на старте → InvalidProxy (mproxy.site down) → app.startup падает → exit(1) → docker restart-loop
  • Fix: launch non-fatal — startup не падает; фоновая задача ретраит launch с backoff (30→60с) и поднимает браузер когда прокси вернётся
  • /fetch + /login503 пока браузера нет (caller browser_fetcher ловит graceful, не краш); НИКАКОГО direct-connection fallback — анти-бан proxy+geoip сохранены
  • Креды прокси НЕ логируются (только type(exc).__name__, без str(exc) с user:pass@host)
  • 4 smoke-теста; code-reviewer APPROVE (проверено: no proxy-bypass / no creds-leak / no asyncio deadlock-leak-race / 503-контракт трассирован end-to-end)

Test plan

  • 4 smoke pytest pass; ruff (dir tradein-mvp/browser/ вне ruff-scope per .pre-commit-config)
  • code-reviewer APPROVE — strict improvement vs 3141-crashloop
  • post-deploy: контейнер остаётся Up (RestartCount не растёт); /healthbrowser_ready; при возврате mproxy.site браузер сам поднимается без manual restart

Note (важно)

Внешний прокси mproxy.site down — домен Anton (подписка/доступ). Этот PR — resilience, НЕ восстановление прокси и НЕ активация скрапинга: пока прокси не вернётся, /fetch→503, скрапинг graceful-fail без ban-risk. Деплой tradein-mvp может требовать отдельного шага (не основной deploy.yml) — проверить при мердже.

Refs #905

## Summary - `tradein-browser` крашлупил **3141×**: camoufox `geoip=True`+proxy → eager `public_ip(proxy)` на старте → `InvalidProxy` (mproxy.site down) → `app.startup` падает → exit(1) → docker restart-loop - Fix: launch non-fatal — startup не падает; фоновая задача ретраит launch с backoff (30→60с) и поднимает браузер когда прокси вернётся - `/fetch` + `/login` → **503** пока браузера нет (caller `browser_fetcher` ловит graceful, не краш); **НИКАКОГО direct-connection fallback** — анти-бан proxy+geoip сохранены - Креды прокси НЕ логируются (только `type(exc).__name__`, без `str(exc)` с `user:pass@host`) - 4 smoke-теста; code-reviewer ✅ APPROVE (проверено: no proxy-bypass / no creds-leak / no asyncio deadlock-leak-race / 503-контракт трассирован end-to-end) ## Test plan - [x] 4 smoke pytest pass; ruff (dir `tradein-mvp/browser/` вне ruff-scope per .pre-commit-config) - [x] code-reviewer APPROVE — strict improvement vs 3141-crashloop - [ ] post-deploy: контейнер остаётся `Up` (RestartCount не растёт); `/health` → `browser_ready`; при возврате mproxy.site браузер сам поднимается без manual restart ## Note (важно) Внешний прокси `mproxy.site` down — домен Anton (подписка/доступ). Этот PR — **resilience**, НЕ восстановление прокси и НЕ активация скрапинга: пока прокси не вернётся, `/fetch`→503, скрапинг graceful-fail без ban-risk. Деплой `tradein-mvp` может требовать отдельного шага (не основной deploy.yml) — проверить при мердже. Refs #905
bot-backend added 1 commit 2026-06-14 15:17:02 +00:00
fix(tradein-browser): non-fatal launch + background proxy retry
All checks were successful
CI / changes (push) Successful in 7s
CI / backend-tests (push) Has been skipped
CI / frontend-tests (push) Has been skipped
CI / openapi-codegen-check (push) Has been skipped
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
74461e8611
Прокси mproxy.site упал -> camoufox eager public_ip(proxy) для geoip
бросал InvalidProxy из app.startup -> exit(1) -> docker restart-loop
(RestartCount 3141). Теперь фейл launch'а не валит startup: контейнер
остаётся Up, фоновая задача ретраит launch с backoff (30-60с) пока прокси
не вернётся. /fetch и /login отдают 503 при недоступном браузере (caller
ловит как failed fetch, не краш). proxy+geoip сохранены — анти-бан
fingerprint на месте, никакого direct-connection fallback. Креды прокси
не логируются (только exc_type, без str(exc) с user:pass@host).

Refs #905
bot-backend merged commit f376d8ce05 into main 2026-06-14 15:18:59 +00:00
bot-backend deleted branch fix/tradein-browser-crashloop-resilience 2026-06-14 15:18:59 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1330
No description provided.