fix(msk-collector): узкий ретрай page.content() на гонке перенавигации #3424

Merged
lekss361 merged 1 commit from fix/msk-collector-nav-race into main 2026-09-08 20:48:19 +00:00
Owner

Summary

Найдено живым прогоном (#2989, трек 1). Авито дорисовывает выдачу после domcontentloaded, и page.content() иногда попадает ровно в смену документа — Playwright бросает Unable to retrieve content because the page is navigating and changing the content. Это не отказ площадки, но прогон падал целиком: на 1110-й карточке потеряно 100 несброшенных строк (963 к тому моменту уже лежали в msk_raw).

  • Ретрай узкий: только на этот текст ошибки, 4 попытки с паузой 1.5 с. Любое другое исключение поднимается как есть.
  • Гварды блокировки (403/439 → platform, 429 → ratelimit, фаервол, PoW, empty_page) не ослаблены — _guard по-прежнему вызывается на полученном html, ретрай до него не доходит.
  • scripts/local-avito-msk/runs/ (планы прогонов и CSV) в .gitignore.

Test plan

  • Причина воспроизведена в живом прогоне, стек в логе указывает на Loader.fetchpage.content()
  • Прогон продолжен с --resume по сохранённому плану (53 коридора, прогресс коридоров цел)
  • Полный проход до конца — идёт сейчас

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

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

## Summary Найдено живым прогоном (#2989, трек 1). Авито дорисовывает выдачу после `domcontentloaded`, и `page.content()` иногда попадает ровно в смену документа — Playwright бросает `Unable to retrieve content because the page is navigating and changing the content`. Это не отказ площадки, но прогон падал целиком: на 1110-й карточке потеряно 100 несброшенных строк (963 к тому моменту уже лежали в `msk_raw`). - Ретрай **узкий**: только на этот текст ошибки, 4 попытки с паузой 1.5 с. Любое другое исключение поднимается как есть. - Гварды блокировки (403/439 → `platform`, 429 → `ratelimit`, фаервол, PoW, `empty_page`) не ослаблены — `_guard` по-прежнему вызывается на полученном html, ретрай до него не доходит. - `scripts/local-avito-msk/runs/` (планы прогонов и CSV) в `.gitignore`. ## Test plan - [x] Причина воспроизведена в живом прогоне, стек в логе указывает на `Loader.fetch` → `page.content()` - [x] Прогон продолжен с `--resume` по сохранённому плану (53 коридора, прогресс коридоров цел) - [ ] Полный проход до конца — идёт сейчас Тесты не пишутся до подтверждения поведения полным проходом. Часть эпика #2989.
lekss361 added 1 commit 2026-09-08 20:44:44 +00:00
fix(msk-collector): узкий ретрай page.content() на гонке перенавигации
All checks were successful
CI / changes (pull_request) Successful in 9s
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 Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
3daf09c7e4
Авито дорисовывает выдачу после domcontentloaded, и content() иногда попадает
ровно в смену документа — Playwright бросает "page is navigating and changing
the content". Это не отказ площадки, но прогон падал целиком: на 1110-й
карточке потеряно 100 несброшенных строк.

Ретрай узкий — только на этот текст ошибки и только 4 попытки; любая другая
ошибка поднимается как есть, гварды блокировки не ослаблены. runs/ (планы и
CSV прогонов) в .gitignore.
lekss361 merged commit 1e96a6f12d into main 2026-09-08 20:48:19 +00:00
lekss361 deleted branch fix/msk-collector-nav-race 2026-09-08 20:48:19 +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#3424
No description provided.