問題:「InputStream for blobId を取得中にエラーが発生しました」

お使いの Adobe Experience Manager 6.x / Oak 1.x system で設定した FileDataStore があり、error.log では、「InputStream for blobId を取得中にエラーが発生しました」と表示されます。

10.09.2015 10:38:04.220 *ERROR* [pool-9-thread-3] org.apache.sling.commons.scheduler.impl.QuartzScheduler Exception during job execution of org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@7fe7e8fa : Error occurred while obtaining InputStream for blobId [add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983]
java.lang.RuntimeException: Error occurred while obtaining InputStream for blobId [add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983]

解決策

このエラーは、Adobe Experience Manager データストアディレクトリからファイルが見つからないことを意味します。データストアの損失は、Oak Blob ガベージコレクション、ディスク領域の停止、ディスクまたはネットワーク共有の不安定さが原因である可能性があります。または、ユーザーがサーバーからファイルを誤って削除したことが原因の可能性があります。

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

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

次の手順に従ってデータストアを修理後、Adobe Experience Manager 6.0 または 6.1 を Oak 1.0.19 または 1.2.4 以前のバージョンと併用している場合、最新の Oak ホットフィックスをダウンロード、インストールします。

Adobe パッケージ共有において最新のホットフィックスが取得できます。

2. データストア整合性チェックを実行します

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

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

3. 見つからないファイルのパスリストを作成します。

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

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

a. In Linux or Unix:このコマンドを使って見つからないファイルのリストをファイル missing_ds_files.txt に出力します。

grep "blobId" 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

** お使いの Adobe Experience Manager インスタンスが「blobId」エラーのために起動しない場合、crx-quickstart/logs のログファイルからすべてのオカレンスエラー「InputStream for blobId を取得中にエラーが発生しました」を代わりに検索します:

grep "Error occurred while obtaining InputStream for blobId" 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++ などのテキストエディターを使用して「レコードが見つかりません」というすべてのオカレンスを検索します。  次に、すべてのこのような事例を検出した後、マクロを使用するか、スクリプトを書くか、または手動で新しいテキストファイルにファイル名をコピーして、ファイル名を抽出します。

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

例えば、次のようなエラーです。

java.lang.RuntimeException: Error occurred while obtaining InputStream for blobId [add1dd8fc5093b27b1fae1b753cb48b24ef3231f#101983]

レコード ID は add1dd8fc5093b27b1fae1b753cb48b24ef3231f であり、ファイルパスは ad/d1/dd/add1dd8fc5093b27b1fae1b753cb48b24ef3231f
です。

4. 見つからないファイルを回復します

次に、最後の手順から出力を使用し、お使いの環境内にある他の Adobe Experience Manager インスタンスに存在する同じファイルを追跡します。データストアファイルは一意に保存されているため、お使いの環境内にある別の Adobe Experience Manager インスタンスからコピーが可能です。

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

Linux では、作業中の Adobe Experience Manager インスタンスそれぞれにログインし、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 を実行します。 

5. 回復不能なファイル参照をクリーンアップします。

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

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

6. 非同期の Oak インデックスを再インデックス化します

Oak の非同期インデックスモデルのため、Oak 非同期インデックスに関連している見つからないファイルの可能性があります。見つからないファイルは、リポジトリトラバーサルから非表示になっていると、整合性チェックで報告されません。残念なことに、このようなファイルが異なる AEM インスタンス間で一致しないため、このような不一致を修正する唯一の方法は、非同期 Oak インデックスのすべてを再作成することだけです。

非同期インデックスを再作成するには:

1. Oak 環境にインストールされているバージョンと一致する Oak-run 1.0.x をダウンロードします:https://repo1.maven.org/maven2/org/apache/jackrabbit/oak-run/

2. oak-run を Adobe Experience Manager サーバーにアップロードします。

3. Adobe Experience Manager のインスタンスをすべて停止します。

4. Adobe Experience Manager インスタンスの Oak ストレージに応じて以下のコマンドを実行します

TarMK コマンド:

java -Xmx4096m -jar /apps/staging/oak-run-*-*.jar checkpoints crx-quickstart/repository/segmentstore rm-all

MongoMK コマンド:

java -Xmx4096m -jar oak-run-*-*.jar checkpoints mongodb://localhost/aem-author rm-all

5. Adobe Experience Manager を再度起動し、org.apache.jackrabbit.oak.plugins.index. から情報ログメッセージのログファイルをモニターします。インデックス作成の詳細を確認するには、/system/console/slinglog UI に移動し、org.apache.jackrabbit.oak.plugins.index のデバッグレベルのログを有効にします。

次のようなログメッセージが表示されます。

23.06.2015 14:26:23.070 *INFO* [FelixStartLevel] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes: [/oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes]

23.06.2015 14:26:23.517 *INFO* [FelixStartLevel] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing Traversed #10000 /jcr:system/jcr:versionStorage/c8/5f
...
23.06.2015 14:28:51.999 *INFO* [pool-8-thread-1] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Indexing report
    - /oak:index/counter*(708)
    - /oak:index/authorizables*(159)
    - /oak:index/cqPageLucene*(1913)
    - /oak:index/ntBaseLucene*(444)
    - /oak:index/cqTagLucene*(512)
    - /oak:index/workflowDataLucene*(116)
...

23.06.2015 14:28:52.009 *INFO* [pool-8-thread-1] org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Reindexing (async) completed for indexes: [/oak:index/counter*(708), /oak:index/authorizables*(159), /oak:index/cqPageLucene*(1913), /oak:index/ntBaseLucene*(444), /oak:index/cqTagLucene*(512), /oak:index/workflowDataLucene*(116)] in 30.36 s

6. 禁書目録の作成がが何らかの理由で失敗した場合、このログメッセージループが繰り返されます。

23.06.2015 14:26:23.070 *INFO* [FelixStartLevel] org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes: [/oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes]

適用対象

AEM 6.x / Oak 1.x

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

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