RSS El Diario ¿Qué Demonios?
Seguir
CódigoSOD: Los primeros 10,000
Alicia heredó un conjunto de aplicaciones empresariales desarrolladas internamente que requerían procesamiento por lotes, pero se encontró con una misteriosa excepción IllegalStateException causada por una consulta. La consulta en cuestión era "select * from data_import where id > 10000", lo que era problemático porque verificaba la existencia de filas y lanzaba una excepción si se encontraban algunas. La consulta debería haber sido una consulta COUNT(*) en lugar de devolver filas. El problema surgió porque el código utilizaba el ID para representar información de estado sobre el estado del registro.El programa actualizó el ID sumando 10000, insertó nuevos datos a partir del ID 1 y luego eliminó registros con IDs mayores que 10000. Este proceso se realizó dentro de un solo método sin transacciones ni manejo de errores, confiando en IDs secuenciales para rastrear fallas de procesamiento. El proceso comenzó a fallar cuando los datos entrantes superaron las 10,000 filas, lo que provocó que los INSERT fallaran. Alicia quería solucionar el proceso, pero su jefe optó por una solución rápida cambiando el umbral de ID de 10000 a 100000. Este cambio permitió que el proceso continuara funcionando en su estado roto. El problema subyacente permaneció sin resolver, y el proceso todavía dependía de un diseño defectuoso. La decisión de cambiar el umbral de ID probablemente se tomó debido a dependencias del proceso existente.