Discourse atascado en modo de mantenimiento

Hola, mi servidor de Discourse está atascado en modo de mantenimiento.
Lo he dejado en modo de mantenimiento a propósito durante varios meses, he actualizado a muchas versiones desde que lo configuré inicialmente en modo de mantenimiento.

Mi sesión ha expirado y he sido desconectado, ahora no puedo volver a iniciar sesión.

Puedo acceder al servidor de Discourse por SSH.
He intentado los siguientes pasos:

  1. Acceder al servidor de Discourse por SSH
  2. Navegar a /var/discourse/
  3. Ejecutar: ./launcher enter app
  4. Ejecutar rails c

He intentado varias cosas para desactivar el modo de mantenimiento aquí.

[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

Cuando cambio el foco de SSH a mi navegador web, puedo ver que el banner del modo de mantenimiento desaparece.

Luego, a los pocos segundos, vuelve a aparecer.

Ya he consultado estos documentos:

Por favor, ayúdame.

Alguien en el primer tema enlazado tuvo suerte al detener y luego reiniciar el contenedor. ¿Valdría la pena intentarlo?

Gracias por la sugerencia. Desafortunadamente, esto no me ha ayudado :frowning:

Ejecuté

docker ps
docker kill app
docker start app

Algo interesante es que también he intentado habilitar manualmente el modo de solo lectura:
por ejemplo:

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

Al hacer esto, noté que el banner regresa y ni siquiera puedo hacer clic en el botón de inicio de sesión porque dice “El inicio de sesión está deshabilitado mientras el sitio está en modo de solo lectura”. y también veo el banner que dice:

Este sitio está en modo de solo lectura. Continúe navegando, pero responder, dar "me gusta" y otras acciones están deshabilitadas por ahora.

cuando llamo a disable_readonly_mode nuevamente, el banner del modo de mantenimiento desaparece y puedo hacer clic en el botón de inicio de sesión. Discourse incluso me entrega al proveedor de autenticación SSO.

Sin embargo, cuando se me redirige de nuevo a Discourse, obtengo una página completa que dice “El sitio está en modo de solo lectura. Las interacciones están deshabilitadas”.

He estado investigando un poco y, aunque todavía no he encontrado una solución, parece que el enlace /u/admin-login omitirá el modo de solo lectura y te permitirá iniciar sesión:

@41821 ¿Puedes intentar Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY)

4 Me gusta

Nada de lo que hice pudo sacarme del estado.
Después de Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY), pasa a R/W por un segundo y vuelve a R/O justo después. Nada discernible en los registros. Incluso vaciar Redis no ayuda. Tampoco borrar las claves de redis manualmente.

Es muy probable que se trate de un error, ya que revertir de 2.8.7 a 2.8.3 (que era mi versión funcional anterior) corrigió el problema.

Intenté revisar el código para averiguar dónde se introdujo el error, pero no pude descifrarlo.

1 me gusta

¿Es este un sitio autoalojado? Vaciar Redis debería solucionarlo todo, ya que la lógica de solo lectura depende completamente de establecer las claves de Redis correctas.