1、异常报告:Could not register branch into global session xid =xxx.xxx.xx.xxx status = Rollbacked
2、异常原因:
while expecting Begin # 描述:分支事务注册时,全局事务状态需是一阶段状态begin,非begin不允许注册。属于seata框架层面正常的处理,用户可以从自身业务层面解决。
3、出现场景:
1. 分支事务是异步,全局事务无法感知它的执行进度,全局事务已进入二阶段,该异步分支才来注册
2. 服务a rpc 服务b超时(dubbo、feign等默认1秒超时),a上抛异常给tm,tm通知tc回滚,但是b还是收到了请求(网络延迟或rpc框架重试),然后去tc注册时发现全局事务已在回滚
3. tc感知全局事务超时(@GlobalTransactional(timeoutMills = 默认60秒)),主动变更状态并通知各分支事务回滚,此时有新的分支事务来注册
4.添加事务注解的方法不是第一个执行sql语句的地方,即在方法A上添加了事务注解,但是在方法A中执行sql操作之前调用了方法B,方法B属于分支事务,方法B中的sql操作在方法A的sql操作之前执行了。