首先,事物内加上其他io访问,例如缓存,rpc,mq等等,是一个很差的实践,因为io堵住的话,事务也会卡住,导致获取到的锁一直不释放。需要在设计的时候,最好提取出来
第二,dubbo是否是同步调用呢,如果是,超时是有异常的,无论是建立tcp连接超时,还是读取响应超时,超时异常都是运行时异常,spring默认是运行时异常回滚的,你看看是否这个异常没被catch
第三,spring和mysql都可以配置事务超时时间,一般mysql上面设置innodb_lock_wait_timeout,只要事务获取了锁,锁超过这个时间(或者等待锁超过这个时间),就会有异常并回滚。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有