由于自定义Oak/Lucene索引问题,AEM as a Cloud Service管道卡在运行状态
本文介绍如何解决Adobe Experience Manager (AEM) as a Cloud Service部署管道由于自定义Oak/Lucene索引问题而停滞在运行状态中的情况。
描述 description
环境
Adobe Experience Manager as a Cloud Service (AEMaaCS),所有版本都使用Cloud Manager管道。
问题/症状
- Cloud Manager部署管道将长时间保持运行状态,并且不会完成。
- 环境准备情况检查被阻止,阻止管道进度。
- 索引作业日志显示错误,例如:
Error while processing an index write operation java.io.IOException: Invalid byte range request for [ /oak:index/cqPageLucene-custom-1] ...
- 文件系统错误,例如:
java.nio.file.NoSuchFileException
- 自定义索引节点(如
/oak:index/cqPageLucene-custom-1和/oak:index/damAssetLucene-11-custom-4)即使不存在于当前代码库中,也会显示在存储库中。 - 在CRXDE中手动删除这些索引节点只是暂时的,因为它们可以在重新部署后重新显示。
原因
由于自定义Oak/Lucene索引已损坏或不一致,无法完成环境准备情况检查,因此管道被阻止。 这会阻止索引作业完成,使管道卡在“正在运行”状态。 手动删除索引节点不是持久性的;正确删除需要更新代码库并使用受支持的索引管理方法。
解决方法 resolution
请按照以下步骤解决问题:
- 查看索引作业日志,并识别与自定义索引相关的错误,如
/oak:index/cqPageLucene-custom-1。 确认索引节点是存在于ui.apps/src/main/content/jcr_root/_oak_index/下的代码库中,还是存在于diff.json文件中。 - 在存储库中搜索有问题的索引(如
cqPageLucene-custom-1或damAssetLucene-11-custom-4)的定义。 从_oak_index或任何索引内容包中删除这些定义,然后提交更改。 - 使用简化的索引管理模型表示
/oak:index/diff.index/diff.json中的所有自定义索引更改。 通过Cloud Manager部署更新的代码。 - 在清除代码库并确认仅预期自定义项存在于
diff.json中后,通过Cloud Manager重新部署。 如果不存在索引损坏,则管道应成功完成。 - 如果问题仍然存在,请查看日志以了解文件系统错误或Lucene区段损坏。 通过删除有问题的运行时节点并重新部署,重建受影响的索引。
- 重新部署后,管道应成功完成,环境应标记为就绪。
注释
- 平台会根据需要生成新的
*-custom-*节点,并随着时间的推移自动弃用未使用的旧版本。 - 避免在CRXDE中手动删除索引节点作为永久解决方案,因为如果代码库或
diff.json仍然引用这些节点,则可以在以后的部署中重新创建这些节点。
experience-cloud-kcs-help-kbarticles