Loop infinito no envio de e-mails de resumo

Olá a todos.

Nosso servidor Discourse entrou em um loop infinito enviando e-mails sem parar. Aqui está a saída de shared/standalone/log/rails/production.log:

Entregue o e-mail 7db8eecd-c36a-419c-ae34-0561b08bae25@community.xx.cc (1322.2ms)
  Renderizado user_notifications/digest.text.erb (Duração: 50.1ms | Alocações: 12577)
  Renderizando user_notifications/digest.html.erb dentro de layouts/email_template
  Renderizado user_notifications/digest.html.erb dentro de layouts/email_template (Duração: 139.5ms | Alocações: 26910)
  Renderizando user_notifications/digest.text.erb
  Renderizado user_notifications/digest.text.erb (Duração: 71.7ms | Alocações: 13505)
Entregue o e-mail 5bbf2e54-96a8-437d-a032-69f98a00f22a@community.xx.cc (1485.2ms)
  Renderizando user_notifications/digest.html.erb dentro de layouts/email_template
  Renderizado user_notifications/digest.html.erb dentro de layouts/email_template (Duração: 70.9ms | Alocações: 20613)
  Renderizando user_notifications/digest.text.erb
  Renderizado user_notifications/digest.text.erb (Duração: 38.2ms | Alocações: 11390)

Isso começou a acontecer de repente (provavelmente quando o cron de resumo foi iniciado:

)

Agora, 1 núcleo está totalmente ocupado enviando e-mails de resumo.

  • Recriar o aplicativo não ajudou;

  • Atualizei para a versão mais recente — sem mudança;

  • Ativei “Desabilitar e-mails de resumo para todos os usuários” e recriei o aplicativo — sem mudança;

    #### Instalado
    
    ### 2.4.0.beta5
    

O que mais posso fazer? Como posso parar isso?
Obrigado antecipadamente.

1 curtida

Posso estar errado, mas acho que o que aconteceu foi que os e-mails de resumo foram enfileirados e agora estão sendo entregues. Eles continuarão sendo enviados até que todos sejam entregues.

Se eu estiver certo, você pode desativar os e-mails, localizar a tabela que os contém e excluí-los. No entanto, isso vai acontecer novamente na próxima vez que os e-mails de resumo forem enviados.

1 curtida

Sim, mas isso já está acontecendo há 3 dias. Todos os outros e-mails (como os de registro, por exemplo) não estão mais sendo entregues. A comunidade funciona, mas todo o envio de e-mails não.

Encontrei um problema muito semelhante: Extreme memory usage due to bad mail credentials. Parece que se trata de algum tipo de bug complicado.

A única maneira que encontrei para interromper isso foi remover o token de autenticação no meu provedor SMTP. O Discourse começou a exibir centenas de erros, e só depois disso a carga diminuiu. Restabeleci o token e agora tudo parece estar OK.

1 curtida

Você teve credenciais de e-mail incorretas?

@codinghorror Encontrei a causa raiz do problema. Nosso provedor de e-mail removeu (por motivos próprios e estúpidos) os registros de host verificados para nossa conta. Os registros de host eram usados para fornecer o campo from no e-mail com nosso host. Então, após eles fazerem isso, o Discourse entrou em um loop infinito. Acho que o fluxo do Discourse também tem um bug para esse caso, pois deveria relatar o erro e parar de carregar 1 núcleo em 100%.

Então a conta está correta. Mas o provedor de e-mail retorna um erro ao enviar o e-mail: “Host de envio incorreto” ou algo assim, e esse fluxo causa o problema.

2 curtidas

Concordo, este é um estado ruim e devemos lidar com isso de forma melhor.

1 curtida

Tudo voltou ao normal agora?

Sim. Depois que alterei as credenciais do e-mail.

1 curtida