Un canale di chat non mostra né salva messaggi

Ho effettuato l’aggiornamento poche ore fa e ora tutti i canali che hanno un gruppo personalizzato mostrano un canale vuoto. Posso scrivere e inviare messaggi, ma se mi disconnetto o aggiorno la pagina, il canale non ha cronologia.

I log mostrano questo:

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

Idee?

Modifica:
Se questo significa qualcosa, quei canali che si comportavano male erano in precedenza sottocategorie, ma le ho cambiate in categorie principali.

Ma i miei utenti affermano che le cose erano già rotte prima di quel cambiamento.

Ciao,

hai mai provato a utilizzare le impostazioni dei thread sperimentali (e nascoste)?

Ho cambiato qualcosa molto tempo fa, ma… non ricordo cosa, ma sono abbastanza sicuro che fosse qualcosa che in seguito non era più sperimentale.

Hai qualcosa in mente?

È ancora sperimentale e nascosto oggi, e intendo dire che hai il diritto di giocarci :slight_smile: Sto solo cercando di restringere l’elenco dei possibili problemi.

L’errore mostra chiaramente che stiamo cercando di accedere a codice a cui non si dovrebbe accedere se un thread non è mai stato creato, quindi è sorprendente.

Se e quando avrò modificato solo le cose che ho trovato qui, e la ricerca non ha mostrato nulla di pertinente.

Rails può mostrare ciò che non è più predefinito?

Lo unirò nei prossimi 30 minuti, questo risolverà il tuo problema. Indagheremo ulteriormente la prossima settimana, ma non voglio che tu sia bloccato su questo per tutto il fine settimana.

4 Mi Piace

Ottimo!

Vorrei comunque capire cosa diavolo ho rotto… Sono abbastanza sicuro di aver modificato in precedenza solo (allora) nuove impostazioni di miglioramenti della ricerca e simili.

Ma se devo essere totalmente onesto… ho la tendenza a provare qualcosa se può rendere gli argomenti in qualche modo migliori o qualcosa del genere, e se non succede niente me ne dimentico subito.

(E mi lamento continuamente della documentazione pigra :man_facepalming: )

Per ora non ho una risposta migliore, ma indagheremo la prossima settimana, ho appena unito la modifica. Vado offline, fammi sapere se non risolve, guarderò domani.

2 Mi Piace

Prima: la tua correzione non ha aiutato. Mi dispiace. O ha aiutato — quell’errore era un po’ strano,

Per favore, prova a seguirmi :wink:

Ho 5 canali:

  • tre per TL1
  • uno per lo staff
  • uno per un gruppo personalizzato di 5 persone

Ho spostato tutti tranne il canale dello staff dalle sottocategorie in cima.

Poi ho provato come funziona il componente di anteprima della categoria, ma non era quello di cui avevo bisogno, quindi l’ho disattivato. Subito dopo ho eseguito la ricostruzione per ottenere il plugin di blocco della categoria.

Ha funzionato, tranne che ho avuto alcuni strani problemi con il tema FKB Pro e le modali di accesso/registrazione — quelle davano solo un’icona di caricamento rotante. Questo è successo solo con il mio iPad, per quanto ne so.

A quel punto mi sono reso conto che il canale di chat del gruppo personalizzato non funzionava più. Inoltre, il gruppo dello staff e 2 dei 3 gruppi TL1 mostravano solo messaggi molto recenti. Un gruppo TL1 era intatto.

Ho provato la modalità sicura e ho disattivato la maggior parte dei plugin tramite le impostazioni. Nessun aiuto e ho aperto questo argomento.

In breve e dopo diverse ricostruzioni rimuovendo e riattivando i plugin:

  • il canale dello staff e due canali TL1 sono a basso traffico e ho dimenticato totalmente che li uso con la regola dei 14 giorni; quindi non c’erano problemi
  • il canale del gruppo personalizzato era rotto se avevo installato sia i plugin Data Explorer che Category Lockdown, e l’attivazione/disattivazione non aveva importanza
  • ricostruire senza quei due plugin ha risolto quel canale rotto. Quando ho ricostruito di nuovo (è una parola?) con entrambi i plugin, quel canale era ancora a posto

La mia ipotesi non informata è che qualcosa sia andato storto quando ho provato per la prima volta le anteprime delle categorie, poi l’ho disattivata, poi ho ricostruito con il blocco delle categorie e l’ultima mossa è stata eliminare le anteprime delle categorie. La correzione di alcuni bizzarri errori SQL o morsi falsi ha richiesto la rimozione totale di Data Explorer e Lockdown, seguita da una reinstallazione più recente.

Quello che non riesco a capire è il registro degli errori di Discourse — come si inserisce in tutto questo.

Comunque. Ho tutti i plugin di nuovo online e i canali funzionano bene.

Ciao @Jagster , faccio parte anche io del team di chat e sto approfondendo la questione. Rileggendo quello che hai fatto, nulla di tutto ciò avrebbe dovuto causare questo errore. Ogni messaggio di chat è potenzialmente collegato a una discussione nel database tramite un thread_id, e uno dei tuoi messaggi ha un thread_id per una discussione che per qualche motivo non esiste. Non abbiamo codice per eliminare le discussioni, quindi forse c’è stato un aggiornamento andato storto.

Puoi provare a eseguire questa query per me e pubblicare i risultati? Ci permetterà di vedere se hai un problema diffuso o se si è trattato solo di un caso anomalo:

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
);

Ho usato Data Explorer e questo è ciò che ho ottenuto (mi fido che tu possa leggere json :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]]}

Il canale problematico era l’id 14.

1 Mi Piace

Grazie per questo, suppongo che adotteremo un approccio “wait-and-see” per questo bug, poiché:

  1. Non è chiaro come sia stato causato e
  2. Non è stato riprodotto in alcuni siti che ho controllato
  3. È successo solo in un posto sul tuo sito

Un altro controllo sarebbe semplicemente eseguire anche questa query:

SELECT * FROM chat_threads WHERE id = 152;

E assicurarsi che non restituisca nulla.

Confermato; zero, niente

Certo. È davvero difficile da correggere quando non si trova nulla.

Grazie ragazzi!

1 Mi Piace