monitoring: marge d une rotation sur le seuil stale par source
Sans marge, les sources en bord de cycle oscillent entre ok et stale (jobka/lassonde à 2,3 h pour un seuil de 2 h ; fabrika en bord de rotation de ~11 h pour un seuil de 24 h). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 changed file +6 −1
modified
src/monitoring/connector_health.py
+6 −1
@@ -468,7 +468,12 @@ def _check_service(service: str, now: float) -> dict[str, Any]: | ||
| 468 | 468 | |
| 469 | 469 | by_source = parse_sync_entries(payload) |
| 470 | 470 | app_entry = build_app_entry(service, payload, by_source, now) |
| 471 | − source_stale_after = app_stale_after * rotation_factor(payload, by_source) | |
| 471 | + # Marge d'une rotation supplémentaire (+1) : une source qui repasse | |
| 472 | + # toutes les ~N h dérive naturellement de quelques dizaines de minutes | |
| 473 | + # d'un cycle à l'autre — sans marge, les sources en bord de cycle | |
| 474 | + # oscillent entre ok et stale (ex. jobka/lassonde à 2,3 h pour un seuil | |
| 475 | + # de 2 h, fabrika en bord de rotation de ~11 h pour un seuil de 24 h). | |
| 476 | + source_stale_after = app_stale_after * (rotation_factor(payload, by_source) + 1) | |
| 472 | 477 | |
| 473 | 478 | with session_scope() as session: |
| 474 | 479 | rows = _load_rows(session, service) |
| 475 | 480 | |