From cbb2695b1c2f00ffeb31c1e151ad77d861456045 Mon Sep 17 00:00:00 2001 From: "tiger.yan" Date: Fri, 20 Sep 2019 04:45:29 -0500 Subject: [PATCH] implicit_dts_bug2 (#1399)#1400 --- .../dble/backend/BackendConnection.java | 2 -- .../dble/backend/mysql/nio/MySQLConnection.java | 17 ++--------------- .../nio/handler/MultiNodeQueryHandler.java | 4 +++- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/actiontech/dble/backend/BackendConnection.java b/src/main/java/com/actiontech/dble/backend/BackendConnection.java index 16b8cc538..379faa47b 100644 --- a/src/main/java/com/actiontech/dble/backend/BackendConnection.java +++ b/src/main/java/com/actiontech/dble/backend/BackendConnection.java @@ -14,8 +14,6 @@ import com.actiontech.dble.server.ServerConnection; import java.io.UnsupportedEncodingException; public interface BackendConnection extends ClosableConnection { - boolean isModifiedSQLExecuted(); - boolean isDDL(); boolean isFromSlaveDB(); diff --git a/src/main/java/com/actiontech/dble/backend/mysql/nio/MySQLConnection.java b/src/main/java/com/actiontech/dble/backend/mysql/nio/MySQLConnection.java index d7687461a..73b9055e0 100644 --- a/src/main/java/com/actiontech/dble/backend/mysql/nio/MySQLConnection.java +++ b/src/main/java/com/actiontech/dble/backend/mysql/nio/MySQLConnection.java @@ -51,7 +51,6 @@ public class MySQLConnection extends AbstractConnection implements private volatile String schema = null; private volatile String oldSchema; private volatile boolean borrowed = false; - private volatile boolean modifiedSQLExecuted = false; private volatile boolean isDDL = false; private volatile boolean isRunning = false; private volatile StatusSync statusSync; @@ -355,14 +354,11 @@ public class MySQLConnection extends AbstractConnection implements public void executeMultiNode(RouteResultsetNode rrn, ServerConnection sc, boolean isAutoCommit) { - if (!modifiedSQLExecuted && rrn.isModifySQL()) { - modifiedSQLExecuted = true; - } if (rrn.getSqlType() == ServerParse.DDL) { isDDL = true; } String xaTxId = getConnXID(session, rrn.getMultiplexNum().longValue()); - if (!sc.isAutocommit() && !sc.isTxStart() && modifiedSQLExecuted) { + if (!sc.isAutocommit() && !sc.isTxStart() && rrn.isModifySQL()) { sc.setTxStart(true); } synAndDoExecuteMultiNode(xaTxId, rrn, sc.getCharset(), sc.getTxIsolation(), isAutoCommit, sc.getUsrVariables(), sc.getSysVariables()); @@ -443,14 +439,11 @@ public class MySQLConnection extends AbstractConnection implements public void execute(RouteResultsetNode rrn, ServerConnection sc, boolean isAutoCommit) { - if (!modifiedSQLExecuted && rrn.isModifySQL()) { - modifiedSQLExecuted = true; - } if (rrn.getSqlType() == ServerParse.DDL) { isDDL = true; } String xaTxId = getConnXID(session, rrn.getMultiplexNum().longValue()); - if (!sc.isAutocommit() && !sc.isTxStart() && modifiedSQLExecuted) { + if (!sc.isAutocommit() && !sc.isTxStart() && rrn.isModifySQL()) { sc.setTxStart(true); } synAndDoExecute(xaTxId, rrn, sc.getCharset(), sc.getTxIsolation(), isAutoCommit, sc.getUsrVariables(), sc.getSysVariables()); @@ -767,7 +760,6 @@ public class MySQLConnection extends AbstractConnection implements metaDataSynced = true; attachment = null; statusSync = null; - modifiedSQLExecuted = false; isDDL = false; testing = false; setResponseHandler(null); @@ -866,7 +858,6 @@ public class MySQLConnection extends AbstractConnection implements result.append(", writeQueue="); result.append(this.getWriteQueue().size()); result.append(", modifiedSQLExecuted="); - result.append(modifiedSQLExecuted); if (sysVariables.size() > 0) { result.append(", "); result.append(getStringOfSysVariables()); @@ -888,10 +879,6 @@ public class MySQLConnection extends AbstractConnection implements return "MySQLConnection host=" + host + ", port=" + port + ", schema=" + schema; } - @Override - public boolean isModifiedSQLExecuted() { - return modifiedSQLExecuted; - } @Override public boolean isDDL() { diff --git a/src/main/java/com/actiontech/dble/backend/mysql/nio/handler/MultiNodeQueryHandler.java b/src/main/java/com/actiontech/dble/backend/mysql/nio/handler/MultiNodeQueryHandler.java index 7be7d4a3c..54ad1d8a1 100644 --- a/src/main/java/com/actiontech/dble/backend/mysql/nio/handler/MultiNodeQueryHandler.java +++ b/src/main/java/com/actiontech/dble/backend/mysql/nio/handler/MultiNodeQueryHandler.java @@ -59,6 +59,7 @@ public class MultiNodeQueryHandler extends MultiNodeHandler implements LoadDataR private List fieldPackets = new ArrayList<>(); private volatile ByteBuffer byteBuffer; private Set closedConnSet; + private final boolean modifiedSQL; public MultiNodeQueryHandler(RouteResultset rrs, NonBlockingSession session) { super(session); @@ -73,6 +74,7 @@ public class MultiNodeQueryHandler extends MultiNodeHandler implements LoadDataR byteBuffer = session.getSource().allocate(); } this.sessionAutocommit = session.getSource().isAutocommit(); + this.modifiedSQL = rrs.getNodes()[0].isModifySQL(); } protected void reset(int initCount) { @@ -570,7 +572,7 @@ public class MultiNodeQueryHandler extends MultiNodeHandler implements LoadDataR void handleEndPacket(byte[] data, AutoTxOperation txOperation, BackendConnection conn, boolean isSuccess) { ServerConnection source = session.getSource(); - if (source.isAutocommit() && !source.isTxStart() && conn.isModifiedSQLExecuted()) { + if (source.isAutocommit() && !source.isTxStart() && this.modifiedSQL) { if (nodeCount < 0) { return; }