質問/問題

リポジトリの Lucene インデックスが一貫していない状態になることがあります。特に、リポジトリが異常シャットダウンされたり、対応する Java プロセスが予期せず停止したりする場合があります。インデックスの不整合の深刻度によっては、リポジトリは適切に起動しない場合があります。

回答/解決策

CRX LuceneHandler クラスは、インデックスの不整合を確認して修正するための次の構成パラメーターを提供する jackrabbit SearchIndex[1] クラスを拡張します。

Parameter Default Value Description
enableConsistencyCheck false もし True に設定されれば forceConsistencyCheck のパラメーターに依存して一貫性チェックが実行されます。false に設定されている場合、起動時に一貫性チェックが実行されません。
forceConsistencyCheck false 起動するたびに一貫性チェックを実行します。false の場合、一致チェックは検索インデックスが以前の強制シャットダウンを検出したときにのみ実行されます。
autoRepair true 一貫性チェックによって検出されたエラーが自動的に修正されます。false の場合、エラーはログにのみ書き込まれます。

インデックスの整合性チェックを実行するには、対象となるワークスペースの対応する workspace.xml 設定ファイルを再設定します。例えば <crx_home>/crx-quickstart/repository/workspaces/crx.default/workspace.xml:

workspace.xml

<SearchIndex class="com.day.crx.query.lucene.LuceneHandler">
    ...
    <param name="enableConsistencyCheck" value="true" />
    <param name="forceConsistencyCheck" value="true" />
    <param name="autoRepair" value="true" />
</SearchIndex>

この設定が完了すると、インデックスの一貫性チェックが起動時に実行されます。リポジトリのボリュームとインデックスのサイズによっては、終了するまでに時間がかかることがあります。CRX の error.log では、チェックの進行状況を監視できます。

*INFO * SearchIndex: Running consistency check...
*INFO * ConsistencyCheck: progress: 10%
*INFO * ConsistencyCheck: progress: 20%
...

上記の設定を再度削除ないと、起動時間が遅くなるリポジトリを再起動するたびに consistency-check がトリガーされることに留意してください。enableConsistencyCheck の値を false に設定すると、チェックも完全に無効になります。

索引を完全に再構築

インデックスを完全に再作成するには、リポジトリを停止し、インデックスディレクトリを削除して、リポジトリを起動します。インデックスの再構築には数時間がかかる場合があります。インデックスのディレクトリは、次のディレクトリ内の各クラスターノードごとに、別々に保存されます。

  • crx-quickstart/repository/repository/index
  • crx-quickstart/repository/workspaces/crx.default/index
  • crx-quickstart/repository/workspaces/crx.system/index

適用

CRX >= 1.4.x

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー