Vegelmechanisme voor de export van SaaS-gegevens
De extensie SaaS Data Export maakt gebruik van een mechanisme voor het vergrendelen van voedingen om rassenomstandigheden te voorkomen wanneer meerdere processen proberen dezelfde feed tegelijk te synchroniseren. Dit kan bijvoorbeeld gebeuren wanneer een door een uitsnede geactiveerde resync een handmatige saas:resync CLI-aanroep overlapt.
Hoe de voedervergrendeling werkt
Voor elke feed-synchronisatiebewerking, ongeacht of deze wordt geactiveerd door een uitsnijdtaak of een handmatige saas:resync CLI-aanroep, wordt dezelfde volgorde aangehouden:
-
Het proces probeert om de voederslot te verkrijgen. De slotpoging is niet-blokkerend en keert onmiddellijk terug als het slot reeds door een ander proces wordt gehouden.
-
Als het slot niet beschikbaar is, wordt de [ verrichting overgeslagen en ] geregistreerd.
Er gaan geen gegevens verloren. De volgende uitsnijding wordt opgehaald in afwachting van wijzigingen nadat het huidige proces is voltooid.
-
Als het slot wordt verworven, registreert het proces zijn naam en PID voor kenmerkende doeleinden, dan stelt de synchronisatie in werking.
-
Wanneer de synchronisatie is voltooid of mislukt, wordt de vergrendeling onvoorwaardelijk losgelaten, zodat de volgende geplande uitsnijdtaak normaal kan worden uitgevoerd.
Slechts één synchronisatieverrichting kan de voederslot tegelijkertijd houden, ongeacht of het door brein of CLI werd begonnen. De feed-lock wordt geïmplementeerd via Adobe Commerce’s LockManagerInterface . De standaardobject is MySQL, dat GET_LOCK - en RELEASE_LOCK -functies gebruikt. Om een verschillende slotleverancier te vormen, zie de slotleverancier vormen.
Logberichten verwacht
Het volgende bericht in commerce-data-export.log is normaal en geeft geen probleem aan:
{"feed":"products","operation":"partial sync","status":"operation skipped - process locked by \"full sync(1234)\"", ...}
Dit bericht wordt weergegeven wanneer een gedeeltelijk getriggerde synchronisatie probeert uit te voeren terwijl een volledige redex of saas:resync al wordt uitgevoerd. De overgeslagen bewerking gaat niet verloren. Nadat het actieve proces is voltooid en de vergrendeling is vrijgegeven, wordt de volgende uitvoering van de uitsnede opgehaald en worden eventuele wijzigingen die in behandeling zijn, gesynchroniseerd.
commerce-data-export.log worden geregistreerd, zie {de logboeken van 1} Overzicht en los 🔗 problemen op.