Mecanismo de bloqueio de feed para exportação de dados SaaS
A extensão SaaS Data Export usa um mecanismo de bloqueio de feed para evitar condições de corrida quando vários processos tentam sincronizar o mesmo feed simultaneamente. Isso pode acontecer, por exemplo, quando uma ressincronização acionada pelo cron se sobrepõe a uma chamada manual da CLI saas:resync.
Como funciona o bloqueio de feed
Cada operação de sincronização de feed — seja acionada por um trabalho cron ou por uma chamada CLI saas:resync manual — segue a mesma sequência:
-
O processo tenta adquirir o bloqueio de feed. A tentativa de bloqueio não é bloqueada e retorna imediatamente se o bloqueio já estiver sendo mantido por outro processo.
-
Se o bloqueio for não disponível, a operação será ignorada e registrada.
Nenhum dado é perdido. A próxima execução do cron seleciona as alterações pendentes após a conclusão do processo atual.
-
Se o bloqueio for adquirido, o processo registrará seu nome e PID para fins de diagnóstico e, em seguida, executará a sincronização.
-
Quando a sincronização for concluída ou falhar, o bloqueio será liberado incondicionalmente para que o próximo trabalho cron agendado possa continuar normalmente.
Somente uma operação de sincronização pode manter o bloqueio de feed por vez, independentemente de ele ter sido iniciado pelo cron ou pela CLI. O bloqueio de feed é implementado através de LockManagerInterface de Adobe Commerce. O back-end padrão é o MySQL, que usa as funções GET_LOCK e RELEASE_LOCK. Para configurar um provedor de bloqueio diferente, consulte Configurar o provedor de bloqueio.
Mensagens de log esperadas
A seguinte mensagem em commerce-data-export.log é normal e não indica um problema:
{"feed":"products","operation":"partial sync","status":"operation skipped - process locked by \"full sync(1234)\"", ...}
Esta mensagem aparece quando uma sincronização parcial acionada pelo cron tenta ser executada enquanto uma reindexação completa ou saas:resync já está em andamento. A operação ignorada não é perdida. Quando o processo em execução for concluído e liberar o bloqueio, a próxima execução do cron selecionará e sincronizará todas as alterações pendentes.
commerce-data-export.log, consulte Revisar logs e solucionar problemas.