問題点

次のメッセージのいづれかが error.log に表示されます。

*WARN * BLOBInDataStore: getSize for a586f73ec77fba3135021af01c7f09d972eb3e01 failed (BLOBInDataStore.java, line 95)
org.apache.jackrabbit.core.data.DataStoreException: Record not found: a586f73ec77fba3135021af01c7f09d972eb3e01

org.apache.jackrabbit.core.data.DataStoreException: Failed to read record modified date: /opt/author/crx-quickstart/repository/shared/repository/datastore/6f/b6/14/6fb61425b9187a97f9404cee290cc255177c702e

Caused by: java.io.FileNotFoundException: /opt/author/crx-quickstart/repository/shared/repository/datastore/6f/b6/14/6fb61425b9187a97f9404cee290cc255177c702e
at org.apache.jackrabbit.core.data.LazyFileInputStream.<init>(LazyFileInputStream.java:63)
at org.apache.jackrabbit.core.data.FileDataRecord.getStream(FileDataRecord.java:57)
... 114 more

解決策

このエラーは、AEM データストアディレクトリのファイルが見つからないことを意味します。データストアの概略と使用方法の詳細については、このドキュメントを確認してください。データストアのファイルの損失は、データストアのガベージコレクション、ディスク容量の停止、ディスクまたはネットワーク共有の不安定さの障害が原因である可能性があります。または、ユーザーがサーバーからファイルを誤って削除したことが原因の可能性があります。

見つからないファイルを回復するには、次の手順に従います。

1. 最新の CRX ホットフィックスをインストールします

続行する前に、CQ 5.4 以前のバージョンを使用しているなら、および最新の CRX ホットフィックスをダウンロードし、CQ インスタンスが起動している場合は、それをインストールします。

Adobe のパッケージ共有に最新のホットフィックスが表示されます。

2. 「ファイルが見つからない:」エラーを修正します。

この記事で説明されているように見つからない TAR ファイルが存在する場合は、まずその問題を処理します。見つからない TAR ファイルがある場合、error.log で「ファイルが見つかりません:」などのエラーが発生する可能性があります。

例えば、TAR ファイルが見つからないために、データソースの GC で検出されたエラーを次に表示します。

27.02.2012 13:55:01 *WARN * TarSet: File not found: 4650 for entry 6c18a73a-aba1-44b8-93c2-90fb49cac5e5 pos:4650/148692992 length: 669 from /opt/author/crx-quickstart/repository/workspaces/crx.default/copy [4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, 4661, 4662, 4663].
27.02.2012 13:55:38 *INFO * FileDataStore: Deleting old file /opt/author/crx-quickstart/repository/shared/repository/datastore/6f/b6/14/6fb61425b9187a97f9404cee290cc255177c702e modified: 2012-02-23 10:06:58.0 length: 6555 (FileDataStore.java, line 315)
28.02.2012 10:49:46 *WARN * BLOBInDataStore: getSize for 6fb61425b9187a97f9404cee290cc255177c702e failed (BLOBInDataStore.java, line 95)
org.apache.jackrabbit.core.data.DataStoreException: Failed to read record modified date: /opt/author/crx-quickstart/repository/shared/repository/datastore/6f/b6/14/6fb61425b9187a97f9404cee290cc255177c702e

3. データストア一貫性チェックを実行します

データストア内のすべての見つからないファイルの一覧を取得する唯一の方法は、データストアの一貫性チェックを実行することです。AEM インスタンスが起動できる場合は、実行中のインスタンスの次の手順に従います。

  1. CRX に移動し、管理者としてログインしてください。
    - http://<host>:<port>/crx(CQ5.4/CRX2.2 以前)
    - http://<host>:<port>/crx/explorer/index.jsp(CQ5.5/CRX2.3 以降)
  2. 「リポジトリ設定」をクリックします。
  3. 「レポジトリをチェック」をクリックします。
  4. 「データストア一貫性」を選択します。
  5. Click Run.
  6. ブラウザが開いて、プロセスの継続時間を表示します。エラーが検出され、プロセスでログファイルにメッセージが書き込まれない場合のみ、画面にメッセージが出力されます。エラーメッセージは、データストアレコードが参照されているノードのパスと、見つからないファイルのレコード ID を報告します。
  7. プロセスが完了すると、出力をテキストファイル consistency_check_output.txt にコピーし、次の手順に従います。

