美文网首页
工作流中高并发问题的出错提示和处理方式

工作流中高并发问题的出错提示和处理方式

作者: Mayuri樂 | 来源:发表于2018-09-27 09:11 被阅读0次

    处理的bug,在工作流引擎中,如果同时开启多条线程对同一个环节进行状态更新,若存在线程正在更新,其他访问的线程就会返回一个ActivitiOptimisticLockingException 异常 :

    (toString(updatedObject)+" was updated by another transaction concurrently"); 

    经过一些资料查询,问题发生的原理是在serviceTask完成后,更新的ExecutionEntity 是同一条记录,而每一个serviceTask 此时处于 

    两个不同的线程和事务当中,两个事务彼此不可见,任务开始时获取的ExecutionEntity完成相同,当一个事务成功更新后, 

    另一个事务就会失败。这样保证了流程的准确执行,当该任务失败后,会在下一个JobExecutor 扫描时重新执行。此时获取的 

    execution 的版本已经加1,此时任务正常结束。

    处理并发问题牵涉到多线程管理。我的处理方式是对前一线程进行xx.join();保证前一线程结束后才开始下一组的线程处理,避免并发情况的发生

    相关文章

      网友评论

          本文标题:工作流中高并发问题的出错提示和处理方式

          本文链接:https://www.haomeiwen.com/subject/xpbsoftx.html