fix bug that keep slow log on, dble may occur oom (#2640)

(cherry picked from commit c349b366a6)
This commit is contained in:
Collapsar
2021-05-12 15:58:46 +08:00
committed by baofengqi
parent eba528602a
commit 9d7a16c06f
7 changed files with 7 additions and 11 deletions
@@ -10,7 +10,6 @@ import com.actiontech.dble.backend.datasource.ShardingNode;
import com.actiontech.dble.config.model.sharding.SchemaConfig;
import com.actiontech.dble.route.RouteResultset;
import com.actiontech.dble.route.util.RouterUtil;
import com.actiontech.dble.server.parser.ServerParse;
import com.actiontech.dble.services.mysqlsharding.ShardingService;
import org.slf4j.Logger;
@@ -33,7 +32,7 @@ public class HintShardingNodeHandler implements HintHandler {
String hintSQLValue, int hintSqlType, Map hintMap)
throws SQLNonTransientException {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("route shardingnode sql hint from " + realSQL);
LOGGER.debug("route shardingNode sql hint from " + realSQL);
}
RouteResultset rrs = new RouteResultset(realSQL, sqlType);
@@ -49,6 +48,7 @@ public class HintShardingNodeHandler implements HintHandler {
throw new SQLNonTransientException(msg);
}
service.getSession2().endParse();
return rrs;
}
@@ -9,7 +9,6 @@ import com.actiontech.dble.config.model.sharding.SchemaConfig;
import com.actiontech.dble.route.RouteResultset;
import com.actiontech.dble.route.RouteStrategy;
import com.actiontech.dble.route.util.RouterUtil;
import com.actiontech.dble.server.parser.ServerParse;
import com.actiontech.dble.services.mysqlsharding.ShardingService;
import com.actiontech.dble.sqlengine.mpp.LoadData;
@@ -51,6 +50,7 @@ public abstract class AbstractRouteStrategy implements RouteStrategy {
}
}
service.getSession2().endParse();
return rrs;
}
@@ -11,7 +11,6 @@ import com.actiontech.dble.route.parser.druid.DruidParser;
import com.actiontech.dble.route.parser.druid.DruidParserFactory;
import com.actiontech.dble.route.parser.druid.ServerSchemaStatVisitor;
import com.actiontech.dble.route.util.RouterUtil;
import com.actiontech.dble.services.mysqlsharding.ShardingService;
import com.actiontech.dble.singleton.TraceManager;
import com.alibaba.druid.sql.ast.SQLStatement;
@@ -89,7 +88,6 @@ public class DefaultRouteStrategy extends AbstractRouteStrategy {
rrs.setStatement(originSql);
rrs.setSrcStatement(originSql);
}
service.getSession2().endParse();
DruidParser druidParser = DruidParserFactory.create(statement, rrs.getSqlType());
TraceManager.TraceObject traceObject = TraceManager.serviceTrace(service, "simple-route-detail");
TraceManager.log(ImmutableMap.of("druidParser", druidParser.getClass().toString()), traceObject);
@@ -138,7 +138,6 @@ public class NonBlockingSession extends Session {
if (traceEnable || SlowQueryLog.getInstance().isEnableSlowLog()) {
requestTime = System.nanoTime();
traceResult.setVeryStartPrepare(requestTime);
traceResult.setRequestStartPrepare(new TraceRecord(requestTime));
}
if (SystemConfig.getInstance().getUseCostTimeStat() == 0) {
return;
@@ -209,6 +209,7 @@ public final class ServerLoadDataInfileHandler implements LoadDataInfileHandler
RouteResultset rrs = buildResultSet(routeResultMap);
if (rrs != null) {
flushDataToFile();
service.getSession2().endParse();
service.getSession2().execute(rrs);
}
}
@@ -635,6 +636,7 @@ public final class ServerLoadDataInfileHandler implements LoadDataInfileHandler
RouteResultset rrs = buildResultSet(routeResultMap);
if (rrs != null) {
flushDataToFile();
service.getSession2().endParse();
service.getSession2().execute(rrs);
}
}
@@ -57,10 +57,7 @@ public class TraceResult implements Cloneable {
public void setVeryStartPrepare(long veryStartPrepare) {
prepareFinished = false;
this.veryStartPrepare = veryStartPrepare;
}
public void setRequestStartPrepare(TraceRecord requestStartPrepare) {
this.requestStartPrepare = requestStartPrepare;
this.requestStartPrepare = new TraceRecord(veryStartPrepare);
}
public void setRouteStart(TraceRecord routeStart) {
@@ -159,7 +159,7 @@ public final class RouteService {
Map hintMap = null;
String hintType = null;
if (hint.indexOf("=") >= 0) {
//sql/sharddingNode/db_type/db_instance_url=*****
//sql/shardingNode/db_type/db_instance_url=*****
hintMap = parseKeyValue(hint, '=');
hintType = (String) hintMap.get(HINT_TYPE);
hintSql = (String) hintMap.get(hintType);