You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@seata.apache.org by ji...@apache.org on 2025/04/17 01:12:36 UTC
(incubator-seata) branch 2.x updated: optimize: use retry logic to end global trx (#7283)
This is an automated email from the ASF dual-hosted git repository.
jianbin pushed a commit to branch 2.x
in repository https://gitbox.apache.org/repos/asf/incubator-seata.git
The following commit(s) were added to refs/heads/2.x by this push:
new 13d2db4935 optimize: use retry logic to end global trx (#7283)
13d2db4935 is described below
commit 13d2db49354f1f25d58267e6c83603e41e8adcbb
Author: Jingliu <92...@qq.com>
AuthorDate: Thu Apr 17 09:12:32 2025 +0800
optimize: use retry logic to end global trx (#7283)
---
changes/en-us/2.x.md | 1 +
changes/zh-cn/2.x.md | 2 ++
.../server/console/impl/AbstractGlobalService.java | 21 ++++-----------------
.../seata/server/console/impl/AbstractService.java | 8 ++++----
4 files changed, 11 insertions(+), 21 deletions(-)
diff --git a/changes/en-us/2.x.md b/changes/en-us/2.x.md
index 09bc1667af..e3b696b80e 100644
--- a/changes/en-us/2.x.md
+++ b/changes/en-us/2.x.md
@@ -85,6 +85,7 @@ Add changes here for all PR submitted to the 2.x branch.
- [[#7242](https://github.com/apache/incubator-seata/pull/7242)] optimize ratelimit bucketTokenNumPerSecond config
- [[#7232](https://github.com/apache/incubator-seata/pull/7232)] add license header
- [[#7260](https://github.com/apache/incubator-seata/pull/7260)] upgrade npmjs dependencies
+- [[#7283](https://github.com/apache/incubator-seata/pull/7283)] optimize: use retry logic to end global trx
- [[#7284](https://github.com/apache/incubator-seata/pull/7284)] add dependency-check profile
diff --git a/changes/zh-cn/2.x.md b/changes/zh-cn/2.x.md
index 93fc50d35e..a3cca49e0c 100644
--- a/changes/zh-cn/2.x.md
+++ b/changes/zh-cn/2.x.md
@@ -83,8 +83,10 @@
- [[#7250](https://github.com/apache/incubator-seata/pull/7250)] 适配 client_protocol_version > server_protocol_version场景
- [[#7232](https://github.com/apache/incubator-seata/pull/7232)] 增加 license header
- [[#7260](https://github.com/apache/incubator-seata/pull/7260)] 升级 npmjs 依赖版本
+- [[#7283](https://github.com/apache/incubator-seata/pull/7283)] 使用重试逻辑优化事务的结束
- [[#7284](https://github.com/apache/incubator-seata/pull/7284)] 增加 dependency-check profile
+
### security:
- [[#6069](https://github.com/apache/incubator-seata/pull/6069)] 升级Guava依赖版本,修复安全漏洞
- [[#6144](https://github.com/apache/incubator-seata/pull/6144)] 升级Nacos依赖版本至1.4.6
diff --git a/server/src/main/java/org/apache/seata/server/console/impl/AbstractGlobalService.java b/server/src/main/java/org/apache/seata/server/console/impl/AbstractGlobalService.java
index c45631e0b3..2305dc112b 100644
--- a/server/src/main/java/org/apache/seata/server/console/impl/AbstractGlobalService.java
+++ b/server/src/main/java/org/apache/seata/server/console/impl/AbstractGlobalService.java
@@ -20,10 +20,8 @@ import org.apache.seata.common.result.SingleResult;
import org.apache.seata.core.model.GlobalStatus;
import org.apache.seata.server.console.exception.ConsoleException;
import org.apache.seata.server.console.service.GlobalSessionService;
-import org.apache.seata.server.coordinator.DefaultCoordinator;
import org.apache.seata.server.session.BranchSession;
import org.apache.seata.server.session.GlobalSession;
-import org.apache.seata.server.session.SessionHolder;
import java.util.ArrayList;
import java.util.List;
@@ -121,21 +119,10 @@ public abstract class AbstractGlobalService extends AbstractService implements G
boolean res;
if (RETRY_COMMIT_STATUS.contains(globalStatus) || GlobalStatus.Committing.equals(globalStatus)
|| GlobalStatus.StopCommitOrCommitRetry.equals(globalStatus)) {
- res = DefaultCoordinator.getInstance().doGlobalCommit(globalSession, false);
- if (res && globalSession.hasBranch() && globalSession.hasATBranch()) {
- globalSession.clean();
- globalSession.asyncCommit();
- } else if (res && SessionHolder.findGlobalSession(xid) != null) {
- globalSession.end();
- }
+ res = doRetryCommitGlobal(globalSession);
} else if (RETRY_ROLLBACK_STATUS.contains(globalStatus) || GlobalStatus.Rollbacking.equals(globalStatus)
|| GlobalStatus.StopRollbackOrRollbackRetry.equals(globalStatus)) {
- res = DefaultCoordinator.getInstance().doGlobalRollback(globalSession, false);
- // the record is not deleted
- if (res && SessionHolder.findGlobalSession(xid) != null) {
- globalSession.changeGlobalStatus(GlobalStatus.Rollbacked);
- globalSession.end();
- }
+ res = doRetryRollbackGlobal(globalSession);
} else {
throw new IllegalArgumentException("current global transaction status is not support to do");
}
@@ -152,11 +139,11 @@ public abstract class AbstractGlobalService extends AbstractService implements G
GlobalStatus globalStatus = globalSession.getStatus();
try {
if (FAIL_COMMIT_STATUS.contains(globalStatus)) {
- boolean committed = doCommitGlobal(globalSession);
+ boolean committed = doRetryCommitGlobal(globalSession);
return committed ? SingleResult.success() : SingleResult.failure("Commit fail, please try again");
}
if (FAIL_ROLLBACK_STATUS.contains(globalStatus)) {
- boolean rollbacked = doRollbackGlobal(globalSession);
+ boolean rollbacked = doRetryRollbackGlobal(globalSession);
return rollbacked ? SingleResult.success() : SingleResult.failure("Rollback fail, please try again");
}
} catch (Exception e) {
diff --git a/server/src/main/java/org/apache/seata/server/console/impl/AbstractService.java b/server/src/main/java/org/apache/seata/server/console/impl/AbstractService.java
index 5c893e1d15..e5dd211fd9 100644
--- a/server/src/main/java/org/apache/seata/server/console/impl/AbstractService.java
+++ b/server/src/main/java/org/apache/seata/server/console/impl/AbstractService.java
@@ -147,12 +147,12 @@ public abstract class AbstractService {
return true;
}
- protected boolean doCommitGlobal(GlobalSession globalSession) throws TransactionException {
- return DefaultCoordinator.getInstance().doGlobalCommit(globalSession, false);
+ protected boolean doRetryCommitGlobal(GlobalSession globalSession) throws TransactionException {
+ return DefaultCoordinator.getInstance().doGlobalCommit(globalSession, true);
}
- protected boolean doRollbackGlobal(GlobalSession globalSession) throws TransactionException {
- return DefaultCoordinator.getInstance().doGlobalRollback(globalSession, false);
+ protected boolean doRetryRollbackGlobal(GlobalSession globalSession) throws TransactionException {
+ return DefaultCoordinator.getInstance().doGlobalRollback(globalSession, true);
}
protected static class CheckResult {
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org
For additional commands, e-mail: notifications-help@seata.apache.org