记录一次线上异常ORA-00060: deadlock detected while waiting for resource
昨晚监控出现的问题.字面意思上是"等待资源时检测到死锁"
项目是通过报文进行交互的,在批处理时,两个或多个线程对同一张表进行update操作,最后爆出这个异常,出异常的线程回滚数据,其他的update会继续commit提交事务.
目前彻底解决方法还在寻找中,后续补上
问题找到了:
两个线程,对应两个表的记录操作
甲线程是:先A后B
乙线程是:先B后A
解决这个问题就只需要将顺序统一就可以,
但是项目里牵扯出一个历史问题,就是都是update操作,甲乙先后顺序很重要,要是混乱了,状态就会出现异常.
所以最后的解决方法是保证乙线程处理逻辑在甲线程后面.
最后方案,报文处理范围时间提前隔离开,避免同一时间阶段批量处理