Beheben von StackOverflowError in AEM as a Cloud Service-Pipeline-Builds

In AEM as a Cloud Service tritt während der Pipeline-Builds ein wiederkehrender StackOverflowError auf. Der Fehler wird auf unzureichende Einstellungen der JVM-Stackgröße zurückgeführt, wenn tief rekursiver benutzerdefinierter HTL-Code kompiliert wird. Durch die Anpassung der JVM-Stackgröße in der Maven-Konfiguration wird der erfolgreiche Abschluss der Pipeline ermöglicht.

Beschreibung description

Umgebung

  • Produkt: Adobe Experience Manager as a Cloud Service (AEMaaCS) - Sites
  • Relevante Einschränkungen: Kompilierung von komplexem, rekursivem HTL-Code während Pipeline-Builds

Problem/Symptome

  • StackOverflowError wird bei Pipeline-Build-Schritten, insbesondere bei Java-Kompilierungsphasen, wiederholt angezeigt.
  • Pipeline-Fehler treten auch bei zuvor erfolgreichen Quell-Code-Commits auf.
  • Das Erhöhen oder Verringern der JVM-Stackgröße (-Xss) wirkt sich auf die Build-Ergebnisse aus.
  • Erfolgreiche lokale Builds garantieren aufgrund von Infrastrukturressourcenbeschränkungen keinen Erfolg in Cloud Manager-Pipelines.

Auflösung resolution

Gehen Sie wie folgt vor, um dieses Problem zu beheben:

  1. Identifizieren Sie alle in Ihrem Projekt verwendeten pom.xml-Dateien, einschließlich Stamm- und Untermodulverzeichnissen.
  2. Aktualisieren Sie die Maven-Compiler-Plug-in-Konfiguration in jeder pom.xml-Datei, um den JVM-Stack-Größenparameter (-J-Xss) auf 6 M oder 8 M festzulegen.
  3. Speichern und übertragen Sie Änderungen an allen aktualisierten pom.xml.
  4. Führen Sie die betroffene Cloud Manager-Pipeline erneut aus, nachdem Sie diese Änderungen vorgenommen haben.
  5. Wenn mehrere Pipelines gleichzeitig ausgelöst werden oder eine hängen bleibt, warten Sie auf den manuellen Abbruch und die Ressourcenbereinigung, bevor Sie neue Ausführungen starten.
  6. Stellen Sie sicher, dass der Build erfolgreich ohne StackOverflowError abgeschlossen wurde.

Hinweise

  • Tiefe Rekursionen in benutzerdefiniertem HTL-Code verwenden mehr Stapelspeicher als die standardmäßige JVM-Zuordnung. Eine Erhöhung der -Xss ist hilfreich, aber wenn die Rekursion zunimmt, kann der Fehler erneut auftreten.
  • Zur Sicherung der langfristigen Stabilität wird eine Umgestaltung von HTL-Vorlagen mit dem Ziel empfohlen, Rekursionen zu minimieren.
  • Die Erhöhung der -Xss auf 6-8 MB erfolgt innerhalb der standardmäßigen Speicherbeschränkungen von AEM as a Cloud Service Build-Containern.
  • Vermeiden Sie es, zusätzliche Pipelines auszulösen, während eine hängenbleibt, um Ressourcenkonflikte zu vermeiden, und stellen Sie eine ordnungsgemäße Bereinigung sicher, bevor Sie Builds erneut versuchen.
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f