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