diff --git a/src/main/java/com/actiontech/dble/net/connection/AbstractConnection.java b/src/main/java/com/actiontech/dble/net/connection/AbstractConnection.java index de5015e5b..cfb3a917b 100644 --- a/src/main/java/com/actiontech/dble/net/connection/AbstractConnection.java +++ b/src/main/java/com/actiontech/dble/net/connection/AbstractConnection.java @@ -154,8 +154,11 @@ public abstract class AbstractConnection implements Connection { private void closeImmediatelyInner(String reason) { if (isClosed.compareAndSet(false, true)) { - if (service instanceof BusinessService) - ((BusinessService) service).transactionsCountInTx(); + if (service instanceof BusinessService) { + BusinessService bService = (BusinessService) service; + bService.transactionsCountInTx(); + bService.addHisQueriesCount(); + } StatisticListener.getInstance().record(service, r -> r.onExit(reason)); StatisticListener.getInstance().remove(service); closeSocket(); diff --git a/src/main/java/com/actiontech/dble/services/BusinessService.java b/src/main/java/com/actiontech/dble/services/BusinessService.java index d26026d7a..a2b37433a 100644 --- a/src/main/java/com/actiontech/dble/services/BusinessService.java +++ b/src/main/java/com/actiontech/dble/services/BusinessService.java @@ -13,6 +13,7 @@ import com.actiontech.dble.net.connection.AbstractConnection; import com.actiontech.dble.net.mysql.EOFPacket; import com.actiontech.dble.net.service.AuthResultInfo; import com.actiontech.dble.server.variables.MysqlVariable; +import com.actiontech.dble.singleton.TsQueriesCounter; import com.actiontech.dble.statistic.CommandCount; import java.util.concurrent.atomic.AtomicLong; @@ -83,6 +84,10 @@ public abstract class BusinessService extends FrontendServ transactionsCounter.set(Long.MIN_VALUE); } + public void addHisQueriesCount() { + TsQueriesCounter.getInstance().addToHistory(this); + } + public void getAndIncrementTxId() { txId.getAndIncrement(); } diff --git a/src/main/java/com/actiontech/dble/services/mysqlsharding/ShardingService.java b/src/main/java/com/actiontech/dble/services/mysqlsharding/ShardingService.java index 43923f840..3c60658c3 100644 --- a/src/main/java/com/actiontech/dble/services/mysqlsharding/ShardingService.java +++ b/src/main/java/com/actiontech/dble/services/mysqlsharding/ShardingService.java @@ -35,7 +35,6 @@ import com.actiontech.dble.services.BusinessService; import com.actiontech.dble.services.mysqlauthenticate.MySQLChangeUserService; import com.actiontech.dble.singleton.SerializableLock; import com.actiontech.dble.singleton.TraceManager; -import com.actiontech.dble.singleton.TsQueriesCounter; import com.actiontech.dble.statistic.sql.StatisticListener; import com.actiontech.dble.util.SplitUtil; import com.actiontech.dble.util.exception.NeedDelayedException; @@ -580,7 +579,6 @@ public class ShardingService extends BusinessService { @Override public void cleanup() { super.cleanup(); - TsQueriesCounter.getInstance().addToHistory(this); session.terminate(); if (getLoadDataInfileHandler() != null) { getLoadDataInfileHandler().clear(); diff --git a/src/main/java/com/actiontech/dble/services/rwsplit/RWSplitService.java b/src/main/java/com/actiontech/dble/services/rwsplit/RWSplitService.java index cb28a501a..d0c8a4649 100644 --- a/src/main/java/com/actiontech/dble/services/rwsplit/RWSplitService.java +++ b/src/main/java/com/actiontech/dble/services/rwsplit/RWSplitService.java @@ -28,7 +28,6 @@ import com.actiontech.dble.services.mysqlauthenticate.MySQLChangeUserService; import com.actiontech.dble.services.mysqlsharding.LoadDataProtoHandlerImpl; import com.actiontech.dble.services.rwsplit.handle.PreparedStatementHolder; import com.actiontech.dble.singleton.TraceManager; -import com.actiontech.dble.singleton.TsQueriesCounter; import com.actiontech.dble.statistic.sql.StatisticListener; import com.alibaba.druid.wall.WallCheckResult; import com.alibaba.druid.wall.WallProvider; @@ -467,7 +466,6 @@ public class RWSplitService extends BusinessService { public void cleanup() { super.cleanup(); if (session != null) { - TsQueriesCounter.getInstance().addToHistory(this); session.close("clean up"); } }