From 193a112ee3491351574b3f192aec21a4120252f9 Mon Sep 17 00:00:00 2001 From: jimin Date: Mon, 14 Mar 2022 15:11:23 +0800 Subject: [PATCH] optimize: when in TCC mode there is no need to delete global locks (#4307) --- changes/1.5.0.md | 1 + changes/en-us/1.5.0.md | 1 + .../coordinator/DefaultCoordinator.java | 4 +- .../seata/server/coordinator/DefaultCore.java | 18 +++--- .../session/AbstractSessionManager.java | 7 ++- .../seata/server/session/GlobalSession.java | 33 ++++++++-- .../seata/server/session/SessionHelper.java | 12 ++-- .../server/session/SessionLifecycle.java | 4 +- .../session/SessionLifecycleListener.java | 10 ++- .../server/transaction/saga/SagaCore.java | 7 +-- .../test/java/WriteStoreMultithreadTest.java | 7 ++- server/src/test/java/WriteStoreTest.java | 7 ++- .../io/seata/server/lock/LockManagerTest.java | 61 ++++++++++--------- .../session/FileSessionManagerTest.java | 14 ++--- .../server/session/GlobalSessionTest.java | 2 +- .../seata/server/store/SessionStoreTest.java | 14 ++--- 16 files changed, 126 insertions(+), 76 deletions(-) diff --git a/changes/1.5.0.md b/changes/1.5.0.md index 51dcf63af5d..97ae1346e7f 100644 --- a/changes/1.5.0.md +++ b/changes/1.5.0.md @@ -185,6 +185,7 @@ Seata 是一款开源的分布式事务解决方案,提供高性能和简单 - [[#4299](https://github.com/seata/seata/pull/4296)] 优化异常提示 - [[#4300](https://github.com/seata/seata/pull/4300)] 优化NettyRemotingServer的close()由DefaultCoordinator来调用,不再额外注册到ServerRunner - [[#4270](https://github.com/seata/seata/pull/4270)] 提高全局提交和全局回滚的性能,分支事务清理异步化 + - [[#4307](https://github.com/seata/seata/pull/4307)] 优化在TCC模式减少不必要的全局锁删除 - [[#4303](https://github.com/seata/seata/pull/4303)] `tcc_fence_log`表悬挂日志记录异步删除 - [[#4328](https://github.com/seata/seata/pull/4328)] 配置上传脚本支持注释 - [[#4305](https://github.com/seata/seata/pull/4305)] 优化tc端全局锁获取失败时的日志打印 diff --git a/changes/en-us/1.5.0.md b/changes/en-us/1.5.0.md index c1db4daefe9..c45470444b5 100644 --- a/changes/en-us/1.5.0.md +++ b/changes/en-us/1.5.0.md @@ -190,6 +190,7 @@ - [[#4299](https://github.com/seata/seata/pull/4296)] optimize exceptions to make them friendly - [[#4300](https://github.com/seata/seata/pull/4300)] optimize let DefaultCoordinator invoke NettyRemotingServer's close method,no longer closed by ServerRunner - [[#4270](https://github.com/seata/seata/pull/4270)] improve the performance of global commit and global rollback, asynchronous branch transaction cleanup + - [[#4307](https://github.com/seata/seata/pull/4307)] when in TCC mode there is no need to delete global locks - [[#4303](https://github.com/seata/seata/pull/4303)] `tcc_fence_log` table hanging log records are deleted asynchronously - [[#4328](https://github.com/seata/seata/pull/4328)] upload configuration script support comments - [[#4305](https://github.com/seata/seata/pull/4305)] optimize acquire global lock fail error log print on tc diff --git a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java index ffcc285b7ed..ab2b384d4ce 100644 --- a/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java +++ b/server/src/main/java/io/seata/server/coordinator/DefaultCoordinator.java @@ -438,6 +438,8 @@ protected void handleRetryRollbacking(Collection rollbackingSessi SessionHolder.getRetryRollbackingSessionManager().removeGlobalSession(rollbackingSession); LOGGER.info("Global transaction rollback retry timeout and has removed [{}]", rollbackingSession.getXid()); + SessionHelper.endRollbackFailed(rollbackingSession); + // rollback retry timeout event SessionHelper.postTcSessionEndEvent(rollbackingSession, GlobalStatus.RollbackRetryTimeout); @@ -495,7 +497,7 @@ private boolean isRetryTimeout(long now, long timeout, long beginTime) { /** * Handle async committing. - * + * * @param asyncCommittingSessions */ protected void handleAsyncCommitting(Collection asyncCommittingSessions) { diff --git a/server/src/main/java/io/seata/server/coordinator/DefaultCore.java b/server/src/main/java/io/seata/server/coordinator/DefaultCore.java index fcbc660d3f3..438c0acddd1 100644 --- a/server/src/main/java/io/seata/server/coordinator/DefaultCore.java +++ b/server/src/main/java/io/seata/server/coordinator/DefaultCore.java @@ -155,7 +155,7 @@ public GlobalStatus commit(String xid) throws TransactionException { globalSession.asyncCommit(); return false; } else { - globalSession.changeStatus(GlobalStatus.Committing); + globalSession.changeGlobalStatus(GlobalStatus.Committing); return true; } } @@ -204,15 +204,11 @@ public boolean doGlobalCommit(GlobalSession globalSession, boolean retrying) thr SessionHelper.removeBranch(globalSession, branchSession, !retrying); return CONTINUE; case PhaseTwo_CommitFailed_Unretryable: - if (globalSession.canBeCommittedAsync()) { - LOGGER.error( - "Committing branch transaction[{}], status: PhaseTwo_CommitFailed_Unretryable, please check the business log.", branchSession.getBranchId()); - return CONTINUE; - } else { - SessionHelper.endCommitFailed(globalSession); - LOGGER.error("Committing global transaction[{}] finally failed, caused by branch transaction[{}] commit failed.", globalSession.getXid(), branchSession.getBranchId()); - return false; - } + //not at branch + SessionHelper.endCommitFailed(globalSession); + LOGGER.error("Committing global transaction[{}] finally failed, caused by branch transaction[{}] commit failed.", globalSession.getXid(), branchSession.getBranchId()); + return false; + default: if (!retrying) { globalSession.queueToRetryCommit(); @@ -273,7 +269,7 @@ public GlobalStatus rollback(String xid) throws TransactionException { boolean shouldRollBack = SessionHolder.lockAndExecute(globalSession, () -> { globalSession.close(); // Highlight: Firstly, close the session, then no more branch can be registered. if (globalSession.getStatus() == GlobalStatus.Begin) { - globalSession.changeStatus(GlobalStatus.Rollbacking); + globalSession.changeGlobalStatus(GlobalStatus.Rollbacking); return true; } return false; diff --git a/server/src/main/java/io/seata/server/session/AbstractSessionManager.java b/server/src/main/java/io/seata/server/session/AbstractSessionManager.java index 1d14052a18d..2668c2c5c53 100644 --- a/server/src/main/java/io/seata/server/session/AbstractSessionManager.java +++ b/server/src/main/java/io/seata/server/session/AbstractSessionManager.java @@ -148,10 +148,15 @@ public void onClose(GlobalSession globalSession) throws TransactionException { } @Override - public void onEnd(GlobalSession globalSession) throws TransactionException { + public void onSuccessEnd(GlobalSession globalSession) throws TransactionException { removeGlobalSession(globalSession); } + @Override + public void onFailEnd(GlobalSession globalSession) throws TransactionException { + LOGGER.info("xid:{} fail end, transaction:{}",globalSession.getXid(),globalSession.toString()); + } + private void writeSession(LogOperation logOperation, SessionStorable sessionStorable) throws TransactionException { if (!transactionStoreManager.writeSession(logOperation, sessionStorable)) { if (LogOperation.GLOBAL_ADD.equals(logOperation)) { diff --git a/server/src/main/java/io/seata/server/session/GlobalSession.java b/server/src/main/java/io/seata/server/session/GlobalSession.java index 4e90d2cbaf3..03445bd419c 100644 --- a/server/src/main/java/io/seata/server/session/GlobalSession.java +++ b/server/src/main/java/io/seata/server/session/GlobalSession.java @@ -25,6 +25,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; + import io.seata.common.Constants; import io.seata.common.DefaultValues; import io.seata.common.XID; @@ -197,7 +198,7 @@ public void begin() throws TransactionException { } @Override - public void changeStatus(GlobalStatus status) throws TransactionException { + public void changeGlobalStatus(GlobalStatus status) throws TransactionException { if (GlobalStatus.Rollbacking == status) { LockerManagerFactory.getLockManager().updateLockStatus(xid, LockStatus.Rollbacking); } @@ -232,12 +233,25 @@ public void close() throws TransactionException { @Override public void end() throws TransactionException { - // Clean locks first - clean(); + if (isSuccessEnd()) { + // Clean locks first + clean(); + for (SessionLifecycleListener lifecycleListener : lifecycleListeners) { + lifecycleListener.onSuccessEnd(this); + } + } else { + for (SessionLifecycleListener lifecycleListener : lifecycleListeners) { + lifecycleListener.onFailEnd(this); + } + } + } - for (SessionLifecycleListener lifecycleListener : lifecycleListeners) { - lifecycleListener.onEnd(this); + public boolean isSuccessEnd() { + if (status == GlobalStatus.Committed || status == GlobalStatus.Rollbacked + || status == GlobalStatus.TimeoutRollbacked) { + return true; } + return false; } public void clean() throws TransactionException { @@ -750,4 +764,13 @@ public void queueToRetryRollback() throws TransactionException { SessionHolder.getRetryRollbackingSessionManager().addGlobalSession(this); } + @Override + public String toString() { + return "GlobalSession{" + "xid='" + xid + '\'' + ", transactionId=" + transactionId + ", status=" + status + + ", applicationId='" + applicationId + '\'' + ", transactionServiceGroup='" + transactionServiceGroup + + '\'' + ", transactionName='" + transactionName + '\'' + ", timeout=" + timeout + ", beginTime=" + + beginTime + ", applicationData='" + applicationData + '\'' + ", lazyLoadBranch=" + lazyLoadBranch + + ", active=" + active + ", branchSessions=" + branchSessions + ", globalSessionLock=" + globalSessionLock + + ", lifecycleListeners=" + lifecycleListeners + '}'; + } } diff --git a/server/src/main/java/io/seata/server/session/SessionHelper.java b/server/src/main/java/io/seata/server/session/SessionHelper.java index 086f152ea83..48262566ec3 100644 --- a/server/src/main/java/io/seata/server/session/SessionHelper.java +++ b/server/src/main/java/io/seata/server/session/SessionHelper.java @@ -116,7 +116,7 @@ public static BranchSession newBranch(BranchType branchType, String xid, long br * @throws TransactionException the transaction exception */ public static void endCommitted(GlobalSession globalSession) throws TransactionException { - globalSession.changeStatus(GlobalStatus.Committed); + globalSession.changeGlobalStatus(GlobalStatus.Committed); globalSession.end(); postTcSessionEndEvent(globalSession); } @@ -128,7 +128,7 @@ public static void endCommitted(GlobalSession globalSession) throws TransactionE * @throws TransactionException the transaction exception */ public static void endCommitFailed(GlobalSession globalSession) throws TransactionException { - globalSession.changeStatus(GlobalStatus.CommitFailed); + globalSession.changeGlobalStatus(GlobalStatus.CommitFailed); LOGGER.error("The Global session {} has changed the status to {}, need to be handled it manually.", globalSession.getXid(), globalSession.getStatus()); globalSession.end(); @@ -144,9 +144,9 @@ public static void endCommitFailed(GlobalSession globalSession) throws Transacti public static void endRollbacked(GlobalSession globalSession) throws TransactionException { GlobalStatus currentStatus = globalSession.getStatus(); if (isTimeoutGlobalStatus(currentStatus)) { - globalSession.changeStatus(GlobalStatus.TimeoutRollbacked); + globalSession.changeGlobalStatus(GlobalStatus.TimeoutRollbacked); } else { - globalSession.changeStatus(GlobalStatus.Rollbacked); + globalSession.changeGlobalStatus(GlobalStatus.Rollbacked); } globalSession.end(); postTcSessionEndEvent(globalSession); @@ -161,9 +161,9 @@ public static void endRollbacked(GlobalSession globalSession) throws Transaction public static void endRollbackFailed(GlobalSession globalSession) throws TransactionException { GlobalStatus currentStatus = globalSession.getStatus(); if (isTimeoutGlobalStatus(currentStatus)) { - globalSession.changeStatus(GlobalStatus.TimeoutRollbackFailed); + globalSession.changeGlobalStatus(GlobalStatus.TimeoutRollbackFailed); } else { - globalSession.changeStatus(GlobalStatus.RollbackFailed); + globalSession.changeGlobalStatus(GlobalStatus.RollbackFailed); } LOGGER.error("The Global session {} has changed the status to {}, need to be handled it manually.", globalSession.getXid(), globalSession.getStatus()); diff --git a/server/src/main/java/io/seata/server/session/SessionLifecycle.java b/server/src/main/java/io/seata/server/session/SessionLifecycle.java index 9c46a2fd737..05cd87a3ab8 100644 --- a/server/src/main/java/io/seata/server/session/SessionLifecycle.java +++ b/server/src/main/java/io/seata/server/session/SessionLifecycle.java @@ -39,7 +39,7 @@ public interface SessionLifecycle { * @param status the status * @throws TransactionException the transaction exception */ - void changeStatus(GlobalStatus status) throws TransactionException; + void changeGlobalStatus(GlobalStatus status) throws TransactionException; /** * Change branch status. @@ -81,7 +81,7 @@ public interface SessionLifecycle { void close() throws TransactionException; /** - * End. + * end. * * @throws TransactionException the transaction exception */ diff --git a/server/src/main/java/io/seata/server/session/SessionLifecycleListener.java b/server/src/main/java/io/seata/server/session/SessionLifecycleListener.java index 54c415e92e3..693d5b695b0 100644 --- a/server/src/main/java/io/seata/server/session/SessionLifecycleListener.java +++ b/server/src/main/java/io/seata/server/session/SessionLifecycleListener.java @@ -86,5 +86,13 @@ void onBranchStatusChange(GlobalSession globalSession, BranchSession branchSessi * @param globalSession the global session * @throws TransactionException the transaction exception */ - void onEnd(GlobalSession globalSession) throws TransactionException; + void onSuccessEnd(GlobalSession globalSession) throws TransactionException; + + /** + * On fail end. + * + * @param globalSession the global session + * @throws TransactionException the transaction exception + */ + void onFailEnd(GlobalSession globalSession) throws TransactionException; } diff --git a/server/src/main/java/io/seata/server/transaction/saga/SagaCore.java b/server/src/main/java/io/seata/server/transaction/saga/SagaCore.java index ea17a089870..b2c5d64b5d2 100644 --- a/server/src/main/java/io/seata/server/transaction/saga/SagaCore.java +++ b/server/src/main/java/io/seata/server/transaction/saga/SagaCore.java @@ -121,7 +121,7 @@ public boolean doGlobalCommit(GlobalSession globalSession, boolean retrying) thr case PhaseOne_Failed: LOGGER.error("By [{}], finish SAGA global [{}]", branchStatus, globalSession.getXid()); SessionHelper.removeAllBranch(globalSession, !retrying); - globalSession.changeStatus(GlobalStatus.Finished); + globalSession.changeGlobalStatus(GlobalStatus.Finished); globalSession.end(); return false; case PhaseTwo_CommitFailed_Unretryable: @@ -137,11 +137,10 @@ public boolean doGlobalCommit(GlobalSession globalSession, boolean retrying) thr default: if (!retrying) { globalSession.queueToRetryCommit(); - return false; } else { LOGGER.error("Failed to commit SAGA global[{}], will retry later.", globalSession.getXid()); - return false; } + return false; } } catch (Exception ex) { LOGGER.error("Failed to commit global[" + globalSession.getXid() + "]", ex); @@ -203,7 +202,7 @@ public void doGlobalReport(GlobalSession globalSession, String xid, GlobalStatus SessionHelper.endRollbacked(globalSession); LOGGER.info("Global[{}] rollbacked", globalSession.getXid()); } else { - globalSession.changeStatus(globalStatus); + globalSession.changeGlobalStatus(globalStatus); LOGGER.info("Global[{}] reporting is successfully done. status[{}]", globalSession.getXid(), globalSession.getStatus()); if (GlobalStatus.RollbackRetrying.equals(globalStatus) diff --git a/server/src/test/java/WriteStoreMultithreadTest.java b/server/src/test/java/WriteStoreMultithreadTest.java index b68c60ffc17..25eb1a968be 100644 --- a/server/src/test/java/WriteStoreMultithreadTest.java +++ b/server/src/test/java/WriteStoreMultithreadTest.java @@ -167,7 +167,12 @@ public void onClose(GlobalSession globalSession) throws TransactionException { } @Override - public void onEnd(GlobalSession globalSession) throws TransactionException { + public void onSuccessEnd(GlobalSession globalSession) throws TransactionException { + + } + + @Override + public void onFailEnd(GlobalSession globalSession) throws TransactionException { } }); diff --git a/server/src/test/java/WriteStoreTest.java b/server/src/test/java/WriteStoreTest.java index dd3c355618b..ecdde2ee32d 100644 --- a/server/src/test/java/WriteStoreTest.java +++ b/server/src/test/java/WriteStoreTest.java @@ -183,7 +183,12 @@ public void onClose(GlobalSession globalSession) throws TransactionException { } @Override - public void onEnd(GlobalSession globalSession) throws TransactionException { + public void onSuccessEnd(GlobalSession globalSession) throws TransactionException { + + } + + @Override + public void onFailEnd(GlobalSession globalSession) throws TransactionException { } }); diff --git a/server/src/test/java/io/seata/server/lock/LockManagerTest.java b/server/src/test/java/io/seata/server/lock/LockManagerTest.java index 14db56ec9e4..98a16d7d3d0 100644 --- a/server/src/test/java/io/seata/server/lock/LockManagerTest.java +++ b/server/src/test/java/io/seata/server/lock/LockManagerTest.java @@ -15,28 +15,29 @@ */ package io.seata.server.lock; - import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.Collection; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Stream; + import javax.annotation.Resource; -import io.seata.server.console.param.GlobalLockParam; +import io.seata.common.util.CollectionUtils; import io.seata.console.result.PageResult; -import io.seata.server.console.vo.GlobalLockVO; import io.seata.core.exception.TransactionException; import io.seata.core.model.BranchType; import io.seata.server.UUIDGenerator; +import io.seata.server.console.param.GlobalLockParam; import io.seata.server.console.service.GlobalLockService; +import io.seata.server.console.vo.GlobalLockVO; import io.seata.server.lock.file.FileLockManagerForTest; import io.seata.server.session.BranchSession; import io.seata.server.session.GlobalSession; import io.seata.server.session.SessionHolder; import io.seata.server.session.SessionManager; - import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.params.ParameterizedTest; @@ -217,6 +218,14 @@ public void lockQueryTest(GlobalSession globalSessions1, GlobalSession globalSes SessionHolder.getRootSessionManager().destroy(); SessionHolder.init("file"); final SessionManager sessionManager = SessionHolder.getRootSessionManager(); + //make sure sessionMaanager is empty + Collection sessions = sessionManager.allSessions(); + if (CollectionUtils.isNotEmpty(sessions)) { + //FileSessionManager use ConcurrentHashMap is thread safe + for (GlobalSession session : sessions) { + sessionManager.removeGlobalSession(session); + } + } try { sessionManager.addGlobalSession(globalSessions1); sessionManager.addGlobalSession(globalSessions2); @@ -235,82 +244,78 @@ public void lockQueryTest(GlobalSession globalSessions1, GlobalSession globalSes // query all data final PageResult fullQueryTestResult = globalLockService.query(param); - Assertions.assertEquals(fullQueryTestResult.getPages(), 1); - Assertions.assertEquals(fullQueryTestResult.getTotal(), 8); - Assertions.assertEquals(fullQueryTestResult.getData().size(), 8); + Assertions.assertEquals(1,fullQueryTestResult.getPages()); + Assertions.assertEquals(8,fullQueryTestResult.getTotal()); + Assertions.assertEquals(8,fullQueryTestResult.getData().size()); // test paging param.setPageSize(1); final PageResult pagingTestResult = globalLockService.query(param); - Assertions.assertEquals(pagingTestResult.getPages(), 8); - Assertions.assertEquals(pagingTestResult.getTotal(), 8); - Assertions.assertEquals(pagingTestResult.getData().size(), 1); + Assertions.assertEquals(8, pagingTestResult.getPages()); + Assertions.assertEquals(8, pagingTestResult.getTotal()); + Assertions.assertEquals(1, pagingTestResult.getData().size()); // transaction id param.setPageSize(10); param.setTransactionId("49"); final PageResult transactionIdTestResult1 = globalLockService.query(param); - Assertions.assertEquals(transactionIdTestResult1.getTotal(), 2); + Assertions.assertEquals(2, transactionIdTestResult1.getTotal()); param.setTransactionId("72"); final PageResult transactionIdTestResult2 = globalLockService.query(param); - Assertions.assertEquals(transactionIdTestResult2.getTotal(), 6); + Assertions.assertEquals(6, transactionIdTestResult2.getTotal()); param.setTransactionId("493747292"); final PageResult transactionIdTestResult3 = globalLockService.query(param); - Assertions.assertEquals(transactionIdTestResult3.getTotal(), 2); + Assertions.assertEquals(2, transactionIdTestResult3.getTotal()); // branch id param.setTransactionId(null); param.setBranchId("2"); final PageResult branchIdTestResult = globalLockService.query(param); - Assertions.assertEquals(branchIdTestResult.getPages(), 1); - Assertions.assertEquals(branchIdTestResult.getTotal(), 4); - Assertions.assertEquals(branchIdTestResult.getData().size(), 4); + Assertions.assertEquals(1, branchIdTestResult.getPages()); + Assertions.assertEquals(4, branchIdTestResult.getTotal()); + Assertions.assertEquals(4, branchIdTestResult.getData().size()); // xid param.setBranchId(null); param.setXid("id1"); final PageResult xidTestResult1 = globalLockService.query(param); - Assertions.assertEquals(xidTestResult1.getTotal(), 4); + Assertions.assertEquals(4, xidTestResult1.getTotal()); param.setXid("d"); final PageResult xidTestResult2 = globalLockService.query(param); - Assertions.assertEquals(xidTestResult2.getTotal(), 8); + Assertions.assertEquals(8, xidTestResult2.getTotal()); // table name param.setXid(null); param.setTableName("de"); final PageResult tableTestResult1 = globalLockService.query(param); - Assertions.assertEquals(tableTestResult1.getTotal(), 2); + Assertions.assertEquals(2, tableTestResult1.getTotal()); param.setTableName("e"); final PageResult tableTestResult2 = globalLockService.query(param); - Assertions.assertEquals(tableTestResult2.getTotal(), 4); + Assertions.assertEquals(4, tableTestResult2.getTotal()); // timeStart and timeEnd final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); param.setTableName(null); param.setTimeStart(dateFormat.parse("2022-1-1 08:00:01").getTime()); final PageResult timeTestResult1 = globalLockService.query(param); - Assertions.assertEquals(timeTestResult1.getTotal(), 0); + Assertions.assertEquals(0, timeTestResult1.getTotal()); param.setTimeStart(dateFormat.parse("2022-1-1 08:00:00").getTime()); final PageResult timeTestResult2 = globalLockService.query(param); - Assertions.assertEquals(timeTestResult2.getTotal(), 4); + Assertions.assertEquals(4, timeTestResult2.getTotal()); param.setTimeStart(null); param.setTimeEnd(dateFormat.parse("2022-1-1 02:59:59").getTime()); final PageResult timeTestResult3 = globalLockService.query(param); - Assertions.assertEquals(timeTestResult3.getTotal(), 0); + Assertions.assertEquals(0, timeTestResult3.getTotal()); param.setTimeEnd(dateFormat.parse("2022-1-1 03:00:00").getTime()); final PageResult timeTestResult4 = globalLockService.query(param); - Assertions.assertEquals(timeTestResult4.getTotal(), 4); -// param.setTimeEnd(); - System.out.println(); - // -// globalLockService.query() + Assertions.assertEquals(4, timeTestResult4.getTotal()); } finally { sessionManager.removeGlobalSession(globalSessions1); diff --git a/server/src/test/java/io/seata/server/session/FileSessionManagerTest.java b/server/src/test/java/io/seata/server/session/FileSessionManagerTest.java index babeb93d01c..16bd593988e 100644 --- a/server/src/test/java/io/seata/server/session/FileSessionManagerTest.java +++ b/server/src/test/java/io/seata/server/session/FileSessionManagerTest.java @@ -383,7 +383,7 @@ public void findGlobalSessionsWithPageResultTest(List globalSessi public void onBeginTest(GlobalSession globalSession) throws Exception { for (SessionManager sessionManager : sessionManagerList) { sessionManager.onBegin(globalSession); - sessionManager.onEnd(globalSession); + sessionManager.onSuccessEnd(globalSession); } } @@ -399,7 +399,7 @@ public void onStatusChangeTest(GlobalSession globalSession) throws Exception { for (SessionManager sessionManager : sessionManagerList) { sessionManager.onBegin(globalSession); sessionManager.onStatusChange(globalSession, GlobalStatus.Finished); - sessionManager.onEnd(globalSession); + sessionManager.onSuccessEnd(globalSession); } } @@ -417,7 +417,7 @@ public void onBranchStatusChangeTest(GlobalSession globalSession, BranchSession sessionManager.onBegin(globalSession); sessionManager.onAddBranch(globalSession, branchSession); sessionManager.onBranchStatusChange(globalSession, branchSession, BranchStatus.PhaseTwo_Committed); - sessionManager.onEnd(globalSession); + sessionManager.onSuccessEnd(globalSession); } } @@ -434,7 +434,7 @@ public void onAddBranchTest(GlobalSession globalSession, BranchSession branchSes for (SessionManager sessionManager : sessionManagerList) { sessionManager.onBegin(globalSession); sessionManager.onAddBranch(globalSession, branchSession); - sessionManager.onEnd(globalSession); + sessionManager.onSuccessEnd(globalSession); } } @@ -452,7 +452,7 @@ public void onRemoveBranchTest(GlobalSession globalSession, BranchSession branch sessionManager.onBegin(globalSession); sessionManager.onAddBranch(globalSession, branchSession); sessionManager.onRemoveBranch(globalSession, branchSession); - sessionManager.onEnd(globalSession); + sessionManager.onSuccessEnd(globalSession); } } @@ -468,7 +468,7 @@ public void onCloseTest(GlobalSession globalSession) throws Exception { for (SessionManager sessionManager : sessionManagerList) { sessionManager.onBegin(globalSession); sessionManager.onClose(globalSession); - sessionManager.onEnd(globalSession); + sessionManager.onSuccessEnd(globalSession); } } @@ -483,7 +483,7 @@ public void onCloseTest(GlobalSession globalSession) throws Exception { public void onEndTest(GlobalSession globalSession) throws Exception { for (SessionManager sessionManager : sessionManagerList) { sessionManager.onBegin(globalSession); - sessionManager.onEnd(globalSession); + sessionManager.onSuccessEnd(globalSession); } } diff --git a/server/src/test/java/io/seata/server/session/GlobalSessionTest.java b/server/src/test/java/io/seata/server/session/GlobalSessionTest.java index 75c697095ef..6a6b945c9a8 100644 --- a/server/src/test/java/io/seata/server/session/GlobalSessionTest.java +++ b/server/src/test/java/io/seata/server/session/GlobalSessionTest.java @@ -80,7 +80,7 @@ public void beginTest(GlobalSession globalSession) throws Exception { @ParameterizedTest @MethodSource("globalSessionProvider") public void changeStatusTest(GlobalSession globalSession) throws Exception { - globalSession.changeStatus(GlobalStatus.Committed); + globalSession.changeGlobalStatus(GlobalStatus.Committed); } /** diff --git a/server/src/test/java/io/seata/server/store/SessionStoreTest.java b/server/src/test/java/io/seata/server/store/SessionStoreTest.java index 93c5078d98d..ad86e81d1cd 100644 --- a/server/src/test/java/io/seata/server/store/SessionStoreTest.java +++ b/server/src/test/java/io/seata/server/store/SessionStoreTest.java @@ -189,7 +189,7 @@ public void testRestoredFromFileAsyncCommitting() throws Exception { Assertions.assertFalse(lockManager.isLockable(otherXID, RESOURCE_ID, "ta:1")); - globalSession.changeStatus(GlobalStatus.AsyncCommitting); + globalSession.changeGlobalStatus(GlobalStatus.AsyncCommitting); lockManager.cleanAllLocks(); @@ -245,9 +245,9 @@ public void testRestoredFromFileCommitRetry() throws Exception { Assertions.assertFalse(lockManager.isLockable(otherXID, RESOURCE_ID, "ta:1")); - globalSession.changeStatus(GlobalStatus.Committing); + globalSession.changeGlobalStatus(GlobalStatus.Committing); globalSession.changeBranchStatus(branchSession1, BranchStatus.PhaseTwo_CommitFailed_Retryable); - globalSession.changeStatus(GlobalStatus.CommitRetrying); + globalSession.changeGlobalStatus(GlobalStatus.CommitRetrying); lockManager.cleanAllLocks(); @@ -306,9 +306,9 @@ public void testRestoredFromFileRollbackRetry() throws Exception { Assertions.assertFalse(lockManager.isLockable(otherXID, RESOURCE_ID, "ta:1")); - globalSession.changeStatus(GlobalStatus.Rollbacking); + globalSession.changeGlobalStatus(GlobalStatus.Rollbacking); globalSession.changeBranchStatus(branchSession1, BranchStatus.PhaseTwo_RollbackFailed_Retryable); - globalSession.changeStatus(GlobalStatus.RollbackRetrying); + globalSession.changeGlobalStatus(GlobalStatus.RollbackRetrying); lockManager.cleanAllLocks(); @@ -367,12 +367,12 @@ public void testRestoredFromFileRollbackFailed() throws Exception { Assertions.assertFalse(lockManager.isLockable(otherXID, RESOURCE_ID, "ta:1")); - globalSession.changeStatus(GlobalStatus.Rollbacking); + globalSession.changeGlobalStatus(GlobalStatus.Rollbacking); globalSession.changeBranchStatus(branchSession1, BranchStatus.PhaseTwo_CommitFailed_Unretryable); SessionHelper.endRollbackFailed(globalSession); // Lock is released. - Assertions.assertTrue(lockManager.isLockable(otherXID, RESOURCE_ID, "ta:1")); + Assertions.assertFalse(lockManager.isLockable(otherXID, RESOURCE_ID, "ta:1")); lockManager.cleanAllLocks();