rollback setfail

This commit is contained in:
yanhuqing
2020-03-31 14:52:58 +08:00
parent 9d40546931
commit c9bcfd8933
2 changed files with 9 additions and 1 deletions
@@ -143,11 +143,17 @@ public class XARollbackNodesHandler extends AbstractRollbackNodesHandler {
}
if (mysqlCon.isClosed()) {
mysqlCon.setXaStatus(TxState.TX_ROLLBACK_FAILED_STATE);
session.setXaState(TxState.TX_ROLLBACK_FAILED_STATE);
setFail("Connection {DataHost[" + mysqlCon.getHost() + ":" + mysqlCon.getPort() + "],Schema[" + mysqlCon.getSchema() + "],threadID[" +
mysqlCon.getThreadId() + "]} was closed ");
}
rollbackPhase(mysqlCon);
} else if (session.getXaState() == TxState.TX_ROLLBACK_FAILED_STATE || session.getXaState() == TxState.TX_PREPARE_UNCONNECT_STATE) {
if (mysqlCon.isClosed()) {
mysqlCon.setXaStatus(TxState.TX_ROLLBACK_FAILED_STATE);
session.setXaState(TxState.TX_ROLLBACK_FAILED_STATE);
setFail("Connection {DataHost[" + mysqlCon.getHost() + ":" + mysqlCon.getPort() + "],Schema[" + mysqlCon.getSchema() + "],threadID[" +
mysqlCon.getThreadId() + "]} was closed ");
}
rollbackPhase(mysqlCon);
} else if (session.getXaState() == TxState.TX_ENDED_STATE) {
@@ -8,6 +8,7 @@ package com.actiontech.dble.server.handler;
import com.actiontech.dble.DbleServer;
import com.actiontech.dble.backend.BackendConnection;
import com.actiontech.dble.backend.mysql.nio.MySQLConnection;
import com.actiontech.dble.backend.mysql.xa.TxState;
import com.actiontech.dble.config.ErrorCode;
import com.actiontech.dble.net.FrontendConnection;
import com.actiontech.dble.net.NIOProcessor;
@@ -76,7 +77,8 @@ public final class KillHandler {
}
NonBlockingSession killSession = ((ServerConnection) killConn).getSession2();
if (killSession.getSessionStage() == SessionStage.Init || killSession.getSessionStage() == SessionStage.Finished) {
if ((killSession.getXaState() != null && killSession.getXaState() != TxState.TX_INITIALIZE_STATE) ||
killSession.getSessionStage() == SessionStage.Init || killSession.getSessionStage() == SessionStage.Finished) {
getOkPacket(c).write(c);
c.getSession2().multiStatementNextSql(c.getSession2().getIsMultiStatement().get());
return;