scraper-kit/cian: бакет уходит в done_buckets, хотя фаза houses внутри отказала полностью — следующий прогон пропускает фазу и рапортует done с houses_attempted=0 #3417

Closed
opened 2026-09-07 11:11:35 +00:00 by bot-backend · 0 comments
Collaborator

Найдено при проверке приёмки #3394 (#3411).

Факт. cian_city_sweep 6179 (06.09) — failed, «фаза houses отказала полностью — 30 из 30», но в counters.done_buckets записаны все 5 якорей. Следующий прогон 6276 (07.09) резюмировался от него, пропустил все бакеты и завершился done, errors_count=0, houses_attempted=0, lots_fetched=0. Зелёный по построению: фаза не исполнялась.

Следствие. Фикс #3396 (houses через пул) стоит на проде с 06.09 12:02 UTC и ни разу не отработал — эффект не замерен, а статус прогона выглядит успешным. Класс «зелёная сводка ≠ зелёный выход»: чекпоинт фиксирует «бакет пройден», хотя одна из фаз внутри него не дала ничего.

Чинить: бакет попадает в done_buckets только если ВСЕ фазы в нём отработали (или чекпоинт хранит фазу: bucket:phase), иначе — не помечать и дать следующему прогону повторить. Смотреть orchestration/pipeline.py::run_cian_city_sweep (_ckpt/done_buckets, ветка honest-status «фаза X отказала полностью»).

Тест по значению: прогон, где houses-фаза отказала на всех домах бакета, не должен писать этот бакет в done_buckets; следующий прогон с этим чекпоинтом обязан снова зайти в houses (houses_attempted > 0). На main красный.

Приёмка на проде: первый cian_city_sweep после фикса — houses_attempted > 0; прогон, пропустивший фазу по резюму, приёмкой не считается.

Refs #3394, #3396, #3411.

Найдено при проверке приёмки #3394 (#3411). **Факт.** `cian_city_sweep` 6179 (06.09) — `failed`, «фаза houses отказала полностью — 30 из 30», но в `counters.done_buckets` записаны все 5 якорей. Следующий прогон 6276 (07.09) резюмировался от него, пропустил все бакеты и завершился `done`, `errors_count=0`, **`houses_attempted=0`, `lots_fetched=0`**. Зелёный по построению: фаза не исполнялась. **Следствие.** Фикс #3396 (houses через пул) стоит на проде с 06.09 12:02 UTC и **ни разу не отработал** — эффект не замерен, а статус прогона выглядит успешным. Класс «зелёная сводка ≠ зелёный выход»: чекпоинт фиксирует «бакет пройден», хотя одна из фаз внутри него не дала ничего. **Чинить:** бакет попадает в `done_buckets` только если ВСЕ фазы в нём отработали (или чекпоинт хранит фазу: `bucket:phase`), иначе — не помечать и дать следующему прогону повторить. Смотреть `orchestration/pipeline.py::run_cian_city_sweep` (`_ckpt`/`done_buckets`, ветка honest-status «фаза X отказала полностью»). **Тест по значению:** прогон, где houses-фаза отказала на всех домах бакета, не должен писать этот бакет в `done_buckets`; следующий прогон с этим чекпоинтом обязан снова зайти в houses (`houses_attempted > 0`). На main красный. **Приёмка на проде:** первый `cian_city_sweep` после фикса — `houses_attempted > 0`; прогон, пропустивший фазу по резюму, приёмкой не считается. Refs #3394, #3396, #3411.
Sign in to join this conversation.
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#3417
No description provided.