Estimados compañeros,
Tengo el siguiente inconveniente al realizar un movimiento en la versión 1.19.1.4 en ORACLE, las demás entidades funcionan correctamente, como retiros, contrataciones, modificación a esquemas, etc.
El problema es al hacer un movimiento, queda en estado pendiente, al revisar en los procesos no tira ningún mensaje de error, tampoco dice si es exitoso, si se presiona sobre el botón de EJECUTAR INMEDIATAMENTE, dice que se ejecuto correctamente, pero no hace nada y al revisar el LOG del appjob tira el siguiente mensaje de error y luego baja la tarea del APPJOB y hace que ya no funcionen las demás entidades:
2020-08-24 17:55:04,678 [31] ERROR Aseinfo.VH4.MicroServices.AppJob.Common.Tasks.AccionFinalizacionTask - Error al ejecutar la finalización 6ba088f4-da85-4aa8-8553-61d96715a3df
Aseinfo.Infrastructure.Base.Exceptions.ApplicationJobWindowsServiceException: El servicio de ejecución de tareas no está iniciado o produjo un error. ---> Quartz.JobPersistenceException: Failure setting up connection. ---> System.InvalidOperationException: La conexión ya forma parte de una transacción local o distribuida
at Oracle.ManagedDataAccess.Client.OracleConnection.BeginTransaction(IsolationLevel isolationLevel)
at Oracle.ManagedDataAccess.Client.OracleConnection.BeginDbTransaction(IsolationLevel isolationLevel)
at System.Data.Common.DbConnection.BeginTransaction(IsolationLevel isolationLevel)
at Quartz.Impl.AdoJobStore.JobStoreSupport.GetConnection() in C:\projects\quartznet-6fcn8\src\Quartz\Impl\AdoJobStore\JobStoreSupport.cs:line 343
--- End of inner exception stack trace ---
at Quartz.Impl.AdoJobStore.JobStoreSupport.GetConnection() in C:\projects\quartznet-6fcn8\src\Quartz\Impl\AdoJobStore\JobStoreSupport.cs:line 349
at Quartz.Impl.AdoJobStore.JobStoreTX.GetNonManagedTXConnection() in C:\projects\quartznet-6fcn8\src\Quartz\Impl\AdoJobStore\JobStoreTX.cs:line 59
at Quartz.Impl.AdoJobStore.JobStoreSupport.<ExecuteInNonManagedTXLock>d__262`1.MoveNext() in C:\projects\quartznet-6fcn8\src\Quartz\Impl\AdoJobStore\JobStoreSupport.cs:line 3697
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Quartz.Impl.AdoJobStore.JobStoreSupport.<ExecuteInNonManagedTXLock>d__262`1.MoveNext() in C:\projects\quartznet-6fcn8\src\Quartz\Impl\AdoJobStore\JobStoreSupport.cs:line 3712
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Aseinfo.VH4.Infraestructura.Services.SchedulerService.<CreateFinalizacionJobAsync>d__16.MoveNext() in C:\vh4\VH4\Infraestructura\Services\SchedulerService.cs:line 345
--- End of inner exception stack trace ---
at Aseinfo.VH4.Infraestructura.Services.SchedulerService.<CreateFinalizacionJobAsync>d__16.MoveNext() in C:\vh4\VH4\Infraestructura\Services\SchedulerService.cs:line 398
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Aseinfo.VH4.Infraestructura.Services.SchedulerService.ProgramarEjecucionProceso(String codigoProceso, IEntityWithKey entity, IAuthorizationWorkflowManagedEntityService service, DateTime fechaEjecucion, IDictionary`2 dataDictionary) in C:\vh4\VH4\Infraestructura\Services\SchedulerService.cs:line 180
at Aseinfo.VH4.Infraestructura.Services.SchedulerService.ProgramarFinalizacionAccion(IEntityWithKey entity, IAuthorizationWorkflowManagedEntityService service, DateTime fechaEjecucion, IDictionary`2 dataDictionary) in C:\vh4\VH4\Infraestructura\Services\SchedulerService.cs:line 116
at Aseinfo.Infrastructure.Base.Entity.EntityServiceBase`2.AutorizaEntidad(IAuthorizationWorkflowManagedEntity entity, String urlDetailsFlujo, String urlWorkflowService, Boolean ejecutarInmediatamente) in C:\vh4\Infrastructure\Base\Entity\EntityServiceBase.cs:line 699
at Aseinfo.VH4.Acciones.Services.MovimientoService.FinalizaProcesamientoEntidad(EntityObject entity) in C:\vh4\VH4\Acciones\Services\Movimientos\MovimientoService.cs:line 448
at Aseinfo.VH4.MicroServices.AppJob.Common.Tasks.AccionFinalizacionTask.Execute(Dictionary`2 data, Action`1 reintentarEjecucion) in C:\vh4\VH4\MicroServices\AppJob\Common\Tasks\AccionFinalizacionTask.cs:line 359
asked
25 Aug '20, 11:31
Brandon Aguilar
(suspended)
accept rate:
43%
El error esta dentro del fuente del Quartz, no en el fuente de Evolution.
Aparentemente es un error de conexión al Oracle. Si pasa eventualmente puede ser que realmente en ese momento no pueda conectarse.
El SchedulerService de Quartz no puede programar la finalización de la ejecución inmediata.
¿Es un movimiento que genera un incremento?
El error se da al momento de programar la finalizacion del incremento, dentro del código que finaliza el movimiento.
¿Los otros movimientos que aparecen como finalizados correctamente, tienen incremento asociado?
En efecto es un movimiento que tiene asociado un incremento. Los movimientos que aparecieron como finalizados correctamente 1. Se hacen con un usuario root. 2. Dan resultado exitoso cuando solo es un movimiento sin incremento
O sea que:
Si es un movimiento con incremento pero se realiza con el usuario ROOT si funciona.
Si es un movimiento sin incremento tambíen funciona aun NO siendo el usuario ROOT.
Si es un movimiento con incremento pero con un usuario normal NO FUNCIONA.
No es que pase eventualmente.
Recordemos que un usuario con ROOT, cuando guarda entidades no envía a flujo, pero la finalización de la entidad igual se programa para que la realice el AppJob. Entonces aun y cuando usemos un usuario ROOT, se debe obtener el mismo comportamiento.