Meccanismo di blocco dei feed per l’esportazione di dati SaaS

L’estensione SaaS Data Export utilizza un meccanismo di blocco del feed per evitare race condition quando più processi tentano di sincronizzare lo stesso feed contemporaneamente. Ciò può verificarsi, ad esempio, quando una risincronizzazione attivata da cron si sovrappone a una chiamata CLI saas:resync manuale.

Funzionamento del blocco del feed

Ogni operazione di sincronizzazione dei feed, sia attivata da un processo cron che da una chiamata CLI saas:resync manuale, segue la stessa sequenza:

  1. Il processo tenta di acquisire il blocco del feed. Il tentativo di blocco non è di blocco e ritorna immediatamente se il blocco è già bloccato da un altro processo.

  2. Se il blocco è non disponibile, l’operazione [viene ignorata e registrata].

    Nessun dato viene perso. La successiva esecuzione cron riprende le modifiche in sospeso al termine del processo corrente.

  3. Se il blocco è acquisito, il processo registra il nome e il PID per scopi diagnostici, quindi esegue la sincronizzazione.

  4. Quando la sincronizzazione viene completata o non riesce, il blocco viene rilasciato incondizionatamente in modo che il successivo processo cron pianificato possa procedere normalmente.

Solo un’operazione di sincronizzazione può mantenere il blocco del feed alla volta, indipendentemente dal fatto che sia stato avviato da cron o CLI. Il blocco del feed è implementato tramite LockManagerInterface di Adobe Commerce. Il back-end predefinito è MySQL, che utilizza le funzioni GET_LOCK e RELEASE_LOCK. Per configurare un provider di blocchi diverso, vedere Configurare il provider di blocchi.

Messaggi di registro previsti

Il seguente messaggio in commerce-data-export.log è normale e non indica un problema:

{"feed":"products","operation":"partial sync","status":"operation skipped - process locked by \"full sync(1234)\"", ...}

Questo messaggio viene visualizzato quando si tenta di eseguire una sincronizzazione parziale attivata da cron mentre è già in corso una reindicizzazione completa o saas:resync. L’operazione saltata non viene persa. Una volta che il processo in esecuzione completa e rilascia il blocco, l’esecuzione successiva del cron rileva e sincronizza eventuali modifiche in sospeso.

NOTE
Per informazioni generali sul formato del registro e sui tipi di operazioni registrati in commerce-data-export.log, vedere Esaminare i registri e risolvere i problemi.

Ulteriori informazioni su questo argomento

recommendation-more-help
commerce-help-data-export