Skip to content

fix(rh/citatorios): el espejo del buzón de RL ya no se queda bloqueado por su propio advisory lock

Infraestructura requested to merge qa into main

run_sync tomaba pg_try_advisory_lock con la sesión db_rh y luego hacía db_rh.rollback(), que regresa la conexión al pool CON el lock puesto (es de la conexión, no de la transacción). El unlock corría en otra conexión, devolvía false y el lock quedaba pegado en una conexión idle: los syncs siguientes salían en 0 s con "ya hay un sync en curso" hasta que el pool reciclaba la conexión (pool_recycle 30 min). Visto en PRD el 2026-10-27 en pg_locks.

Ahora el lock vive en una conexión dedicada que se libera al final; si el unlock falla, la conexión se invalida en vez de volver al pool.

Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

Merge request reports

Loading