Regresión que causa notificaciones de correo electrónico erróneas e incorrectas enviadas a todos los usuarios en la cola de aprobación durante más de 60 días

En Discourse, puedes especificar un modo en el que las cuentas de usuario se crean al registrarse, pero deben ser aprobadas por un miembro del personal antes de que la cuenta se active. Esto es común, por ejemplo, en sitios basados en suscripciones.

Hubo dos aspectos importantes sobre cómo funcionaba esto:

  1. Nunca se enviaron notificaciones negativas cuando el personal rechazaba cuentas; solo se enviaba una única notificación positiva cuando el personal aprobaba las cuentas.

  2. Cualquier elemento en la cola de revisión, ya sea una publicación o una cuenta, se deniega por defecto después de 60 días si un moderador no actúa sobre el elemento de la cola de revisión durante ese período. Esto ha existido en muchas versiones anteriores de Discourse, ya que se eligió este enfoque como “seguro por defecto”.

Lamentablemente, cuando añadimos una nueva función solicitada para informar a los usuarios por qué fueron rechazados, no nos dimos cuenta de que la combinación de los puntos #1 y #2 mencionados anteriormente causaría que Discourse enviara notificaciones negativas individuales a todos los usuarios que estuvieran en la cola de aprobación durante más de 60 días.

Esas notificaciones por correo electrónico se veían así:

y decían, bajo la marca del cliente,

Un miembro del personal rechazó su cuenta en {brand}.

El envío de este mensaje a tantas cuentas “rechazadas” ha causado problemas para nuestros clientes alojados. Lamentamos profundamente este error: es completamente nuestra culpa en Discourse, y toda la responsabilidad recae sobre nosotros.

Actualmente estamos trabajando con nuestros clientes para hacer todo lo posible para enmendar la situación.

Queremos ser muy claros: este es nuestro error y enviamos un correo electrónico muy confuso y mal redactado a muchos de sus clientes, lo que provocó una considerable interrupción e incluso posible pérdida de ingresos debido a la cancelación de suscripciones por parte de los clientes. Lamentamos mucho esto, y lo mínimo que podemos hacer es informar a todos que es un problema de Discourse; nosotros en Discourse enviamos incorrectamente ese correo electrónico negativo. Somos plenamente responsables de ese error y de sus consecuencias. Si recibió ese correo electrónico, no fue por culpa de nadie más que de nosotros: de Discourse.

Entendemos lo grave que es esto. Continuamos trabajando estrechamente con el proveedor de membresía y nuestros clientes afectados para asumir la responsabilidad de nuestras acciones y mejorar las cosas para que esto no vuelva a ocurrir.

También ofrecemos el próximo mes de alojamiento de este cliente de forma gratuita, como compensación por los problemas que hemos causado. Lamentamos sinceramente el error y la forma en que afectó a nuestros clientes. Sin duda revisaremos nuestros procesos para asegurarnos de que este tipo de problema sea menos probable en el futuro.

Jeff Atwood
CEO, Discourse

28 Me gusta

Esto es lo que hicimos para solucionar el problema y evitar que vuelva a ocurrir:

Este commit es un 3 en 1, ya que solucionó tres problemas que provocaron este error y nos impedían encontrar rápidamente la causa raíz.

  1. Nos aseguramos de que los “registros de correo electrónico” no se eliminen cuando se borra una cuenta de usuario. Si hubiéramos tenido los registros de correo de usuarios eliminados, habríamos podido ver rápidamente todos esos correos de rechazo que se enviaron.

  2. Aseguramos que en todo el código donde se elimina un usuario, se establezca correctamente el “contexto” para poder identificar claramente dónde y por qué se eliminó un usuario. Había varios lugares en el código donde el contexto no se establecía, por lo que no sabíamos por qué se eliminaron esos usuarios y tuvimos que revisar el código para averiguarlo.

  3. Corregimos el error real y ya no se enviarán correos de rechazo a los usuarios de revisión eliminados automáticamente.

Todos estos cambios fueron acompañados de pruebas para asegurarnos de que no habrá regresiones.

18 Me gusta