[Mineur] Race sur capacity_map / self.data pendant _fetch_all #102

Open
opened 2026-08-26 05:33:45 +00:00 by mat · 0 comments
Owner

Problème

Pendant les 10-20 s du poll :

  • coordinator.py:418 : self.capacity_map = {} passe par un état vide/partiel dans le thread executor ;
  • stream.py:197-206 : le consommateur stream lit capacity_map et écrit dans self.data["devices"] hors lock.

Un burst stream tombant dans la fenêtre perd ses mappages (mesures de puissance/état silencieusement droppées, légère dégradation de l'intégration trapézoïdale) et les écritures dans l'ancien dict data sont perdues au swap.

Recommandation

  1. Construire la nouvelle map dans une variable locale puis faire l'assignation une seule fois à la fin (le problème est surtout la fenêtre {} intermédiaire) ; idem pour les métriques.
  2. Ou prendre le lock dans _async_process_batch autour de la lecture de capacity_map.

Constaté lors de la review de code pré-v1.0 (v0.8.1).

## Problème Pendant les 10-20 s du poll : - `coordinator.py:418` : `self.capacity_map = {}` passe par un état **vide/partiel** dans le thread executor ; - `stream.py:197-206` : le consommateur stream lit `capacity_map` et écrit dans `self.data["devices"]` **hors lock**. Un burst stream tombant dans la fenêtre perd ses mappages (mesures de puissance/état silencieusement droppées, légère dégradation de l'intégration trapézoïdale) et les écritures dans l'ancien dict `data` sont perdues au swap. ## Recommandation 1. Construire la nouvelle map dans une variable locale puis faire l'assignation **une seule fois** à la fin (le problème est surtout la fenêtre `{}` intermédiaire) ; idem pour les métriques. 2. Ou prendre le lock dans `_async_process_batch` autour de la lecture de `capacity_map`. --- Constaté lors de la review de code pré-v1.0 (v0.8.1).
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
mat/homeassistant-comwatt#102
No description provided.