AEM 6.x で SegmentNotFound がレポートされた場合のリポジトリの不整合の修正

説明

環境
Adobe Experience Manager 6.x

問題/症状
観測済み SegmentNotFound ログ内の例外。 例:

  1. *ERROR* FelixStartLevel org.apache.sling.event org.apache.sling.event.impl.jobs.queues.QueueManager(1431) activate メソッドが例外をスローしました (org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException:セグメント da5bcb95-d00a-4c04-a9d9-0f10f2b14e5e が見つかりません )

  2. **ERROR* pool-6-thread-3 org.apache.sling.commons.scheduler.impl.QuartzScheduler org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@1dc173f9のジョブ実行中に例外が発生しました。セグメント e669f30b-e886-4b7a-b161-56432601ec6b が見つかりません

    org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException:セグメント e669f30b-e886-4b7a-b161-56432601ec6b が見つかりません*

解決策

リポジトリで整合性チェックを実行し、最後に正常なリビジョンの正常な状態を見つけて、その状態に戻します。 次の手順に従います。

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

  2. 破損したセグメントストアを最新の正常な状態に戻すには、CQ の作業ディレクトリ(crx-quickstartfolder を含むディレクトリ)に変更し、内のすべてのファイルをバックアップします。/crx-quickstart/repository/segmentstore/に設定します。

  3. 整合性チェックを実行します。

    java -Xmx6000m -jar oak-run-*.jar check --bin=-1 /path/to/crx-quickstart/repository/segmentstore

    これは、リビジョンが一貫して見つかるまで、リビジョンを後方に検索します。

    次のようなメッセージを探します。

    main INFO o.a.j.o.p.s.f.t.ConsistencyChecker — 最新の良いリビジョン 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/

原因
Oak の古い問題やリポジトリ内の不整合が原因で、セグメントが欠落し、リポジトリの不整合が生じる可能性があります。

このページ