Muitos problemas: Staff logado não consegue acessar tópicos, upgrade manual falha, cartões de usuário não abrem, login padrão não funciona

Olá. Já postei um problema semelhante antes, que não foi totalmente resolvido. Atualmente, estamos enfrentando alguns problemas críticos em nossos fóruns.

  1. As atualizações via linha de comando falham.
    1. Tentei remover todas as extensões, mas ainda assim não funcionou.

    2. Criei uma nova instância, copie o backup da antiga e restaurei via linha de comando. O processo terminou com alguns erros:

      ERROR:  could not create unique index "index_incoming_referers_on_path_and_incoming_domain_id"
      DETAIL:  Key (path, incoming_domain_id)=(/m/search, 18) is duplicated.
      EXCEPTION: psql failed: DETAIL:  Key (path, incoming_domain_id)=(/m/search, 18) is duplicated.
      /var/www/discourse/lib/backup_restore/database_restorer.rb:87:in `restore_dump'
      /var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
      /var/www/discourse/lib/backup_restore/restorer.rb:51:in `run'
      script/discourse:145:in `restore'
      /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/command.rb:27:in `run'
      /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/invocation.rb:127:in `invoke_command'
      /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor.rb:392:in `dispatch'
      /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/base.rb:485:in `start'
      script/discourse:286:in `<top (required)>'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli/exec.rb:63:in `load'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli/exec.rb:63:in `kernel_load'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli/exec.rb:28:in `run'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli.rb:494:in `exec'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli.rb:30:in `dispatch'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli.rb:24:in `start'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/exe/bundle:49:in `block in <top (required)>'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/friendly_errors.rb:130:in `with_friendly_errors'
      /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/exe/bundle:37:in `<top (required)>'
      /usr/local/bin/bundle:23:in `load'
      /usr/local/bin/bundle:23:in `<main>'
      Trying to rollback...
      Rolling back...
      Cleaning stuff up...
      Dropping functions from the discourse_functions schema...
      Removing tmp '/var/www/discourse/tmp/restores/default/2021-08-30-124350' directory...
      Unpausing sidekiq...
      Marking restore as finished...
      Notifying 'system' of the end of the restore...
      Finished!
      [FAILED]
      Restore done.
      
    3. Em seguida, executei ./launcher rebuild app para verificar se funcionaria, mas obtive mensagens de erro semelhantes:

      rake aborted!
      StandardError: An error has occurred, this and all later migrations canceled:
      
      ERROR:  unsupported Unicode escape sequence
      DETAIL:  \u0000 cannot be converted to text.
      

      e

      FAILED
      --------------------
      Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with 
      return #<Process::Status: pid 4162 exit 1>
      Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
      exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
      c618c071d6a0240d55ce704cedd63d2ee4cf1df589810d2130049a78b69f327e
      
    4. Também executei discourse-doctor, mas sem sucesso.

  2. Não conseguimos fazer login normalmente com nome de usuário e senha; isso gera um erro.
    1. Apenas outros métodos de login funcionam (GitHub, Google, etc.).
  3. Os cartões de usuário não são exibidos. Se você clicar no nome de um usuário, o cartão tenta aparecer por um instante, mas não consegue.
    1. Ao visitar a página de perfil do usuário (por exemplo, abrindo em uma nova aba), aparece o erro “Oops, esta página não existe”.
    2. Quando um usuário tenta visualizar suas preferências, mensagens, etc., também recebe uma página de erro “Oops”.
    3. Podemos ver outras configurações do usuário pela interface de administração, mas não conseguimos alterar configurações, como interface ou avatar do usuário.
  4. Os administradores não conseguem visualizar tópicos ou a página principal.
    1. O site pode ser visualizado normalmente quando desconectado.
    2. Outros usuários podem fazer login e interagir com o fórum (criar tópicos, respostas, etc.).
    3. Se fizermos login como administrador, somos recebidos com uma mensagem de erro:

      Oops

      O software que alimenta este fórum de discussões encontrou um problema inesperado. Pedimos desculpas pelo inconveniente.

      Informações detalhadas sobre o erro foram registradas e uma notificação automática foi gerada. Vamos analisar.

      Nenhuma ação adicional é necessária. No entanto, se o erro persistir, você pode fornecer detalhes adicionais, incluindo passos para reproduzir o erro, postando um tópico de discussão na categoria de feedback do site.

Qualquer ajuda será apreciada. Se você tiver alguma ideia sobre como corrigir isso ou uma maneira de criar uma nova instância com um backup funcional, por favor, me avise.

Veja isso para um problema semelhante (embora diferente): Duplicate data explorer key blocking rebuild

Verifique problemas de integridade de dados associados em seu banco de dados atual, corrija-os e, em seguida, crie um backup.

@merefield, não tenho conhecimento abrangente, então verifiquei usando o Data Explorer e há uma coluna incoming_domain_id na tabela incoming_referers do tipo integer, que é uma chave estrangeira para incoming_domains. Devo trabalhar nisso? Se sim, como posso verificar?

Isso parece tão bagunçado que, se você não estiver confiante e os dados forem críticos, eu contrataria um SA experiente para ajudá-lo a recuperar tudo Marketplace

Você descobriu os problemas?