Browse Source

Pull request #7265: REPORT-83447 驱动管理mysql自定义连接和druid监控不兼容

Merge in CORE/base-third from ~XIQIU/base-third:release/11.0 to release/11.0

* commit 'd7d38ef08e9aa17f8e98d29aeb79aea1aa724d37':
  REPORT-83447  改下注释
  REPORT-83447  驱动管理mysql自定义连接和druid监控不兼容
release/11.0
Xiqiu-王喜秋 2 years ago
parent
commit
c25524bd8b
  1. 10
      fine-druid/src/main/java/com/fr/third/alibaba/druid/util/MySqlUtils.java

10
fine-druid/src/main/java/com/fr/third/alibaba/druid/util/MySqlUtils.java

@ -16,6 +16,7 @@
package com.fr.third.alibaba.druid.util; package com.fr.third.alibaba.druid.util;
import com.fr.third.alibaba.druid.DbType; import com.fr.third.alibaba.druid.DbType;
import com.fr.third.alibaba.druid.proxy.jdbc.ConnectionProxy;
import com.fr.third.alibaba.druid.sql.SQLUtils; import com.fr.third.alibaba.druid.sql.SQLUtils;
import com.fr.third.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; import com.fr.third.alibaba.druid.sql.ast.statement.SQLCreateTableStatement;
@ -403,8 +404,13 @@ public class MySqlUtils {
} }
public static long getLastPacketReceivedTimeMs(Connection conn) throws SQLException { public static long getLastPacketReceivedTimeMs(Connection conn) throws SQLException {
// durid监控若开启,Connection 对象是 ConnectionProxy ,且ConnectionProxy和Connection不一定在同一个类加载器下
ClassLoader cl = conn.getClass().getClassLoader(); ClassLoader cl;
if (conn instanceof ConnectionProxy) {
cl = ((ConnectionProxy) conn).getRawObject().getClass().getClassLoader();
} else {
cl = conn.getClass().getClassLoader();
}
ConnectionClass cc = classLoaderConnectionClassMap.compute(cl, (k, v) -> { ConnectionClass cc = classLoaderConnectionClassMap.compute(cl, (k, v) -> {
if (v == null || v.class_connectionImpl.getClassLoader() != cl) { if (v == null || v.class_connectionImpl.getClassLoader() != cl) {
return new ConnectionClass(); return new ConnectionClass();

Loading…
Cancel
Save