[inner-2194] fix: questions and transactions occasionally appear as 0 (cherry pick from master)

This commit is contained in:
wenyh1
2023-10-08 11:30:29 +08:00
parent 477992a2f9
commit 2a6993b3fa
4 changed files with 10 additions and 6 deletions

View File

@@ -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();

View File

@@ -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<T extends UserConfig> extends FrontendServ
transactionsCounter.set(Long.MIN_VALUE);
}
public void addHisQueriesCount() {
TsQueriesCounter.getInstance().addToHistory(this);
}
public void getAndIncrementTxId() {
txId.getAndIncrement();
}

View File

@@ -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<ShardingUserConfig> {
@Override
public void cleanup() {
super.cleanup();
TsQueriesCounter.getInstance().addToHistory(this);
session.terminate();
if (getLoadDataInfileHandler() != null) {
getLoadDataInfileHandler().clear();

View File

@@ -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<RwSplitUserConfig> {
public void cleanup() {
super.cleanup();
if (session != null) {
TsQueriesCounter.getInstance().addToHistory(this);
session.close("clean up");
}
}