branch-2.1: [improvement](jdbc catalog) Optimize JDBC driver property settings #42923 (#44405)

Cherry-picked from #42923

Co-authored-by: zy-kkk <zhongyongkang@selectdb.com>
This commit is contained in:
github-actions[bot]
2024-11-22 22:53:35 +08:00
committed by GitHub
parent dceaf97381
commit e7095cea0b
4 changed files with 21 additions and 4 deletions

View File

@ -70,6 +70,7 @@ public abstract class BaseJdbcExecutor implements JdbcExecutor {
protected String jdbcDriverVersion;
public BaseJdbcExecutor(byte[] thriftParams) throws Exception {
setJdbcDriverSystemProperties();
TJdbcExecutorCtorParams request = new TJdbcExecutorCtorParams();
TDeserializer deserializer = new TDeserializer(PROTOCOL_FACTORY);
try {
@ -93,7 +94,6 @@ public abstract class BaseJdbcExecutor implements JdbcExecutor {
.setConnectionPoolMaxLifeTime(request.connection_pool_max_life_time)
.setConnectionPoolKeepAlive(request.connection_pool_keep_alive);
JdbcDataSource.getDataSource().setCleanupInterval(request.connection_pool_cache_clear_time);
System.setProperty("com.zaxxer.hikari.useWeakReferences", "true");
init(config, request.statement);
this.jdbcDriverVersion = getJdbcDriverVersion();
}
@ -146,6 +146,10 @@ public abstract class BaseJdbcExecutor implements JdbcExecutor {
throws SQLException {
}
protected void setJdbcDriverSystemProperties() {
System.setProperty("com.zaxxer.hikari.useWeakReferences", "true");
}
public void cleanDataSource() {
if (hikariDataSource != null) {
hikariDataSource.close();

View File

@ -50,6 +50,11 @@ public class MySQLJdbcExecutor extends BaseJdbcExecutor {
public MySQLJdbcExecutor(byte[] thriftParams) throws Exception {
super(thriftParams);
}
@Override
protected void setJdbcDriverSystemProperties() {
super.setJdbcDriverSystemProperties();
System.setProperty("com.mysql.cj.disableAbandonedConnectionCleanup", "true");
}

View File

@ -99,7 +99,7 @@ public abstract class JdbcClient {
}
protected JdbcClient(JdbcClientConfig jdbcClientConfig) {
System.setProperty("com.zaxxer.hikari.useWeakReferences", "true");
setJdbcDriverSystemProperties();
this.catalogName = jdbcClientConfig.getCatalog();
this.jdbcUser = jdbcClientConfig.getUser();
this.isOnlySpecifiedDatabase = Boolean.parseBoolean(jdbcClientConfig.getOnlySpecifiedDatabase());
@ -116,6 +116,10 @@ public abstract class JdbcClient {
this.jdbcLowerCaseMetaMatching = new JdbcIdentifierMapping(isLowerCaseMetaNames, metaNamesMapping, this);
}
protected void setJdbcDriverSystemProperties() {
System.setProperty("com.zaxxer.hikari.useWeakReferences", "true");
}
// Initialize DataSource
private void initializeDataSource(JdbcClientConfig config) {
ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();

View File

@ -46,8 +46,6 @@ public class JdbcMySQLClient extends JdbcClient {
protected JdbcMySQLClient(JdbcClientConfig jdbcClientConfig) {
super(jdbcClientConfig);
// Disable abandoned connection cleanup
System.setProperty("com.mysql.cj.disableAbandonedConnectionCleanup", "true");
convertDateToNull = isConvertDatetimeToNull(jdbcClientConfig);
Connection conn = null;
Statement stmt = null;
@ -74,6 +72,12 @@ public class JdbcMySQLClient extends JdbcClient {
this.dbType = dbType;
}
@Override
protected void setJdbcDriverSystemProperties() {
super.setJdbcDriverSystemProperties();
System.setProperty("com.mysql.cj.disableAbandonedConnectionCleanup", "true");
}
@Override
public List<String> getDatabaseNameList() {
Connection conn = null;