fix(scraper-kit): дрейн-метка interrupted=1 у domclick sweep и трёх full-load — резюм после SIGTERM для всех функций с чекпоинтом #3363
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3363
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/3355-drain-mark-fullloads"
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?
Closes #3355 (follow-up #3333/#3346). Четыре функции с живым
done_bucketsфинализировали дрейн чистымdone— резюм их не брал.run_cian_full_loadexcept RuntimeError "shutdown"skip_setизdone_buckets, job с_pick_resumedonerun_yandex_full_loadresume_run_id— админский POST → метка диагностическая по фактуdonerun_avito_full_loadavito_full_load+_exhaustive, #3315/#3358)donerun_domclick_city_sweepskip_buckets, чекпоинт унаследован при claim (#3074)donedone_bucketsв payload не добавлялся (у full-load'ов уже был, у domclick — jsonb-мерж хранит унаследованный). Статус нулевого дрейна =done, honest-status гейты его не диверят — закреплено тестом (покраснеет при изменении гейтов).Тесты
test_3355_drain_mark_full_loads.py:356 passed, 1 skipped(-k drain/sweep/resume/checkpoint/full_load). Фальсификация (откат только avito-хунка):avito full-load: дрейн без метки — бан-бюджет тратится на уже собранные бакеты+дрейн со статусом 'done' не подхвачен резюмом: {… 'resume_reason': 'status_done'}; cian/yandex/domclick зелёные.Follow-up
run_yandex_full_loadбез job'а в планировщике — отдельный issue (нужен ли он в расписании).После #3330/#3346 резюм берёт 'done' только с counters.interrupted=1, но четыре функции с живым чекпоинтом done_buckets финализировали дрейн чистым 'done': cian/yandex/avito full-load (ветка RuntimeError("shutdown")) и domclick city sweep (дрейн до SERP). Оборванный обход был неотличим от полного, а собранные бакеты никто не подхватывал — у avito это ещё и бан-бюджет (#3315). done_buckets в domclick-payload не добавляем: чекпоинт унаследован при claim (#3074), jsonb-мерж его сохраняет. Closes #3355Датированная приёмка (первый реальный SIGTERM-drain, деплой 07.09 02:36 UTC) — ОТРИЦАТЕЛЬНЫЙ результат для app-task бэкфиллов: in-flight были
cian_detail_backfill6167 иcian_history_backfill6173; после «drain exceeded 100s grace — hard-cancelling» обе строки осталисьrunningи boot-reap нового контейнера сделал ихzombie(boot_reaped=true),interruptedне записан. Для kit-свипов/full-load случай пока не наблюдался (в момент деплоя их не было). Разбор и фикс в одном месте (kit-scheduler при hard-cancel) — #3391.