Assets verplaatst zich niet van uploaden naar doelmap in AEMaaCS
Assets blijft vastzitten in de upload- of staging-map wanneer een aangepaste workflow ze niet naar de doelmap verplaatst vanwege tussenliggende conflicten in de opslagplaats. Ontwerp de workflow opnieuw om grote parallelle bewerkingen te voorkomen en verdeel updates van metagegevens in een afzonderlijke naverwerkingsworkflow om het probleem op te lossen.
Beschrijving description
Omgeving
- ADOBE EXPERIENCE MANAGER AS A CLOUD SERVICE - ASSETS
- Auteursomgeving, geïmplementeerd via Cloud Manager
- Aangepaste workflow voor het verplaatsen van bedrijfsmiddelen geactiveerd door een startprogramma of een geplande taak
Probleem/symptomen
-
Assets blijft in de uploadmap of de testmap en wordt niet weergegeven in de doelmap.
-
Een workflow voor het verplaatsen van aangepaste elementen wordt correct geactiveerd (bijvoorbeeld door een opstartprogramma dat lijkt op een uitsnede), maar:
- Het duurt erg lang om te voltooien, of
- Eindigt met herhaalde mislukkingen en opnieuw proberen.
-
Er worden geen fouten gerapporteerd voor de startprogramma zelf. fouten treden op in de aangepaste verplaatsingsstap.
-
Een groot aantal workflowinstanties (bijvoorbeeld 10.000+ actieve instanties) accumuleert voor hetzelfde workflowmodel.
-
In het AEM-foutenlogbestand worden fouten met gelijktijdige wijzigingsconflicten vastgelegd, bijvoorbeeld:
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 -
Het gedrag na de verwerking (zoals het bijwerken van mediatitels, uploader-informatie of markeringen voor dynamische media) wordt vertraagd of onderbroken, omdat elementen de doelmap niet betrouwbaar bereiken.
Oorzaak
-
In de betrokken implementaties is de stap Aangepaste asset-move gewijzigd in:
- Een groot aantal elementen in een batch plaatsen, overstappen op één grote JCR-sessie en toewijzen, en
- Voer deze logica parallel uit in een groot aantal werkstroominstanties (bijvoorbeeld via een startprogramma dat elke paar minuten wordt uitgevoerd terwijl de vorige uitvoeringen nog actief zijn).
-
Onder belasting leidt dit ontwerp tot:
- Conflicterende gelijktijdige vertakking begaat in de bewaarplaats van Oak (
OakState0002), veroorzakend begaat om te ontbreken en de werkschemabaan om wordt opnieuw geprobeerd. - Een race waarbij het element het eerst wordt verplaatst en metagegevens op het oorspronkelijke pad later worden bijgewerkt, zodat de update van de metagegevens mislukt of wordt overgeslagen.
- Conflicterende gelijktijdige vertakking begaat in de bewaarplaats van Oak (
-
Het probleem is een geschil op opslagplaats-niveau in de code van de douanewerkschema, niet een storing van de lanceerinrichting of ingebouwde van AEM activaverwerking.
Resolutie resolution
Voer de volgende stappen uit om een betrouwbare verplaatsing van bedrijfsmiddelen te herstellen en conflicten te voorkomen:
- Verwijder of herstel een enkele grote batchverwerking, zodat de stap Aangepast element verplaatsen niet langer meerdere elementen in één
save()ofcommit()verplaatst en bijwerkt, en vermijd ontwerpen waarbij honderden elementen in één transactie worden verplaatst. - Verplaats de verplaatsingsstap zodanig dat elk element, of een zeer kleine batch, onmiddellijk naar de doellocatie wordt verplaatst en wordt toegewezen (bijvoorbeeld met
session.save()ofresourceResolver.commit()), en zorg ervoor dat de stap dekkend is per element en veilig pogingen, optioneel het vangenInvalidItemStateExceptionofPersistenceExceptionen het implementeren van begrensde pogingen met loggen kan verwerken. - Splits de bewegings- en metagegevens of naverwerkingslogica in afzonderlijke workflows door de verplaatsingsworkflow te concentreren op het selecteren van geldige elementen en het verplaatsen van deze van de upload- of testmap naar de doelmap, en een aparte naverwerkingsworkflow te configureren in de doelmap waarin metagegevens en aangepaste eigenschappen (zoals markeringen voor dynamische media of velden die door downstreamsystemen worden gebruikt) worden bijgewerkt en worden uitgevoerd via het workflowmechanisme voor nabewerking (automatisch starten) nadat de verwerking is voltooid.
- Gelijktijdige uitvoering van de verplaatsingsworkflow beperken door de configuratie van de taakwachtrij voor het taakonderwerp Verschuiven van de workflow te bekijken, het maximumaantal parallelle taken waar mogelijk te verminderen en ervoor te zorgen dat de starter geen nieuwe grote uitvoering start terwijl de vorige uitvoering nog actief is of opnieuw wordt geprobeerd.
- Instanties van workflows onder controle houden door het leegmaken van de workflow (bijvoorbeeld met de
com.adobe.granite.workflow.purge.Scheduler-configuratie) te configureren, zodat voltooide exemplaren van het aangepaste model regelmatig worden gewist en zich niet ophopen. - Valideer gedrag na deze wijzigingen door een gecontroleerde testset met elementen naar de uploadmap of testmap te uploaden. Hierbij wordt bevestigd dat elementen binnen de verwachte tijd betrouwbaar naar de doelmap worden verplaatst, dat naverwerkingwerkstromen in de doelmap correct worden voltooid en de metagegevens direct worden bijgewerkt en dat in logboeken niet meer wordt aangegeven dat vaak
OakState0002conflicten worden begaan die betrekking hebben op de aangepaste verplaatsingsstap.
Nota's:
- Dit probleem doet zich voor als gevolg van de interactie tussen aangepaste workflows en de AEM as a Cloud Service-opslagplaats onder gelijktijdige omstandigheden, en niet als gevolg van een storing in de startprogramma of de ingebouwde verwerking van bedrijfsmiddelen van AEM.
- Door de workflow opnieuw te ontwerpen om metagegevens of eigenschapsupdates per element (of kleine batch) toe te wijzen en om te zetten in een aparte naverwerkingsworkflow in de doelmap, verkleint u het aantal geschillen, elimineert u het aantal verplaatsen/metagegevens en herstelt u een stabiele, tijdige verplaatsing van elementen van de uploadmap naar de doelmap.