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:

  1. 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.

  2. 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.

  3. Wenn die Sperre erworben wird, zeichnet der Prozess ihren Namen und ihre PID zu Diagnosezwecken auf und führt dann die Synchronisierung aus.

  4. 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.

NOTE
Allgemeine Informationen zu Protokollformaten und Vorgangstypen, die in commerce-data-export.log aufgezeichnet wurden, finden Sie unter Überprüfen von Protokollen und Fehlerbehebung.
recommendation-more-help
commerce-help-data-export