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

OK, je récupère cela… J’ai des problèmes de connectivité. Je vais vérifier en mode sécurisé pour voir si cela fonctionne.
Le mode sécurisé n’aide pas…

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-bbb.git
          - git clone https://github.com/discourse/discourse-calendar.git
          - git clone https://github.com/discourse/discourse-canned-replies.git
          - git clone https://github.com/discourse/discourse-checklist.git
          - git clone https://github.com/discourse/discourse-code-review.git
          - git clone https://github.com/discourse/discourse-footnote.git
          - git clone https://github.com/discourse/discourse-github.git
          - git clone https://github.com/discourse/discourse-graphviz.git
          - git clone https://github.com/discourse/discourse-math.git
          - git clone https://github.com/discourse/discourse-policy.git
          - git clone https://github.com/discourse/discourse-prometheus.git
          - git clone https://github.com/discourse/discourse-prometheus-alert-receiver.git
          - git clone https://github.com/discourse/discourse-push-notifications.git
          - git clone https://github.com/discourse/discourse-saved-searches.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-yearly-review.git
          - git clone https://github.com/angusmcleod/discourse-events.git
          - git clone https://github.com/angusmcleod/discourse-locations.git
          - git clone https://github.com/davidtaylorhq/discourse-whos-online.git

Je vois déjà que je peux mettre à jour l’URL pour les derniers. (mais la reconstruction ne peut avoir lieu que ce soir, vers minuit UTC)
Peut-être contacter @angus ou @merefield pour les événements et les lieux.

Cela pourrait provenir du plugin discourse-assign, car il semble être le seul dans votre liste à modifier la classe TopicQuery. Et je soupçonne que c’est là que l’erreur se produit.

Pouvez-vous vérifier mon hypothèse en désactivant le plugin et en vérifiant si la catégorie fonctionne ? Vous pourrez le réactiver ensuite. De plus, il serait intéressant de savoir si l’un des champs personnalisés du sujet fait référence à l’utilisateur fusionné d’une manière ou d’une autre. Pourriez-vous vérifier cela également ?

./launcher enter app
rails c

id_of_problematic_topic = 123
Topic.find(id_of_problematic_topic).custom_fields

Après avoir désactivé discourse-assign :

  • la dernière version fonctionne
  • la version supérieure échoue
  • /t/951 échoue toujours

Exécution de la requête… Ah ! Vous avez trouvé !

 {"event_start"=>1601748000, "event_end"=>1601749800, "event_all_day"=>false, "event_timezone"=>"Etc/UTC", "event_rsvp"=>true, "event_going_max"=>100, "event_version"=>1, "event_going"=>[36, 50]}

Apparemment, le plugin des événements est ignoré lors de la fusion. Mais cela pourrait aussi être dû au fait que nous exécutons une version plus ancienne. Dites-moi si je peux vous aider à tester ce cas.

Merci d’avoir résolu ce problème, @gerhard !

Vous pouvez mettre à jour le champ personnalisé de ce sujet et supprimer l’ID inexistant. @angus pourrait souhaiter ajouter la prise en charge de la fusion des utilisateurs à son plugin.

Pour la forme :

tcf = TopicCustomField.where(topic_id: problematic_topic_id)
c = tcf.last # dans mon cas, YMMV
c.value = "[295,50]"
c.save

Pour la postérité, au cas où ce sujet comporterait plusieurs champs personnalisés, vous devriez utiliser :

tcf = TopicCustomField.where(plugin_name: 'discourse-events', topic_id: problematic_topic_id)
c = tcf.first
c.value = "[295,50]"
c.save

@hellekin, je vous suggère de migrer vers Creating and managing events.

En fait, peut-être pourriez-vous collaborer avec @fzngagan sur un script de migration d’Events vers Discourse Events ? Ce serait bien d’avoir un cas concret à travailler là-dessus. Faiz, nous devrions prioriser cela ; je souhaiterais déprécier officiellement Events.

@angus, @fzngagan : penses-tu que je puisse modifier la ligne du plugin dans la configuration du conteneur, reconstruire, puis me charger d’exécuter le script ? Puisque je dois aussi changer les dépôts Git pour « who’s who » et « wizards », je pourrais le faire en une seule fois. D’un autre côté, nous sommes au milieu d’un hackathon et si le problème est résolu, je peux tout aussi bien attendre une semaine.

@hellekin
J’ai récemment résolu un problème similaire où la suppression d’un utilisateur causait des problèmes.

J’adore l’idée de migrer vers Creating and managing events. La question est alors : souhaitez-vous conserver les événements expirés, et combien d’événements à venir avez-vous ?

@fzngagan @hellekin Vous pouvez déplacer la conversation ici pour régler les détails : Pavilion

Je vais me porter volontaire pour travailler sur un script de migration.

Je suis un grand utilisateur des Événements. Mon plugin pour les écoles accueillant des enfants ayant des difficultés comportementales génère 7 sujets par jour pour plus de 10 enfants répartis sur plusieurs sites et fonctionne depuis plus de deux ans. Chaque sujet représente une période de la journée scolaire et j’ai besoin de pouvoir interroger les données par date d’événement de sujet. J’espère donc que Discourse Events stocke ses données à un endroit approprié.

Je vais rejoindre la discussion dont vous parlez ci-dessous.

Ravi de voir cette merveilleuse collaboration. J’adore Discourse pour cela ! Merci à tous pour vos efforts et votre implication :heart:

Oui, nous aimerions conserver les événements passés car ils sont liés à des sujets, en particulier ceux liés à la conférence ActivityPub 2020 (toujours en cours) — cette semaine, c’est le hackathon.
Hormis ceux-là, nous n’avons pas beaucoup d’événements, mais nous lirons sur la migration — probablement la semaine prochaine, car cette semaine est déjà plus que complète. Salutations ! Et comme l’a dit @aschrijver : la communauté Discourse est géniale !