Notre serveur Discourse est entré dans une boucle infinie, envoyant des e-mails sans arrêt. Voici la sortie de shared/standalone/log/rails/production.log :
Delivered mail 7db8eecd-c36a-419c-ae34-0561b08bae25@community.xx.cc (1322.2ms)
Rendered user_notifications/digest.text.erb (Duration: 50.1ms | Allocations: 12577)
Rendering user_notifications/digest.html.erb within layouts/email_template
Rendered user_notifications/digest.html.erb within layouts/email_template (Duration: 139.5ms | Allocations: 26910)
Rendering user_notifications/digest.text.erb
Rendered user_notifications/digest.text.erb (Duration: 71.7ms | Allocations: 13505)
Delivered mail 5bbf2e54-96a8-437d-a032-69f98a00f22a@community.xx.cc (1485.2ms)
Rendering user_notifications/digest.html.erb within layouts/email_template
Rendered user_notifications/digest.html.erb within layouts/email_template (Duration: 70.9ms | Allocations: 20613)
Rendering user_notifications/digest.text.erb
Rendered user_notifications/digest.text.erb (Duration: 38.2ms | Allocations: 11390)
Cela a commencé soudainement (probablement lorsque le cron des résumés a démarré :
Je pourrais me tromper, mais je pense que ce qui s’est passé, c’est que les e-mails de résumé ont été mis en file d’attente et qu’ils sont maintenant en cours de livraison. Cela va continuer jusqu’à ce qu’ils soient tous envoyés.
Si j’ai raison, vous pouvez désactiver les e-mails, puis trouver la table qui les contient et les supprimer. Mais cela se reproduira la prochaine fois que les e-mails de résumé seront envoyés.
Oui, mais cela dure déjà depuis trois jours. Tous les autres e-mails (comme ceux d’inscription, par exemple) ne sont plus livrés. La communauté fonctionne, mais aucun e-mail n’est envoyé.
J’ai trouvé un problème très similaire : Extreme memory usage due to bad mail credentials. Cela ressemble donc à un bug astucieux.
La seule solution que j’ai trouvée pour arrêter cela a été de supprimer le jeton d’authentification chez mon fournisseur SMTP. Discourse a commencé à afficher des centaines d’erreurs, et ce n’est qu’après cela que la charge a diminué. J’ai restauré le jeton et maintenant tout semble correct.
@codinghorror J’ai trouvé la cause racine du problème. Notre fournisseur de messagerie a supprimé (pour leurs propres raisons stupides) les enregistrements d’hôte vérifiés de notre compte. Ces enregistrements d’hôte servaient à fournir le champ from dans l’e-mail avec notre hôte. Donc, après qu’ils l’ont fait, Discourse est entré dans une boucle infinie. Je pense que le flux de Discourse présente également un bug dans ce cas. Il devrait signaler l’erreur et arrêter de charger un cœur à 100 %.
Donc, le compte est correct. Mais le fournisseur de messagerie renvoie une erreur lors de l’envoi de l’e-mail : « Mauvais hôte d’envoi » ou quelque chose dans ce genre, et ce flux provoque le problème.