在AEM 6.x中报告SegmentNotFound时修复存储库中的不一致

如果报告SegmentNotFound时存储库(repo)中存在不一致,请对存储库运行一致性检查,找到最后一个良好修订(健康状态),然后恢复到它。

描述 description

环境

Adobe Experience Manager (AEM) 6.x

问题/症状

在日志中观察到SegmentNotFound的异常。

示例:

  1. *错误* [ FelixStartLevel] org.apache.sling.event [ org.apache.sling.event.impl.jobs.queue.QueueManager(1431)] Activate方法引发异常(org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException: Segment da5bcb95-ddd-dddddddddddddddddddddddddddddddddddddddd0f10a-0f110a-0f2bf12e5e1122222224找不到)

  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*

解决方法 resolution

对存储库运行一致性检查并找到最后一个良好的修订(健康状态)并恢复到它。

执行以下步骤:

  1. https://mvnrepository.com/artifact/org.apache.jackrabbit/oak-run 下载与您的 oak 核心版本相匹配的 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中的一些旧问题或存储库中的一些不一致,区段可能会缺失,并且存储库可能不一致。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f