Problema
Los subprocesos correspondientes en algunos servicios personalizados de CQ se bloquean entre sí debido a la sincronización.
Solución
Construya sus servicios de CQ para que cada servicio de CQ use su propio ticket (y no el ticket del sistema). Superponga rep. en la propia implementación de AbstractService#getServiceTicket(Ticket) y cree un ticket separado con el método Ticket#duplicate().
Cuando utilice ticket.duplicate(), asegúrese de que dichos objetos estén cerrados (ver [1]).
El propio ticket del sistema se inicia en el arranque de CQ y se cierra sólo cuando se cierra CQ.
Información adicional
Este problema ocurre cuando los servicios de CQ extienden AbstractService y no superponen AbstractService#getServiceTicket(Ticket) para obtener un ticket separado. Por lo tanto, se utiliza la misma sesión de JCR para todos los servicios de CQ.
[1] http://javadoc.day.com/com/day/cq/contentbus/Ticket.html#close()