请教Activiti 并发启动流程死锁问题

鲁路修-兰佩路基 发布于 2018/12/30 17:29
阅读 2K+
收藏 2

 

1. 多线程并发启动 : 

runtimeService.startProcessInstanceByKey(processDefinitionKey,variables);

2. 版本6.0.0 或 7.0.0.Beta4

3. 数据库:mysql 5.7.18

导致: Deadlock found when trying to get lock; try restarting transaction

加载中
0
鲁路修-兰佩路基
鲁路修-兰佩路基

1. 节点设置为 非异步,独占,似乎可以避免;eg:

//非异步
userTask.setAsynchronous(false);
//排他
userTask.setNotExclusive(false);

2. 参考 《Activiti实战》14.2.3 独占与异步  P341~345

0
鲁路修-兰佩路基
鲁路修-兰佩路基

1. 流程节点UserTask,绑定了事务监听器,监听器中,服务S 对Variable设值(step1),并MQ发起请求; 服务S通过MQ收到应答,又对Variable设值(step2);因为step1,step2为不同线程,开启不同的事务,对act_ru_variable 表更新时,易出现乐观锁异常: xxx wap updated by another transaction concurrently.

 

2. activiti 6.0.0 并发开启流程,执行流程时,会出现获取不到数据库连接的异常;方法:将druid移除,采用springboot tomcat自带的数据库连接池;

0
乘着风的翅膀
乘着风的翅膀

问一下上面的问题解决了吗

0
Jiaweit
Jiaweit

遇到了同样的问题,请问博主是如何解决的

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部