TX-LCN分布式事务日志简单分析

TX-LCN分布式事务日志简单分析

  1. 在排查前我们需要加上打印分布式事务日志配置
logging:
  level:
    #分布式事务日志
    com.codingapi.txlcn: DEBUG
  1. 启动完后可以看到分布式事务启动日志
2020-04-03 15:03:29.143 DEBUG 11716 --- [      Thread-38] c.c.t.txmsg.netty.bean.SocketManager     : get channel, key:/192.168.188.94:8070
2020-04-03 15:03:29.143 DEBUG 11716 --- [      Thread-38] c.c.t.txmsg.netty.bean.SocketManager     : await response
2020-04-03 15:03:29.143 DEBUG 11716 --- [ntLoopGroup-2-1] c.c.t.txmsg.netty.handler.RpcCmdEncoder  : send->{"key":"897af17923cd537","msg":{"action":"qtmc","state":100},"remoteKey":"/192.168.188.94:8070"}
2020-04-03 15:03:29.201 DEBUG 11716 --- [ntLoopGroup-2-1] c.c.t.txmsg.netty.handler.RpcCmdDecoder  : cmd->{"key":"897af17923cd537","msg":{"action":"qtmc","data":["192.168.188.94:8070"],"state":200},"remoteKey":"/10.188.1.53:64265"}
2020-04-03 15:03:29.202 DEBUG 11716 --- [ntLoopGroup-2-1] c.c.t.txmsg.netty.handler.RpcCmdDecoder  : got response message[Netty Handler]
2020-04-03 15:03:29.203 DEBUG 11716 --- [      Thread-38] c.c.txlcn.txmsg.netty.bean.NettyRpcCmd   : got response. 897af17923cd537 
2020-04-03 15:03:29.203 DEBUG 11716 --- [      Thread-38] c.c.t.txmsg.netty.bean.SocketManager     : response is: MessageDto(action=qtmc, groupId=null, data=[192.168.188.94:8070], state=200)
2020-04-03 15:03:29.203 DEBUG 11716 --- [      Thread-38] c.c.t.txmsg.netty.impl.NettyRpcClient    : cmd request used time: 60 ms
2020-04-03 15:03:29.203 DEBUG 11716 --- [      Thread-38] c.c.txlcn.tc.txmsg.LoopMessenger         : request action: qtmc. TM[/192.168.188.94:8070]
2020-04-03 15:03:29.203 DEBUG 11716 --- [      Thread-38] com.codingapi.txlcn.tc.txmsg.TMSearcher  : wait connect size is 0

在这里插入图片描述
当我们对进行操作产生分布式事务并回滚时可以在日志中看到

事务发起方

    @LcnTransaction
    @Transactional(rollbackFor = Exception.class)
    @Override
    public boolean userDeleteRole(UserVo userVo) {
        LogSystem logSystem = new LogSystem();
        logSystem.setIp("测试");
        logSystem.setUserName("测试");
        logSystem.setUserId("测试");
//        远程调用
        userLogApi.addSystemLog(logSystem);
//        模拟异常
        int i=1/0;
        return true;
    }

事务日志
在这里插入图片描述
在这里插入图片描述
若在方法中发生异常可以看到分布式日志有个rollback transaction异常回滚信息若没有该信息则表示没有加入异常回滚信息到分布式事务组则会导致本地事务回滚成功远程事务回滚失败

被调用方

   @Override
   @LcnTransaction
   @Transactional(rollbackFor = Exception.class)
   public void save(LogSystem logSystem) {
      logSystemMapper.insert(logSystem);
       System.out.println(logSystem.getId());
   }

事务日志
在这里插入图片描述
在这里插入图片描述
若正常情况下事务调用若调用方有回滚信息加入到事务组中被调用方会去消费该回滚信息回滚本地事务

而在我们使用全局事务配置时会导致本地发生异常后导致回滚成功但不会加入回滚信息到事务组导致远程服务事务不回滚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值