Ubuntu開発環境のインストールでサイト設定が毎回異なる

こんにちは、フォーラムサイトを構築しています。

サイトの設定を変更してページをリフレッシュしましたが、変更された値が断続的に反映されません。

リフレッシュのたびに、以前キャッシュされた値が表示されているようです。

Puma ワーカーの数を調整しましたが、状況は変わりません。

変更された値はデータベースに保存されています。

これは message_bus の問題でしょうか?
もしそうであれば、設定をどのように変更すればよいでしょうか?

ご回答よろしくお願いいたします。

「いいね!」 1

Discourse は具体的にどのようにインストールしましたか?

「いいね!」 1

同じ現象を確認しています。Puma のワーカー数を 1 に設定すると、問題は解消されます。どうやら、各ワーカーがサイト設定オブジェクトのコピーを保持しており、あるワーカーが更新を実行しても、他のワーカーはその更新を認識しないようです。

残念ながら、この問題は複数の Discourse サーバーで構成されたスケールアウト環境でも発生するため、ワーカー数を 1 に設定するだけでは完全な解決策にはなりません。

同じことをお聞きしたいのですが、Discourse はどのようにインストールされましたか?

Discourse の唯一公式サポートされているインストール方法に従ってインストールした場合、Puma は使用されず、このバグは発生しません

「いいね!」 1

プラグイン開発を試行しているため、README に記載されているリンクに従って、Ubuntu での開発環境をセットアップしました。コマンド bundle exec rails server --binding=0.0.0.0 を実行すると、Puma を使用してアプリケーションが起動します。

そのような事例で私が目にしたのは、サーバーが停止している場合に、ブラウザが JSON ファイルやキャッシュされたサイトのバージョンを返す場合のみです。

サーバーは現在も稼働していますか?

もう一つ私が行っていることは、別のターミナルを開いて以下を実行することです。

./bin/rails c

そして、以下のように設定を変更します。

SiteSetting.title=“my title”

サーバーは現在も稼働しています。ログを確認したところ、Discourse がリクエストを処理していることが確認できました。また、この不具合のデバッグ中は、ブラウザの開発者コンソールでキャッシュを無効化しています。

なぜプラグイン開発中にスケールアウトしているのですか?

この症状は、内部の MessageBus が破損していることを示しており、Redis の設定に何らかの問題がある可能性があります。ブラウザでのライブ更新も機能していないかもしれません。

「いいね!」 2

プラグイン開発の拡張性を想定していたわけではなく、単にいくつかの異なるシナリオでテストを行い、問題を特定し、理解を深めるために行いました。MessageBus がこれを処理するべきであるなら、さらに調査を進めます。

デバッグ中に、app/models/site_setting.rb がまだ :site_setting_saved イベントをトリガーしていることに気づきました。このイベントはアプリから削除され、:site_setting_changed に置き換えられたようです。現在、:site_setting_saved イベントを監視しているものはありません。

開発環境でも bin/unicorn で Unicorn ウェブサーバーを実行できます。

「いいね!」 1