O Git travou e a página de erro Oops apareceu nas contas de Admin/Mod

sim, acho que esse é o problema. O LLM acha que o código não lida bem com uma lista de entradas, daí o erro 500.

Tá, então parece que estamos no território de Contribute > Bug?

Acho que é um bug e espero que a correção seja simples, mas eu realmente não entendo as novas categorias. (E pessoalmente eu não enviaria código se sentisse que não entendo completamente.)

Também há a questão de saber se o estado do seu banco de dados vem de algum outro bug que também precisa ser corrigido.

Como este tópico teve apenas três contribuidores, um novo tópico de relatório de bug pode ser útil - se um moderador quiser mesclar ou recategorizar, ele sempre pode fazer isso.

Ok, eu na verdade não tinha visto o tópico Contribute > Bug, nem me lembro de já ter postado nele, e também não teria o nível de habilidade para identificar se é um bug ou não.

Além disso, SIM, você provavelmente tem razão, pode haver alguns problemas históricos no banco de dados que dispararam esse ponto frágil.

Embora haja a necessidade de tornar a conta de admin acessível novamente, o mais rápido possível, acho que isso continua nas mãos dos deuses, mas pelo menos talvez tenhamos chegado à origem do problema, então aqui vai a esperança!

Obrigado pela ajuda. :+1:

Além disso, fico me perguntando se isso dá algum respaldo para revogar o status de administrador da conta do usuário, mudando para um nível de conta de moderador, e se isso poderia contornar esse problema no login.

Talvez eu teste, depois de fazer um backup das coisas.

Minha preocupação é a perda de dados ou quebrar coisas das quais eu não teria a menor ideia de como verificar, se parecer tudo certo e nenhum erro aparecer. :thinking:

De nada. Foi interessante.

Provavelmente, existe alguma coisa pequena que você poderia fazer em SQL para remover aquela entrada duplicada, mas pessoalmente eu não faria isso de forma tão leve.

Também é possível, segundo o LLM, usar o console do Rails para atualizar a função Ruby de dez linhas e torná-la mais robusta. Isso, pelo menos, deveria ser algo seguro, porque uma reinicialização recarregaria o Ruby real do disco.

Quero colar isso para preservá-lo, para que eu possa fechar uma aba — código não testado do llm, apresentado aqui como um monkey patch para aplicar no console do rails em um sistema em execução, mas também contendo uma correção sugerida pelo llm para essa fragilidade que causa o erro:

# Reabrir o CurrentUserSerializer para sobrescrever o método quebrado
class CurrentUserSerializer < ApplicationSerializer
  def has_new_upcoming_changes
    last_visited = object.custom_fields["last_visited_upcoming_changes_at"]
    
    # Extrair string se estiver em cache como um array pelo preloader
    last_visited = last_visited.first if last_visited.is_a?(Array)
    
    return false if last_visited.blank? && object.created_at < Discourse.site_creation_date + 1.hour
    cutoff = last_visited.present? ? Time.zone.parse(last_visited.to_s) : object.created_at
    UpcomingChangeEvent.added.not_backfilled.where("created_at > ?", cutoff).exists?
  end
end

Revogando o Admin

As ações se aplicam à conta do usuário admin originalmente bloqueado:

  1. Revogar admin + Conceder moderador = falha no login/erro igual.

  2. Revogar moderador

  • primeiro login (sem erro), mas trava na tela de verificação em duas etapas/entrada com o ícone girando
  • Deixei por cerca de 10 minutos (o servidor mostrava um aumento na carga durante o login), mas nada aconteceu
  • no entanto, a aba de usuários “ativos” mostra que o usuário fez login há X minutos, hmm :thinking:
  • Tentei um segundo login em outra janela (anônima) e funcionou!

Ok, isso funciona como uma solução temporária para um usuário admin que precisa ler mensagens/chats etc., mas não resolve o problema de forma definitiva.

Em seguida, usando outra conta admin, Conceder Admin à conta do ex-admin que está conectado

  • Enquanto conectado, a mensagem de atualização de admin chega indicando sucesso.
  • Atualizei a página e o erro apareceu novamente

Não consigo postar no tópico “Git hang”, pois ele foi fechado em 28 de setembro, mas, ao notar alguns atrasos há alguns minutos, pensei: ah, talvez o git tenha travado de novo e esteja causando problemas, e, como não, o downdetector.com estava mostrando um grande pico de indisponibilidade do GitHub mais ou menos naquele momento. :thinking: