Todas las ejecuciones de Jobs que realiza AppJobWinService (esto incluye la finalización), se ejecutan en paralelo con un Pool de Threads que se configura en el archivo de configuración del servicio.
El valor por defecto que utiliza el servicio, para la cantidad de threads en el Pool es de 10, por lo que me parece razonable que los errores de Deadlock se den en 11 de los 31 registros.
Si se envian las contrataciones a la misma fecha y hora de vigencia, todas las contrataciones van a intentar ejecutarse a la misma hora, y entonces se van ejecutando de 10 en 10 en paralelo por el Pool existente.
Mi recomendación es modificar el proceso para que la llamada al WebService se haga de manera asincrónica, quitándola del thread principal que ejecuta el proceso de finalización. De esta manera, la transacción va a ser mucho más rápida y se reduce la posiblidad de caer en Deadlocks innecesarios.
Para ello, la manera correcta es implementar una cola para que las llamadas al WebService se hagan por otro proceso, que no bloquee la ejecucion de Evolution.
answered
30 Oct '17, 12:23
Fernando Paz ♦♦
17.3k●8●16●35
accept rate:
51%