解决AEM as a Cloud Service管道生成中的StackOverflowError问题
在AEM as a Cloud Service中,在管道构建期间发生循环StackOverflowError。 该错误被跟踪为在编译深度递归自定义HTL代码时JVM栈栈大小设置不足。 调整Maven配置中的JVM栈栈大小参数可成功完成管道。
描述 description
环境
- 产品: Adobe Experience Manager as a Cloud Service(AEMaaCS) — 站点
- 相关约束:在管道生成期间编译复杂的递归HTL代码
问题/症状
- StackOverflowError在管道构建步骤中重复出现,特别是Java编译阶段。
- 即使之前成功提交源代码,也会发生管道故障。
- 增加或减少JVM栈栈大小(
-Xss)会影响生成结果。 - 由于基础架构资源限制,成功的本地生成无法保证Cloud Manager管道取得成功。
解决方法 resolution
要解决此问题,请执行以下步骤:
- 识别项目中使用的所有
pom.xml文件,包括根目录和子模块目录。 - 更新每个
pom.xml文件中的Maven编译器插件配置,将JVM栈栈大小参数(-J-Xss)设置为6M或8M。 - 保存并提交对所有更新的
pom.xml文件的更改。 - 进行这些更改后,重新运行受影响的Cloud Manager管道。
- 如果同时触发多个管道或一条管道卡住,请等待手动取消和资源清理,然后再开始新执行。
- 验证生成是否成功完成,但不包含StackOverflowError。
注释
- 自定义HTL代码中的深层递归使用的栈栈内存比默认的JVM分配多。 增加
-Xss会有所帮助,但如果递回增加,则可能会返回错误。 - 为了保持长期稳定性,建议重构HTL模板以将递归降至最低。
- 将
-Xss增加到6-8 MB仍保留在AEM as a Cloud Service生成容器的标准内存约束中。 - 避免在一个管道卡住时触发其他管道,以防止资源争用,并确保在重试生成之前进行正确的清理。
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f