4. 見つからないファイルパスリストの作成

見つからないファイルを回復する際の次の手順は、見つからないファイルのパスの完全なリストをコンパイルすることです。

1. 「ページが見つかりません」というエラーレコードのすべてに関する一貫性チェックの出力が表示されます。

a. Linux または Unix の場合このコマンドを使用して、すべてのいつから内ファイルの一覧を missing_ds_files.txt ファイルへ出力します。

grep "Record not found:" consistency_check_output.txt | grep -Eo "[0-9a-f]{40}" | awk '{ print substr($1, 0,2) "/" substr($1, 3,2) "/" substr($1, 5,2) "/" $1 }' | sort -u > missing_ds_files.txt

** AEM インスタンスが「レコードが見つかりません」というエラーが原因で起動しない場合は、「レコードが見つかりません」エラーのすべてについて、crx-quickstart/logs のログファイルを検索します。

grep "Record not found:" error.log* | grep -Eo "[0-9a-f]{40}" | awk '{ print substr($1, 0,2) "/" substr($1, 3,2) "/" substr($1, 5,2) "/" $1 }' | sort -u > missing_ds_files.txt

コマンドが正しく動作する場合、missing_ds_files.txt のコンテンツは次のようになります。

12/92/04/129204a6dd0ce2cd5ca19c721b6f52ee2b3630e2
9f/d8/38/9fd8386d20cf55e7e0024e18d0c7d4e8400454ee
7a/13/15/7a1315788f45dafd6630454f04183601682a9f80
28/37/d2/2837d24aed3ff223cd40e90222226c4ef2e2a0c6

  b. Windows の場合:Textpad または Notepad++ などのテキストエディターを使用して、「レコードが見つかりません」の事例をすべて検索します。  次に、すべてのこのような事例を検出した後、マクロを使用するか、スクリプトを書くか、または手動で新しいテキストファイルにファイル名をコピーして、ファイル名を抽出します。

データストアファイルパスは、この形式でレコード名から構築されます:
{ レコード ID の最初の 2 文字 }/{レコード ID の 2 番目から 2 文字 }/{レコード ID の 3 番目から 2 文字 }/{ レコード ID }

例えば、次のような場合です。

error.log: org.apache.jackrabbit.core.data.DataStoreException: Record not found: 129204a6dd0ce2cd5ca19c721b6f52ee2b3630e2

レコ=ド ID は、129204a6dd0ce2cd5ca19c721b6f52ee2b3630e2 で、ファイルパスは、12/92/04/129204a6dd0ce2cd5ca19c721b6f52ee2b3630e2
です。

5. 見つからないファイルの回復

最後の手順からの出力を使用し、環境内のほかの AEM(CQ)インスタンスの同じファイルを追跡します。データストアファイルは、固有に保存されているので、環境内のほかの AEM インスタンスからコピーできます。

他のインスタンスに含まれているファイルが見つからない場合は、バックアップを検索してから、可能であればそこから復元してください。

Linux では、作業中の各 AEM インスタンスにログインし、rsync などのコマンドを使用して、存在しないファイルをコピーします。例えば、ファイルが存在しないサーバー上のデータストアディレクトリから、ファイルを実行すると、次のようになります。

rsync -avR --files-from=missing_ds_files.txt . user@hostname-of-server-missing-files:/path/to/crx-quickstart/repository/repository/datastore/

コマンドは、サーバーに存在する missing_ds_files.txt に一覧表示されているすべてのファイルをコピーする rsync を実行します。 

6. 回復不能なファイルの参照をクリーンアップする

バックアップまたはほかの AEM(CQ)インスタンスから一部のファイルを復元できなかった場合は、誤ったデータベースストア参照をクリーンアップまたは修正します。  手順 4 でプロジェクトを実行すると、データストア一貫性チェックを再実行します。  見つからないファイルの現在のリストが表示されます。

見つからないデータストアファイルを参照しているリスト化された各ノードパスを確認します。見つからない DAM アセットや、ユーザーがページにアップロードしたファイルを確認します。必要なすべての見つからないものを、再アップロードします。AEM ユーザーインターフェイスを介して、安全に削除される必要はありません。/var/audit または /var/eventing から見つからない場合は、安全に削除できます。確認できないすべてのファイルのために、ここに移動して、AEM サポートチームに連絡します。

適用対象

CRX 2.2、2.3

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

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