Feed-Lock-Mechanismus für SaaS-Datenexport
Die SaaS Data Export-Erweiterung verwendet einen Feed-Sperrmechanismus, um Race-Bedingungen zu verhindern, wenn mehrere Prozesse versuchen, denselben Feed gleichzeitig zu synchronisieren. Dies kann beispielsweise vorkommen, wenn sich eine durch Cron ausgelöste Resynchronisation mit einem manuellen saas:resync CLI-Aufruf überschneidet.
Funktionsweise der Vorschubsperre
Jeder Feed-Synchronisierungsvorgang - unabhängig davon, ob er durch einen Cron-Auftrag oder einen manuellen saas:resync-CLI-Aufruf ausgelöst wird - folgt derselben Sequenz:
-
Der Prozess versucht, die Vorschubsperre zu erhalten. Der Sperrversuch ist nicht blockierend und wird sofort zurückgegeben, wenn die Sperre bereits von einem anderen Prozess gehalten wird.
-
Wenn die Sperre nicht verfügbar wird der Vorgang übersprungen und protokolliert.
Es gehen keine Daten verloren. Der nächste Cron-Durchgang erfasst ausstehende Änderungen, nachdem der aktuelle Prozess abgeschlossen ist.
-
Wenn die Sperre erworben wird, zeichnet der Prozess ihren Namen und ihre PID zu Diagnosezwecken auf und führt dann die Synchronisierung aus.
-
Wenn die Synchronisierung abgeschlossen wird oder fehlschlägt, wird die Sperre bedingungslos aufgehoben, sodass der nächste geplante Cron-Auftrag normal fortgesetzt werden kann.
Die Feed-Sperre kann immer nur von einem Synchronisierungsvorgang gehalten werden, unabhängig davon, ob dieser von Cron oder der CLI gestartet wurde. Die Feed-Sperre wird über die LockManagerInterface von Adobe Commerce implementiert. Das Standard-Backend ist MySQL, das GET_LOCK- und RELEASE_LOCK verwendet. Informationen zum Konfigurieren eines anderen Sperranbieters finden Sie unter Konfigurieren des Sperranbieters.
Erwartete Protokollmeldungen
Die folgende Meldung in commerce-data-export.log ist normal und weist nicht auf ein Problem hin:
{"feed":"products","operation":"partial sync","status":"operation skipped - process locked by \"full sync(1234)\"", ...}
Diese Meldung wird angezeigt, wenn eine durch Cron ausgelöste partielle Synchronisierung versucht, ausgeführt zu werden, während bereits eine vollständige Neuindizierung oder saas:resync ausgeführt wird. Der übersprungene Vorgang geht nicht verloren. Sobald der laufende Prozess abgeschlossen ist und die Sperre aufhebt, erfasst und synchronisiert die nächste Cron-Ausführung alle ausstehenden Änderungen.
commerce-data-export.log aufgezeichnet wurden, finden Sie unter Überprüfen von Protokollen und Fehlerbehebung.