在AEM 6.x中报告SegmentNotFound时修复存储库中的不一致
如果报告SegmentNotFound时存储库(repo)中存在不一致,请对存储库运行一致性检查,找到最后一个良好修订(健康状态),然后恢复到它。
描述 description
环境
Adobe Experience Manager (AEM) 6.x
问题/症状
在日志中观察到SegmentNotFound的异常。
示例:
-
*错误*
[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找不到) -
**ERROR*
[pool-6-thread-3]org.apache.sling.commons.scheduler.impl.QuartzScheduler执行org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate@1dc173f9作业时出现异常:未找到区段e669f30b-e886-4b7a-b161-56432601ec6borg.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException:未找到区段e669f30b-e886-4b7a-b161-56432601ec6b*
解决方法 resolution
对存储库运行一致性检查并找到最后一个良好的修订(健康状态)并恢复到它。
执行以下步骤:
-
从 https://mvnrepository.com/artifact/org.apache.jackrabbit/oak-run 下载与您的 oak 核心版本相匹配的 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中的一些旧问题或存储库中的一些不一致,区段可能会缺失,并且存储库可能不一致。