Ein Chat-Kanal zeigt keine Nachrichten an und speichert keine

Ich habe vor ein paar Stunden ein Upgrade durchgeführt, und jetzt zeigen alle Kanäle, die eine benutzerdefinierte Gruppe haben, einen leeren Kanal an. Ich kann Nachrichten schreiben und senden, aber wenn ich mich abmelde oder die Seiten aktualisiere, hat der Kanal keine Historie.

Die Protokolle zeigen Folgendes:

Message

NoMethodError (undefined method `replies_count' for nil:NilClass)
(eval):17:in `_fast_attributes'
app/controllers/application_controller.rb:545:in `render_json_dump'
app/controllers/application_controller.rb:532:in `render_serialized'
app/controllers/application_controller.rb:414:in `block in with_resolved_locale'
app/controllers/application_controller.rb:414:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:369:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'

Backtrace

plugins/chat/app/serializers/chat/message_serializer.rb:161:in `thread_reply_count'
(eval):17:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:89:in `block in _serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `map'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `_serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:73:in `serializable_array'

Env

HTTP HOSTS: foorumi.katiska.eu

Ideen?

Bearbeiten:
Wenn das etwas bedeutet, waren die Kanäle, die sich schlecht verhielten, zuvor Unterkategorien, aber ich habe diese zu Top-Kategorien geändert.

Aber meine Benutzer behaupten, dass die Dinge vor dieser Änderung kaputt waren.

Hallo,

haben Sie zu irgendeinem Zeitpunkt versucht, experimentelle (und versteckte) Thread-Einstellungen zu verwenden?

Ich habe vor langer Zeit etwas geändert, aber… ich kann mich nicht erinnern, was, aber ich bin mir ziemlich sicher, dass es etwas war, das später nicht mehr experimentell war.

Haben Sie etwas im Sinn?

Es ist immer noch experimentell und versteckt, und ich meine, Sie haben das Recht, damit zu spielen :slight_smile: Ich versuche nur, die Liste der möglichen Probleme einzugrenzen.
Der Fehler zeigt deutlich, dass wir versuchen, auf Code zuzugreifen, der nicht zugegriffen werden sollte, wenn noch nie ein Thread erstellt wurde, daher ist es überraschend.

Wenn und wann ich nur die Dinge geändert habe, die ich hier gefunden habe, und die Suche nichts Relevantes gezeigt hat.

Kann Rails anzeigen, was nicht mehr Standard ist?

Ich werde dies in den nächsten 30 Minuten zusammenführen, das wird Ihr Problem beheben. Wir werden dies nächste Woche weiter untersuchen, aber ich möchte nicht, dass Sie das ganze Wochenende damit blockiert sind.

4 „Gefällt mir“

Großartig!

Ich möchte trotzdem verstehen, was ich kaputt gemacht habe… Ich bin mir ziemlich sicher, dass ich früher nur (zu dieser Zeit) neue Einstellungen für Suchverbesserungen und ähnliches geändert habe.

Aber wenn ich ganz ehrlich bin… Ich neige dazu, etwas auszuprobieren, wenn es die Themen irgendwie besser machen kann, und wenn nichts passiert, vergesse ich es sofort wieder.

(Und ich nerve alle wegen der faulen Dokumentation :man_facepalming: )

Ich habe im Moment keine bessere Antwort, aber wir werden das nächste Woche untersuchen. Ich habe es gerade zusammengeführt. Ich gehe offline, lass es mich wissen, wenn es das Problem nicht behebt, ich schaue morgen nach.

2 „Gefällt mir“

Zuerst: Deine Korrektur hat nicht geholfen. Tut mir leid. Oder sie hat geholfen – dieser Fehler war ein wenig seltsam.
Bitte versuche, mir zu folgen :wink:
Ich habe 5 Kanäle:

  • drei für TL1
  • einen für Mitarbeiter
  • einen für eine benutzerdefinierte Gruppe von 5 Personen

Ich habe alle außer dem Mitarbeiterkanal aus den Unterkategorien in die oberste Ebene verschoben.
Dann habe ich ausprobiert, wie die Kategorie-Vorschau-Komponente funktioniert, aber sie war nicht das, was ich brauchte, also habe ich sie deaktiviert. Direkt danach habe ich einen Rebuild durchgeführt, um das Category Lockdown Plugin zu erhalten.
Es funktionierte, außer dass ich einige seltsame Probleme mit dem FKB Pro Theme und den Login/Signup-Modals hatte – diese zeigten nur ein sich drehendes Ladesymbol. Das passierte meines Wissens nur mit meinem iPad.
Zu diesem Zeitpunkt stellte ich fest, dass der Chat-Kanal der benutzerdefinierten Gruppe nicht mehr funktionierte. Außerdem zeigten die Mitarbeitergruppe und 2 der 3 TL1-Gruppen nur sehr aktuelle Nachrichten an. Eine TL1-Gruppe war intakt.
Ich habe den abgesicherten Modus ausprobiert und die meisten Plugins über die Einstellungen deaktiviert. Keine Hilfe und ich habe dieses Thema eröffnet.
Lang und kurz und nach mehreren Rebuilds, bei denen Plugins entfernt und wieder aktiviert wurden:

  • Der Mitarbeiterkanal und zwei TL1-Kanäle sind Kanäle mit geringem Datenverkehr und ich habe total vergessen, dass ich dort die 14-Tage-Regel verwende; es gab also keine Probleme.
  • Der Kanal der benutzerdefinierten Gruppe war kaputt, wenn ich sowohl das Data Explorer als auch das Category Lockdown Plugin installiert hatte, und das Aktivieren/Deaktivieren spielte keine Rolle.
  • Ein Rebuild ohne diese beiden Plugins hat diesen einen kaputten Kanal behoben. Als ich mit beiden Plugins einen Rebuild durchführte, war dieser Kanal immer noch in Ordnung.
    Meine ungebildete Vermutung ist, dass etwas schiefgelaufen ist, als ich zum ersten Mal Kategorie-Vorschauen ausprobiert habe, dann habe ich sie deaktiviert, dann einen Rebuild mit Category Lockdown durchgeführt und der letzte Schritt war das Löschen von Kategorie-Vorschauen. Die Behebung einiger bizarrer SQL-Fehler oder falscher Bisse erforderte die vollständige Entfernung von Data Explorer und Lockdown, gefolgt von einer neueren Neuinstallation.
    Was ich nicht verstehen kann, ist das Fehlerprotokoll von Discourse – wie passt es in all das.
    Auf jeden Fall. Ich habe alle Plugins wieder online und die Kanäle funktionieren gut.

Hallo @Jagster , ich bin auch im Chat-Team und untersuche das weiter. Wenn ich mir ansehe, was Sie getan haben, hätte nichts davon diesen Fehler verursachen dürfen. Jede Chat-Nachricht ist über eine thread_id potenziell mit einem Chat-Thread in der Datenbank verknüpft, und eine Ihrer Nachrichten hat eine thread_id für einen Thread, der aus irgendeinem Grund nicht existiert. Wir haben keinen Code zum Löschen von Threads, daher gab es vielleicht ein Update, das schiefgelaufen ist.

Können Sie diese Abfrage für mich ausführen und die Ergebnisse posten? So können wir sehen, ob Sie ein weit verbreitetes Problem haben oder ob es sich nur um einen seltsamen Einzelfall handelte:

SELECT id, chat_channel_id, thread_id
FROM chat_messages
WHERE thread_id IS NOT NULL AND thread_id NOT IN (
  SELECT id FROM chat_threads
);

Ich habe den Data Explorer verwendet und das hier erhalten (ich vertraue darauf, dass Sie JSON lesen können :wink: )

{"success":true,"errors":[],"duration":0.5,"result_count":2,"params":{},"columns":["id","chat_channel_id","thread_id"],"default_limit":1000,"rows":[[10721,14,152],[10744,14,152]]}

Der problematische Kanal war die ID 14.

1 „Gefällt mir“

Vielen Dank dafür, ich schätze, wir verfolgen einen “Abwarten und Beobachten”-Ansatz für diesen Fehler, da:

  1. Es ist nicht offensichtlich, wie er verursacht wurde und
  2. Er wurde auf einigen von mir überprüften Websites nicht reproduziert
  3. Er ist nur an einer Stelle auf Ihrer Website aufgetreten

Eine weitere Überprüfung wäre, diese Abfrage auszuführen:

SELECT * FROM chat_threads WHERE id = 152;

Und stellen Sie sicher, dass sie nichts zurückgibt.

Bestätigt; null, nichts

Sicher. Es ist wirklich schwer zu beheben, wenn man nichts finden kann.

Danke Leute!

1 „Gefällt mir“