codingapi / codingapi/tx-lcn

5.0.2版本提交分布式事务后,第一次提交成功了,但数据一直未提交,后面提交就锁表了

Open
#536 9 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
4.2k
Forks
1.4k
PR merge metrics
No merged PRs in 30d

Description

1.控制器
@DS(value = Constants.DEFAULT_DS)
@RequestMapping(value = "/registerCompany", method = RequestMethod.POST)
@ApiOperation(value = "注册公司", httpMethod = "POST", notes = "注册公司", produces = "application/json;charset=UTF-8")
public SoulResult registerCompany() {
CompanyDO company = new CompanyDO();
company.setName("网易集团");
company.setManagerId("12345678");
company.setVersion("1.0");
company.setAuditState("0");
company.setState(1);
company.setBalance(0.00);
company.setCreateTime(new Date());
company.setTenantId("2");
Integer register = distributionService.register(company);
if (register == 1) {
return SoulResult.success("注册成功!");
} else {
return SoulResult.warn("注册失败,事务回滚!");
}
}

2. 事务发起方
@Transactional
@LcnTransaction(propagation = DTXPropagation.REQUIRED)
public Integer register(CompanyDO company) {
// execute remote transaction
Map param = new HashMap();
param.put("id", idWorker.nextId());
param.put("account", "1000000");
param.put("balance", 5000.00);
param.put("currencyType", "CNY");
SoulResult remote = client.registerAccount(param);
if (remote.isSuccess()) {
// execute local transaction
return companyMapper.insert(company);
} else {
throw new RuntimeException("register Failed !");
}
}

3.事务参与方
@FeignClient(name = Const.SERVICE_ID_BIZ_PRODUCE, configuration = FeiginConfig.class, fallback = BizProduceFallback.class)
public interface MicroServiceRouteBizProduceClient {

@PutMapping("/authenticationApi/account/registerAccount")
public SoulResult registerAccount(@RequestParam() Map param);

}
@Transactional
@LcnTransaction(propagation = DTXPropagation.SUPPORTS)
public Integer addAccount(Account account) {

return accountMapper.insert(account);
}

