From 7fac07e2bedb9818a2de706fec3496248e52d592 Mon Sep 17 00:00:00 2001 From: "platform@iwhalecloud.com" Date: Thu, 2 Jan 2020 11:04:08 +0800 Subject: [PATCH] =?UTF-8?q?#2390=20load=20data=20local=E8=BF=87=E7=A8=8B?= =?UTF-8?q?=E4=B8=AD=E5=87=BA=E7=8E=B0=E9=94=99=E8=AF=AF=EF=BC=8C=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E7=9B=B4=E6=8E=A5=E6=8A=A5Lost=20connection=20to=20My?= =?UTF-8?q?SQL=20server=20during=20query?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mysql/nio/handler/MultiNodeQueryHandler.java | 10 +++++----- .../backend/mysql/nio/handler/SingleNodeHandler.java | 11 ++++++++--- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/mycat/backend/mysql/nio/handler/MultiNodeQueryHandler.java b/src/main/java/io/mycat/backend/mysql/nio/handler/MultiNodeQueryHandler.java index 3aace1039..03a12a437 100644 --- a/src/main/java/io/mycat/backend/mysql/nio/handler/MultiNodeQueryHandler.java +++ b/src/main/java/io/mycat/backend/mysql/nio/handler/MultiNodeQueryHandler.java @@ -175,6 +175,10 @@ protected void reset(int initCount) { this.execCount = 0; this.netInBytes = 0; this.netOutBytes = 0; + + if (rrs.isLoadData()) { + packetId = session.getSource().getLoadDataInfileHandler().getLastPackId(); + } } public NonBlockingSession getSession() { @@ -345,15 +349,11 @@ public void okResponse(byte[] data, BackendConnection conn) { lock.lock(); try { + ok.packetId = ++packetId;// OK_PACKET if (rrs.isLoadData()) { - byte lastPackId = source.getLoadDataInfileHandler() - .getLastPackId(); - ok.packetId = ++lastPackId;// OK_PACKET ok.message = ("Records: " + affectedRows + " Deleted: 0 Skipped: 0 Warnings: 0") .getBytes();// 此处信息只是为了控制台给人看的 source.getLoadDataInfileHandler().clear(); - } else { - ok.packetId = ++packetId;// OK_PACKET } ok.affectedRows = affectedRows; diff --git a/src/main/java/io/mycat/backend/mysql/nio/handler/SingleNodeHandler.java b/src/main/java/io/mycat/backend/mysql/nio/handler/SingleNodeHandler.java index b3ba5f880..bbb9ec9ff 100644 --- a/src/main/java/io/mycat/backend/mysql/nio/handler/SingleNodeHandler.java +++ b/src/main/java/io/mycat/backend/mysql/nio/handler/SingleNodeHandler.java @@ -176,7 +176,12 @@ public void execute() throws Exception { startTime=System.currentTimeMillis(); ServerConnection sc = session.getSource(); this.isRunning = true; - this.packetId = 0; + if (rrs.isLoadData()) { + this.packetId = session.getSource().getLoadDataInfileHandler().getLastPackId(); + } else { + this.packetId = 0; + } + final BackendConnection conn = session.getTarget(node); LOGGER.debug("rrs.getRunOnSlave() " + rrs.getRunOnSlaveDebugInfo()); node.setRunOnSlave(rrs.getRunOnSlave()); // 实现 master/slave注解 @@ -327,8 +332,8 @@ public void okResponse(byte[] data, BackendConnection conn) { ok.read(data); boolean isCanClose2Client =(!rrs.isCallStatement()) ||(rrs.isCallStatement() &&!rrs.getProcedure().isResultSimpleValue()); if (rrs.isLoadData()) { - byte lastPackId = source.getLoadDataInfileHandler().getLastPackId(); - ok.packetId = ++lastPackId;// OK_PACKET + // byte lastPackId = source.getLoadDataInfileHandler().getLastPackId(); + ok.packetId = ++packetId;// OK_PACKET source.getLoadDataInfileHandler().clear(); } else if (isCanClose2Client) {