Fusion d'utilisateur échouée, entrées de base de données corrompues dues à un plugin tiers

Titre original : Page d’accueil du forum inaccessible (écran blanc ou 404)

Je suis modérateur sur le forum SocialHub à l’adresse https://socialhub.activitypub.rocks, qui est le forum technique dédié au protocole ActivityPub, moteur de l’univers social du Fediverse.

Actuellement, une conférence ActivityPub de quatre jours est en cours, et l’activité sur le forum est plus élevée que d’habitude. Ce matin, j’ai constaté que la page principale du forum, lorsqu’elle est accédée directement via l’URL, affiche un écran entièrement blanc (aucun HTML n’est renvoyé).

Cependant, les liens profonds, tels que Spritely Project: The Super Exciting Future Of Fediverse - ActivityPub - SocialHub, fonctionnent toujours et permettent d’accéder à d’autres fonctionnalités, comme la recherche et le panneau d’administration. En cliquant sur le logo en haut à gauche, au lieu d’un écran blanc, une page 404 s’affiche.

J’ai informé les personnes responsables de la gestion du serveur, et peut-être qu’un simple redémarrage du serveur suffira. Mais au cas où quelqu’un reconnaîtrait là un problème plus grave, j’apprécierais grandement vos retours, afin que nous puissions remettre le site en ligne à temps avant le début des conférences aujourd’hui.

PS : Le forum fonctionne sous la version v2.6.0.beta1

Vous voudrez peut-être examiner l’utilisation des ressources. Une augmentation du nombre de visiteurs signifie que davantage de ressources sont utilisées.

Augmenter les ressources du serveur aidera à faire face à l’afflux de visiteurs.

1 « J'aime »

Merci ! Les administrateurs du serveur ne sont pas encore en ligne, mais je leur ai transmis ce lien :slight_smile:

Bonjour, j’ai procédé à la mise à niveau vers la dernière version sans succès, et j’ai essayé de désactiver le composant Force Mobile Homepage que nous avons ajouté hier.

Toute aide supplémentaire serait appréciée. Je vais examiner les journaux à la recherche d’erreurs pertinentes…

Voici à quoi ressemble l’appel de la page d’accueil depuis l’intérieur du conteneur :

