Risoluzione di StackOverflowError nelle build delle pipeline di AEM as a Cloud Service

In AEM as a Cloud Service, si verifica un errore StackOverflowError ricorrente durante le build della pipeline. L’errore viene tracciato a causa di impostazioni di dimensioni dello stack JVM insufficienti durante la compilazione di codice HTL personalizzato ricorsivo profondo. La regolazione del parametro della dimensione dello stack JVM nella configurazione Maven consente il completamento corretto della pipeline.

Descrizione description

Ambiente

  • Prodotto: Adobe Experience Manager as a Cloud Service(AEMaaCS) - Siti
  • Vincoli rilevanti: compilazione di codice HTL complesso e ricorsivo durante le build della pipeline

Problema/Sintomi

  • StackOverflowError viene visualizzato ripetutamente durante i passaggi di compilazione della pipeline, in particolare le fasi di compilazione Java.
  • Gli errori di pipeline si verificano anche con commit del codice sorgente riusciti in precedenza.
  • L'aumento o la riduzione delle dimensioni dello stack JVM (-Xss) influisce sui risultati della compilazione.
  • Le build locali riuscite non garantiscono il successo delle pipeline Cloud Manager a causa dei limiti di risorse dell’infrastruttura.

Risoluzione resolution

Per risolvere il problema, effettua le seguenti operazioni:

  1. Identificare tutti i file pom.xml utilizzati nel progetto, incluse le directory radice e i moduli secondari.
  2. Aggiornare la configurazione del plug-in del compilatore Maven in ogni file pom.xml per impostare il parametro di dimensione dello stack JVM (-J-Xss) su 6M o 8M.
  3. Salva e conferma le modifiche a tutti i file pom.xml aggiornati.
  4. Dopo aver apportato queste modifiche, esegui nuovamente la pipeline Cloud Manager interessata.
  5. Se più pipeline vengono attivate contemporaneamente o una si blocca, attendi l’annullamento manuale e la pulizia delle risorse prima di avviare nuove esecuzioni.
  6. Verificare che la compilazione venga completata senza StackOverflowError.

Note

  • La ricorsione profonda nel codice HTL personalizzato utilizza più memoria dello stack dell’allocazione JVM predefinita. L'aumento di -Xss è utile, ma se la ricorsione aumenta, l'errore può essere restituito.
  • Si consiglia di rieseguire il factoring dei modelli HTL per ridurre al minimo la ricorsione per garantire la stabilità a lungo termine.
  • L'aumento da -Xss a 6-8 MB rimane entro i limiti di memoria standard dei contenitori di build di AEM as a Cloud Service.
  • Evita di attivare altre pipeline mentre una è bloccata per evitare conflitti di risorse e assicurati che la pulizia sia corretta prima di ritentare le build.
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f