Discourse im Wartungsmodus festgefahren

Hallo, mein Discourse-Server steckt im Wartungsmodus fest.
Ich habe ihn absichtlich mehrere Monate im Wartungsmodus belassen und seit der erstmaligen Aktivierung des Wartungsmodus viele Versionen aktualisiert.

Meine Sitzung ist abgelaufen und ich wurde abgemeldet, jetzt kann ich mich nicht mehr anmelden.

Ich kann mich per SSH mit dem Discourse-Server verbinden.
Ich habe die folgenden Schritte versucht:

  1. SSH zum Discourse-Server
  2. Navigieren Sie zu /var/discourse/
  3. Führen Sie aus: ./launcher enter app
  4. Führen Sie rails c aus

Ich habe hier versucht, den Wartungsmodus zu deaktivieren.

[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

Wenn ich den Fokus von SSH auf meinen Webbrowser verlagere, sehe ich, dass das Banner für den Wartungsmodus verschwindet.

Dann kommt es nach ein paar Sekunden wieder.

Ich habe diese Dokumente bereits konsultiert:

Bitte helfen Sie mir

Jemand im ersten verlinkten Thema hatte Erfolg damit, den Container zu stoppen und dann neu zu starten. Könnte das einen Versuch wert sein?

Danke für den Vorschlag. Leider hat mir das nicht geholfen :frowning:

Ich habe ausgeführt

docker ps
docker kill app
docker start app

Eine interessante Sache ist, dass ich auch versucht habe, den schreibgeschützten Modus manuell zu aktivieren:
z.B.:

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

Als ich dies tat, bemerkte ich, dass das Banner zurückkehrt und ich nicht einmal auf die Anmeldeschaltfläche klicken kann, da dort steht: „Die Anmeldung ist deaktiviert, während die Website im schreibgeschützten Modus ist.“ und ich sehe auch das Banner, das besagt:

Diese Website befindet sich im schreibgeschützten Modus. Sie können die Website weiterhin durchsuchen, aber Antworten, „Gefällt mir“-Angaben und andere Aktionen sind vorerst deaktiviert.

Wenn ich disable_readonly_mode erneut aufrufe, verschwindet das Wartungsmodus-Banner und ich kann auf die Anmeldeschaltfläche klicken. Discourse leitet mich sogar an den Authentifizierungs-SSO-Anbieter weiter.

Wenn ich jedoch zurück zu Discourse weitergeleitet werde, erhalte ich eine ganze Seite mit der Meldung „Die Website befindet sich im schreibgeschützten Modus. Interaktionen sind deaktiviert.“

Ich habe ein wenig recherchiert und, obwohl ich noch keine Lösung gefunden habe, scheint der Link /u/admin-login die read_only-Funktion zu umgehen und es Ihnen dennoch zu ermöglichen, sich anzumelden:

@41821 Können Sie Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY) versuchen

4 „Gefällt mir“

Nichts, was ich tat, konnte mich aus dem Zustand befreien.
Nach Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY) wechselt es für eine Sekunde zu R/W und kehrt kurz darauf zu R/O zurück. Nichts Erkennbares in den Protokollen. Selbst das Leeren von Redis hilft nicht. Auch das manuelle Löschen der Redis-Schlüssel nicht.

Dies ist höchstwahrscheinlich ein Fehler, da die Rückkehr von 2.8.7 zu 2.8.3 (meiner vorherigen funktionsfähigen Version) das Problem behoben hat.

Ich habe versucht, den Code durchzugehen, um herauszufinden, wo der Fehler eingeführt wurde, konnte es aber nicht wirklich herausfinden.

1 „Gefällt mir“

Ist dies eine selbst gehostete Website? Das Leeren von Redis sollte alles bereinigen, da die schreibgeschützte Logik vollständig vom Setzen der richtigen Redis-Schlüssel abhängt.