Started GET "/" for 37.172.69.223 at 2020-10-04 07:32:15 +0000
Processing by CategoriesController#index as HTML
Completed 404 Not Found in 281ms (ActiveRecord: 0.0ms | Allocations: 67648)
ActiveRecord::RecordNotFound (Impossible de trouver tous les utilisateurs avec 'id': (36, 50) (1 résultat trouvé, mais 2 étaient attendus).)
lib/plugin/instance.rb:259:in `public_send'
lib/plugin/instance.rb:259:in `block (2 levels) in add_to_class'
(eval):48:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/categories_controller.rb:61:in `block (2 levels) in index'
app/controllers/categories_controller.rb:40:in `index'
app/controllers/application_controller.rb:354:in `block in with_resolved_locale'
app/controllers/application_controller.rb:354:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:336:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'
1 « J'aime »

Donc, changer le paramètre de la page d’accueil de Catégories et Derniers à Catégories et À la une rétablit l’accès à la page d’accueil. Cela devra suffire pour l’instant… Je soupçonne une interaction entre les composants, mais nous verrons bien. Toute autre précision est la bienvenue. Le spectacle doit continuer :slight_smile:

1 « J'aime »

Votre problème semble survenir lors du chargement des derniers messages, ce qui renvoie une erreur 404.

Est-ce que quelqu’un a modifié le nom de ceci ?

Allez dans les paramètres, cherchez « latest » et voyez ce qui se passe.

Merci @IAmGav pour la suggestion : nous n’avons aucune personnalisation pour les chaînes liées à « Latest ».

Certaines pages restent effectivement cassées, y compris une catégorie dont nous avons pourtant besoin :frowning:

Compte tenu du code du composant force de la page d’accueil mobile, je me demande comment vérifier si certains éléments ont changé dans la base de données en relation avec setDefaultHomepage(settings.homepage);. Mais je ne pense pas que cela affecte une catégorie. Il doit donc y avoir autre chose.


Je viens de vider les journaux pour m’assurer que l’erreur actuelle n’est pas réellement enregistrée. Il semble s’agir d’un bug lié à /latest, /top et à la catégorie #meeting. Je ne sais pas ce qui se passe… J’examine également les journaux à l’intérieur du conteneur pour obtenir plus d’informations… Probablement lié à un message dysfonctionnel dans la catégorie #meeting

Je pense que le problème vient de ActiveRecord::RecordNotFound (Impossible de trouver tous les utilisateurs avec 'id': (36, 50) (1 résultat trouvé, mais 2 étaient attendus).)

Les identifiants correspondent à un compte utilisateur qui a été fusionné, mais le processus semble avoir échoué…

Je pense aussi que c’est là le problème. Je ne suis pas expert, mais j’imagine qu’il existe un message qui fait référence à un ancien compte qui n’existe plus (et il apparaît dans les sections Meilleurs, Derniers et la catégorie conférence). Si c’est bien cela le problème, exécuter une requête SQL pour supprimer le message ou mettre à jour l’ID utilisateur qu’il contient pourrait être une option ? Quelle serait la syntaxe ?

Le filtre « fusionner les utilisateurs » dans les actions d’administration n’affiche aucun journal. Je pense que le processus de fusion a échoué d’une manière ou d’une autre. @team, comment puis-je enquêter et résoudre un échec de fusion d’utilisateurs ? Il semble que le résultat soit bon cependant : le compte utilisateur existe avec les deux adresses e-mail. Il doit y avoir des identifiants orphelins dans certains posts quelque part…

OK, nous avons réduit le problème à un seul sujet…

1 « J'aime »

Cela pourrait aider

Non, il est indiqué que l’utilisateur (source) n’existe pas. Je soupçonne que l’étape DiscourseEvent.trigger(:merging_users, @source_user, @target_user) n’a pas été complétée. Où puis-je trouver le code ?

C’est parti…

[39] pry(main)> PostReplyKey.where(user_id: 36)
=> [#<PostReplyKey:0x0000558954b92d68 id: 9793, user_id: 36, post_id: 3409, reply_key: "00257885-fe73-e76d-09fb-f0f708c2f032", created_at: Sat, 03 Oct 2020 19:37:20 UTC +00:00, updated_at: Sat, 03 Oct 2020 19:37:20 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6e78 id: 9120, user_id: 36, post_id: 3174, reply_key: "b726e441-1c6c-bd60-27ac-8d8d5feef3d7", created_at: Fri, 02 Oct 2020 14:21:48 UTC +00:00, updated_at: Fri, 02 Oct 2020 14:21:48 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6db0 id: 9802, user_id: 36, post_id: 3413, reply_key: "86e179a1-7516-616c-1040-c26c0539f39d", created_at: Sat, 03 Oct 2020 19:41:36 UTC +00:00, updated_at: Sat, 03 Oct 2020 19:41:36 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6ce8 id: 9821, user_id: 36, post_id: 3418, reply_key: "573f48a4-8263-4759-44f0-f6cb26b66f38", created_at: Sat, 03 Oct 2020 20:37:40 UTC +00:00, updated_at: Sat, 03 Oct 2020 20:37:40 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6c20 id: 9822, user_id: 36, post_id: 3419, reply_key: "9371479c-eeb4-1009-176d-761a854a4ddb", created_at: Sat, 03 Oct 2020 20:40:08 UTC +00:00, updated_at: Sat, 03 Oct 2020 20:40:08 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6b58 id: 9400, user_id: 36, post_id: 3245, reply_key: "e1cd57aa-a811-21f9-5e24-84439e184a8e", created_at: Fri, 02 Oct 2020 21:35:12 UTC +00:00, updated_at: Fri, 02 Oct 2020 21:35:12 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6a90 id: 8613, user_id: 36, post_id: 3067, reply_key: "407edb15-e89d-4369-9fee-1e5eab83385d", created_at: Wed, 30 Sep 2020 13:50:17 UTC +00:00, updated_at: Wed, 30 Sep 2020 13:50:17 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd69c8 id: 9517, user_id: 36, post_id: 3288, reply_key: "140a48d2-1a40-d429-f6e2-2bbe37b4865d", created_at: Sat, 03 Oct 2020 09:54:40 UTC +00:00, updated_at: Sat, 03 Oct 2020 09:54:40 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6900 id: 9736, user_id: 36, post_id: 3388, reply_key: "76cacf9b-5353-0653-806d-f3c2df6689eb", created_at: Sat, 03 Oct 2020 18:37:11 UTC +00:00, updated_at: Sat, 03 Oct 2020 18:37:11 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6838 id: 8643, user_id: 36, post_id: 3011, reply_key: "6d384213-98db-652c-89eb-1979731bb311", created_at: Wed, 30 Sep 2020 20:55:31 UTC +00:00, updated_at: Wed, 30 Sep 2020 20:55:31 UTC +00:00>,
 #<PostReplyKey:0x0000558954bd6770 id: 9772, user_id: 36, post_id: 3400, reply_key: "1e9e0b2e-ecd6-3654-d0da-6e01982a890f", created_at: Sat, 03 Oct 2020 19:22:38 UTC +00:00, updated_at: Sat, 03 Oct 2020 19:22:38 UTC +00:00>]

J’ai donc essayé de trouver quoi faire avec ça… Accorder ces clés à l’utilisateur existant ne résout rien. Les supprimer ne résout rien non plus.

Prochaine étape : reconstruire entièrement les sujets concernés, détruire les anciens et voir ce qui se passe, sauf si quelqu’un propose une meilleure idée…

1 « J'aime »

PostReplyKey fait référence à l’adresse de réponse dans les e-mails ; il n’interagit pas avec le rendu de la liste des sujets.

En examinant la trace de la pile, l’échec se produit dans TopicListSerializer lors de la sérialisation, quelque part dans lib/instance/public.rb.

Essayez de vérifier la liste des utilisateurs en vedette du sujet pour l’ancien ID d’utilisateur (l’ensemble des avatars qui s’affiche sur la page d’accueil).

1 « J'aime »

Salut @riking, merci pour ta réponse… À ma connaissance, à part PostReplyKey, il n’est fait aucune mention de cet ID utilisateur manquant. Mais il se peut que ce ne soit pas l’ancien ID utilisateur réel, car je ne le connais pas. Comment penses-tu que je pourrais le trouver — ou : que devrais-je chercher avec grep dans les journaux ?

S’il s’agit d’utilisateurs mis en avant par le sujet, cette requête devrait le trouver :

SELECT id
FROM topics
WHERE featured_user1 = 1234
OR featured_user2 = 1234
OR featured_user3 = 1234
OR featured_user4 = 1234
OR last_post_user_id = 1234

La requête n’a renvoyé aucun résultat avec l’ancien identifiant utilisateur, mais un seul sujet avec le nouvel identifiant utilisateur, à savoir le sujet déjà identifié comme problématique. J’ai déplacé le sujet vers une autre catégorie et, effectivement, la catégorie ActivityPub Conference 2020 - SocialHub est à nouveau visible.

Je suppose maintenant qu’il existe une référence à l’identifiant utilisateur manquant 36 quelque part dans les données liées au sujet 951, mais je n’ai pas encore réussi à la trouver. Ou bien y a-t-il une autre dépendance que j’aurais négligée concernant l’utilisateur 295 ?

Avez-vous une pile d’appels pour cette erreur ?

Rien de plus que ce que j’ai publié sur User merge failed, corrupted database entries due to third party plugin - #4 by hellekin et commenté ensuite :

1 « J'aime »

Ah, j’ai manqué la trace de pile dans User merge failed, corrupted database entries due to third party plugin - #4 by hellekin. Donc, l’échec est dû à un plugin. Je suppose que l’un de vos plugins a stocké une sorte d’informations utilisateur qui n’ont pas été fusionnées. Pourriez-vous me donner la liste des plugins installés, s’il vous plaît ?

2 « J'aime »