Assets non passa dal caricamento alla cartella di destinazione in AEMaaCS

Assets rimane bloccato nella cartella di caricamento o staging quando un flusso di lavoro personalizzato non riesce a spostarlo nella cartella di destinazione a causa di conflitti di commit dell’archivio. Riprogetta il flusso di lavoro per evitare impegni in parallelo di grandi dimensioni e la suddivisione degli aggiornamenti dei metadati in un flusso di lavoro di post-elaborazione separato per risolvere il problema.

Descrizione description

Ambiente

  • ADOBE EXPERIENCE MANAGER AS A CLOUD SERVICE - ASSETS
  • Ambiente di authoring, implementato tramite Cloud Manager
  • Flusso di lavoro personalizzato per lo spostamento delle risorse attivato da un modulo di avvio o da un processo pianificato

Problema/Sintomi

  • Assets rimane nella cartella di caricamento o staging e non viene visualizzato nella cartella di destinazione.

  • Un flusso di lavoro personalizzato per lo spostamento delle risorse viene attivato correttamente (ad esempio, da un modulo di avvio simile a un cron), ma:

    • Il completamento richiede molto tempo, oppure
    • Termina con errori e tentativi ripetuti.
  • Non vengono segnalati errori per il modulo di avvio stesso; si verificano errori nel passaggio di spostamento personalizzato.

  • Un numero elevato di istanze del flusso di lavoro (ad esempio, più di 10.000 istanze in esecuzione) si accumulano per lo stesso modello di flusso di lavoro.

  • Il registro errori di AEM mostra gli errori di commit con conflitti di modifica simultanei, ad esempio:

    code language-none
    org.apache.sling.api.resource.PersistenceException: Unable to commit changes to session      at com.example.aem.core.workflows.MoveToTarget.execute(MoveToTarget.java:xx)    Caused by: javax.jcr.InvalidItemStateException:      OakState0002: Conflicting concurrent change on branch commits
    
  • Il comportamento di post-elaborazione (come l’aggiornamento dei titoli dei contenuti multimediali, delle informazioni sullo strumento di caricamento o dei flag Dynamic Media) viene ritardato o intermittente perché le risorse non raggiungono la cartella di destinazione in modo affidabile.

Causa

  • Nelle implementazioni interessate, il passaggio di spostamento delle risorse personalizzate è stato modificato in:

    • Molte risorse vengono spostate in batch in un’unica sessione e commit JCR di grandi dimensioni e
    • Esegui questa logica in parallelo in molte istanze del flusso di lavoro (ad esempio, tramite un modulo di avvio in esecuzione ogni pochi minuti mentre le esecuzioni precedenti sono ancora attive).
  • In fase di caricamento, questa progettazione comporta:

    • Commit simultanei in conflitto nell'archivio di Oak (OakState0002). Il commit non riesce e il processo del flusso di lavoro viene ritentato.
    • Corsa in cui la risorsa viene spostata per prima e i metadati nel percorso originale vengono aggiornati in seguito, pertanto l’aggiornamento dei metadati non riesce o viene saltato.
  • Il problema è un problema di conflitto a livello di archivio nel codice del flusso di lavoro personalizzato, non un malfunzionamento del modulo di avvio o dell’elaborazione integrata delle risorse di AEM.

Risoluzione resolution

Per ripristinare lo spostamento affidabile delle risorse e prevenire conflitti, effettua le seguenti operazioni:

  1. Rimuovi o ripristina qualsiasi singola batch di commit di grandi dimensioni in modo che il passaggio di spostamento delle risorse personalizzate non sposti e aggiorni più risorse in un singolo save() o commit() ed eviti le progettazioni in cui centinaia di risorse vengono spostate in una transazione.
  2. Effettua il refactoring del passaggio di spostamento in modo che ogni risorsa, o un batch molto piccolo, venga spostato nella posizione di destinazione e confermato immediatamente (ad esempio, con session.save() o resourceResolver.commit()), e assicurati che il passaggio sia idempotente per ogni risorsa e possa gestire in modo sicuro i nuovi tentativi, acquisendo facoltativamente InvalidItemStateException o PersistenceException e implementando nuovi tentativi limitati con la registrazione.
  3. Suddividi la logica di spostamento e metadati o di post-elaborazione in flussi di lavoro separati, mantenendo il flusso di lavoro di spostamento incentrato sulla selezione di risorse valide e sul loro spostamento dalla cartella di caricamento o staging alla cartella di destinazione e configurando un flusso di lavoro di post-elaborazione separato nella cartella di destinazione che aggiorna i metadati e le proprietà personalizzate (ad esempio i flag o i campi Dynamic Media utilizzati dai sistemi a valle) e viene eseguito tramite il meccanismo di flusso di lavoro di post-elaborazione (avvio automatico) al termine dell’elaborazione delle risorse.
  4. Limita la concorrenza per il flusso di lavoro di spostamento esaminando la configurazione della coda dei processi per l’argomento del processo Sling del flusso di lavoro, riducendo il numero massimo di processi paralleli ove possibile e garantendo che il modulo di avvio non avvii nuove esecuzioni di grandi dimensioni mentre le esecuzioni precedenti sono ancora attive o riprovando.
  5. Mantieni le istanze del flusso di lavoro sotto controllo configurando l'eliminazione del flusso di lavoro (ad esempio, con la configurazione com.adobe.granite.workflow.purge.Scheduler) in modo che le istanze completate del modello personalizzato vengano eliminate regolarmente e non si accumulino.
  6. Convalida il comportamento dopo queste modifiche caricando un set di test controllato di risorse nella cartella di caricamento o di staging, confermando che le risorse vengono spostate in modo affidabile nella cartella di destinazione entro il tempo previsto, che i flussi di lavoro di post-elaborazione nella cartella di destinazione vengono completati correttamente e aggiornano tempestivamente i metadati e che i registri non mostrano più OakState0002 conflitti di commit frequenti correlati al passaggio di spostamento personalizzato.

Note:

  • Questo problema deriva dal modo in cui i flussi di lavoro personalizzati interagiscono con l’archivio AEM as a Cloud Service in co-occorrenza, non da un malfunzionamento del modulo di avvio o dall’elaborazione integrata delle risorse di AEM.
  • Riprogettando il flusso di lavoro in modo che esegua il commit per ogni risorsa (o piccolo batch) e spostando gli aggiornamenti dei metadati o delle proprietà in un flusso di lavoro di post-elaborazione separato nella cartella di destinazione, riduci il conflitto di commit, elimini la corsa di spostamento/metadati e ripristini lo spostamento stabile e tempestivo delle risorse dalla cartella di caricamento alla cartella di destinazione.
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f