Olá a todos,
Estou enfrentando um problema estranho em uma instalação nova do Discourse e apreciaria qualquer orientação.
Ambiente
- Discourse Docker (última versão estável)
- Ubuntu 24.04
- Instalação nova usando
discourse_docker - Sem plugins, exceto OpenID Connect
- Repositório Git está limpo
- Proxy reverso com nginx
- Apenas HTTP (sem HTTPS ainda)
- Repositório Git local existe e está na branch
latest
O comportamento estranho
Usuários anônimos:
A página inicial carrega normalmente
Usuários autenticados normais:
Funcionam normalmente
Usuários autenticados através do OpenID Connect:
Funcionam normalmente
Mas todo usuário administrador local do Discourse recebe um tempo limite e finalmente:
Ops
O software que alimenta este fórum de discussão encontrou um problema inesperado.
ou às vezes
O servidor está experimentando alta carga.
O que testamos
Criamos um novo administrador local usando
rake admin:create
Resultado:
- usuário como Administrador →
tempo limite 500 - mesmo usuário após alterar
u.admin = false
u.save!
→
funciona imediatamente
Então o problema é reproduzível apenas quando admin == true.
Log
O trabalhador sempre tem tempo limite após cerca de 30 segundos.
Rastreamento:
GitUtils.try_git
GitUtils.has_commit?
DiscourseUpdates.new_features
DiscourseUpdates.has_unseen_features?
CurrentUserSerializer
ApplicationLayoutPreloader
O tempo limite sempre acontece aqui:
/var/www/discourse/lib/git_utils.rb:33
Kernel#`
Observação importante
Executar Git manualmente dentro do container é instantâneo.
Por exemplo:
git rev-parse HEAD
retorna em cerca de 7 ms.
Também:
git merge-base --is-ancestor <current_commit> HEAD
retorna imediatamente.
Então o Git em si não está lento.
Redis
new_features não parece existir:
redis-cli exists new_features latest_new_feature_created_at
(integer) 0
Pergunta
Por que GitUtils.has_commit? bloquearia apenas para usuários administradores enquanto todos os comandos Git executam instantaneamente pelo shell?
Existe algum problema conhecido em versões recentes do Discourse onde DiscourseUpdates ou new_features causa tempos limite apenas para administradores?
Qualquer ideia sobre onde investigar a seguir seria muito apreciada.
Obrigado!