Fessの設定を管理画面で保存したり、system.propertiesを編集したりしても、起動時に読み込んだ値が残る項目がありました。開発版ではこの動作を改善し、テーマやRAGチャットの利用条件、埋め込み接続の設定変更を稼働中の処理へ反映するようにしました。
保存した設定と実際の動作をそろえる
system.propertiesはファイル変更時に再読み込みされます。今回の修正では、再読み込み後も残っていた解析済みの値を更新します。対象はrag.chat.permissions、rag.chat.labels、sort.value、label.value、virtual.host.valueです。手動編集とバックアップからの設定復元も対象になります。
rag.chat.permissionsとrag.chat.labelsの初期値は空です。前者はチャット利用権限の追加制限なし、後者は検索対象ラベルの追加制限なしという意味で、文書そのものの検索権限を解除する設定ではありません。たとえば、すでに有効化したチャットを特定グループへ限定する設定は次のようになります。
rag.chat.permissions={group}developer
対応版では、保存・再読み込み後のアクセス判定で新しい値を使います。グループ内外のアカウントで実際に確認しておくと、反映漏れを見つけやすくなります。
theme.defaultはテーマ解決時に読み直します。また、osdd.link.enabled=autoの場合、SSO種別の変更に合わせてブラウザー向け検索登録リンクと/osddの提供可否を判定し直します。
埋め込み接続の変更を反映する
OpenSearch埋め込みのcontent_chunker.embedding.opensearch.api.url、username、passwordはリクエストごとに参照します。HTTPクライアントに古い認証情報を保持していたために、接続先を変更しても以前の認証情報を送る問題を改善しています。
埋め込みプロバイダーのtimeoutとconnect.timeoutを変更すると、次の利用時にHTTPクライアントを作り直します。OpenSearchの応答タイムアウトの初期値は60000ミリ秒です。処理中のリクエストがすべて直ちに新しいタイムアウトへ切り替わるわけではなく、旧クライアントは進行中の処理のために一定時間残ります。
content_chunker.embedding.opensearch.timeout=30000
content_chunker.embedding.opensearch.availability.check.interval=60
上のタイムアウト30秒は調整例です。可用性チェックの初期値は60秒で、間隔変更は実行待ちのチェックが終わって次のチェックを予約するときに反映します。短い間隔へ変更してから戻しても、古い周期のチェックが重複して残らないようにする修正も入りました。
マルチモーダルプラグインでは、CLIP接続先と画像設定も利用時に読み直します。画像の初期値は224×224、受け付ける最大サイズは3000×2000、形式はpng、接続先はhttp://localhost:51000です。この変更には対応するプラグインも必要です。
再起動が必要な設定を区別する
fess_config.propertiesの設定は引き続き再起動が必要です。system.propertiesの値が優先され、-Dfess.system.*はその値がない場合のフォールバックになる順序も変わりません。起動コマンドの-Dを書き換える操作が、稼働中のJVMを直接変更するわけではありません。
管理画面の「システムプロパティ」に対応するapp.valueは、手動編集による変更も5秒ごとに確認します。この欄で設定した値を変更・削除すると更新・復元しますが、fess.*以外のキーが起動オプションなど別の経路ですでに設定されている場合は、それを優先します。
SPNEGOの設定反映も別PRで提案されていますが、確認時点ではFessプラグインのPR #2は未マージです。ライブラリ側の変更だけで利用できるとは案内できません。提案されている実装でも、keytabの差し替え、同じ場所のkrb5.confやlogin.confの内容変更、AD側だけのサービスアカウントのパスワード変更は再起動が必要とされています。