Detenga una lectura de Yugabyte de matar silenciosamente a un envío transaccional

FixEmailService
Se descapó
4 de septiembre de 2026 a las 23:55 UTC
Autor
Kamo
Compromit
0220d6a

EmailTemplateService.sendToUser es el punto final detrás de cada servicio a servicio correo electrónico transaccional en la plataforma, y fue "Transactional" sobre tres lecturas: findById(org), la búsqueda de plantillas, luego la floja inicialización de la org's filas de dominio dentro de resoluciónPrimaryDomain. El **************** gflag está apagado en este cúmulo, así que YSQL mapea cada nivel de aislamiento en instantáneas aislamiento, y Yugabyte puede absorber una lectura reiniciar transparentemente SOLO cuando se lee es la primera declaración de su transacción. Esa lectura de dominio es la tercera, así que un Reentonó como 40001 Reección de reinicio requerido (el reinicio de la capa de la secuencia no es posible porque esto es no el primer comando de la transacción) y POST /api/email/templates/envío contestó 500 . intermitentemente, sin escritura en cualquier lugar del método, y sin motivo visible al servicio que pidió el correo. Se informó como "usuarios aterrizan en /verificación en kamo-registro y no reciben correo electrónico hasta que pulsen Resend, que está a cuatro saltos. SecurityService envía el mail-verificación de la dirección de **************** cuya transacción cubre la fila sida Y la llamada de salida, y el registro endpoint sólo registró el fracaso - por lo que una reanudación aquí rodó la sida hacia atrás mientras el sitio de registro todavía redirigido a /verificación, una pantalla que dice el registrante un correo electrónico está en camino cuando no se envió ninguno y no existe ningún código. Reenviar corrió el mismo trabajo en una nueva transacción y salió adelante, que es lo que lo hizo Lea como intermitente. Reset de contraseña, bienvenida, plomo y notificaciones de documentos se sientan en la misma llamada y estaban fallando de la misma manera. El envío ahora no tiene transacción, así que cada lectura es su propia-inade implícita transacción de un solo estado de acuerdo - la única forma Yugabyte se reinicia de forma gratis. Los dos Escribe el paso a EmailTemplateWrites, un frijol SEPARATE porque una auto-invocación Nunca llega al proxy y a lo transaccional en un método auto-invocado es inerte. aumentoUsage corre después de SMTP con la captura fuera de su propio límite y es nunca rezgándome: un contrarreuno fallido reportando 500 por un mensaje que ya se ha ido fuera es la inversión exacta que este camino sufrió cuando el aumentoUsage corrió por última vez sin una transacción. la visión abierta se fija en verdad en lugar de dejar a la Bota por defecto, porque el perezoso La carga de dominio depende ahora de ello. No tener una transacción a través del logotipo gana y el envío SMTP vale la pena tener por sí solo. la piscina es de diez conexiones de ancho. TransactionalSendRatchetTest falla si la anotación vuelve. EmailTemplateServiceTest ya estaba rojo antes de esto (un rancio de cinco engulle verificar contra un envío de seis engures) y vuelve a estar verde.

Todos los cambios

Como lo que ves enviaste?

Cada una de estas actualizaciones aterriza en su espacio de trabajo automáticamente. Empieza gratis y verlo crecer semana tras semana.

Arranzar gratis para siempreVer Precios