Il processo Sling non riesce con OakState0002 e errori di ripristino del ramo in AEM
Un processo Sling personalizzato che sposta le risorse tra cartelle genera errori in modo intermittente, ad esempio OakState0002 e errori di reimpostazione del ramo. Il processo elabora le risorse sotto carico simultaneo utilizzando sessioni di lunga durata e operazioni di commit di grandi dimensioni, che portano a errori di commit ripetuti. Per risolvere il problema, effettua il refactoring della gestione delle sessioni e implementa la logica dei nuovi tentativi.
Descrizione description
Ambiente
Adobe Experience Manager as a Cloud Service (AEMaaCS)
Problema/Sintomi
-
Il processo Sling personalizzato
com.adidasedamprogram.core.job.MoveAssetsFromUploadToIngestionAreaJobnon viene eseguito in modo intermittente nell’istanza di authoring durante lo spostamento di risorse tra cartelle. -
Un backlog temporaneo si forma con una maggiore profondità di coda in
move_assets_upload_to_ingestion/queue/1..4durante i periodi di picco di acquisizione. -
L’attività del processo registra un picco durante intervalli di tempo specifici durante l’elaborazione di grandi volumi di risorse, con conseguente esecuzione incoerente.
-
I registri degli errori visualizzano gli errori di commit, tra cui:
code language-none java.lang.IllegalStateException: Branch with failed reset Caused by: CommitFailedException: OakOak0100: Branch reset failed ... OakState0002: Conflicting concurrent change -
Questi errori rimangono isolati e non indicano un’interruzione a livello di piattaforma, ma causano ritardi temporanei nell’elaborazione delle risorse.
Causa principale
La causa principale è l’utilizzo di sessioni JCR di lunga durata e commit di grandi dimensioni in carico simultaneo senza la gestione di aggiornamenti e tentativi per i conflitti di commit di Oak. Ciò comporta errori di commit transitori come OakState0002 ed errori di ripristino del ramo.
Risoluzione resolution
Per risolvere il problema, effettua le seguenti operazioni:
- Effettua il refactoring dell’implementazione personalizzata del processo Sling per evitare sessioni JCR di lunga durata utilizzando sessioni di breve durata per ogni risorsa o un piccolo batch di risorse, garantendo che l’ambito della sessione rimanga minimo e riducendo i conflitti.
- Riduci la dimensione di ogni commit eseguendo il commit delle modifiche per risorsa o in piccoli batch anziché eseguire operazioni di massa di grandi dimensioni, per evitare errori di commit in caso di carico simultaneo.
- Implementare la logica dei tentativi limitati per le operazioni di commit rilevando errori quali OakState0002 o errori di reimpostazione del ramo, aggiornando la sessione utilizzando
session.refresh(true)e ripetendo il commit per un numero limitato di volte. - Assicurati che la logica dei nuovi tentativi applichi limiti rigidi per evitare loop infiniti o tentativi eccessivi, mantenendo la stabilità del sistema ed evitando un inutile utilizzo delle risorse.
- Monitora la profondità della coda del processo e i registri di errore dopo aver applicato queste modifiche per confermare che la frequenza dei conflitti di commit si riduce e l’elaborazione del processo si stabilizza.
- Non sono necessarie modifiche a livello di piattaforma o infrastruttura, in quanto l’ambiente AEM sottostante e lo stato dei contenitori non sono coinvolti.
Lettura correlata
Assets non passa dal caricamento alla cartella di destinazione in AEMaaCS