現象

起動時に、CRX リポジトリは予期したとおりに動作します。ただし、コンテンツの変更は Lucene 内ではインデックスを作成できません。エラーログでは、エントリは記録されます。

INFO [org.apache.jackrabbit.core.RepositoryImpl] (WorkspaceJanitor) disposing workspace 'myworkspace' which has been idle for 5064 ms INFO [org.apache.jackrabbit.core.RepositoryImpl] (WorkspaceJanitor) shutting down workspace 'myworkspace'... INFO [org.apache.jackrabbit.core.RepositoryImpl] (WorkspaceJanitor) workspace 'myworkspace' has been shutdown ERROR [org.apache.jackrabbit.core.RepositoryImpl] (ajp-10.2.0.101-12152-20) Unable to initialize workspace 'myworkspace'

原因

問題が存在するには、次の条件を満たす必要があります。

  1. リポジトリは maxIdleTime で設定されます。
  2. 質問のワークスペースはデフォルトのワークスペースではありません
  3. インデックスの初期化は、maxIdleTime より時間がかかります。
  4. CRX のバージョンは 1.4.x です

非デフォルトワークスペースは、最初にそのワークスペースにアクセスしたときに開始されます(最初にそのワークスペースにログインしたとき)。デフォルトのワークスペースは、リポジトリの起動時に開始されます。非デフォルトワークスペースでは、設定可能な待機時間の後に破棄(シャットダウン)できます(つまり、システム/内部セッションのみがそのワークスペースにログインしていることを意味する)。CRX のデフォルト値は 5 秒です。

ワークスペースの起動時に、ワークスペースの一部のコンポーネントはすぐに初期化されますが、他のコンポーネントはオンデマンドで初期化されます。すぐに初期化されたコンポーネントが起動されると、リポジトリはワークスペースインスタンスにフラグを設定します。ワークスペースを破棄できるかどうかをチェックするバックグラウンドスレッドは、フラグとワークスペースが最後にアクセスされたかどうかをチェックします。起動時に、インデックスがゆっくりと初期化されているので、これは問題になる可能性があります。インデックスの起動に maxIdleTime よりも時間がかかる場合、背景チェッカースレッドはワークスペースが待機中になっていると見なし、インデックスがまだ起動している間に、そのワークスペースをシャットダウンします。このレースコンディションは CRX 2.0 にで修正されました。

解決策

これは、問題が CRX 2.0 で修正されたことを意味します。CRX 1.4.x の回避策は、(1)repository.xml の maxIdleTime を 0 に設定するため(注意:CRX 1.4.2 のデフォルト値は 5 秒)、または(2)repository.xml の defaultWorkspace を「myworkspace」に設定するため(注意:CRX 1.4.2 のデフォルト値は「crx.default」)です。

前者と後者どちらを実行した場合でも、効果は同じです。myworkspace ワークスペースはある程度の時間待機中でもシャットダウンすることはありません。

ただし、一つだけ違う点があります。デフォルトのワークスペースのみがリポジトリの起動時にすぐに初期化されます。それ以外は、初回ログイン時(ワークスペースへの最初のログイン時)にのみ初期化されます。これは、最初のインデックスまたは再インデックスが、デフォルト以外のすべてのワークスペースへの最初のアクセスでのみトリガーされることも意味します。

問題が発生している間にインデックスされなかったノードを修正するには、インデックスを再構築する必要があります。インデックスを修正するために正式にサポート、そして推奨される方法は、インデックスの再構築です。

適用対象

CRX 1.4.x

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

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