CodeSOD: Identifier une sieste Note

CodeSOD: Identifier une sieste

Un développeur a rencontré un bug particulier où l'enregistrement de nouvelles entrées provoquait parfois des erreurs de clé primaire en double. Ce problème provenait du générateur d'ID de message personnalisé de l'application, qui utilisait l'horodatage actuel. Le générateur tentait de gérer les requêtes rapides en dormant pendant une seconde en cas de collision d'horodatages. Cependant, cette approche était inefficace et constituait essentiellement un compteur auto-incrémenté complexe. Une faille critique était que le previousId n'était jamais mis à jour, ce qui signifiait que les collisions n'étaient pas empêchées. Le problème était exacerbé car l'application était distribuée sur plusieurs serveurs. Cette distribution signifiait que même un previousId correctement mis à jour n'empêcherait pas les collisions d'ID entre différents nœuds. Les solutions potentielles impliquent l'incorporation d'identificateurs spécifiques à la machine, tels que les adresses MAC, ou l'utilisation de grands nombres aléatoires. Alternativement, le développeur suggère de s'appuyer sur la fonctionnalité d'auto-incrémentation native de la base de données au lieu d'un code personnalisé. Le débit actuel était suffisamment faible pour que la base de données puisse probablement gérer efficacement la génération d'ID.