|
All checks were successful
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 9s
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 / openapi-codegen-check (pull_request) Successful in 2m5s
CI / backend-tests (pull_request) Successful in 17m2s
`objective_scrape_runs` не подметалась ничем: `worker_ready` знал только про `kn_scrape_runs` и `nspd_geo_jobs`. На проде 20.08.2026 в ней висело 6 строк `status='running'` с 17.05 — 94 суток, при 71 `done` и НИ ОДНОМ `failed`. Отсутствие `failed` — след отравления сессии, из-за которого `_finish_run(status='failed')` не мог записаться (причина починена #2972). Причина устранена, но жёсткое убийство воркера (редеплой, OOM) по-прежнему оставляет `running` навсегда: у Объектива нет ни своего cleanup_zombies, ни снапшота для resume. Тот же инвариант, что у kn: на worker_ready активных воркеров нет, значит любая строка `running` осиротела. Resume не ставим — возобновлять нечего. `finished_at` ставится НЕ NOW(), а `COALESCE(heartbeat_at, started_at)`: прогон, умерший 94 дня назад, не должен читаться как «завершён только что». Монитору свежести это безразлично в обе стороны — `last_success_at` и `recent_output` считаются только по `status='done'`, а `last_attempt_at`/`last_status` — по `started_at`, так что зомби-строки не попадают в него ни одним столбцом (проверено по коду _FRESHNESS_SOURCES, а не предположено). Двусторонне: против origin/main три теста красные по существу («не трогает objective_scrape_runs», функция при этом отрабатывает 4 запроса — то есть краснота не от отсутствующего символа). Мутационно проверены оба контроля: снятие `WHERE status='running'` роняет test_only_running_rows_are_touched, замена на `finished_at = NOW()` роняет test_finished_at_is_last_sign_of_life_not_now. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| tasks | ||
| test_2464_objective_run_not_stuck.py | ||
| test_2464_objective_zombie_sweep.py | ||
| test_2464_zombie_any_running.py | ||
| test_backfill_zone_regulations.py | ||
| test_cbr_macro_sync.py | ||
| test_genplan_zones_sync.py | ||
| test_ird_harvest.py | ||
| test_krt_geometry_sync.py | ||
| test_nspd_geo.py | ||
| test_opportunity_harvest.py | ||
| test_planning_harvest.py | ||
| test_reservation_ingest.py | ||
| test_riasurt_sverdl_harvest.py | ||
| test_rosstat_macro_sync.py | ||
| test_scrape_cadastre.py | ||
| test_scrape_freshness_check.py | ||
| test_scrape_kn_catalog_flats.py | ||
| test_scrape_kn_catalog_objects.py | ||
| test_supply_layers_refresh.py | ||
| test_zone_regulation_refresh.py | ||