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)]アクティベート メソッドで例外がスローされた(org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segment da5bcb95-d04a9d9-0f10b14e5e not found) -
**エラー*
[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: Segment 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に以前からの問題があるか、リポジトリに不整合があることが原因で、セグメントが見つからなくなり、リポジトリに不整合が発生することがあります。