AEM 6.xでSegmentNotFoundが報告された場合のリポジトリの不整合を修正します
SegmentNotFoundが報告されたときにリポジトリ (リポジトリ)に不整合がある場合は、リポジトリで整合性チェックを実行し、最後の適切なリビジョン (正常な状態)を見つけて、リポジトリに戻します。
説明 description
環境
Adobe Experience Manager(AEM) 6.x
問題/症状
SegmentNotFoundの例外がログに記録されています。
例:
-
** ERROR*
[FelixStartLevel]org.apache.sling.event[org.apache.sling.event.impl.jobs.queues.QueueManager (1431)]activate メソッドが例外をスローしました(org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segment da5bcb95-d00a-4c04-a9d9-0f10f2b14e5eが見つかりません) * -
**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が見つかりません*
解決策 resolution
リポジトリで一貫性チェックを実行し、最後の良いリビジョン(正常な状態)を見つけて、それを元に戻します。
次の手順に従います。
-
使用している Oak コアバージョンに合ったバージョンの oak-run を、https://mvnrepository.com/artifact/org.apache.jackrabbit/oak-run からダウンロードします。
-
破損したセグメントストアを最新の良好な状態に戻すには、CQの作業ディレクトリ(crx-quickstartfolderを含むもの)に変更し、./crx-quickstart/repository/segmentstore/のすべてのファイルをバックアップします。
-
整合性チェックを実行します。
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が見つかりました -
./crx-quickstart/repository/segmentstore/journal.logを編集し、最新の良いリビジョンを含む行の後のすべての行を削除して、リポジトリをこのリビジョンに戻します。
-
すべての。/crx-quickstart/repository/segmentstore/*.bak ファイルを削除します。
-
チェックポイントのクリーンアップを実行して、孤立したチェックポイントを削除します。
java -Xmx6000m -jar oak-run-*.jar checkpoints /path/to/crx-quickstart/repository/segmentstore rm-unreferenced -
最後に、リポジトリをコンパクト化します。
java -Xmx6000m -jar oak-run-*.jar compact /path/to/crx-quickstart/repository/segmentstore/
原因
Oakの古い問題や、リポジトリ内の一部の不整合により、セグメントが欠落し、リポジトリに一貫性が失われる可能性があります。