Digest-E-Mails werden nicht an alle Benutzer gesendet – Brauche Hilfe beim Debuggen

@Canapin Wir haben auch keine Dokumentation gesehen, die auf diese Einstellung in Bezug auf E-Mails hinweist… es ist gut zu wissen, wo sie sich befindet, @Heliosurge, danke, dass du darauf hingewiesen hast.

Ein weiterer Tag ohne erstellten Digest. Wir haben in den letzten 24 Stunden ein neues Thema gepostet, um Dinge auszulösen, und nichts…

Hat jemand noch andere Ideen? Fehlt uns irgendwo ein Protokoll? Schlägt etwas fehl, das wir sehen und korrigieren können?

Wenn ich darüber nachdenke, gehen wir davon aus, dass das Problem mit der Anzahl der Benutzer im System zusammenhängt. Seltsam ist, dass sich dies seit der Einführung in Discourse nicht um mehr als 10 geändert hat.

Wir haben ungefähr:

  • 1 Million aktive Benutzer
  • 2,4 Millionen deaktivierte Benutzer

Vielleicht tritt ein seltsamer Timeout auf, wenn das System diese Nachschlageoperation durchführt? Wo würden wir diese Ausgabe sehen, wenn sie fehlschlägt?

Auch hier scheint es seltsam, dass dies das Problem wäre, da die Digests vor ein oder zwei Wochen zumindest in begrenztem Umfang gesendet wurden.

1 „Gefällt mir“

Vielleicht, oder etwas anderes, das den Digest leer macht und ihn somit nicht an die Benutzer sendet.

Ich weiß nicht, wie ein Digest erstellt wird. Ich weiß nicht, ob er Kategorien berücksichtigt, die vom Benutzer ignoriert werden, oder ähnliches.

Ich nehme an, Ihre Benutzer erhalten den Digest nicht, wenn Sie ihn manuell über die Rails-Konsole senden?

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

Ein paar Sekunden nach der Ausführung dieses Befehls sollten Sie sehen, wie die verarbeiteten Jobs von Sidekiq um 1 gestiegen sind. Wenn Sie jedoch ein großes Forum haben, kann es jederzeit viele Sidekiq-Jobs geben, sodass es schwierig sein kann zu erkennen, ob sie gestiegen sind.
Sie können die Live-Umfrage-Schaltfläche verwenden, um sie in Echtzeit anzuzeigen:

Aus meinen Tests: Wenn ich das Rails-Skript ausführe, um den Digest an einen Benutzer zu senden, der Digest aber leer ist:

  • weil der Benutzer ihn bereits erhalten hat
  • oder E-Mail-Zusammenfassungen in seinem Profil deaktiviert hat
  • usw.

Dann erhöht sich die Anzahl der verarbeiteten Sidekiq-Jobs um eins, aber es wird keine E-Mail gesendet und es gibt keinen neuen Eintrag unter /admin/email/sent.

Vielleicht könnten Sie die verarbeiteten Sidekiq-Jobs protokollieren, um zu sehen, ob es darin Hinweise gibt. Ich habe ein wenig gesucht, bin mir aber nicht sicher, ob standardmäßig protokolliert wird, welche Jobs verarbeitet wurden.

Ich glaube, es gibt eine logische, gute Erklärung dafür, warum die Benutzer den Digest nicht erhalten. Der Job wird möglicherweise verarbeitet, aber der Digest ist möglicherweise leer, was erklären würde, warum keine Spur davon vorhanden ist.
Ich würde die Einstellungen aller betroffenen Benutzer, ihre Benachrichtigungsstufen, ihre verfolgten Kategorien und ähnliches noch einmal gründlich überprüfen.

1 „Gefällt mir“

Es wäre ziemlich einfach, Debug-Ausgaben in die Versandmaschine für den Digest hinzuzufügen.
Haben Sie eine Staging-Seite verfügbar, auf der man testen kann, ohne Ihre Produktionsinstanz zu beeinträchtigen?

Dort könnte man zum Beispiel testen, ob Timeouts bei Abfragen auftreten. Naiv betrachtet würde ich erwarten, dass Timeouts in den Logs sichtbar sind.

Man könnte die Abfrage, die die gezielten Personen erstellt, zusätzlich mit statistischen Ausgaben anreichern.

All dies ist in einer sandboxartigen Umgebung nicht schwierig, in der Produktion allerdings gefährlich.

2 „Gefällt mir“

Fortsetzung unter: