首页 > 解决方案 > JTA Atomikos 和 JBPM 死锁

问题描述

场景:

  1. 线程 1 将执行命令 get 任务,它们锁定运行时引擎并执行 getTask
07:29:05.875 [http-nio-8080-exec-1] DEBUG o.j.r.m.i.PerProcessInstanceRuntimeManager - Trying to get a lock java.util.concurrent.locks.ReentrantLock@624abefe[Unlocked] for org.kie.internal.runtime.manager.context.ProcessInstanceIdContext@11ae246a by org.jbpm.runtime.manager.impl.RuntimeEngineImpl@22cfbd8f
07:29:05.875 [http-nio-8080-exec-1] DEBUG o.j.r.m.i.PerProcessInstanceRuntimeManager - Lock java.util.concurrent.locks.ReentrantLock@624abefe[Locked by thread http-nio-8080-exec-1] taken for org.kie.internal.runtime.manager.context.ProcessInstanceIdContext@11ae246a by org.jbpm.runtime.manager.impl.RuntimeEngineImpl@22cfbd8f for waiting threads by false
07:29:05.876 [http-nio-8080-exec-1] DEBUG o.j.s.t.p.TaskTransactionInterceptor - Instantiating KieSpringTransactionManager
  1. 完成任务后,他们仍然锁定运行时引擎
  2. 发出执行另一任务的请求,应用程序尝试获取锁
07:30:22.224 [http-nio-8080-exec-5] DEBUG o.j.r.m.i.DefaultRuntimeEnvironment - Unable to find on initialize ejb schduler service due to org.jbpm.services.ejb.timer.EjbSchedulerService
07:30:22.272 [http-nio-8080-exec-5] DEBUG o.j.r.m.i.PerProcessInstanceRuntimeManager - Trying to get a lock java.util.concurrent.locks.ReentrantLock@624abefe[Locked by thread http-nio-8080-exec-1] for org.kie.internal.runtime.manager.context.ProcessInstanceIdContext@16bd5ad7 by org.jbpm.runtime.manager.impl.RuntimeEngineImpl@45c4e851

在这一步,他们将等待超时以获取锁。

我的问题是如何在步骤 1 之后无法释放锁。

标签: javamultithreadingjbpmatomikos

解决方案


推荐阅读