Skip to content

Commit 660c98b

Browse files
committed
clean txlcn project.
1 parent 425dc5f commit 660c98b

29 files changed

Lines changed: 163 additions & 250 deletions

txlcn-common/src/main/java/com/codingapi/txlcn/common/exception/BeforeBusinessException.java

Lines changed: 0 additions & 45 deletions
This file was deleted.

txlcn-common/src/main/java/com/codingapi/txlcn/common/exception/JoinGroupException.java

Lines changed: 0 additions & 45 deletions
This file was deleted.

txlcn-common/src/main/java/com/codingapi/txlcn/common/exception/TransactionStateException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
*
2222
* @author ujued
2323
*/
24-
public class TransactionStateException extends Exception {
24+
public class TransactionStateException extends TransactionException {
2525
public static final int NON_MOD = 10;
2626
public static final int NON_ASPECT = 11;
2727
public static final int RPC_ERR = 12;

txlcn-tc/src/main/java/com/codingapi/txlcn/tc/aspect/weave/DTXLogicWeaver.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,22 @@ public Object runTransaction(DTXInfo dtxInfo, BusinessCallback business) throws
5959
log.debug("TX-unit start---->");
6060
DTXLocalContext dtxLocalContext = DTXLocalContext.getOrNew();
6161
TxContext txContext;
62-
if (Objects.isNull(dtxLocalContext.getGroupId()) && !globalContext.hasTxContext()) {
63-
// 非子Unit开启本地事务上下文
64-
log.debug("Unit start TxContext.");
65-
txContext = globalContext.startTx();
66-
} else {
62+
if (globalContext.hasTxContext()) {
6763
// 子Unit获取父上下文
6864
log.debug("Unit[{}] in unit: {}, use parent's TxContext.", dtxInfo.getUnitId(), dtxLocalContext.getUnitId());
6965
txContext = globalContext.txContext();
66+
dtxLocalContext.setInGroup(true);
67+
} else {
68+
// 非子Unit开启本地事务上下文
69+
log.debug("Unit start TxContext.");
70+
txContext = globalContext.startTx();
71+
}
72+
73+
// 本地事务调用
74+
if (Objects.nonNull(dtxLocalContext.getGroupId())) {
7075
dtxLocalContext.setInUnit(true);
7176
}
77+
7278
dtxLocalContext.setUnitId(dtxInfo.getUnitId());
7379
dtxLocalContext.setGroupId(txContext.getGroupId());
7480
dtxLocalContext.setTransactionType(dtxInfo.getTransactionType());

txlcn-tc/src/main/java/com/codingapi/txlcn/tc/aspect/weave/DTXResourceWeaver.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
package com.codingapi.txlcn.tc.aspect.weave;
1717

1818
import com.codingapi.txlcn.tc.core.DTXLocalContext;
19-
import com.codingapi.txlcn.tc.support.TXLCNTransactionBeanHelper;
20-
import com.codingapi.txlcn.tc.support.resouce.TransactionResourceExecutor;
19+
import com.codingapi.txlcn.tc.support.TxLcnBeanHelper;
20+
import com.codingapi.txlcn.tc.support.resouce.TransactionResourceProxy;
2121
import lombok.extern.slf4j.Slf4j;
2222
import org.springframework.stereotype.Component;
2323

@@ -35,19 +35,18 @@
3535
@Slf4j
3636
public class DTXResourceWeaver {
3737

38-
private final TXLCNTransactionBeanHelper transactionBeanHelper;
38+
private final TxLcnBeanHelper txLcnBeanHelper;
3939

40-
public DTXResourceWeaver(TXLCNTransactionBeanHelper transactionBeanHelper) {
41-
this.transactionBeanHelper = transactionBeanHelper;
40+
public DTXResourceWeaver(TxLcnBeanHelper txLcnBeanHelper) {
41+
this.txLcnBeanHelper = txLcnBeanHelper;
4242
}
4343

4444
public Object getConnection(ConnectionCallback connectionCallback) throws Throwable {
4545
DTXLocalContext dtxLocalContext = DTXLocalContext.cur();
4646
if (Objects.nonNull(dtxLocalContext) && dtxLocalContext.isProxy()) {
4747
String transactionType = dtxLocalContext.getTransactionType();
48-
TransactionResourceExecutor transactionResourceExecutor =
49-
transactionBeanHelper.loadTransactionResourceExecuter(transactionType);
50-
Connection connection = transactionResourceExecutor.proxyConnection(connectionCallback);
48+
TransactionResourceProxy resourceProxy = txLcnBeanHelper.loadTransactionResourceProxy(transactionType);
49+
Connection connection = resourceProxy.proxyConnection(connectionCallback);
5150
log.debug("proxy a sql connection: {}.", connection);
5251
return connection;
5352
}

txlcn-tc/src/main/java/com/codingapi/txlcn/tc/core/DTXLocalContext.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ public class DTXLocalContext {
6060
*/
6161
private boolean inUnit;
6262

63+
/**
64+
* 同事务组标识
65+
*/
66+
private boolean inGroup;
67+
6368
/**
6469
* 额外的附加值
6570
*/

txlcn-tc/src/main/java/com/codingapi/txlcn/tc/core/DTXLocalControl.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@
1515
*/
1616
package com.codingapi.txlcn.tc.core;
1717

18-
import com.codingapi.txlcn.common.exception.BeforeBusinessException;
19-
import com.codingapi.txlcn.common.exception.TxClientException;
18+
import com.codingapi.txlcn.common.exception.TransactionException;
2019

2120
/**
2221
* LCN分布式事务控制
@@ -28,9 +27,9 @@ public interface DTXLocalControl {
2827
* 业务代码执行前
2928
*
3029
* @param info info
31-
* @throws BeforeBusinessException BeforeBusinessException
30+
* @throws TransactionException TransactionException
3231
*/
33-
default void preBusinessCode(TxTransactionInfo info) throws BeforeBusinessException {
32+
default void preBusinessCode(TxTransactionInfo info) throws TransactionException {
3433

3534
}
3635

@@ -52,7 +51,7 @@ default Object doBusinessCode(TxTransactionInfo info) throws Throwable {
5251
* @param info info
5352
* @param throwable throwable
5453
*/
55-
default void onBusinessCodeError(TxTransactionInfo info, Throwable throwable) {
54+
default void onBusinessCodeError(TxTransactionInfo info, Throwable throwable) throws TransactionException {
5655

5756
}
5857

@@ -61,9 +60,9 @@ default void onBusinessCodeError(TxTransactionInfo info, Throwable throwable) {
6160
*
6261
* @param info info
6362
* @param result result
64-
* @throws TxClientException TxClientException
63+
* @throws TransactionException TransactionException
6564
*/
66-
default void onBusinessCodeSuccess(TxTransactionInfo info, Object result) throws TxClientException {
65+
default void onBusinessCodeSuccess(TxTransactionInfo info, Object result) throws TransactionException {
6766

6867
}
6968

txlcn-tc/src/main/java/com/codingapi/txlcn/tc/core/DTXLogicState.java renamed to txlcn-tc/src/main/java/com/codingapi/txlcn/tc/core/DTXPropagationState.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,38 +18,42 @@
1818
/**
1919
* @author lorne
2020
*/
21-
public enum DTXLogicState {
21+
public enum DTXPropagationState {
2222

2323
/**
24-
* 发起事务状态
24+
* 创建DTX
2525
*/
26-
STARTING("starting"),
26+
CREATE("starting"),
2727

2828
/**
29-
* 参与中事务状态
29+
* 加入DTX
3030
*/
31-
RUNNING("running"),
31+
JOIN("running"),
3232

3333
/**
34-
* 默认事务
34+
* 静默加入DTX
3535
*/
36-
DEFAULT("default"),
36+
SILENT_JOIN("default"),
3737

3838
/**
39-
* 不参与分布式事务
39+
* 不参与DTX
4040
*/
4141
NON("non");
4242

4343

4444
private String code;
4545

4646

47-
DTXLogicState(String code) {
47+
DTXPropagationState(String code) {
4848
this.code = code;
4949
}
5050

5151

5252
public String getCode() {
5353
return code;
5454
}
55+
56+
public boolean isIgnored() {
57+
return this.equals(NON);
58+
}
5559
}

txlcn-tc/src/main/java/com/codingapi/txlcn/tc/core/DTXServiceExecutor.java

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
package com.codingapi.txlcn.tc.core;
1717

1818

19-
import com.codingapi.txlcn.common.exception.BeforeBusinessException;
19+
import com.codingapi.txlcn.common.exception.TransactionException;
2020
import com.codingapi.txlcn.common.util.Transactions;
2121
import com.codingapi.txlcn.logger.TxLogger;
22-
import com.codingapi.txlcn.tc.core.propagation.TxLcnTransactionPropagationResolver;
23-
import com.codingapi.txlcn.tc.support.TXLCNTransactionBeanHelper;
22+
import com.codingapi.txlcn.tc.core.propagation.DTXPropagationResolver;
23+
import com.codingapi.txlcn.tc.support.TxLcnBeanHelper;
2424
import com.codingapi.txlcn.tc.core.context.TCGlobalContext;
2525
import lombok.extern.slf4j.Slf4j;
2626
import org.springframework.beans.factory.annotation.Autowired;
@@ -40,15 +40,15 @@ public class DTXServiceExecutor {
4040

4141
private final TxLogger txLogger;
4242

43-
private final TXLCNTransactionBeanHelper txlcnTransactionBeanHelper;
43+
private final TxLcnBeanHelper txLcnBeanHelper;
4444

45-
private final TxLcnTransactionPropagationResolver propagationResolver;
45+
private final DTXPropagationResolver propagationResolver;
4646

4747
@Autowired
48-
public DTXServiceExecutor(TxLogger txLogger, TXLCNTransactionBeanHelper txlcnTransactionBeanHelper,
49-
TCGlobalContext globalContext, TxLcnTransactionPropagationResolver propagationResolver) {
48+
public DTXServiceExecutor(TxLogger txLogger, TxLcnBeanHelper txLcnBeanHelper,
49+
TCGlobalContext globalContext, DTXPropagationResolver propagationResolver) {
5050
this.txLogger = txLogger;
51-
this.txlcnTransactionBeanHelper = txlcnTransactionBeanHelper;
51+
this.txLcnBeanHelper = txLcnBeanHelper;
5252
this.globalContext = globalContext;
5353
this.propagationResolver = propagationResolver;
5454
}
@@ -65,53 +65,48 @@ public Object transactionRunning(TxTransactionInfo info) throws Throwable {
6565
// 1. 获取事务类型
6666
String transactionType = info.getTransactionType();
6767

68-
// 2. 获取事务状态
69-
DTXLogicState lcnTransactionState = propagationResolver.loadTransactionState(info);
68+
// 2. 获取事务传播状态
69+
DTXPropagationState propagationState = propagationResolver.resolvePropagationState(info);
7070

7171
// 2.1 如果不参与分布式事务立即终止
72-
if (lcnTransactionState.equals(DTXLogicState.NON)) {
72+
if (propagationState.isIgnored()) {
7373
return info.getBusinessCallback().call();
7474
}
7575

76-
// 3. 获取bean
77-
DTXLocalControl lcnTransactionControl =
78-
txlcnTransactionBeanHelper.loadLCNTransactionControl(transactionType, lcnTransactionState);
76+
// 3. 获取本地分布式事务控制器
77+
DTXLocalControl dtxLocalControl = txLcnBeanHelper.loadDTXLocalControl(transactionType, propagationState);
7978

8079
// 4. 织入事务操作
8180
try {
8281
// 4.1 记录事务类型到事务上下文
8382
Set<String> transactionTypeSet = globalContext.txContext(info.getGroupId()).getTransactionTypes();
8483
transactionTypeSet.add(transactionType);
8584

85+
dtxLocalControl.preBusinessCode(info);
86+
8687
// 4.2 业务执行前
87-
txLogger.info(info.getGroupId(), info.getUnitId(), Transactions.TAG_TRANSACTION,
88-
"pre service business code, add transaction type: %s, types: %s",
89-
transactionType, transactionTypeSet);
90-
lcnTransactionControl.preBusinessCode(info);
88+
txLogger.transactionInfo(
89+
info.getGroupId(), info.getUnitId(), "pre business code, unit type: %s", transactionType);
9190

9291
// 4.3 执行业务
93-
txLogger.info(info.getGroupId(), info.getUnitId(), Transactions.TAG_TRANSACTION,
94-
"do service business code");
95-
Object result = lcnTransactionControl.doBusinessCode(info);
92+
Object result = dtxLocalControl.doBusinessCode(info);
9693

9794
// 4.4 业务执行成功
98-
txLogger.info(info.getGroupId(), info.getUnitId(), Transactions.TAG_TRANSACTION,
99-
"service business success");
100-
lcnTransactionControl.onBusinessCodeSuccess(info, result);
95+
txLogger.transactionInfo(info.getGroupId(), info.getUnitId(), "business success");
96+
dtxLocalControl.onBusinessCodeSuccess(info, result);
10197
return result;
102-
} catch (BeforeBusinessException e) {
103-
txLogger.error(info.getGroupId(), info.getUnitId(), Transactions.TAG_TRANSACTION,
104-
"before business code error");
98+
} catch (TransactionException e) {
99+
txLogger.error(info.getGroupId(), info.getUnitId(), "before business code error");
105100
throw e;
106101
} catch (Throwable e) {
107102
// 4.5 业务执行失败
108103
txLogger.error(info.getGroupId(), info.getUnitId(), Transactions.TAG_TRANSACTION,
109104
"business code error");
110-
lcnTransactionControl.onBusinessCodeError(info, e);
105+
dtxLocalControl.onBusinessCodeError(info, e);
111106
throw e;
112107
} finally {
113108
// 4.6 业务执行完毕
114-
lcnTransactionControl.postBusinessCode(info);
109+
dtxLocalControl.postBusinessCode(info);
115110
}
116111
}
117112

0 commit comments

Comments
 (0)