日志:
发起方日志:
Reading [class com.ymy.xxb.migrat.common.result.SoulResult] as "application/json;charset=UTF-8" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@1cd8b479]
2020-08-20 16:06:08.911 DEBUG 15096 --- [ XNIO-3 task-5] org.mybatis.spring.SqlSessionUtils : Creating a new SqlSession
2020-08-20 16:06:08.912 DEBUG 15096 --- [ XNIO-3 task-5] org.mybatis.spring.SqlSessionUtils : Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@78709ef5]
2020-08-20 16:06:08.913 DEBUG 15096 --- [ XNIO-3 task-5] o.m.s.t.SpringManagedTransaction : JDBC Connection [com.codingapi.txlcn.tc.core.transaction.lcn.resource.LcnConnectionProxy@2a195c9f] will be managed by Spring
2020-08-20 16:06:08.915 INFO 15096 --- [ XNIO-3 task-5] c.y.x.m.auth.shiro.filter.SqlFilter : request method :com.ymy.xxb.migrat.auth.shiro.mapper.CompanyMapper.insert
2020-08-20 16:06:08.915 DEBUG 15096 --- [ XNIO-3 task-5] c.y.x.m.a.s.mapper.CompanyMapper.insert : ==> Preparing: insert into co_company ( name, manager_id, version, audit_state, state, balance, create_time ) values ( ?, ?, ?, ?, ?, ?, ? )
2020-08-20 16:06:08.918 DEBUG 15096 --- [ XNIO-3 task-5] c.y.x.m.a.s.mapper.CompanyMapper.insert : ==> Parameters: 网易集团(String), 12345678(String), 1.0(String), 0(String), 1(Integer), 0.0(Double), 2020-08-20 16:06:08.622(Timestamp)
2020-08-20 16:06:08.932 DEBUG 15096 --- [ XNIO-3 task-5] c.y.x.m.a.s.mapper.CompanyMapper.insert : <== Updates: 1
2020-08-20 16:06:08.932 DEBUG 15096 --- [ XNIO-3 task-5] c.a.druid.pool.PreparedStatementPool : {conn-210005, pstmt-220000} enter cache
2020-08-20 16:06:08.932 DEBUG 15096 --- [ XNIO-3 task-5] org.mybatis.spring.SqlSessionUtils : Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@78709ef5]
2020-08-20 16:06:08.932 DEBUG 15096 --- [ XNIO-3 task-5] org.mybatis.spring.SqlSessionUtils : Transaction synchronization committing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@78709ef5]
2020-08-20 16:06:08.932 DEBUG 15096 --- [ XNIO-3 task-5] org.mybatis.spring.SqlSessionUtils : Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@78709ef5]
2020-08-20 16:06:08.932 DEBUG 15096 --- [ XNIO-3 task-5] org.mybatis.spring.SqlSessionUtils : Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@78709ef5]
2020-08-20 16:06:08.932 DEBUG 15096 --- [ XNIO-3 task-5] o.s.j.d.DataSourceTransactionManager : Initiating transaction commit
2020-08-20 16:06:08.932 DEBUG 15096 --- [ XNIO-3 task-5] o.s.j.d.DataSourceTransactionManager : Committing JDBC transaction on Connection [com.codingapi.txlcn.tc.core.transaction.lcn.resource.LcnConnectionProxy@2a195c9f]
2020-08-20 16:06:08.933 DEBUG 15096 --- [ XNIO-3 task-5] o.s.j.d.DataSourceTransactionManager : Releasing JDBC Connection [com.codingapi.txlcn.tc.core.transaction.lcn.resource.LcnConnectionProxy@2a195c9f] after transaction
2020-08-20 16:06:08.933 DEBUG 15096 --- [ XNIO-3 task-5] o.s.jdbc.datasource.DataSourceUtils : Returning JDBC Connection to DataSource
2020-08-20 16:06:08.934 DEBUG 15096 --- [ XNIO-3 task-5] c.c.txlcn.tc.core.DTXServiceExecutor : business success @group(b63bca12a9537)
2020-08-20 16:06:08.934 DEBUG 15096 --- [ XNIO-3 task-5] c.c.t.t.c.t.TransactionControlTemplate : notify group > transaction type: lcn, state: 1. @group(b63bca12a9537)
2020-08-20 16:06:08.934 DEBUG 15096 --- [ XNIO-3 task-5] c.c.t.txmsg.netty.bean.SocketManager : get channel, key:/127.0.0.1:8070
2020-08-20 16:06:08.934 DEBUG 15096 --- [ XNIO-3 task-5] c.c.t.txmsg.netty.bean.SocketManager : await response
2020-08-20 16:06:08.934 DEBUG 15096 --- [ntLoopGroup-5-1] c.c.t.txmsg.netty.handler.RpcCmdEncoder : send->{"key":"b63bca0639537","msg":{"action":"notifyGroup","data":{"groupId":"b63bca12a9537","state":1},"groupId":"b63bca12a9537","state":100},"remoteKey":"/127.0.0.1:8070"}
2020-08-20 16:06:08.943 DEBUG 15096 --- [ntLoopGroup-5-1] c.c.t.txmsg.netty.handler.RpcCmdDecoder : cmd->{"key":"b63bca0639537","msg":{"action":"notifyGroup","data":1,"groupId":"b63bca12a9537","state":200},"remoteKey":"/127.0.0.1:42409"}
2020-08-20 16:06:08.944 DEBUG 15096 --- [ntLoopGroup-5-1] c.c.t.txmsg.netty.handler.RpcCmdDecoder : got response message[Netty Handler]
2020-08-20 16:06:08.944 DEBUG 15096 --- [ XNIO-3 task-5] c.c.txlcn.txmsg.netty.bean.NettyRpcCmd : got response. b63bca0639537
2020-08-20 16:06:08.944 DEBUG 15096 --- [ XNIO-3 task-5] c.c.t.txmsg.netty.bean.SocketManager : response is: MessageDto(action=notifyGroup, groupId=b63bca12a9537, data=1, state=200)
2020-08-20 16:06:08.944 DEBUG 15096 --- [ XNIO-3 task-5] c.c.t.txmsg.netty.impl.NettyRpcClient : cmd request used time: 10 ms
2020-08-20 16:06:08.944 DEBUG 15096 --- [ XNIO-3 task-5] c.c.txlcn.tc.txmsg.LoopMessenger : request action: notifyGroup. TM[/127.0.0.1:8070]
2020-08-20 16:06:08.944 DEBUG 15096 --- [ XNIO-3 task-5] c.c.t.t.c.t.TransactionCleanTemplate : clean transaction @group(b63bca12a9537)
2020-08-20 16:06:08.944 DEBUG 15096 --- [ XNIO-3 task-5] o.s.b.f.s.DefaultListableBeanFactory : Returning cached instance of singleton bean 'lcnTransactionCleanService'
2020-08-20 16:06:08.944 DEBUG 15096 --- [ XNIO-3 task-5] c.c.t.t.c.t.l.r.LcnConnectionProxy : commit transaction type[lcn] proxy connection:com.codingapi.txlcn.tc.core.transaction.lcn.resource.LcnConnectionProxy@2a195c9f.
2020-08-20 16:06:08.944 DEBUG 15096 --- [ XNIO-3 task-5] c.c.t.t.c.t.l.r.LcnConnectionProxy : transaction type[lcn] proxy connection:com.codingapi.txlcn.tc.core.transaction.lcn.resource.LcnConnectionProxy@2a195c9f closed.
2020-08-20 16:06:08.944 DEBUG 15096 --- [ XNIO-3 task-5] c.c.t.t.c.t.TransactionCleanTemplate : clean transaction over @group(b63bca12a9537)
2020-08-20 16:06:08.944 DEBUG 15096 --- [ XNIO-3 task-5] c.c.t.t.c.t.TransactionControlTemplate : notify group exception state 1. @group(b63bca12a9537)
2020-08-20 16:06:08.944 DEBUG 15096 --- [ XNIO-3 task-5] c.c.t.t.c.context.DefaultGlobalContext : Destroy TxContext[b63bca12a9537]
2020-08-20 16:06:08.944 DEBUG 15096 --- [ XNIO-3 task-5] c.c.txlcn.tc.core.DTXLocalContext : clean thread local[DTXLocalContext]: DTXLocalContext(transactionType=lcn, groupId=b63bca12a9537, unitId=24f9688a886742a84531c4c3ed5265e4, resource=null, destroy=true, inGroup=false, attachment=null, sysTransactionState=1, userTransactionState=-1, proxy=true, justNow=false, proxyTmp=false)
2020-08-20 16:06:08.945 DEBUG 15096 --- [ XNIO-3 task-5] c.c.t.tc.aspect.weave.DTXLogicWeaver :
<---- TxLcn end ---->

被调用放日志:
Returning cached instance of singleton bean 'accountController'
2020-08-20 16:06:08.867 DEBUG 16924 --- [ XNIO-2 task-6] com.codingapi.txlcn.tracing.Tracings : tracing apply group:b63bca12a9537, app map:e30=
2020-08-20 16:06:08.868 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.tc.aspect.weave.DTXLogicWeaver : <---- TxLcn start ---->
2020-08-20 16:06:08.868 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.t.c.context.DefaultGlobalContext : Start TxContext[b63bca12a9537]
2020-08-20 16:06:08.868 DEBUG 16924 --- [ XNIO-2 task-6] o.s.b.f.s.DefaultListableBeanFactory : Returning cached instance of singleton bean 'control_lcn_running'
2020-08-20 16:06:08.868 DEBUG 16924 --- [ XNIO-2 task-6] c.c.txlcn.tc.core.DTXServiceExecutor : pre business code, unit type: lcn @group(b63bca12a9537)
2020-08-20 16:06:08.868 DEBUG 16924 --- [ XNIO-2 task-6] o.s.j.d.DataSourceTransactionManager : Creating new transaction with name [com.ymy.xxb.migrat.module.biz.produce.service.AccountService.addAccount]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
2020-08-20 16:06:08.868 DEBUG 16924 --- [ XNIO-2 task-6] o.s.b.f.s.DefaultListableBeanFactory : Returning cached instance of singleton bean 'transaction_lcn'
2020-08-20 16:06:08.868 DEBUG 16924 --- [ XNIO-2 task-6] o.s.b.f.s.DefaultListableBeanFactory : Returning cached instance of singleton bean 'transaction_lcn'
2020-08-20 16:06:08.874 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.tc.aspect.weave.DTXResourceWeaver : proxy a sql connection: com.codingapi.txlcn.tc.core.transaction.lcn.resource.LcnConnectionProxy@524d06d6.
2020-08-20 16:06:08.874 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.tc.aspect.weave.DTXResourceWeaver : proxy a sql connection: com.codingapi.txlcn.tc.core.transaction.lcn.resource.LcnConnectionProxy@369a6648.
2020-08-20 16:06:08.874 DEBUG 16924 --- [ XNIO-2 task-6] o.s.j.d.DataSourceTransactionManager : Acquired Connection [com.codingapi.txlcn.tc.core.transaction.lcn.resource.LcnConnectionProxy@369a6648] for JDBC transaction
2020-08-20 16:06:08.874 DEBUG 16924 --- [ XNIO-2 task-6] org.mybatis.spring.SqlSessionUtils : Creating a new SqlSession
2020-08-20 16:06:08.874 DEBUG 16924 --- [ XNIO-2 task-6] org.mybatis.spring.SqlSessionUtils : Registering transaction synchronization for SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@647bce95]
2020-08-20 16:06:08.875 DEBUG 16924 --- [ XNIO-2 task-6] o.m.s.t.SpringManagedTransaction : JDBC Connection [com.codingapi.txlcn.tc.core.transaction.lcn.resource.LcnConnectionProxy@369a6648] will be managed by Spring
2020-08-20 16:06:08.875 INFO 16924 --- [ XNIO-2 task-6] c.y.x.m.auth.shiro.filter.SqlFilter : request method :com.ymy.xxb.migrat.module.biz.produce.mapper.AccountMapper.insert
2020-08-20 16:06:08.875 DEBUG 16924 --- [ XNIO-2 task-6] c.y.x.m.m.b.p.m.AccountMapper.insert : ==> Preparing: insert into co_account ( id, account, balance, currency_type ) values ( ?, ?, ?, ? )
2020-08-20 16:06:08.876 DEBUG 16924 --- [ XNIO-2 task-6] c.y.x.m.m.b.p.m.AccountMapper.insert : ==> Parameters: 1296357839133253632(String), 1000000(String), 5000.0(Double), CNY(String)
2020-08-20 16:06:08.890 DEBUG 16924 --- [ XNIO-2 task-6] c.y.x.m.m.b.p.m.AccountMapper.insert : <== Updates: 1
2020-08-20 16:06:08.890 DEBUG 16924 --- [ XNIO-2 task-6] c.a.druid.pool.PreparedStatementPool : {conn-10004, pstmt-20001} enter cache
2020-08-20 16:06:08.890 DEBUG 16924 --- [ XNIO-2 task-6] org.mybatis.spring.SqlSessionUtils : Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@647bce95]
2020-08-20 16:06:08.890 DEBUG 16924 --- [ XNIO-2 task-6] org.mybatis.spring.SqlSessionUtils : Transaction synchronization committing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@647bce95]
2020-08-20 16:06:08.890 DEBUG 16924 --- [ XNIO-2 task-6] org.mybatis.spring.SqlSessionUtils : Transaction synchronization deregistering SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@647bce95]
2020-08-20 16:06:08.890 DEBUG 16924 --- [ XNIO-2 task-6] org.mybatis.spring.SqlSessionUtils : Transaction synchronization closing SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@647bce95]
2020-08-20 16:06:08.890 DEBUG 16924 --- [ XNIO-2 task-6] o.s.j.d.DataSourceTransactionManager : Initiating transaction commit
2020-08-20 16:06:08.890 DEBUG 16924 --- [ XNIO-2 task-6] o.s.j.d.DataSourceTransactionManager : Committing JDBC transaction on Connection [com.codingapi.txlcn.tc.core.transaction.lcn.resource.LcnConnectionProxy@369a6648]
2020-08-20 16:06:08.891 DEBUG 16924 --- [ XNIO-2 task-6] o.s.j.d.DataSourceTransactionManager : Releasing JDBC Connection [com.codingapi.txlcn.tc.core.transaction.lcn.resource.LcnConnectionProxy@369a6648] after transaction
2020-08-20 16:06:08.891 DEBUG 16924 --- [ XNIO-2 task-6] o.s.jdbc.datasource.DataSourceUtils : Returning JDBC Connection to DataSource
2020-08-20 16:06:08.891 DEBUG 16924 --- [ XNIO-2 task-6] c.c.txlcn.tc.core.DTXServiceExecutor : business success @group(b63bca12a9537)
2020-08-20 16:06:08.891 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.t.c.t.l.c.LcnRunningTransaction : join group: [GroupId: b63bca12a9537,Method: public java.lang.Integer com.ymy.xxb.migrat.module.biz.produce.service.AccountService.addAccount(com.ymy.xxb.migrat.module.biz.produce.entity.Account)]
2020-08-20 16:06:08.891 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.t.c.t.TransactionControlTemplate : join group > transaction type: lcn @group(b63bca12a9537)
2020-08-20 16:06:08.891 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.txmsg.netty.bean.SocketManager : get channel, key:/127.0.0.1:8070
2020-08-20 16:06:08.891 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.txmsg.netty.bean.SocketManager : await response
2020-08-20 16:06:08.892 DEBUG 16924 --- [ntLoopGroup-5-1] c.c.t.txmsg.netty.handler.RpcCmdEncoder : send->{"key":"b63bca01ee537","msg":{"action":"joinGroup","data":{"groupId":"b63bca12a9537","transactionState":1,"unitId":"0075d1de892d584dc599662f35f55e57","unitType":"lcn"},"groupId":"b63bca12a9537","state":100},"remoteKey":"/127.0.0.1:8070"}
2020-08-20 16:06:08.896 DEBUG 16924 --- [ntLoopGroup-5-1] c.c.t.txmsg.netty.handler.RpcCmdDecoder : cmd->{"key":"b63bca01ee537","msg":{"action":"joinGroup","groupId":"b63bca12a9537","state":200},"remoteKey":"/127.0.0.1:42410"}
2020-08-20 16:06:08.896 DEBUG 16924 --- [ntLoopGroup-5-1] c.c.t.txmsg.netty.handler.RpcCmdDecoder : got response message[Netty Handler]
2020-08-20 16:06:08.896 DEBUG 16924 --- [ XNIO-2 task-6] c.c.txlcn.txmsg.netty.bean.NettyRpcCmd : got response. b63bca01ee537
2020-08-20 16:06:08.896 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.txmsg.netty.bean.SocketManager : response is: MessageDto(action=joinGroup, groupId=b63bca12a9537, data=null, state=200)
2020-08-20 16:06:08.896 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.txmsg.netty.impl.NettyRpcClient : cmd request used time: 5 ms
2020-08-20 16:06:08.896 DEBUG 16924 --- [ XNIO-2 task-6] c.c.txlcn.tc.txmsg.LoopMessenger : request action: joinGroup. TM[/127.0.0.1:8070]
2020-08-20 16:06:08.897 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.t.c.t.TransactionControlTemplate : join group message over. @group(b63bca12a9537)
2020-08-20 16:06:08.897 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.t.core.checking.SimpleDTXChecking : start delay checking task @group(b63bca12a9537)
2020-08-20 16:06:08.897 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.t.c.t.TransactionControlTemplate : join group logic over @group(b63bca12a9537)
2020-08-20 16:06:08.897 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.t.c.context.DefaultGlobalContext : Destroy TxContext[b63bca12a9537]
2020-08-20 16:06:08.897 DEBUG 16924 --- [ XNIO-2 task-6] c.c.txlcn.tc.core.DTXLocalContext : clean thread local[DTXLocalContext]: DTXLocalContext(transactionType=lcn, groupId=b63bca12a9537, unitId=0075d1de892d584dc599662f35f55e57, resource=null, destroy=true, inGroup=false, attachment=null, sysTransactionState=1, userTransactionState=-1, proxy=true, justNow=false, proxyTmp=false)
2020-08-20 16:06:08.897 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.tc.aspect.weave.DTXLogicWeaver :
<---- TxLcn end ---->

