Se envíaron a autorizar 31 contrataciones a la misma vez desde el punto de vista del usuario. 11 registros dieron deadlock. Hay un proceso que se corre antes de autorizar y este además llama a un Web Service (por lo que he visto se tarda a lo mucho 1 segundo en responder) y como sabemos es independiente a la autorización.

Adjunto la bitácora de las tablas cfg.pro_procesos y cfg.bpr_bitacora_procesos por si es de ayuda ver los tiempos de ejecución. Gracias.

Archivo adjunto

asked 23 Oct '17, 16:57

Jimy%20Tobar's gravatar image

Jimy Tobar ♦♦
(suspended)
accept rate: 56%

edited 23 Oct '17, 18:18


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.

link

answered 30 Oct '17, 12:23

Fernando%20Paz's gravatar image

Fernando Paz ♦♦
17.3k81635
accept rate: 51%

No es recomendable reducir el número de Threads en el Pool, porque se reduciría la concurrencia en la ejecución de TODOS los Jobs que ejecuta el servicio. Esta configuración aplica para el servidor de Quartz y no para cada Job particular.

(30 Oct '17, 12:26) Fernando Paz ♦♦ Fernando%20Paz's gravatar image
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Evolution en BitBucket

En este sitio puede acceder al código fuente, centro de descargas y reportar bugs, propuestas y mejoras para Evolution.

Evolution en JIRA

En este sitio puedes sugerir nueva funcionalidad para Evolution, o puedes votar por la funcionalidad ya propuesta por otros usuarios.

Tags:

×9
×2

Asked: 23 Oct '17, 16:57

Seen: 1,062 times

Last updated: 30 Oct '17, 12:26

[Acerca de] [Preguntas Frecuentes] [Privacidad] [Soporte] [Contacto]
Copyright 2013-2018. Asesores en Informática