Les notifications reviennent même après les avoir lues [plugin Sujets privés]

Bonjour, j’utilise la version 3.2.0.beta4-dev (auto-hébergée) et à ce commit. Après les mises à jour, les utilisateurs ont commencé à recevoir des notifications doubles/triples dans l’interface utilisateur. (Je parle de l’interface utilisateur de Discourse, pas des e-mails, etc.)

Même après avoir cliqué et lu, les notifications reviennent parfois. Je rencontre également ces problèmes. Je ne sais pas comment dépanner cela ni fournir des journaux utiles. Je voulais partager cela, peut-être s’agit-il d’un problème global ou sur mon instance ?

Je soupçonne qu’il s’agit d’un problème de RAM, combien de RAM votre instance Discourse a-t-elle ?

Je suppose que vous voulez dire « l’interface utilisateur de Discourse » ?

D’accord, mais ce serveur est actif depuis près de 2 mois, ce problème n’est pas apparu avant. Actuellement, sur mon serveur, nous avons 4 Go de RAM et la moitié est vide. 2 Go de swap sont également vides.

Je pense que la mise à jour l’a fait, mais peut-être que les extensions l’ont fait. Je ne suis pas sûr. Je suppose que la prochaine étape sera de désactiver toutes les extensions et de voir si cela aide.

Oui, j’ai inclus une image dans mon premier message. Je veux dire les notifications de l’interface utilisateur Discourse.

J’ai désactivé un tas d’extensions et le problème persiste. Des idées ou est-il possible de rétrograder vers la version 3.2.0.beta3-dev ? Merci.

Bonjour, je sais que personne n’est obligé d’aider et qu’il s’agit d’un forum communautaire et bien sûr, je ne suis pas un client payant, mais ce bug me frustre énormément, ainsi que les utilisateurs. Nous avons créé une communauté il y a 2 mois grâce à Discourse, où nous avons 458 utilisateurs actifs mensuels. Mais depuis que ce bug nous est arrivé (il y a 20 jours), j’ai tout essayé. C’est assez mauvais pour l’expérience utilisateur et maintenant j’essaie de trouver des scripts pour migrer vers Flarum ou une autre plateforme de forum. Regardez ceci :

output

Les utilisateurs reçoivent la même notification encore et encore. Ils reçoivent les notifications d’il y a 20 jours, 5 jours ou n’importe quand. Même si vous rejetez toutes les notifications, vous recevrez à nouveau la même notification après quelques heures et il n’y a aucun moyen de résoudre ce problème !

Encore une fois, je sais où je me situe, c’est une plateforme communautaire. Je n’ai pas le droit de me plaindre, mais si personne n’aide après ce message, même si cela signifie que tous nos messages et sujets précédents seront supprimés (1,2 mille sujets et 12,7 mille messages), nous devrons aller ailleurs…

Juste pour information, j’étais un défenseur de Discourse. J’ai créé des vidéos à ce sujet sur ma chaîne YouTube. Les communautés turques utilisent généralement des forums obsolètes et j’ai eu une excellente expérience avec Discourse auparavant, donc après avoir ouvert mon propre forum, je voulais que les gens connaissent ce logiciel.

Quoi qu’il en soit, je ne veux vraiment pas perdre toutes les solutions et le travail des autres sur notre forum actuel. Je demande donc à nouveau votre aide. Merci.

Juste par curiosité, pouvez-vous trouver un point commun entre les publications qui ont des notifications répétées ?

D’après ce que je comprends, c’est différent pour chaque utilisateur. Mais elles se répètent. Sur mon compte, je reçois les mêmes notifications encore et encore. Bien que cela n’arrive pas sur les publications datant d’avant 21 jours, pour lesquelles nous avons effectué une mise à jour 3.2.0beta4 et j’ai également ajouté des extensions à notre forum.

Initialement, j’ai pensé que les extensions déclenchaient cela, j’ai donc désactivé toutes les extensions, mais cela n’a pas résolu le problème. Soit dit en passant, devrais-je peut-être les supprimer et reconstruire complètement ? Je ne sais pas.

