fix(msk-collector): ограниченный ретрай goto на таймауте навигации #3425

Merged
lekss361 merged 1 commit from fix/msk-collector-nav-timeout into main 2026-09-08 20:53:35 +00:00
Owner

Summary

Второе падение живого прогона (#2989, трек 1), уже другое: Page.goto: Timeout 90000ms exceeded на 15-й странице коридора 2.0–2.83 млн. Карточки не потерялись — падение пришлось сразу после заливки батча, но прогон умирал целиком.

Диагностика перед фиксом (а не догадка): вкладка в браузере показывала нормальную выдачу Авито с осмысленным заголовком, маркеров «Доступ ограничен» / PoW не было. curl с этой машины отдаёт 403, но это обычный отказ Авито голому curl — не признак бана залогиненной браузерной сессии.

Поэтому ретрай, но не слепой:

  • 3 попытки goto, пауза 10 с между ними;
  • перед каждым повтором читаем то, что уже есть в документе, и прогоняем через _guard — настоящий блок остановит прогон со своей причиной (platform / ratelimit / firewall / challenge), а не спрячется за ретраем;
  • попытки исчерпаны → жёсткий стоп с причиной nav_timeout, а не бесконечный повтор.

Test plan

  • Причина воспроизведена в живом прогоне, стек указывает на Loader.fetchpage.goto
  • Отказ площадки исключён осмотром живой вкладки через CDP, а не по тексту исключения
  • --help работает (ленивый импорт playwright не сломан)
  • Прогон возобновлён с --resume, план и прогресс коридоров целы
  • Полный проход до конца — идёт

Тесты не пишутся до подтверждения поведения полным проходом.

Часть эпика #2989.

## Summary Второе падение живого прогона (#2989, трек 1), уже другое: `Page.goto: Timeout 90000ms exceeded` на 15-й странице коридора `2.0–2.83 млн`. Карточки не потерялись — падение пришлось сразу после заливки батча, но прогон умирал целиком. Диагностика перед фиксом (а не догадка): вкладка в браузере показывала нормальную выдачу Авито с осмысленным заголовком, маркеров «Доступ ограничен» / PoW не было. `curl` с этой машины отдаёт 403, но это обычный отказ Авито голому curl — не признак бана залогиненной браузерной сессии. Поэтому ретрай, но **не слепой**: - 3 попытки `goto`, пауза 10 с между ними; - перед каждым повтором читаем то, что уже есть в документе, и прогоняем через `_guard` — настоящий блок остановит прогон со своей причиной (`platform` / `ratelimit` / `firewall` / `challenge`), а не спрячется за ретраем; - попытки исчерпаны → жёсткий стоп с причиной `nav_timeout`, а не бесконечный повтор. ## Test plan - [x] Причина воспроизведена в живом прогоне, стек указывает на `Loader.fetch` → `page.goto` - [x] Отказ площадки исключён осмотром живой вкладки через CDP, а не по тексту исключения - [x] `--help` работает (ленивый импорт playwright не сломан) - [x] Прогон возобновлён с `--resume`, план и прогресс коридоров целы - [ ] Полный проход до конца — идёт Тесты не пишутся до подтверждения поведения полным проходом. Часть эпика #2989.
lekss361 added 1 commit 2026-09-08 20:50:56 +00:00
fix(msk-collector): ограниченный ретрай goto на таймауте навигации
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 10s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
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
f820c3eac5
Авито изредка держит соединение до упора, goto падает по 90-секундному
таймауту и прогон умирает целиком. В наблюдавшемся случае это был не отказ:
вкладка показывала нормальную выдачу, маркеров фаервола и PoW не было.

Но тихий отказ выглядит так же, поэтому ретрай не слепой: перед каждым
повтором читаем то, что есть в документе, и прогоняем через _guard — реальный
блок останавливает прогон со своей причиной. Исчерпали 3 попытки — жёсткий
стоп с причиной nav_timeout, а не бесконечный повтор.
lekss361 merged commit 1441e189c8 into main 2026-09-08 20:53:35 +00:00
lekss361 deleted branch fix/msk-collector-nav-timeout 2026-09-08 20:53:35 +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#3425
No description provided.