CodeSOD : Les Premiers 10 000 Note

CodeSOD : Les Premiers 10 000

Alicia a hérité d'un ensemble d'applications d'entreprise développées en interne qui nécessitaient un traitement par lots, mais elle a rencontré une exception mystérieuse IllegalStateException causée par une requête. La requête en question était "select * from data_import where id > 10000", ce qui posait problème car elle vérifiait l'existence de lignes et lançait une exception si des lignes étaient trouvées. La requête aurait dû être une requête COUNT(*) au lieu de renvoyer des lignes. Le problème est survenu car le code utilisait l'ID pour représenter des informations d'état sur le statut de l'enregistrement.Le programme mettait à jour l'ID en ajoutant 10000, insérait de nouvelles données à partir de l'ID 1, puis supprimait les enregistrements avec des ID supérieurs à 10000. Ce processus était effectué dans une seule méthode sans transactions ni gestion des erreurs, en s'appuyant sur des ID séquentiels pour suivre les échecs de traitement. Le processus a commencé à échouer lorsque les données entrantes ont dépassé 10 000 lignes, provoquant l'échec des INSERT. Alicia voulait résoudre le problème, mais son patron a opté pour une solution rapide en changeant le seuil d'ID de 10000 à 100000. Ce changement a permis au processus de continuer à fonctionner dans son état défectueux. Le problème sous-jacent est resté non résolu et le processus dépendait toujours d'une conception défectueuse. La décision de modifier le seuil d'ID a probablement été prise en raison des dépendances à l'égard du processus existant.