Browse Source

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

release/11.0
xiqiu 2 years ago
parent
commit
4e6fb821b0
  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