Emails de digest não estão sendo enviados para todos os usuários – Precisando de ajuda para depurar

@Canapin nós também não vimos nenhuma documentação que aponte para essa configuração estar relacionada a e-mails… é bom saber onde ela fica, @Heliosurge, então obrigado por apontá-la.

Mais um dia sem nenhum resumo criado. Postamos um novo tópico para acionar as coisas nas últimas 24 horas e nada…

Alguém tem mais alguma ideia aqui? Estamos perdendo algum log em algum lugar? Algo está falhando em algum lugar que possamos ver e corrigir?

Pensando nisso, estamos assumindo que o problema está relacionado ao número de usuários no sistema. O estranho é que isso não mudou em mais de 10 desde o lançamento no Discourse.

Temos aproximadamente:

  • 1 milhão de usuários ativos
  • 2,4 milhões de usuários desativados

Talvez haja algum timeout estranho ocorrendo quando o sistema faz essa consulta? Onde veríamos essa saída se falhar?

Novamente, parece estranho que esse seja o problema, já que os resumos estavam sendo enviados, pelo menos em uma quantidade limitada, uma ou duas semanas atrás.

1 curtida

Talvez, ou algo mais que torna o resumo vazio, e por isso não é enviado aos usuários.

Eu não sei como um resumo é gerado. Não sei se ele leva em consideração categorias ignoradas pelo usuário, ou algo assim.

Suponho que seus usuários não receberão o resumo se você o enviar manualmente através do console do Rails?

user = User.find_by(username: 'user-name')
Jobs.enqueue(:user_email, type: :digest, user_id: user.id)

Alguns segundos após executar isso, você deverá ver os jobs processados do Sidekiq aumentarem em 1, mas se você tiver um fórum grande, pode haver muitos jobs do Sidekiq a qualquer momento, então pode ser difícil ver se houve um aumento.
Você pode usar o botão Live Poll para vê-lo em tempo real:

Pelo meu teste, se eu executar o script do Rails para enviar o resumo a um usuário, mas o resumo estiver vazio:

  • porque o usuário o recebeu anteriormente
  • ou desabilitou os resumos de e-mail em seu perfil
  • etc…

Então o número de jobs processados do Sidekiq aumentará em um, mas nenhum e-mail será enviado, e não haverá nova entrada em /admin/email/sent.

Talvez você possa registrar os jobs do Sidekiq processados para ver se há alguma pista neles. Eu procurei um pouco, mas não tenho certeza se ele registra quais jobs foram processados por padrão.

Eu sinto que há uma explicação lógica e boa para o motivo pelo qual os usuários não recebem o resumo. O job pode ser processado, mas o resumo pode estar vazio, o que explicaria por que não há rastros dele.
Eu verificaria novamente minuciosamente todas as configurações dos usuários em questão, seus níveis de notificação, suas categorias rastreadas e coisas do tipo.

1 curtida

Seria bastante fácil adicionar uma saída de depuração ao mecanismo de envio de digest.
Você tem um site de staging disponível, onde se pode testar sem comprometer sua instância de produção?

Lá, poderia testar se ocorrem timeouts em consultas, por exemplo. Naive, eu esperaria que os timeouts fossem vistos nos registros.

Além disso, pode-se aprimorar a consulta que gera as pessoas alvo com saída estatística.

Tudo isso não é difícil em um ambiente sandboxed, mas pode ser perigoso em produção.

2 curtidas

Continua em: