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:
Acesse o servidor Discourse via SSH
Navegue até /var/discourse/
Execute: ./launcher enter app
Execute rails c
Tentei várias coisas para desativar o modo de manutenção aqui.
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:
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.
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.