Un canal de discussion n'affiche ni ne sauvegarde les messages

J’ai mis à niveau il y a quelques heures, et maintenant tous les canaux qui ont un groupe personnalisé affichent un canal vide. Je peux écrire et envoyer des messages, mais si je me déconnecte ou actualise la page, le canal n’a pas d’historique.

Les logs indiquent ceci :

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

Des idées ?

Edit :
Si cela signifie quelque chose, ces canaux qui se comportent mal étaient auparavant des sous-catégories, mais je les ai changées en catégories principales.

Mais mes utilisateurs prétendent que les choses étaient cassées avant ce changement.

Salut,

avez-vous déjà essayé d’utiliser les paramètres de fil expérimentaux (et cachés) ?

J’ai changé quelque chose il y a longtemps, mais… je ne me souviens plus quoi, mais je suis presque certain que c’était quelque chose qui n’était plus expérimental par la suite.

Avez-vous quelque chose en tête ?

C’est encore expérimental et caché aujourd’hui, et je veux dire que vous avez le droit de jouer avec ça :slight_smile: J’essaie juste de réduire la liste des problèmes possibles.

L’erreur montre clairement que nous essayons d’accéder à du code qui ne devrait pas être accédé si un thread n’a jamais été créé, c’est donc surprenant.

Si et quand j’aurai modifié uniquement les éléments que j’ai trouvés ici, et que la recherche n’a rien montré de pertinent.

Rails peut-il montrer ce qui n’est plus dans les valeurs par défaut ?

Je vais fusionner cela dans les 30 prochaines minutes, cela résoudra votre problème. Nous allons examiner cela plus en détail la semaine prochaine, mais je ne veux pas que vous soyez bloqué sur ce point tout le week-end.

4 « J'aime »

Super !

J’aimerais quand même comprendre ce que j’ai cassé… Je suis tout à fait sûr n’avoir changé auparavant que (à ce moment-là) les nouveaux paramètres d’amélioration de la recherche et autres.

Mais si je suis tout à fait honnête… j’ai tendance à essayer quelque chose si cela peut rendre les choses meilleures ou quelque chose comme ça, et si rien ne se passe, je l’oublie tout de suite.

(Et je me plains tout le temps de la documentation paresseuse :man_facepalming: )

Je n’ai pas de meilleure réponse pour l’instant, mais nous allons enquêter là-dessus la semaine prochaine, je viens de le fusionner. Je suis hors ligne, faites-moi savoir si cela ne résout pas le problème, je regarderai demain.

2 « J'aime »

Premièrement : votre correction n’a pas aidé. Désolé. Ou elle a aidé — cette erreur était un peu étrange,
S’il vous plaît, essayez de me suivre :wink:
J’ai 5 canaux :

  • trois pour TL1
  • un pour le personnel
  • un pour un groupe personnalisé de 5 personnes

J’ai déplacé tous les canaux sauf celui du personnel des sous-catégories vers le haut.

Ensuite, j’ai essayé comment le composant d’aperçu de catégorie fonctionne, mais ce n’était pas ce dont j’avais besoin, donc je l’ai désactivé. Juste après, j’ai reconstruit pour obtenir le plugin de verrouillage de catégorie.

Cela a fonctionné, sauf que j’ai eu des problèmes étranges avec le thème FKB Pro et les modales de connexion/inscription — celles-ci affichaient seulement une icône de chargement en rotation. Cela ne s’est produit qu’avec mon iPad, à ma connaissance.

À ce moment-là, j’ai réalisé que le canal de discussion du groupe personnalisé ne fonctionnait plus. De plus, le groupe du personnel et 2 des 3 groupes TL1 n’affichaient que des messages très récents. Un groupe TL1 était intact.

J’ai essayé le mode sans échec et la désactivation de la plupart des plugins via les paramètres. Aucune aide et j’ai ouvert ce sujet.

Pour faire court et après plusieurs reconstructions, suppression et réactivation des plugins :

  • le canal du personnel et deux canaux TL1 sont des canaux à faible trafic et j’ai totalement oublié que j’utilisais la règle des 14 jours là-bas ; donc il n’y avait aucun problème
  • le canal du groupe personnalisé était cassé si j’avais à la fois les plugins Data Explorer et Category Lockdown installés, et l’activation/désactivation n’avait pas d’importance
  • la reconstruction sans ces deux plugins a corrigé ce canal cassé. Quand j’ai reconstruit (est-ce un mot ?) avec les deux plugins, ce canal était toujours correct

Ma supposition non éclairée est que quelque chose s’est mal passé lorsque j’ai d’abord essayé les aperçus de catégorie, puis je l’ai désactivé, puis reconstruit avec Category Lockdown et le dernier mouvement a été de supprimer Category Previews. La correction de certaines erreurs SQL bizarres ou de faux bits a nécessité la suppression totale de Data Explorer et Lockdown, suivie d’une réinstallation plus récente.

Ce que je ne peux pas comprendre, c’est le journal d’erreurs de Discourse — comment cela s’intègre dans tout cela.

Quoi qu’il en soit. J’ai tous les plugins de retour en ligne et les canaux fonctionnent bien.

Salut @Jagster , je fais également partie de l’équipe de chat et j’examine cela plus en détail. En lisant ce que vous avez fait, rien de tout cela n’aurait dû causer cette erreur. Chaque message de chat est potentiellement lié à un fil de discussion dans la base de données via un thread_id, et l’un de vos messages a un thread_id pour un fil de discussion qui n’existe pas pour… une raison quelconque. Nous n’avons aucun code pour supprimer les fils de discussion, donc peut-être qu’une mise à jour a mal tourné.

Pouvez-vous exécuter cette requête pour moi et publier les résultats ? Cela nous permettra de voir si vous avez un problème généralisé ou s’il s’agissait simplement d’un cas particulier étrange :

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

J’ai utilisé Data Explorer et voici ce que j’ai obtenu (je vous fais confiance pour lire du 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]]}

Le canal problématique était l’id 14.

1 « J'aime »

Merci pour cela, je suppose que nous allons adopter une approche attentiste pour ce bug, car :

  1. On ne sait pas clairement comment il a été causé et
  2. Il n’a pas été reproduit sur quelques sites que j’ai vérifiés
  3. Il ne s’est produit qu’à un seul endroit sur votre site

Une autre vérification consisterait simplement à exécuter également cette requête :

SELECT * FROM chat_threads WHERE id = 152;

Et à s’assurer qu’elle ne retourne rien.

Confirmé ; zéro, rien

Bien sûr. Il est vraiment difficile de corriger quand on ne trouve rien.

Merci les gars !

1 « J'aime »