TM配置:
spring.application.name=TransactionManager
server.port=7970
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.0.59:3306/tx-manager?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=blycs888
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto=update

mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.use-generated-keys=true

# TxManager Host Ip
tx-lcn.manager.host=127.0.0.1
# TxClient连接请求端口
tx-lcn.manager.port=8070
# 心跳检测时间(ms)
tx-lcn.manager.heart-time=15000
# 分布式事务执行总时间
tx-lcn.manager.dtx-time=60000
#参数延迟删除时间单位ms
tx-lcn.message.netty.attr-delay-time=10000
tx-lcn.manager.concurrent-level=128
tx-lcn.manager.admin-key=123456
#tx-lcn.manager.ex-url=/provider/email-to/1610651717@qq.com
# 开启日志
tx-lcn.logger.enabled=true
tx-lcn.logger.driver-class-name=com.mysql.jdbc.Driver
tx-lcn.logger.jdbc-url=jdbc:mysql://192.168.0.59:3306/tx-manager?characterEncoding=UTF-8
tx-lcn.logger.username=root
tx-lcn.logger.password=blycs888

logging.level.com.codingapi=debug
#redis 主机
spring.redis.host=192.168.12.42
#redis数据库
spring.redis.database=10
#redis 端口
spring.redis.port=6379
#redis 密码
spring.redis.password=bly@xxb_o2o_myRedis

环境:
1. druid 多数据源
2.nacos作为注册中心

日志中 join group: [GroupId: b63bca12a9537,Method: public java.lang.Integer com.ymy.xxb.migrat.module.biz.produce.service.AccountService.addAccount(com.ymy.xxb.migrat.module.biz.produce.entity.Account)]
2020-08-20 16:06:08.891 DEBUG 16924 --- [ XNIO-2 task-6] c.c.t.t.c.t.TransactionControlTemplate : join group > transaction type: lcn @group(b63bca12a9537)

也是能看到的,但数据就是没提交到数据库中,然后就锁死了,帮忙看下,太郁闷了.....

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.