AEM as a Cloud Service パイプラインビルドの StackOverflowError の解決

AEM as a Cloud Serviceでは、パイプラインビルド中に StackOverflowError が繰り返し発生します。 深く再帰的なカスタム HTL コードをコンパイルする場合、エラーは不十分な JVM スタックサイズ設定にまで遡ります。 Maven 設定で JVM スタックサイズパラメーターを調整すると、パイプラインが正常に完了します。

説明 description

環境

  • Product:Adobe Experience Manager as a Cloud Service(AEMaaCS) - Sites
  • 関連する制約 :パイプラインビルド中の複雑な再帰的 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. 複数のパイプラインが同時にトリガーされた場合や、1 つが停止した場合は、新しい実行を開始する前に、手動でのキャンセルとリソースのクリーンアップを待ちます。
  6. ビルドが StackOverflowError なしで正常に完了することを確認します。

メモ

  • カスタム HTL コードの深い再帰では、デフォルトの JVM 割り当てよりも多くのスタックメモリを使用します。 -Xss を増やすと役に立ちますが、再帰が大きくなると、エラーが返る場合があります。
  • 長期安定性のためには、HTL テンプレートをリファクタリングして再帰を最小限に抑えることをお勧めします。
  • -Xss を 6~8 MB に増やすことは、AEM as a Cloud Service ビルドコンテナの標準メモリの制限内に残ります。
  • リソースの競合を防ぎ、ビルドを再試行する前に適切なクリーンアップを確保するために、パイプラインが停止している間に追加のパイプラインをトリガーしないでください。
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f