Ensuite, j’ai pensé que c’était à cause de la beta4. J’ai donc rétrogradé vers la beta3 où nous n’avions pas le problème, mais il persistait toujours.

Malheureusement, nous n’avons reçu aucun autre rapport à ce sujet, il est donc difficile de déterminer ce qui se passe sur votre site. Avez-vous une installation standard ?

Y a-t-il quelque chose sur votre page /logs ou /sidekiq qui pourrait fournir plus d’informations ?

Oui. La désactivation peut ne pas supprimer complètement le problème. Mais quels plugins avez-vous récemment installés ? Nous pourrions peut-être savoir si certains ont eu des problèmes signalés.

Oui, je comprends que c’est difficile à identifier précisément. C’est pourquoi j’espérais que cela disparaîtrait avec le temps, mais ce n’est pas le cas.

Je pense que je rencontre le même problème que celui-ci : Users getting notifictations from long ago

Oui, j’ai une installation standard, mais la seule différence est que je suis derrière Cloudflare. Vous pourriez penser que cela est dû à Cloudflare, mais auparavant nous n’avions pas ce problème. Je ne pense pas que ce soit probable.

Je n’ai rien trouvé concernant les notifications, mais je ne suis pas un expert dans ce domaine, alors laissez-moi partager un petit extrait, peut-être que vos yeux remarqueront quelque chose.

Avertissements :


MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Échec de l'envoi de la notification push : WebPush::Unauthorized : hôte : fcm.googleapis.com, #<Net::HTTPForbidden 403 Forbidden readbody=true> corps : les identifiants VAPID dans l'en-tête d'autorisation ne co
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Échec de la gestion de l'exception dans le middleware de l'application d'exception : ArgumentError : Liste d'attributs vide passée
Échec de la gestion de l'exception dans le middleware de l'application d'exception : ArgumentError : Liste d'attributs vide passée
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Le thème/composant DiscoTOC génère des erreurs : TypeError : Impossible de lire les propriétés de null (lecture de 'en')
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Échec de la gestion de l'exception dans le middleware de l'application d'exception : ArgumentError : Liste d'attributs vide passée
Échec de l'envoi de la notification push : WebPush::Unauthorized : hôte : updates.push.services.mozilla.com, #<Net::HTTPUnauthorized 401 Unauthorized readbody=true> corps : {"code":401,"errno":109,"error":"Unaut
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Échec de la gestion de l'exception dans le middleware de l'application d'exception : ActiveRecord::RecordNotUnique : PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_topic_tags_on_topic_id_and_t
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Échec du traitement correct de la réponse détournée : EOFError : fin de fichier atteinte
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
Avis de dépréciation : `SiteSetting.anonymous_posting_min_trust_level` est déprécié. Veuillez utiliser `SiteSetting.anonymous_posting_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/disc
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Échec de l'envoi de la notification push : WebPush::ResponseError : hôte : web.push.apple.com, #<Net::HTTPBadRequest 400 Bad Request readbody=true> corps : {"reason":"VapidPkHashMismatch"}
Le thème/composant discourse-gifs génère des erreurs : TypeError : Impossible de lire les propriétés de null (lecture de 'en')
Le thème/composant DiscoTOC génère des erreurs : TypeError : Impossible de lire les propriétés de null (lecture de 'en')
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Échec de l'envoi de la notification push : WebPush::Unauthorized : hôte : updates.push.services.mozilla.com, #<Net::HTTPUnauthorized 401 Unauthorized readbody=true> corps : {"code":401,"errno":109,"error":"Unaut
Sidekiq consomme trop de mémoire (utilisation : 558,27 Mo) pour 'btt.community', redémarrage
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Échec de l'envoi de la notification push : WebPush::PushServiceError : hôte : updates.push.services.mozilla.com, #<Net::HTTPBadGateway 502 Bad Gateway readbody=true> corps : {"code":502,"errno":903,"error":"Bad
Avis de dépréciation : `SiteSetting.min_trust_level_for_here_mention` est déprécié. Veuillez utiliser `SiteSetting.here_mention_allowed_groups` à la place. (suppression dans Discourse 3.3) À /var/www/discourse/
Avis de dépréciation : Jobs::Chat::NotifyMentioned a été mis en file d'attente avec des valeurs d'argument qui ne se sérialisent pas proprement vers/depuis JSON. Cela signifie que le travail sera exécuté avec des valeurs légèrement différentes que t
Avis de dépréciation : Jobs::Chat::NotifyWatching a été mis en file d'attente avec des valeurs d'argument qui ne se sérialisent pas proprement vers/depuis JSON. Cela signifie que le travail sera exécuté avec des valeurs légèrement différentes que th
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Avis de dépréciation : Jobs::Chat::NotifyMentioned a été mis en file d'attente avec des valeurs d'argument qui ne se sérialisent pas proprement vers/depuis JSON. Cela signifie que le travail sera exécuté avec des valeurs légèrement différentes que t
Avis de dépréciation : Jobs::Chat::NotifyWatching a été mis en file d'attente avec des valeurs d'argument qui ne se sérialisent pas proprement vers/depuis JSON. Cela signifie que le travail sera exécuté avec des valeurs légèrement différentes que th

Erreurs :

Exception de travail : Net::ReadTimeout
Exception de travail : Net::ReadTimeout
Exception de travail : Net::SMTPAuthenticationError
Exception de travail : Net::SMTPAuthenticationError
Exception de travail : Net::SMTPAuthenticationError
(google_oauth2) Échec de l'authentification ! csrf_detected : OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF détecté
Exception de travail : Net::ReadTimeout
(github) Échec de l'authentification ! csrf_detected : OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF détecté
(discord) Échec de l'authentification ! csrf_detected : OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF détecté
defaut : Échec du téléchargement de l'image hotlinked (https://btt.community/uploads/default/optimized/2X/9/9394498c413ffd7cefbee2461a83d1a66b3b499c_2_690x388.jpeg) post : 10185 PG::UniqueViolation: ERROR: duplicat
Exception de travail : ERROR: duplicate key value violates unique constraint "pg_type_typname_nsp_index" DETAIL: Key (typname, typnamespace)=(gamification_leaderboard_cache_1_all_time_1, 2200) already exist
(google_oauth2) Échec de l'authentification ! invalid_credentials : OAuth2::Error, invalid_grant : Bad Request { "error": "invalid_grant", "error_description": "Bad Request" }
Exception de travail : Net::ReadTimeout
Exception de travail : fin de fichier atteinte
(github) Échec de l'authentification ! csrf_detected : OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF détecté
(twitter) Échec de l'authentification ! invalid_credentials : OAuth::Unauthorized, 401 Unauthorized
Exception de travail : Net::SMTPAuthenticationError
Exception de travail : fin de fichier atteinte
(google_oauth2) Échec de l'authentification ! csrf_detected : OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF détecté
(google_oauth2) Échec de l'authentification ! csrf_detected : OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF détecté
Exception de travail : Net::ReadTimeout
Exception de travail : mauvais nombre d'arguments (0 donné, 1 attendu)
Exception de travail : fin de fichier atteinte
Exception de travail : mauvais nombre d'arguments (0 donné, 1 attendu)
(discord) Échec de l'authentification ! csrf_detected : OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF détecté
Exception de travail : Net::ReadTimeout
Exception de travail : mauvais nombre d'arguments (0 donné, 1 attendu)

Fatales :

ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "categories" n'existe pas LIGNE 1: SELECT "categories"."id" FROM "categories" LEFT JOIN categor...
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "user_auth_tokens" n'existe pas LIGNE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "user_auth_tokens" n'existe pas LIGNE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "user_auth_tokens" n'existe pas LIGNE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "user_auth_tokens" n'existe pas LIGNE 1: SELECT "user_auth_tokens".* FROM "user_auth_tokens" WHERE ((...
Regexp::TimeoutError (dépassement de temps de correspondance regexp) lib/crawler_detection.rb:38:in `match?' lib/crawler_detection.rb:38:in `crawler?' lib/middleware/anonymous_cache.rb:129:in `is_crawler?' (eval):2:in `__comp
ActiveRecord::StatementInvalid (PG::InFailedSqlTransaction: ERROR: la transaction en cours est annulée, les commandes sont ignorées jusqu'à la fin du bloc de transaction ) lib/post_action_creator.rb:295:in `rescue in creat
NoMethodError (méthode `title' non définie pour nil:NilClass) app/models/reviewable_queued_post.rb:166:in `perform_revise_and_reject_post' app/models/reviewable.rb:331:in `public_send' app/models/reviewab
ArgumentError (Liste d'attributs vide passée) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
ArgumentError (Liste d'attributs vide passée) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
ArgumentError (Liste d'attributs vide passée) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
NoMethodError (méthode `title' non définie pour nil:NilClass) app/models/reviewable_queued_post.rb:166:in `perform_revise_and_reject_post' app/models/reviewable.rb:331:in `public_send' app/models/reviewab
ArgumentError (Liste d'attributs vide passée) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
ArgumentError (Liste d'attributs vide passée) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
ArgumentError (Liste d'attributs vide passée) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
ArgumentError (Liste d'attributs vide passée) lib/plugin/instance.rb:522:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
NoMethodError (méthode `title' non définie pour nil:NilClass) app/models/reviewable_queued_post.rb:166:in `perform_revise_and_reject_post' app/models/reviewable.rb:331:in `public_send' app/models/reviewab
NoMethodError (méthode `title' non définie pour nil:NilClass) app/models/reviewable_queued_post.rb:166:in `perform_revise_and_reject_post' app/models/reviewable.rb:331:in `public_send' app/models/reviewab
ArgumentError (Liste d'attributs vide passée) lib/plugin/instance.rb:521:in `block in on' lib/discourse_event.rb:12:in `block in trigger' lib/discourse_event.rb:12:in `trigger' app/models/post_mover
ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_topic_tags_on_topic_id_and_tag_id" DETAIL: Key (topic_id, tag_id)=(2907, 1) already e

Pour Sidekiq, je ne sais pas exactement où regarder. Sidekiq ne gère-t-il pas les e-mails ? Est-ce lié aux notifications ?

D’accord, je vais essayer de désinstaller chacun d’eux et de reconstruire en attendant.

Voici les extensions que j’ai installées avant que ce problème ne commence (il a commencé exactement ce jour-là) :

  • Qui est en ligne
  • Cakeday
  • Signature
  • Adsense
  • ActivityPub (je l’ai complètement supprimé et reconstruit car je ne pouvais pas le désactiver)

En tant que composant de thème :

  • GIF

EDIT : J’ai oublié d’en ajouter quelques autres

  • Discourse Private Topics
  • Discourse Force Moderation

Je pourrais me tromper, mais c’est un composant de thème, n’est-ce pas ?

Oui, c’est vrai, c’est un composant thématique à ce stade, je ne sais pas ce qui est quoi, alors je l’ai inclus de toute façon. :grinning_face_with_smiling_eyes:

Sidekiq gère tous les travaux en arrière-plan, y compris les notifications. Vous avez un mélange éclectique d’erreurs là-dedans :slight_smile: Je pense reconnaître quelques-unes qui ont été corrigées depuis et ne devraient donc pas se reproduire après une reconstruction/mise à jour. Cependant, je vois :

Sidekiq consomme trop de mémoire (utilisation : 558.27M)

Cela pourrait le forcer à réessayer des tâches (y compris l’envoi de notifications à nouveau). Pourriez-vous cliquer dessus pour voir s’il y a plus d’informations ?

Je vois, si c’est le cas, c’est effectivement peut-être le problème.

image

Sur le côté gauche, c’est le nombre, n’est-ce pas ? Donc, cela s’est produit 10 fois.

Voici toutes les fois où cela s’est produit :

8 sept. 18:55
25 sept. 21:44
4 oct. 21:53
10 nov. 02:26 (Le problème a commencé le 9 novembre)
11 nov. 11:37
11 nov. 13:37
23 nov. 18:43
25 nov. 18:59
dim. 07:32
lun. 13:12

Mais le fait est que nous avons 4 Go de RAM et 2 Go de SWAP, et je ne l’ai jamais vu utilisé plus que cela :

Et la capture d’écran que je viens de prendre, c’est maintenant. Alors peut-être que cela se produit lorsque les utilisateurs sont au pic d’activité, ou si ce n’est pas le cas, peut-être que je dois augmenter le seuil de Sidekiq ?

INFO :

Sidekiq consomme trop de mémoire (utilisé : 558.27M) pour 'btt.community', redémarrage

BACKTRACE :

config/unicorn.conf.rb:164:in `check_sidekiq_heartbeat'
config/unicorn.conf.rb:244:in `master_sleep'
unicorn-6.1.0/lib/unicorn/http_server.rb:295:in `join'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `load'

/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `<main>'

env :

hostname	dc-app, [dc-discourse]
process_id	1215943
application_version	a55f924e279b45b81e69e720faeb38284aed90d4
time	lun. 13:12

Je sais, cela ne prouve rien, mais j’ai la même erreur tous les jours plusieurs fois[1] et rien de similaire à ce que l’OP rencontre ne se produit de mon côté.


  1. parce que la corriger semble trop exigeant et coûteux ↩︎

En y regardant de plus près, je constate également des erreurs qui pourraient y être liées :

1er :

Message (109 copies signalées)

Avis de dépréciation : Jobs::Chat::NotifyMentioned a été mis en file d'attente avec des valeurs d'arguments qui ne se sérialisent/désérialisent pas proprement en JSON. Cela signifie que la tâche sera exécutée avec des valeurs légèrement différentes de celles fournies à `enqueue`. Les valeurs d'arguments doivent être des chaînes de caractères, des booléens, des nombres ou nil (ou des tableaux/hash de ces types de valeurs). (déprécié depuis Discourse 2.9) (suppression dans Discourse 3.0)
À /var/www/discourse/plugins/chat/lib/chat/notifier.rb:355:in `notify_mentioned_users`

Trace

/var/www/discourse/lib/discourse.rb:1030:in `deprecate'
/var/www/discourse/app/jobs/base.rb:371:in `enqueue'
/var/www/discourse/plugins/chat/lib/chat/notifier.rb:355:in `notify_mentioned_users'
/var/www/discourse/plugins/chat/lib/chat/notifier.rb:78:in `notify_new'
/var/www/discourse/plugins/chat/app/jobs/regular/chat/process_message.rb:42:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize'
/var/www/discourse/plugins/chat/app/jobs/regular/chat/process_message.rb:7:in `execute'

2ème :

Message (109 copies signalées)

Avis de dépréciation : Jobs::Chat::NotifyWatching a été mis en file d'attente avec des valeurs d'arguments qui ne se sérialisent/désérialisent pas proprement en JSON. Cela signifie que la tâche sera exécutée avec des valeurs légèrement différentes de celles fournies à `enqueue`. Les valeurs d'arguments doivent être des chaînes de caractères, des booléens, des nombres ou nil (ou des tableaux/hash de ces types de valeurs). (déprécié depuis Discourse 2.9) (suppression dans Discourse 3.0)
À /var/www/discourse/plugins/chat/lib/chat/notifier.rb:367:in `notify_watching_users`

Trace

/var/www/discourse/lib/discourse.rb:1030:in `deprecate'
/var/www/discourse/app/jobs/base.rb:371:in `enqueue'
/var/www/discourse/plugins/chat/lib/chat/notifier.rb:367:in `notify_watching_users'
/var/www/discourse/plugins/chat/lib/chat/notifier.rb:79:in `notify_new'
/var/www/discourse/plugins/chat/app/jobs/regular/chat/process_message.rb:42:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize'
/var/www/discourse/plugins/chat/app/jobs/regular/chat/process_message.rb:7:in `execute'

3ème :

Message (29888 copies signalées)

Exception de tâche : nombre d'arguments incorrect (donné 0, attendu 1)

Trace

/var/www/discourse/plugins/discourse-private-topics/plugin.rb:20:in `get_filtered_category_ids'
/var/www/discourse/plugins/discourse-private-topics/plugin.rb:149:in `handle'
/var/www/discourse/plugins/discourse-follow/plugin.rb:131:in `block (2 levels) in activate!'
/var/www/discourse/lib/plugin/instance.rb:521:in `block in on'
/var/www/discourse/lib/discourse_event.rb:12:in `block in trigger'
/usr/local/lib/ruby/3.2.0/set.rb:511:in `each_key'
/usr/local/lib/ruby/3.2.0/set.rb:511:in `each'
/var/www/discourse/lib/discourse_event.rb:12:in `trigger'
/var/www/discourse/app/services/post_alerter.rb:205:in `after_save_post'
/var/www/discourse/app/jobs/regular/post_alert.rb:10:in `execute'

hostname	dc-app
process_id	190
application_version	95b7cbd8a13ec82003936ef9408ec83bc9f3c2ea
current_db	default
current_hostname	btt.community
job	Jobs::PostAlert
problem_db	default
time	Mer 13h55

En regardant la trace de la 3ème erreur, il semble qu’elle soit liée aux plugins discourse-private-topics et discourse-follow. Je ne suis pas un expert en la matière, comme je l’ai dit, mais je vais essayer de les supprimer et de les reconstruire à partir de zéro…

Après la suppression des plugins et la reconstruction, la 3ème erreur a disparu, mais les 1ère et 2ème notices de dépréciation persistent.

Et le problème n’est pas résolu.

Dans sidekiq, je vois des dizaines de Jobs::PostAlert dans la section retries. Je suppose que c’est la raison pour laquelle toutes ces notifications reviennent. Mais pourquoi irait-il dans les retries en premier lieu s’il envoie réellement l’alerte ?

Comme vous pouvez le voir, il y a 63 pages de cela. Dois-je tout tuer ?

EDIT :

En regardant l’erreur, il semble qu’elle soit déclenchée par les plugins discourse-private-topics et discourse-follow.

Et même lorsque je les ai supprimés car ils étaient dans la section retries, sidekiq continuait d’envoyer ces notifications. Maintenant, j’ai tué toutes ces retries et j’espère que le problème est résolu. Je mettrai à jour.

D’accord, cela a résolu le problème. Donc, au final, Job exception: wrong number of arguments (given 0, expected 1) ce problème est causé par un ou les deux plugins suivants : Private Topics Plugin et Discourse Follow. Peut-être que les deux combinés créent ce problème, je ne sais pas et je ne pense pas vouloir le découvrir. Je suis un peu traumatisé ici à gérer ce problème pendant 21 jours. :grinning_face_with_smiling_eyes: Peut-être que les auteurs de ce plugin aimeraient le savoir, alors je vais les mentionner ici : @sam @RGJ

Merci @JammyDodger @Firepup650

Je suppose que j’ai appris comment déboguer un problème Discourse et ne plus jamais installer plus d’un plugin à la fois…

Merci d’avoir résolu ce problème ! Il s’agissait en effet d’un problème dans mon plugin de sujets privés qui ne se produisait que lorsque le plugin de suivi était également activé.

J’ai publié un correctif. Désolé pour cette expérience traumatisante :wink:

Excellent débogage. :clap: :slight_smile: Et merci pour la correction rapide @RGJ :rocket:

Comme il s’agissait d’un problème avec un plugin non-#officiel, je vais le retirer de la catégorie Bug (sans le fusionner dans Private Topics Plugin car il est un peu grand pour cela).

J’espère que vous pourrez maintenant installer les deux plugins sans aucune notification excitante. :crossed_fingers: