Falha na mesclagem de usuários, entradas de banco de dados corrompidas devido a plugin de terceiros

OK, buscando isso… Estou com problemas de conectividade. Vou verificar com o safe_mode para ver se funciona.
O modo seguro não ajudou…

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

Já percebi que posso atualizar a URL dos últimos plugins. (mas a reconstrução só pode acontecer hoje à noite, UTC, por volta da meia-noite)
Talvez seja bom avisar @angus ou @merefield sobre os plugins de eventos e locais.

Pode ser o plugin discourse-assign, já que parece ser o único na sua lista que modifica a classe TopicQuery. E suspeito que é aí que o erro ocorre.

Você pode verificar minha suspeita desativando o plugin e conferindo se a categoria funciona? Você pode reativá-lo depois. Além disso, seria interessante saber se algum dos campos personalizados do tópico referencia o usuário mesclado de alguma forma. Você pode verificar isso também, por favor?

./launcher enter app
rails c

id_of_problematic_topic = 123
Topic.find(id_of_problematic_topic).custom_fields

Após desabilitar discourse-assign:

  • o mais recente funciona
  • o mais antigo falha
  • /t/951 ainda falha

Executando a consulta… Ah! Você acertou!

 {"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]}

Parece que o plugin de eventos é ignorado durante a mesclagem. Mas isso pode ser esperado, já que estamos executando uma versão mais antiga. Me avise se posso ajudar a testar esse caso.

Obrigado por resolver isso, @gerhard!

Você pode atualizar o campo personalizado desse tópico e remover o ID inexistente. @angus pode querer adicionar suporte para mesclagem de usuários ao seu plugin.

Para os registros:

tcf = TopicCustomField.where(topic_id: problematic_topic_id)
c = tcf.last # no meu caso, pode variar
c.value = "[295,50]"
c.save

Para fins de registro, caso esse tópico tenha vários campos personalizados, você deve usar:

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

@hellekin, eu migraria para Creating and managing events.

Na verdade, talvez você possa trabalhar com @fzngagan em um script de migração do Events para o Discourse Events? Seria bom ter um caso real para trabalhar lá. Faiz, devemos priorizar isso; gostaria de descontinuar oficialmente o Events.

@angus, @fzngagan: vocês acham que posso alterar a linha do plugin na configuração do container, reconstruir e, em seguida, cuidar da execução do script? Como também preciso alterar os repositórios Git para o

@hellekin
Recentemente, corrigi um problema semelhante em que a exclusão de um usuário estava causando problemas.

Adoro a ideia de migrar para Creating and managing events. A questão então é: você deseja manter eventos expirados e quantos eventos futuros você tem?

@fzngagan @hellekin Vocês podem mover a conversa para cá para definir os detalhes: Pavilion

Vou me candidatar para trabalhar em um script de migração.

Sou um usuário intenso de Eventos. Meu Plugin para escolas com crianças que apresentam dificuldades comportamentais cria 7 tópicos por dia para mais de 10 crianças em várias unidades e está em funcionamento há mais de dois anos. Cada tópico representa um período do dia letivo e preciso ser capaz de consultar por data do evento do tópico, então espero que o Discourse Events armazene seus dados em um local adequado.

Vou participar da discussão que você mencionou abaixo.

Ótimo ver essa maravilhosa cooperação. Eu amo o Discourse por isso! Obrigado a todos pelos seus esforços e envolvimento :heart:

Sim, gostaríamos de manter eventos passados, já que estão relacionados a tópicos, especialmente os atuais relacionados à conferência ActivityPub 2020 (ainda em andamento) – esta semana é a hackathon.
Além desses, não temos muitos eventos, mas leremos sobre a migração – provavelmente na próxima semana, já que esta semana já está mais do que cheia. Abraços! E o que @aschrijver disse: a comunidade Discourse é incrível!