こんにちは、フォーラムサイトを構築しています。
サイトの設定を変更してページをリフレッシュしましたが、変更された値が断続的に反映されません。
リフレッシュのたびに、以前キャッシュされた値が表示されているようです。
Puma ワーカーの数を調整しましたが、状況は変わりません。
変更された値はデータベースに保存されています。
これは message_bus の問題でしょうか?
もしそうであれば、設定をどのように変更すればよいでしょうか?
ご回答よろしくお願いいたします。
こんにちは、フォーラムサイトを構築しています。
サイトの設定を変更してページをリフレッシュしましたが、変更された値が断続的に反映されません。
リフレッシュのたびに、以前キャッシュされた値が表示されているようです。
Puma ワーカーの数を調整しましたが、状況は変わりません。
変更された値はデータベースに保存されています。
これは message_bus の問題でしょうか?
もしそうであれば、設定をどのように変更すればよいでしょうか?
ご回答よろしくお願いいたします。
Discourse は具体的にどのようにインストールしましたか?
同じ現象を確認しています。Puma のワーカー数を 1 に設定すると、問題は解消されます。どうやら、各ワーカーがサイト設定オブジェクトのコピーを保持しており、あるワーカーが更新を実行しても、他のワーカーはその更新を認識しないようです。
残念ながら、この問題は複数の Discourse サーバーで構成されたスケールアウト環境でも発生するため、ワーカー数を 1 に設定するだけでは完全な解決策にはなりません。
同じことをお聞きしたいのですが、Discourse はどのようにインストールされましたか?
Discourse の唯一の公式サポートされているインストール方法に従ってインストールした場合、Puma は使用されず、このバグは発生しません。
プラグイン開発を試行しているため、README に記載されているリンクに従って、Ubuntu での開発環境をセットアップしました。コマンド bundle exec rails server --binding=0.0.0.0 を実行すると、Puma を使用してアプリケーションが起動します。
そのような事例で私が目にしたのは、サーバーが停止している場合に、ブラウザが JSON ファイルやキャッシュされたサイトのバージョンを返す場合のみです。
サーバーは現在も稼働していますか?
もう一つ私が行っていることは、別のターミナルを開いて以下を実行することです。
./bin/rails c
そして、以下のように設定を変更します。
SiteSetting.title=“my title”
サーバーは現在も稼働しています。ログを確認したところ、Discourse がリクエストを処理していることが確認できました。また、この不具合のデバッグ中は、ブラウザの開発者コンソールでキャッシュを無効化しています。
なぜプラグイン開発中にスケールアウトしているのですか?
この症状は、内部の MessageBus が破損していることを示しており、Redis の設定に何らかの問題がある可能性があります。ブラウザでのライブ更新も機能していないかもしれません。
プラグイン開発の拡張性を想定していたわけではなく、単にいくつかの異なるシナリオでテストを行い、問題を特定し、理解を深めるために行いました。MessageBus がこれを処理するべきであるなら、さらに調査を進めます。
デバッグ中に、app/models/site_setting.rb がまだ :site_setting_saved イベントをトリガーしていることに気づきました。このイベントはアプリから削除され、:site_setting_changed に置き換えられたようです。現在、:site_setting_saved イベントを監視しているものはありません。
開発環境でも bin/unicorn で Unicorn ウェブサーバーを実行できます。