You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JBPM 7.59调用GET查询流程节点接口出现Read Timeout超时卡死问题

问题根源

你遇到的GET请求卡死本质是事务死锁,和请求方法是GET还是POST无关:
你在执行中的JBPM流程节点的事务上下文里,调用JBPM自身的管理API查询同一个正在运行的流程实例的节点信息。当前流程实例的事务还未提交,已经持有了对应流程实例记录的数据库行锁;而你调用的GET接口内部需要查询该流程实例的记录,被你未提交的事务所阻塞,最终触发超时。

验证方式

  • 查看JBPM服务端的运行日志,搜索deadlock、lock wait timeout相关报错,确认是否存在事务阻塞记录
  • 查看数据库的锁等待列表,以MySQL为例,执行show engine innodb status可以直接看到当前的死锁信息,确认争用的记录是否对应你查询的processInstanceId

解决方案

按优先级从高到低推荐:

  • 优先使用JBPM内部API获取节点信息:不要走HTTP调用REST接口,直接在你的自定义Java节点中注入JBPM的内置服务ProcessInstanceService,直接调用对应方法获取当前流程实例的节点信息,完全绕开跨事务的锁竞争问题
  • 若必须使用REST接口调用:将REST调用改为异步执行,不要阻塞当前流程节点的事务提交。可以把调用逻辑提交到独立线程池执行,等当前节点的事务提交完成后再发起HTTP请求,拿到结果后通过信号事件回传给流程即可
  • 临时验证方案:修改JBPM数据源的事务隔离级别为READ COMMITTED,允许非阻塞读已提交数据,可临时解决锁等待问题,但不推荐生产环境使用

代码优化建议

你的OkHttp请求代码中,GET请求无需携带Content-Type请求头,该头仅用于标记请求体的格式,GET请求无请求体,可直接删除该行配置。

内容的提问来源于stack exchange,提问作者Fasih Ur Rehman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:36:03