现有项目使用的springcloud阿里巴巴2023.0.1.0,对应seata版本是2.0

问题1:业务异常不抛出

使用GlobalTransactional标识分布式事务,返回层controller遇到自定义业务异常信息不返回,但是事务发生回滚,回滚成功了,返回报错“try to proceed invocation error”,报错信息如下

java.lang.RuntimeException: try to proceed invocation error

遇到这个问题找了很多方向,因为最近github无法访问,最后换了版本试了下,本着能升级则不降级原则升级到seata版本是2.1,对应springcloudalibaba2023.0.3.2,springboot版本3.2.9,问题到此解决,估计是seata的bug

问题2:执行多次事务的时候直接报错“Global lock wait timeout”,还在调试环节不存在三高情形,不可能出现数据库相应缓慢,大事务问题,

org.apache.seata.rm.datasource.exec.LockWaitTimeoutException: Global lock wait timeout

查询资料都提示排查锁的问题,调整事务时间,整合几小时没效果

返回来看seata表字段长度也够用,不可能存在事务超时情况,这个全局事务默认60000完全够我业务使用,至此怀疑到seata本身的问题,经过日志查看终于找的原因,seata启动成功但是数据库指向有问题,找的问题处理问题就简单多了,重新加载配置文件并启动后问题解决,这里主要耗时就是看到类似超时问题就去超时方向去找,在此记录下这个问题希望帮助到其他同学

docker环境启动seata

docker run --name seata-server \
-p 8091:8091 \
-p 7091:7091 \
-e SEATA_IP=IP \
-e SEATA_PORT=8091 \
-v /etc/docker/seata/config/application.yml:/seata-server/resources/application.yml \
-v /etc/docker/seata/logs:/root/logs/seata \
-v /etc/docker/seata/data:/home/seata/data \
-d seataio/seata-server:2.0.0

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