blade-biz工程seata示例,异常但事务不回滚

Blade 未结 2 1188
81809956
81809956 2022-03-18 22:40

一、该问题的重现步骤是什么?

  1. 下载seata1.4.2并启动(无注册中心,文件存储),修改LauncherConstant的seata ip地址,分别启动blade-seata-order、blade-seata-storage,按照示例操作可以提交、回滚;此示例没有体现分布式事务特点,完全是手动判断是否调用成功、手动抛出异常,而且是在调用方抛出,是一个简单的spring事务。

  2. 测试2:只启动order(去除熔断类、去除手工抛异常),关闭storage,控制台没有报任何异常,事务竟然正常提交成功,订单表有了新数据,事务没有起到作用。

IStorageClient.java
@FeignClient(name = "blade-seata-storage")
IStorageClient {


OrderServiceImpl.java createOrder
//     if (cnt2 < 0) {
//       throw new ServiceException("创建订单失败");
//    } else if (count > maxCount) {
//       throw new ServiceException("超过订单最大值,创建订单失败");
//    }

http://localhost:8501/order/create?userId=1&commodityCode=product-2&count=1

{"code":400,"success":false,"data":{},"msg":"操作失败"}


  3.测试3:在上面的基础上,把storage启动,提交订单还是成功了(控制台有异常,页面显示失败,但订单表有了新数据)。

java.lang.RuntimeException: 超过库存数,扣除失败!

http://localhost:8501/order/create?userId=1&commodityCode=product-2&count=1

{"code":400,"success":false,"data":{},"msg":"操作失败"}


二、你期待的结果是什么?实际看到的又是什么?

期待结果:被调用方异常时回滚事务

实际看到:被调用方异常或未启动,对事务没有任何影响,完全不起作用

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

bladex2.9

windows10

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
提交回复