Estimados,
La semana del 24 Mayo fuimos notificados, por parte de un pequeño grupo de clientes de incidentes en la resolución de las cuentas en sus despliegues de la plataforma. En particular se lograron establecer dos casos de falla: la cuenta no respondía (404) o se cargaba una cuenta incorrecta.
Para comprender el problema se debe entender que Modyo opera con con un esquema de múltiples cuentas y múltiples dominios que dependen de un sistema de ruteo dinámico interno que decide, según los atributos configurados, cual es la cuenta y sitio que debe ser desplegado en cada request, independiente si esta es de frontend o de la consola administrativa. Dicho componente de ruteo opera también con un sistema de caché basado en Redis que evita que la misma cuenta y el mismo sitio sean cargados desde la base de datos en las requests subsecuentes.
Luego de investigar exhaustivamente los dos escenarios de falla establecidos, se detectó un posible problema de thread safety en el componente de resolución de cuentas que hacía uso de variables de instancia en un lugar del framework en el que éstas no eran evaluadas de forma aislada. Se logró replicar el comportamiento y se generó un parche de seguridad que debería evitar que el problema se pueda volver a generar. El problema estuvo presente entre las versiones 9.1.4 y la 9.1.20 de la plataforma, afectando sólo a clientes empresariales con más de una cuenta configurada en sus despliegues.
Las siguientes correcciones fueron aplicadas en la versión 9.1.21:
- Remover el caché en Redis en la resolución de cuenta, para evitar persistencia de alguna eventual mala resolución
- Remover el uso de variables de instancia en el middleware de Rack de resolución (problema thread safety)
Los problemas relacionados con threads son difíciles de detectar y replicar, y en muchos casos van a tender a darse de una forma muy ocasional, afectando sólo en situaciones muy particulares. No obstante lo anterior, recomendamos encarecidamente realizar una actualización al última versión de la plataforma con el fin de evitar que el problema pueda volver a ocurrir.
Lamentamos los inconvenientes que el problema pudo haber ocasionado. Hasta la fecha sólo hemos sido notificados de un número muy reducido de casos.
Saludos cordiales,
José Antonio Silva
CTO