Parar uma leitura do Yugabyte reiniciar de matar silenciosamente um envio transacional

FixEmailService
Navios
4 de setembro de 2026 às 23:55 UTC
Autor
Kamo
Enviar
0220d6a

EmailTemplateService.sendToUser é o ponto final por trás de cada serviço a serviço e-mail transacional na plataforma, e foi @Transactional sobre três leituras: findById(org), a pesquisa do modelo, em seguida, a inicialização preguiçosa do org's linhas de domínio dentro da resoluçãoPrimaryDomain. O que é isto? gflag está desligado neste cluster, então YSQL mapeia todos os níveis de isolamento no instantâneo isolamento, e Yugabyte pode absorver uma leitura reiniciar de forma transparente APENAS quando a leitura é a primeira declaração da sua transacção. Esse domínio lido é o terceiro, então um reiniciar saiu como 40001 Reiniciar leitura necessária (query layer retry is not possible because this is não o primeiro comando na transação) e POST /api/email/templates/enviar respondeu 500 — intermitentemente, sem escrever em qualquer lugar do método, e sem motivo visível para o serviço que pediu O correio. Foi relatado como "usuários aterrissam em /verificação no kamo-register e não recebem e-mail até que pressionem Reenviar", que é quatro saltos de distância. Serviço de Segurança envia o Endereço-correio de verificação de **************** cujo @Transactional cobre a linha do token E a chamada de saída, e o registro endpoint somente registrou a falha - então um reinício aqui rolou o token para trás enquanto o site de registro ainda redirecionado para /verificação, uma tela que diz registrante um email está a caminho quando nenhum foi enviado e nenhum código existe. Reenviar correu o mesmo trabalho em uma nova transação e conseguiu passar, que foi o que fez ler como intermitente. Reiniciar a senha, receber, liderar e enviar as notificações na mesma chamada e estavam falhando da mesma forma. O envio agora não detém nenhuma transação, então cada leitura é implícita transação de declaração única — a forma única que Yugabyte reinicia de graça. Os dois escreve mover para EmailTemplateWrites, um bean SEPARATE porque uma auto-invocação nunca atinge o proxy e @Transactional em um método auto-invocado é inerte. incrementoUsage corre após SMTP com a captura fora do seu próprio limite e é nunca retroceder: um contador falhou relatando 500 para uma mensagem que já foi out é a inversão exata deste caminho sofrido quando o incrementoUsage foi executado pela última vez sem uma transacção. open- in- view está preso true em vez de deixado para o Boot padrão, porque o preguiçoso A carga de domínio agora depende disso. Não manter uma transação através do logotipo e o envio SMTP vale a pena ter por conta própria — o pool tem dez conexões de largura. TransactionalSendRatchetTest falha se a anotação voltar. EmailTemplateServiceTest já estava vermelho antes disto (um argumento de cinco anos verificar contra um envio de seis argumentos) e é verde novamente.

Todas as alterações

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços