Pipeline AEM Cloud Manager bloccata durante la distribuzione nell’ambiente di staging a causa di un conflitto di attivazione del bundle OSGi
Questo articolo spiega come risolvere un problema in cui una pipeline di Adobe Experience Manager (AEM) Cloud Manager si blocca durante la fase di implementazione nell’ambiente di staging, causando istanze non disponibili ed errori di classe mancanti a causa di conflitti di attivazione del bundle OSGi.
Descrizione description
Ambiente
Adobe Experience Manager (AEM) as a Cloud Service (AEMaaCS) (tutte le versioni)
Sintomi
- L’esecuzione della pipeline Cloud Manager rimane bloccata nella fase di implementazione nell’ambiente di staging per un periodo prolungato (oltre un’ora) senza errori visibili o progressi.
- Gli ambienti interessati non sono più disponibili dopo la distribuzione.
- I tentativi di accedere alle istanze interessate generano una pagina di accesso vuota.
- I registri mostrano errori di classe mancanti, HTTP 500 o 404 risposte per
/libs/granite/core/content/login.htmled errori di verifica stato. - Il riavvio di AEM non risolve il problema; gli errori persistono dopo il riavvio.
- Il problema può interessare solo un sottoinsieme di istanze, indicando una tempistica o una race condition.
Causa
Una distribuzione ha aggiornato una libreria condivisa fondamentale, attivando un aggiornamento del framework OSGi. Il metodo di attivazione di un componente personalizzato ha eseguito un accesso all’archivio di blocco (JCR) durante questo aggiornamento, causando un conflitto di blocco e lasciando i bundle dipendenti in uno stato di avvio parziale. Ciò ha determinato l’arresto della pipeline e la mancata disponibilità delle istanze interessate.
Risoluzione resolution
Per risolvere il problema, segui i passaggi seguenti:
-
Identificare gli ambienti interessati:
-
Esamina i registri di esecuzione della pipeline di Cloud Manager e i registri delle istanze di AEM per individuare eventuali errori di classe mancanti e di attivazione del bundle.
-
Conferma quali istanze non sono disponibili dopo la distribuzione.
-
-
Ripristina ambienti interessati:
-
Utilizza i backup dell’ambiente disponibili per ripristinare le istanze interessate a uno stato valido noto.
-
Verifica che tutte le istanze tornino a uno stato operativo e che la pagina di accesso venga caricata correttamente.
-
-
Rivedi logica di attivazione bundle OSGi personalizzata:
-
Controllare i componenti OSGi personalizzati, in particolare quelli con metodi
onActivate()che eseguono gli accessi all’archivio (JCR) o altre operazioni di blocco durante l’attivazione. -
Refactoring della logica di attivazione per evitare il blocco delle chiamate o degli accessi all’archivio durante l’attivazione del bundle OSGi, in quanto questi possono causare deadlock o blocchi durante gli aggiornamenti del framework.
-
Cerca i pattern di codice in cui l’accesso all’archivio o le operazioni a lunga esecuzione vengono eseguiti direttamente nel metodo di attivazione.
-
-
Distribuzione dei test in un ambiente inferiore:
- Prima di implementare in produzione, verifica lo stesso pacchetto in un ambiente inferiore per verificare che il problema non si ripresenti.
-
Monitorare le distribuzioni future:
- Se si verifica un arresto simile, raccogli i registri e i dettagli di esecuzione della pipeline per ulteriori analisi.
Verifica:
- Verifica che tutte le istanze interessate siano operative e che la pagina di accesso venga caricata come previsto dopo il ripristino e le modifiche al codice.