ログに SegmentNotFound 例外が記録されました。

問題点

ログに SegmentNotFound 例外が記録されました。例:

[1]
*ERROR* [FelixStartLevel] org.apache.sling.event [org.apache.sling.event.impl.jobs.queues.QueueManager(1431)] The activate method has thrown an exception (org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segment da5bcb95-d00a-4c04-a9d9-0f10f2b14e5e not found)

[2] 
*ERROR* [pool-6-thread-3] org.apache.sling.commons.scheduler.impl.QuartzScheduler Exception during job execution of org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@1dc173f9 : Segment e669f30b-e886-4b7a-b161-56432601ec6b not found
org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segment e669f30b-e886-4b7a-b161-56432601ec6b not found

環境

AEM 6.0、AEM 6.1、AEM 6.2

原因

Oak に以前からの問題があるか、リポジトリに不整合があることが原因で、セグメントが見つからなくなり、リポジトリに不整合が発生することがあります。

解決策

リポジトリで整合性チェックを実行して、整合性のある最も新しいリビジョンを探し、そのリビジョンに戻します。次の手順を実行します。

  1. 使用している Oak コアバージョンに合ったバージョンの oak-run を、https://mvnrepository.com/artifact/org.apache.jackrabbit/oak-run からダウンロードします。

    注意:

    AEM 6.0 インスタンスの場合、新機能のチェック実行モードを備えたバージョンの oak-run(oak-run-1.1.7.jar 以上)を使用してください。https://github.com/apache/jackrabbit-oak/blob/trunk/oak-run/README.md#check
    この機能はセグメントノードストアの不整合をチェックするために役立ちます。

  2. 不整合が生じたセグメントストアを、整合性のある最も新しいリビジョンに戻すために、CQ の作業用ディレクトリ(crx-quickstartfolder が含まれているディレクトリ)に移動して、./crx-quickstart/repository/segmentstore/ 内のファイルをすべてバックアップします。

  3. 整合性チェックを実行します。
    java -Xmx6000m -jar oak-run-*.jar check -d1 -p /path/to/crx-quickstart/repository/segmentstore

    これにより、時間をさかのぼって検索を実行し、整合性のある最も新しいリビジョンを探します。
    以下のようなメッセージを探します。
    [main] INFO o.a.j.o.p.s.f.t.ConsistencyChecker - Found latest good revision afdb922d-ba53-4a1b-aa1b-1cb044b535cf:234880

  4. リポジトリをこのリビジョンに戻すには、./crx-quickstart/repository/segmentstore/journal.log を編集して、整合性のある最も新しいリビジョンが記載された行よりも後にある行をすべて削除します。

  5. ./crx-quickstart/repository/segmentstore/*.bak ファイルをすべて削除します。

  6. チェックポイントのクリーンアップを実行して、孤立したチェックポイントを削除します。

    java -Xmx6000m -jar oak-run-*.jar checkpoints /path/to/crx-quickstart/repository/segmentstore rm-unreferenced

  7. 最後に、リポジトリを圧縮します。

    java Xmx6000m -jar oak-run-*.jar compact /path/to/crx-quickstart/repository/segmentstore/

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

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