Private
Public Access
1
0

Prix Jita : fiabiliser les lectures ESI et l'écriture concurrente du cache #25

Closed
opened 2026-11-05 10:49:07 +00:00 by mcmuzzle · 0 comments
Owner

Description

Trois défauts dans JitaPriceService, repérés en analysant un arrêt survenu avec le site ouvert sur PC et téléphone :

  1. Arrêt du débogueur : quand le budget de 8 s du repli ESI expire, l'annulation sort des boucles Parallel.ForEachAsync. Elle est bien rattrapée plus haut, mais le débogueur la signale comme non gérée et fige l'app. Sans débogueur, rien ne se passe : ce n'est pas un plantage en prod.
  2. Écriture concurrente : le cache est mis à jour en supprimant puis réinsérant les lignes. Deux sessions qui rafraîchissent les mêmes prix en même temps peuvent déclencher une erreur de clé dupliquée, non rattrapée dans le service.
  3. Erreurs réseau : seules les HttpRequestException sont gérées. Une réponse coupée ou un JSON invalide remonte en exception, alors qu'un échec réseau doit donner « prix inconnu ».

Attendu

  • Le budget ESI expire sans arrêter le débogueur, et l'avertissement reste écrit dans les logs.
  • Deux sessions peuvent rafraîchir les mêmes prix en même temps sans erreur.
  • Une réponse illisible donne un prix inconnu, pas une exception.
## Description Trois défauts dans `JitaPriceService`, repérés en analysant un arrêt survenu avec le site ouvert sur PC et téléphone : 1. **Arrêt du débogueur :** quand le budget de 8 s du repli ESI expire, l'annulation sort des boucles `Parallel.ForEachAsync`. Elle est bien rattrapée plus haut, mais le débogueur la signale comme non gérée et fige l'app. Sans débogueur, rien ne se passe : ce n'est pas un plantage en prod. 2. **Écriture concurrente :** le cache est mis à jour en supprimant puis réinsérant les lignes. Deux sessions qui rafraîchissent les mêmes prix en même temps peuvent déclencher une erreur de clé dupliquée, non rattrapée dans le service. 3. **Erreurs réseau :** seules les `HttpRequestException` sont gérées. Une réponse coupée ou un JSON invalide remonte en exception, alors qu'un échec réseau doit donner « prix inconnu ». ## Attendu - Le budget ESI expire sans arrêter le débogueur, et l'avertissement reste écrit dans les logs. - Deux sessions peuvent rafraîchir les mêmes prix en même temps sans erreur. - Une réponse illisible donne un prix inconnu, pas une exception.
mcmuzzle added this to the 0.0.9 milestone 2026-11-05 10:56:02 +00:00
Sign in to join this conversation.