Flödeslås för SaaS-dataexport
Tillägget SaaS Data Export använder en flödeslås för att förhindra konkurrensförhållanden när flera processer försöker synkronisera samma feed samtidigt. Detta kan till exempel inträffa när en felutlöst omsynkronisering överlappar ett manuellt saas:resync CLI-anrop.
Så här fungerar låset
Varje feed-synkroniseringsåtgärd, som utlöses av ett cron-jobb eller ett manuellt saas:resync CLI-anrop, följer samma sekvens:
-
Processen försöker hämta flödeslåset. Låsförsöket är icke-blockerande och returneras omedelbart om låset redan hålls av en annan process.
-
Om låset inte är tillgängligt hoppas [åtgärden över och loggas].
Inga data går förlorade. Nästa kron-körning hämtar väntande ändringar när den aktuella processen har slutförts.
-
Om låset är förvärvat registrerar processen sitt namn och PID för diagnostiksyften och kör sedan synkroniseringen.
-
När synkroniseringen har slutförts eller misslyckats frisläpps låset ovillkorligt så att nästa schemalagda cron-jobb kan fortsätta normalt.
Endast en synkroniseringsåtgärd kan innehålla feedelåset åt gången, oavsett om det startades av cron eller CLI. Flödeslåset implementeras via LockManagerInterface för Adobe Commerce. Standardserverdelen är MySQL, som använder funktionerna GET_LOCK och RELEASE_LOCK. Mer information om hur du konfigurerar en annan låsleverantör finns i Konfigurera låsprovidern.
Förväntade loggmeddelanden
Följande meddelande i commerce-data-export.log är normalt och indikerar inget problem:
{"feed":"products","operation":"partial sync","status":"operation skipped - process locked by \"full sync(1234)\"", ...}
Det här meddelandet visas när en felutlöst partiell synkronisering försöker köras när en fullständig omindexering eller saas:resync redan pågår. Den hoppade åtgärden går inte förlorad. När den pågående processen har slutförts och låset har släppts, hämtar nästa kron-körning och synkroniserar alla väntande ändringar.
commerce-data-export.log finns i Granska loggar och felsöka.