Je viens de modifier le nom d’utilisateur d’une personne xxx à sa demande. Elle souhaitait récupérer un nom d’utilisateur inactif yyy. J’ai donc d’abord renommé le nom inactif yyy en quelque chose d’autre, comme yyy1, puis j’ai changé le nom d’utilisateur de cette personne de xxx en yyy.
À ce stade, l’utilisateur ne pouvait plus poster et j’ai constaté l’erreur suivante dans les journaux :
J’ai essayé de remettre le nom d’utilisateur tel qu’il était auparavant, mais maintenant tout son historique a disparu. Qu’est-ce qui a exactement mal tourné ici ?
Au fait, je ne sais pas pourquoi j’obtiens une erreur pour cet utilisateur (username_lower)=(mina). Je n’ai jamais apporté de modification et il semble qu’il s’agisse d’un utilisateur inactif. Cependant, je remarque un comportement étrange sur son profil également. Si j’ouvre sa page de notifications, j’obtiens une erreur 404.
Ok, j’ai suivi les étapes. Si j’ai fait quoi que ce soit de différent de ce que vous avez fait, faites-le-moi savoir.
Il y a deux utilisateurs :
xxx (compte actif)
yyy (compte inactif)
Changez yyy en yyy1
Changez xxx en yyy
( a fonctionné pour moi)
Essayez de publier en utilisant le nouveau compte yyy
( a fonctionné pour moi)
Remettez yyy en xxx
( a fonctionné pour moi, sans perte d’historique utilisateur)
Je n’ai rencontré aucun problème tout au long du processus. Une chose à noter : après avoir modifié le nom d’utilisateur d’un utilisateur depuis la page d’administration des utilisateurs, vous devrez rafraîchir la page avant que le bouton « Afficher le profil public » ne redirige vers le bon utilisateur.
Pouvez-vous vérifier vos /admin/logs/staff_action_logs pour voir si tous les changements de nom d’utilisateur enregistrés sont cohérents ? Cliquer sur les avatars des noms d’utilisateur listés devrait vous emmener vers leur page utilisateur actuelle et correcte.
Oui, cliquer sur l’avatar m’emmène bien sur leur page. Cependant, il me semble que leur page est plutôt inactive. Par exemple, je ne peux pas afficher leur adresse e-mail ni usurper leur compte :
D’après ce que je vois dans ce rapport, j’ai d’abord changé fatemeh en fatemeh12. Ensuite, j’ai changé fatemeh_baghdadi en fatemeh. Quelque temps plus tard, l’utilisateur m’a dit qu’il ne pouvait plus publier quoi que ce soit. J’ai donc pensé qu’il y avait peut-être un problème lors du changement de nom d’utilisateur et j’ai essayé de le modifier pour un nom qui n’avait pas encore été utilisé. J’ai donc changé fatemeh (anciennement fatemeh_baghdadi) en fatemeh74. J’ai alors constaté que son historique avait été complètement effacé, ce qui m’a inquiété. J’ai donc essayé de revenir au nom d’origine, en passant de fatemeh74 à fatemeh_baghdadi, puis de fatemeh_baghdadi à fatemeh_baghdadi5, mais rien ne s’est amélioré. Aujourd’hui, j’ai deux utilisateurs différents : fatemeh74 et fatemeh_baghdadi5, qui théoriquement devraient correspondre à une seule et même personne, mais qui en réalité sont deux comptes distincts, l’un semblant ne pas fonctionner correctement.
Je fais de mon mieux pour suivre la situation. Cela semble très étrange !
Pourriez-vous préciser ce que vous entendez par le fait que leur historique a été complètement effacé ? Le profil de fatemeh_baghdadi5 devrait-il afficher divers sujets et réponses dans la section activité ?
Si c’est le cas, ces publications sont-elles désormais associées au compte fatemeh74 ? Elles doivent exister quelque part sur le site et être rattachées à un utilisateur spécifique. En tant qu’utilisateur anonyme, je ne parviens pas à trouver d’utilisateur portant le nom d’utilisateur fatemeh74 sur votre site.
Il existe un tâche d’arrière-plan nommée EnsureDbConsistency qui s’exécute toutes les 12 heures. Il pourrait être intéressant de la déclencher manuellement depuis Sidekiq, ou d’attendre de voir si tout se corrige automatiquement dans les 12 prochaines heures.
Si vous vous retrouvez finalement avec deux comptes qui devraient n’en former qu’un, vous devriez pouvoir les fusionner. Je vous recommande vivement de faire une sauvegarde avant de tenter cette opération.
Il est vraiment difficile de comprendre ce qui se passe sans avoir un accès direct à l’ensemble des données, mais j’espère que nous parviendrons à résoudre le problème !
Au moment où j’ai changé le nom d’utilisateur, je suis allé sur leur profil et je n’ai vu aucun message, etc., mais cela a été corrigé après un certain temps. Cependant, maintenant fatemeh74, qui semble en fait être la bonne personne, est plutôt inactive. Je veux dire, comme vous le voyez, nous ne pouvons pas voir leur page de profil, alors que leurs messages et autres éléments sont présents. Voici un exemple :
En réalité, ils ne sont pas un seul et même compte. J’ai vérifié leur adresse e-mail et leur identifiant, et ils sont complètement différents. Cependant, selon les étapes que j’ai suivies pour changer les noms d’utilisateur, ils devraient être identiques, et en fait, je ne devrais pas avoir deux utilisateurs ici.
Merci d’avoir partagé cet exemple. C’est effectivement préoccupant.
Vous pouvez le trouver répertorié à /sidekiq/scheduler. Cela vaut le coup d’essayer, mais d’après ce que vous venez de publier, il semble qu’il y ait peut-être un problème plus profond.
@tshenry Est-il acceptable que j’aie deux noms d’utilisateurs exactement identiques, à l’exception du premier mot qui diffère par les majuscules et les minuscules ?
Vous pouvez voir ce qui semble être deux noms d’utilisateur distincts renvoyés lors de la recherche de fatemeh12. Cela n’aurait pas dû être possible (je ne parviens pas à reproduire le problème). Il semble que tous deux redirigent vers le même profil.
Je ne vois pas où aller à partir d’ici. Si personne ne se manifeste d’ici à peu près la même heure demain, je vais essayer de trouver quelqu’un avec de nouvelles idées. Si vous trouvez d’autres informations que vous jugerez pertinentes d’ici là, veuillez les publier.
Ce que je comprends jusqu’à présent, c’est ceci : Dès la première étape, j’ai tenté de modifier fatemeh en fatemeh12 afin de rendre ce nom d’utilisateur disponible. Cependant, le nom d’utilisateur Fatemeh12 existait déjà, donc en réalité, je n’aurais pas dû pouvoir changer fatemeh en fatemeh12. Pourtant, bizarrement, cela m’a été autorisé, et d’une manière ou d’une autre, la base de données a planté à partir de ce moment-là.
@tshenry as-tu trouvé quelque chose ? Pour l’instant, l’utilisateur fatemeh74, qui avait disparu, est en quelque sorte réapparu. Je ne sais pas exactement comment, cependant. Je veux m’assurer que cela ne se reproduira pas à l’avenir, alors j’ai besoin de savoir pourquoi j’ai des noms d’utilisateurs identiques avec des différences de casse (majuscules/minuscules) et pourquoi Discourse n’empêche pas cela. Mon Discourse est déjà à jour.
Salut C’est super d’entendre ça. J’espérais qu’un travail en arrière-plan pourrait intervenir après un certain temps. Il semble que ce soit bien ce qui s’est produit.
Je n’ai pas encore eu l’occasion d’approfondir ce problème. Nous sommes très limités dans ce que nous pouvons faire pour vous aider, car nous n’avons pas accès à la base de données de votre site et ne pourrions mener une telle investigation que pour nos clients hébergés.
C’est la première fois que nous entendons parler d’un tel incident, et je ne parviens pas à reproduire le comportement. Je soupçonne qu’il s’agit d’un cas limite propre à votre instance. Nous continuerons bien sûr à surveiller tout incident similaire à l’avenir. Si vous souhaitez être particulièrement prudent, je vous conseille de vérifier qu’aucun autre utilisateur ne possède déjà le même nom d’utilisateur avant d’effectuer un changement de nom.
Nous rencontrons également ce même problème depuis longtemps — bien sûr, il n’y a aucun moyen de reproduire comment la base de données en est arrivée à cet état, mais de temps en temps, nous nous retrouvons avec des utilisateurs qui se rebaptisent eux-mêmes en utilisant des noms dupliqués pendant la période de grâce du renommage, mais cela s’applique également aux renommages effectués par les administrateurs.
Nous n’utilisons pas de noms d’utilisateur Unicode, et cela est assez… problématique à certains moments, car cela interrompt parfois la tâche de synchronisation du plugin Patreon, dont nous dépendons fortement pour les services de politique externes.