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.MoveAssetsFromUploadToIngestionAreaJob non 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..4 durante 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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

recommendation-more-help
experience-cloud-kcs-help-kbarticles