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

이 문제를 해결하려면 다음 단계를 수행합니다.

  1. 루트 및 하위 모듈 디렉터리를 포함하여 프로젝트에서 사용되는 모든 pom.xml 파일을 식별합니다.
  2. pom.xml 파일에서 Maven 컴파일러 플러그인 구성을 업데이트하여 JVM 스택 크기 매개 변수(-J-Xss)를 6M 또는 8M으로 설정합니다.
  3. 업데이트된 모든 pom.xml개 파일에 변경 내용을 저장하고 커밋합니다.
  4. 이러한 변경 작업을 수행한 후 영향을 받는 Cloud Manager 파이프라인을 다시 실행합니다.
  5. 여러 파이프라인이 동시에 트리거되거나 한 파이프라인이 중단된 경우 새 실행을 시작하기 전에 수동 취소 및 리소스 정리를 기다립니다.
  6. StackOverflowError 없이 빌드가 성공적으로 완료되는지 확인하십시오.

참고

  • 사용자 지정 HTL 코드의 심층 재귀는 기본 JVM 할당보다 더 많은 스택 메모리를 사용합니다. -Xss을(를) 늘리는 것이 도움이 되지만 재귀가 커지면 오류가 반환될 수 있습니다.
  • 장기적인 안정성을 위해서는 재귀를 최소화하기 위해 HTL 템플릿을 리팩터링하는 것이 좋습니다.
  • -Xss에서 6-8MB로 늘리는 것은 AEM as a Cloud Service 빌드 컨테이너의 표준 메모리 제한 내에 남아 있습니다.
  • 리소스 경합을 방지하고 빌드를 다시 시도하기 전에 적절한 정리를 위해 파이프라인이 중단된 동안 추가 파이프라인을 트리거하지 마십시오.
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f