Discourse preso em modo de manutenção

Olá, meu servidor Discourse está preso no modo de manutenção.
Deixei-o em modo de manutenção de propósito por vários meses, fiz upgrade para muitas versões desde que o configurei inicialmente para o modo de manutenção.

Minha sessão expirou e fui desconectado, agora não consigo fazer login novamente.

Posso acessar o servidor Discourse via SSH.
Tentei os seguintes passos:

  1. Acesse o servidor Discourse via SSH
  2. Navegue até /var/discourse/
  3. Execute: ./launcher enter app
  4. Execute rails c

Tentei várias coisas para desativar o modo de manutenção aqui.

[1] pry(main)> 
[2] pry(main)> 
[3] pry(main)> Discourse.disable_readonly_mode(Discourse::READONLY_MODE_KEY)
=> true
[4] pry(main)> Discourse.disable_readonly_mode
=> true

Quando mudo o foco do SSH para o meu navegador web, posso ver que o banner do modo de manutenção desaparece.

Então, alguns segundos depois, ele volta novamente.

Já consultei estes documentos:

Por favor, ajude.

Alguém no primeiro tópico vinculado teve sorte ao parar e reiniciar o contêiner. Isso valeria a pena tentar?

Obrigado pela sugestão. Infelizmente, isso não me ajudou :frowning:

Eu executei

docker ps
docker kill app
docker start app

Uma coisa interessante é que também tentei ativar manualmente o modo somente leitura:
por exemplo:

[8] pry(main)> Discourse.enable_readonly_mode
=> true
[9] pry(main)> Discourse.disable_readonly_mode
=> true
[10] pry(main)>

Ao fazer isso, notei que o banner volta e eu nem consigo clicar no botão de login porque ele diz O login está desativado enquanto o site está em modo somente leitura. e também vejo o banner que diz:

Este site está em modo somente leitura. Continue navegando, mas respostas, curtidas e outras ações estão desativadas por enquanto.

quando eu chamo disable_readonly_mode novamente, o banner do modo de manutenção desaparece, e eu posso clicar no botão de login. O Discourse até me transfere para o provedor de SSO de autenticação.

No entanto, quando sou redirecionado de volta para o Discourse, recebo uma página inteira dizendo “O site está em modo somente leitura. As interações estão desativadas.”

Fiz algumas pesquisas e, embora ainda não tenha encontrado uma solução, parece que o link /u/admin-login ignora o modo somente leitura e permite que você faça login mesmo assim:

@41821 Você pode tentar Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY)

4 curtidas

Nada do que fiz conseguiu me tirar do estado.
Após Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY), ele muda para R/W por um segundo e reverte para R/O logo depois. Nada discernível nos logs. Nem mesmo limpar o Redis ajuda. Nem limpar as chaves do redis manualmente.

Isso é muito provavelmente um bug, pois reverter do 2.8.7 para o 2.8.3 (que era minha versão funcional anterior) corrigiu o problema.

Tentei percorrer o código para descobrir onde o bug foi introduzido, mas não consegui descobrir.

1 curtida

Este é um site auto-hospedado? Limpar o Redis deve resolver tudo, pois a lógica de somente leitura depende inteiramente da definição das chaves corretas do Redis.