Добрый день!
Время от времени сталкиваемся с такой проблемой: перестают работать маршруты Activiti, встают на первом же таске. Никаких предпосылок к этому не бывает. Пронаблюдали за простейшим маршрутом из одного юзертаска с таймером: таск не комплитится по времени. Логи пусты, ошибок нет. После того, как все связанные с activiti таблицы дропаются и создаются скриптами, проблема исчезает, таймеры работают, как надо. Версия платформы - 7.0.4, java 8
Подскажите, с чем может быть связано такое поведение? Маршрут, на котором пробовали, прикреплен.test.json (4.1 КБ)
2 симпатии
UP!
Поймалась ошибка на приложенном таймере:
2019-06-14 12:04:27.653 ERROR [pool-8-thread-9/kvprod-core/admin] org.activiti.engine.impl.jobexecutor.TimerExecuteNestedActivityJobHandler - exception during timer execution
org.activiti.engine.ActivitiException: Exception while executing event-listener
at org.activiti.engine.delegate.event.impl.ActivitiEventSupport.dispatchEvent(ActivitiEventSupport.java:108)
at org.activiti.engine.delegate.event.impl.ActivitiEventSupport.dispatchEvent(ActivitiEventSupport.java:98)
at org.activiti.engine.delegate.event.impl.ActivitiEventDispatcherImpl.dispatchEvent(ActivitiEventDispatcherImpl.java:83)
at org.activiti.engine.impl.jobexecutor.TimerExecuteNestedActivityJobHandler.dispatchActivityTimeOut(TimerExecuteNestedActivityJobHandler.java:110)
at org.activiti.engine.impl.jobexecutor.TimerExecuteNestedActivityJobHandler.dispatchExecutionTimeOut(TimerExecuteNestedActivityJobHandler.java:105)
at org.activiti.engine.impl.jobexecutor.TimerExecuteNestedActivityJobHandler.dispatchActivityTimeoutIfNeeded(TimerExecuteNestedActivityJobHandler.java:85)
at org.activiti.engine.impl.jobexecutor.TimerExecuteNestedActivityJobHandler.execute(TimerExecuteNestedActivityJobHandler.java:60)
at org.activiti.engine.impl.persistence.entity.JobEntity.execute(JobEntity.java:85)
at org.activiti.engine.impl.persistence.entity.TimerEntity.execute(TimerEntity.java:95)
at org.activiti.engine.impl.cmd.ExecuteAsyncJobCmd.execute(ExecuteAsyncJobCmd.java:52)
at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24)
at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57)
at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45)
at com.haulmont.bpm.core.engine.spring.ExtSpringTransactionInterceptor.execute(ExtSpringTransactionInterceptor.java:47)
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)
at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)
at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable.executeJob(ExecuteAsyncRunnable.java:95)
at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable.run(ExecuteAsyncRunnable.java:50)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: com.haulmont.bpm.exception.BpmException: procTask abb559f9-5417-b31e-ca12-eae49cd48e34 already completed
at com.haulmont.bpm.core.ProcessRuntimeManagerBean.completeProcTaskOnTimer(ProcessRuntimeManagerBean.java:246)
at com.haulmont.bpm.core.engine.listener.BpmActivitiListener.onEvent(BpmActivitiListener.java:126)
at org.activiti.engine.impl.bpmn.helper.DelegateActivitiEventListener.onEvent(DelegateActivitiEventListener.java:45)
at org.activiti.engine.delegate.event.impl.ActivitiEventSupport.dispatchEvent(ActivitiEventSupport.java:105)
... 23 common frames omitted
Добрый день! А как вопроизвести ошибку на приложенной модели?
Здравствуйте! Ошибка воспроизводится спонтанно. Можно попробовать сэмулировать, запустив экземпляр процесса через стандартный интерфейс (BPM->Экземпляры процесса). У нас нагруженное приложение в кластере, и периодически таймеры просто встают на первом юзертаске.