Mecanismo de bloqueo de fuente para la exportación de datos SaaS

La extensión SaaS Data Export utiliza un mecanismo de bloqueo de fuentes para evitar condiciones de carrera cuando varios procesos intentan sincronizar la misma fuente simultáneamente. Esto puede ocurrir, por ejemplo, cuando una resincronización activada por cron se superpone con una llamada manual de CLI saas:resync.

Funcionamiento del bloqueo de alimentación

Cada operación de sincronización de fuentes (desencadenada por un trabajo cron o una llamada manual a CLI de saas:resync) sigue la misma secuencia:

  1. El proceso intenta adquirir el bloqueo de fuente. El intento de bloqueo es sin bloqueo y devuelve inmediatamente si el bloqueo ya está retenido por otro proceso.

  2. Si el bloqueo está no disponible, la operación se omitirá y se registrará.

    No se pierden datos. La siguiente ejecución de cron recoge los cambios pendientes una vez finalizado el proceso actual.

  3. Si el bloqueo es adquirido, el proceso registra su nombre y PID con fines diagnósticos y luego ejecuta la sincronización.

  4. Cuando la sincronización se completa o falla, el bloqueo se libera incondicionalmente para que el siguiente trabajo cron programado pueda continuar normalmente.

Solo una operación de sincronización puede mantener el bloqueo de fuente a la vez, independientemente de si lo inició cron o la CLI. El bloqueo de fuente se implementó mediante LockManagerInterface de Adobe Commerce. El servidor predeterminado es MySQL, que usa las funciones GET_LOCK y RELEASE_LOCK. Para configurar un proveedor de bloqueo diferente, consulte Configurar el proveedor de bloqueo.

Mensajes de registro esperados

El siguiente mensaje de commerce-data-export.log es normal y no indica ningún problema:

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

Este mensaje aparece cuando una sincronización parcial desencadenada por cron intenta ejecutarse mientras ya se está realizando una reindexación completa de saas:resync. No se pierde la operación omitida. Una vez que el proceso en ejecución termina y libera el bloqueo, la siguiente ejecución de cron recoge y sincroniza cualquier cambio pendiente.

NOTE
Para obtener información general acerca del formato de registro y los tipos de operaciones registrados en commerce-data-export.log, vea Revisar registros y solucionar problemas.
recommendation-more-help
commerce-help-data-export