[Bloquant v1.0] _parse_bucket_ts : datetime.fromtimestamp non gardé peut tuer tout le cycle de poll pendant des jours #78
Labels
No labels
v1.0 · bloquant
v1.0 · majeur
v1.0 · mineur
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
mat/homeassistant-comwatt#78
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Problème
Dans
_parse_bucket_ts(custom_components/comwatt/coordinator.py:113-116), la branche numérique appelledatetime.fromtimestamp(ts, tz=UTC)sans try/except, alors que le contrat de la fonction est de retournerNonepour toute valeur non parsable. Une epoch en microsecondes, une valeur aberrante (1e15) ou une chaîne numérique délirante ("99999999999999999999"viaint(s)lignes 113-114) lèveOverflowError/ValueError/OSError.Les appelants (
coordinator.py:568côté site,coordinator.py:809côté device) ne protègent pas l'appel : l'exception remonte jusqu'auexcept Exceptionglobal de_async_update_data→UpdateFailed.Risque
Tous les capteurs passent indisponibles à chaque poll, pendant toute la durée où la valeur fautive reste dans la fenêtre de requête (8 jours côté site, 24 h côté device). L'intégration est morte pendant des jours à cause d'une seule valeur aberrante de l'API.
Recommandation
datetime.fromtimestampdanstry/except (ValueError, OverflowError, OSError) → return None.exceptdudatetime.fromisoformat(ligne 126-128) àTypeError.Constaté lors de la review de code pré-v1.0 (v0.8.1).