Ich sehe das Gleiche. Wenn ich die Anzahl der Puma-Worker auf 1 setze, verschwindet das Problem. Es scheint, als würde jeder Worker eine Kopie des Site-Einstellungen-Objekts halten, und wenn ein Worker ein Update durchführt, werden die anderen Worker davon nie informiert.
Leider tritt dieses Problem auch in einer skalierten Umgebung mit mehreren Discourse-Servern auf, sodass das Setzen der Worker-Anzahl auf 1 keine vollständige Lösung ist.
Ich versuche, ein Plugin zu entwickeln, und habe daher den Link in der README befolgt, um eine Ubuntu-Entwicklungsumgebung einzurichten. Wenn ich den Befehl bundle exec rails server --binding=0.0.0.0 ausführe, startet die Anwendung mit Puma.
Das Einzige, was ich in dieser Hinsicht gesehen habe, ist, dass der Browser manchmal eine JSON-Datei oder die zwischengespeicherte Version der Website zurückgibt, wenn der Server gestoppt ist.
Ist der Server noch aktiv?
Eine weitere Sache, die ich tue, ist, ein weiteres Terminal zu öffnen und
./bin/rails c
auszuführen und dort Einstellungen zu ändern, zum Beispiel mit:
Der Server läuft noch. Ich habe in den Protokollen überprüft, dass Discourse die Anfrage bedient. Zudem habe ich beim Debuggen den Cache in der Entwicklerkonsole meines Browsers deaktiviert.
Warum skalierst du während der Plugin-Entwicklung horizontal?
Die Symptome deuten darauf hin, dass dein interner MessageBus defekt ist, was auf ein Problem mit deiner Redis-Konfiguration hindeutet. Live-Aktualisierungen im Browser können ebenfalls beeinträchtigt sein.
Ich habe nicht für die Plugin-Entwicklung skaliert, sondern habe dies nur in einigen verschiedenen Szenarien getestet, um mein Problem einzugrenzen und sicherzustellen, dass ich es verstanden habe. Wenn MessageBus dies übernehmen soll, werde ich mich weiter damit beschäftigen.
Beim Debuggen habe ich festgestellt, dass app/models/site_setting.rb weiterhin ein :site_setting_saved-Event auslöst, das anscheinend aus der App entfernt und durch :site_setting_changed ersetzt wurde. Es hört niemand mehr auf das :site_setting_saved-Event.