diff --git a/hikaricp-java6/src/main/java/com/zaxxer/hikari/HikariConfig.java b/hikaricp-java6/src/main/java/com/zaxxer/hikari/HikariConfig.java index 8c15bb64..781e66a8 100644 --- a/hikaricp-java6/src/main/java/com/zaxxer/hikari/HikariConfig.java +++ b/hikaricp-java6/src/main/java/com/zaxxer/hikari/HikariConfig.java @@ -35,6 +35,8 @@ import javax.sql.DataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.codahale.metrics.MetricRegistry; +import com.zaxxer.hikari.metrics.CodaHaleShim; import com.zaxxer.hikari.proxy.JavassistProxyFactory; import com.zaxxer.hikari.util.PoolUtilities; import com.zaxxer.hikari.util.PropertyBeanSetter; @@ -69,7 +71,6 @@ public class HikariConfig implements HikariConfigMBean private String dataSourceJndiName; private String driverClassName; private String jdbcUrl; - private String metricsTrackerClassName; private String password; private String poolName; private String transactionIsolationName; @@ -79,15 +80,16 @@ public class HikariConfig implements HikariConfigMBean private boolean isInitializationFailFast; private boolean isJdbc4connectionTest; private boolean isIsolateInternalQueries; - private boolean isRecordMetrics; private boolean isRegisterMbeans; private DataSource dataSource; private Properties dataSourceProperties; private IConnectionCustomizer customizer; private ThreadFactory threadFactory; + private MetricRegistry metricRegistry; static { JavassistProxyFactory.initialize(); + CodaHaleShim.initialize(); } /** @@ -105,8 +107,6 @@ public class HikariConfig implements HikariConfigMBean minIdle = -1; maxPoolSize = 10; maxLifetime = MAX_LIFETIME; - isRecordMetrics = false; - metricsTrackerClassName = "com.zaxxer.hikari.metrics.CodaHaleMetricsTracker"; customizer = new IConnectionCustomizer() { @Override public void customize(Connection connection) throws SQLException @@ -433,29 +433,34 @@ public class HikariConfig implements HikariConfigMBean this.isJdbc4connectionTest = useIsValid; } - public boolean isReadOnly() + /** + * Get the Codahale MetricRegistry, could be null. + * + * @return the codahale MetricRegistry instance + */ + public MetricRegistry getMetricRegistry() { - return isReadOnly; + return metricRegistry; } - public void setReadOnly(boolean readOnly) + /** + * Set a Codahale MetricRegistry to use for HikariCP. + * + * @param metricRegistry the Codahale MetricRegistry to set + */ + public void setMetricRegistry(MetricRegistry metricRegistry) { - this.isReadOnly = readOnly; + this.metricRegistry = metricRegistry; } - public boolean isRecordMetrics() + public boolean isReadOnly() { - return isRecordMetrics; + return isReadOnly; } - /** - * Currently not supported. - * @param recordMetrics true if metrics should be recorded - */ - @Deprecated - public void setRecordMetrics(boolean recordMetrics) + public void setReadOnly(boolean readOnly) { - this.isRecordMetrics = recordMetrics; + this.isReadOnly = readOnly; } public boolean isRegisterMbeans() @@ -513,28 +518,6 @@ public class HikariConfig implements HikariConfigMBean this.maxPoolSize = maxPoolSize; } - /** - * Get the name of the class that implements the IMetricsTracker interface to - * be used for metrics tracking. - * - * @return the name of the class that implements the IMetricsTracker interface - */ - public String getMetricsTrackerClassName() - { - return metricsTrackerClassName; - } - - /** - * Set the name of the class that implements the IMetricsTracker interface to - * be used for metrics tracking. - * - * @param className the name of the class that implements the IMetricsTracker interface - */ - public void setMetricsTrackerClassName(String className) - { - this.metricsTrackerClassName = className; - } - /** {@inheritDoc} */ @Override public int getMinimumIdle() diff --git a/hikaricp-java6/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java b/hikaricp-java6/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java index 8f5e3a74..5a56ee6f 100644 --- a/hikaricp-java6/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java +++ b/hikaricp-java6/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java @@ -25,15 +25,13 @@ import com.zaxxer.hikari.util.PoolUtilities; public final class CodaHaleMetricsTracker extends MetricsTracker { - private MetricRegistry registry; private final Timer connectionObtainTimer; private final Histogram connectionUsage; - public CodaHaleMetricsTracker(final HikariPool pool) + public CodaHaleMetricsTracker(final HikariPool pool, final MetricRegistry registry) { super(pool); - registry = new MetricRegistry(); connectionObtainTimer = registry.timer(MetricRegistry.name(pool.getConfiguration().getPoolName(), "-connection", "Wait")); connectionUsage = registry.histogram(MetricRegistry.name(pool.getConfiguration().getPoolName(), "-connection", "Usage")); } diff --git a/hikaricp-java6/src/main/java/com/zaxxer/hikari/metrics/CodaHaleShim.java b/hikaricp-java6/src/main/java/com/zaxxer/hikari/metrics/CodaHaleShim.java new file mode 100644 index 00000000..14f30df9 --- /dev/null +++ b/hikaricp-java6/src/main/java/com/zaxxer/hikari/metrics/CodaHaleShim.java @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2013 Brett Wooldridge + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.zaxxer.hikari.metrics; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javassist.CannotCompileException; +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtConstructor; +import javassist.LoaderClassPath; +import javassist.Modifier; + +/** + * + * @author Brett Wooldridge + */ +public class CodaHaleShim +{ + private static final Logger LOGGER = LoggerFactory.getLogger(CodaHaleShim.class); + + static + { + CodaHaleShim codaHaleShim = new CodaHaleShim(); + codaHaleShim.loadOrShimCodahale(); + } + + private CodaHaleShim() + { + // empty + } + + /** + * Simply invoking this method causes the initialization of this class. All work + * by this class is performed in static initialization. + */ + public static void initialize() + { + // no-op + } + + /** + * + */ + private void loadOrShimCodahale() + { + ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); + + try { + CodaHaleShim.class.getClassLoader().loadClass("com.codahale.metrics.MetricRegistry"); + } + catch (ClassNotFoundException e) { + // OK, it is not present, we have to generate a shim + ClassPool classPool = new ClassPool(); + classPool.appendClassPath(new LoaderClassPath(this.getClass().getClassLoader())); + + try { + CtClass targetCt = classPool.makeClass("com.codahale.metrics.MetricRegistry"); + targetCt.setModifiers(Modifier.PUBLIC | Modifier.FINAL); + + CtConstructor constructorCt = new CtConstructor(null, targetCt); + constructorCt.setModifiers(Modifier.PUBLIC); + constructorCt.setBody("{ throw new RuntimeException(\"HikariCP Codahale shim says: Codahale metrics library is required but was not found in the classpath\"); }"); + targetCt.addConstructor(constructorCt); + + targetCt.toClass(classPool.getClassLoader(), getClass().getProtectionDomain()); + } + catch (CannotCompileException cce) { + LOGGER.error("Cannot generate CodaHale metrics shim", cce); + throw new RuntimeException(cce); + } + } + finally { + Thread.currentThread().setContextClassLoader(contextClassLoader); + } + } +} diff --git a/hikaricp-java6/src/main/java/com/zaxxer/hikari/metrics/MetricsFactory.java b/hikaricp-java6/src/main/java/com/zaxxer/hikari/metrics/MetricsFactory.java deleted file mode 100644 index 5dd30615..00000000 --- a/hikaricp-java6/src/main/java/com/zaxxer/hikari/metrics/MetricsFactory.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2014 Brett Wooldridge - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zaxxer.hikari.metrics; - -import com.zaxxer.hikari.pool.HikariPool; -import com.zaxxer.hikari.util.PoolUtilities; - -/** - * - * @author Brett Wooldridge - */ -public final class MetricsFactory -{ - private MetricsFactory() - { - // private contructor - } - - public static final IMetricsTracker createMetricsTracker(String metricsClassName, HikariPool pool) - { - return PoolUtilities.createInstance(metricsClassName, IMetricsTracker.class, pool); - } -} diff --git a/hikaricp-java6/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/hikaricp-java6/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index fff5f47c..751613ef 100644 --- a/hikaricp-java6/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/hikaricp-java6/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -48,9 +48,9 @@ import org.slf4j.LoggerFactory; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.IConnectionCustomizer; +import com.zaxxer.hikari.metrics.CodaHaleMetricsTracker; import com.zaxxer.hikari.metrics.IMetricsTracker; import com.zaxxer.hikari.metrics.IMetricsTracker.MetricsContext; -import com.zaxxer.hikari.metrics.MetricsFactory; import com.zaxxer.hikari.metrics.MetricsTracker; import com.zaxxer.hikari.proxy.IHikariConnectionProxy; import com.zaxxer.hikari.proxy.ProxyFactory; @@ -140,8 +140,8 @@ public final class HikariPool implements HikariPoolMBean, IBagStateListener this.leakDetectionThreshold = configuration.getLeakDetectionThreshold(); this.isIsolateInternalQueries = configuration.isIsolateInternalQueries(); - this.isRecordMetrics = configuration.isRecordMetrics(); - this.metricsTracker = MetricsFactory.createMetricsTracker((isRecordMetrics ? configuration.getMetricsTrackerClassName() : "com.zaxxer.hikari.metrics.MetricsTracker"), this); + this.isRecordMetrics = configuration.getMetricRegistry() != null; + this.metricsTracker = (isRecordMetrics ? new CodaHaleMetricsTracker(this, configuration.getMetricRegistry()) : new MetricsTracker(this)); this.dataSource = PoolUtilities.initializeDataSource(configuration.getDataSourceClassName(), configuration.getDataSource(), configuration.getDataSourceProperties(), configuration.getJdbcUrl(), username, password); diff --git a/hikaricp-java6/src/test/java/com/zaxxer/hikari/TestConnections.java b/hikaricp-java6/src/test/java/com/zaxxer/hikari/TestConnections.java index 28b16fe8..d8d9a915 100644 --- a/hikaricp-java6/src/test/java/com/zaxxer/hikari/TestConnections.java +++ b/hikaricp-java6/src/test/java/com/zaxxer/hikari/TestConnections.java @@ -41,7 +41,6 @@ import com.zaxxer.hikari.util.PoolUtilities; */ public class TestConnections { - @SuppressWarnings("deprecation") @Test public void testCreate() throws SQLException { @@ -51,7 +50,6 @@ public class TestConnections config.setInitializationFailFast(true); config.setConnectionTestQuery("VALUES 1"); config.setConnectionInitSql("SELECT 1"); - config.setRecordMetrics(true); config.setReadOnly(true); config.setLeakDetectionThreshold(TimeUnit.SECONDS.toMillis(60)); config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource"); diff --git a/hikaricp/src/main/java/com/zaxxer/hikari/HikariConfig.java b/hikaricp/src/main/java/com/zaxxer/hikari/HikariConfig.java index 0b56b6cd..8c0d602c 100644 --- a/hikaricp/src/main/java/com/zaxxer/hikari/HikariConfig.java +++ b/hikaricp/src/main/java/com/zaxxer/hikari/HikariConfig.java @@ -35,6 +35,8 @@ import javax.sql.DataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.codahale.metrics.MetricRegistry; +import com.zaxxer.hikari.metrics.CodaHaleShim; import com.zaxxer.hikari.proxy.JavassistProxyFactory; import com.zaxxer.hikari.util.PoolUtilities; import com.zaxxer.hikari.util.PropertyBeanSetter; @@ -69,7 +71,6 @@ public class HikariConfig implements HikariConfigMBean private String dataSourceJndiName; private String driverClassName; private String jdbcUrl; - private String metricsTrackerClassName; private String password; private String poolName; private String transactionIsolationName; @@ -79,15 +80,16 @@ public class HikariConfig implements HikariConfigMBean private boolean isInitializationFailFast; private boolean isJdbc4connectionTest; private boolean isIsolateInternalQueries; - private boolean isRecordMetrics; private boolean isRegisterMbeans; private DataSource dataSource; private Properties dataSourceProperties; private IConnectionCustomizer customizer; private ThreadFactory threadFactory; + private MetricRegistry metricRegistry; static { JavassistProxyFactory.initialize(); + CodaHaleShim.initialize(); } /** @@ -105,8 +107,6 @@ public class HikariConfig implements HikariConfigMBean minIdle = -1; maxPoolSize = 10; maxLifetime = MAX_LIFETIME; - isRecordMetrics = false; - metricsTrackerClassName = "com.zaxxer.hikari.metrics.CodaHaleMetricsTracker"; customizer = new IConnectionCustomizer() { @Override public void customize(Connection connection) throws SQLException @@ -433,29 +433,34 @@ public class HikariConfig implements HikariConfigMBean this.isJdbc4connectionTest = useIsValid; } - public boolean isReadOnly() + /** + * Get the Codahale MetricRegistry, could be null. + * + * @return the codahale MetricRegistry instance + */ + public MetricRegistry getMetricRegistry() { - return isReadOnly; + return metricRegistry; } - public void setReadOnly(boolean readOnly) + /** + * Set a Codahale MetricRegistry to use for HikariCP. + * + * @param metricRegistry the Codahale MetricRegistry to set + */ + public void setMetricRegistry(MetricRegistry metricRegistry) { - this.isReadOnly = readOnly; + this.metricRegistry = metricRegistry; } - public boolean isRecordMetrics() + public boolean isReadOnly() { - return isRecordMetrics; + return isReadOnly; } - /** - * Currently not supported. - * @param recordMetrics true if metrics should be recorded - */ - @Deprecated - public void setRecordMetrics(boolean recordMetrics) + public void setReadOnly(boolean readOnly) { - this.isRecordMetrics = recordMetrics; + this.isReadOnly = readOnly; } public boolean isRegisterMbeans() @@ -513,28 +518,6 @@ public class HikariConfig implements HikariConfigMBean this.maxPoolSize = maxPoolSize; } - /** - * Get the name of the class that implements the IMetricsTracker interface to - * be used for metrics tracking. - * - * @return the name of the class that implements the IMetricsTracker interface - */ - public String getMetricsTrackerClassName() - { - return metricsTrackerClassName; - } - - /** - * Set the name of the class that implements the IMetricsTracker interface to - * be used for metrics tracking. - * - * @param className the name of the class that implements the IMetricsTracker interface - */ - public void setMetricsTrackerClassName(String className) - { - this.metricsTrackerClassName = className; - } - /** {@inheritDoc} */ @Override public int getMinimumIdle() diff --git a/hikaricp/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java b/hikaricp/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java index 8f5e3a74..5a56ee6f 100644 --- a/hikaricp/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java +++ b/hikaricp/src/main/java/com/zaxxer/hikari/metrics/CodaHaleMetricsTracker.java @@ -25,15 +25,13 @@ import com.zaxxer.hikari.util.PoolUtilities; public final class CodaHaleMetricsTracker extends MetricsTracker { - private MetricRegistry registry; private final Timer connectionObtainTimer; private final Histogram connectionUsage; - public CodaHaleMetricsTracker(final HikariPool pool) + public CodaHaleMetricsTracker(final HikariPool pool, final MetricRegistry registry) { super(pool); - registry = new MetricRegistry(); connectionObtainTimer = registry.timer(MetricRegistry.name(pool.getConfiguration().getPoolName(), "-connection", "Wait")); connectionUsage = registry.histogram(MetricRegistry.name(pool.getConfiguration().getPoolName(), "-connection", "Usage")); } diff --git a/hikaricp/src/main/java/com/zaxxer/hikari/metrics/CodaHaleShim.java b/hikaricp/src/main/java/com/zaxxer/hikari/metrics/CodaHaleShim.java new file mode 100644 index 00000000..68dfb1e6 --- /dev/null +++ b/hikaricp/src/main/java/com/zaxxer/hikari/metrics/CodaHaleShim.java @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2013 Brett Wooldridge + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.zaxxer.hikari.metrics; + +import javassist.CannotCompileException; +import javassist.ClassPool; +import javassist.CtClass; +import javassist.CtConstructor; +import javassist.LoaderClassPath; +import javassist.Modifier; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + * @author Brett Wooldridge + */ +public class CodaHaleShim +{ + private static final Logger LOGGER = LoggerFactory.getLogger(CodaHaleShim.class); + + static + { + CodaHaleShim codaHaleShim = new CodaHaleShim(); + codaHaleShim.loadOrShimCodahale(); + } + + private CodaHaleShim() + { + // empty + } + + /** + * Simply invoking this method causes the initialization of this class. All work + * by this class is performed in static initialization. + */ + public static void initialize() + { + // no-op + } + + /** + * + */ + private void loadOrShimCodahale() + { + ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); + + try { + CodaHaleShim.class.getClassLoader().loadClass("com.codahale.metrics.MetricRegistry"); + } + catch (ClassNotFoundException e) { + // OK, it is not present, we have to generate a shim + ClassPool classPool = new ClassPool(); + classPool.appendClassPath(new LoaderClassPath(this.getClass().getClassLoader())); + + try { + CtClass targetCt = classPool.makeClass("com.codahale.metrics.MetricRegistry"); + targetCt.setModifiers(Modifier.PUBLIC | Modifier.FINAL); + + CtConstructor constructorCt = new CtConstructor(null, targetCt); + constructorCt.setModifiers(Modifier.PUBLIC); + constructorCt.setBody("{ throw new RuntimeException(\"HikariCP Codahale shim says: Codahale metrics library is required but was not found in the classpath\"); }"); + targetCt.addConstructor(constructorCt); + + targetCt.toClass(classPool.getClassLoader(), getClass().getProtectionDomain()); + } + catch (CannotCompileException cce) { + LOGGER.error("Cannot generate CodaHale metrics shim", cce); + throw new RuntimeException(cce); + } + } + finally { + Thread.currentThread().setContextClassLoader(contextClassLoader); + } + } +} diff --git a/hikaricp/src/main/java/com/zaxxer/hikari/metrics/MetricsFactory.java b/hikaricp/src/main/java/com/zaxxer/hikari/metrics/MetricsFactory.java deleted file mode 100644 index 5dd30615..00000000 --- a/hikaricp/src/main/java/com/zaxxer/hikari/metrics/MetricsFactory.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2014 Brett Wooldridge - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zaxxer.hikari.metrics; - -import com.zaxxer.hikari.pool.HikariPool; -import com.zaxxer.hikari.util.PoolUtilities; - -/** - * - * @author Brett Wooldridge - */ -public final class MetricsFactory -{ - private MetricsFactory() - { - // private contructor - } - - public static final IMetricsTracker createMetricsTracker(String metricsClassName, HikariPool pool) - { - return PoolUtilities.createInstance(metricsClassName, IMetricsTracker.class, pool); - } -} diff --git a/hikaricp/src/main/java/com/zaxxer/hikari/pool/HikariPool.java b/hikaricp/src/main/java/com/zaxxer/hikari/pool/HikariPool.java index 4acdf06f..cf092d9f 100644 --- a/hikaricp/src/main/java/com/zaxxer/hikari/pool/HikariPool.java +++ b/hikaricp/src/main/java/com/zaxxer/hikari/pool/HikariPool.java @@ -47,9 +47,9 @@ import org.slf4j.LoggerFactory; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.IConnectionCustomizer; +import com.zaxxer.hikari.metrics.CodaHaleMetricsTracker; import com.zaxxer.hikari.metrics.IMetricsTracker; import com.zaxxer.hikari.metrics.IMetricsTracker.MetricsContext; -import com.zaxxer.hikari.metrics.MetricsFactory; import com.zaxxer.hikari.metrics.MetricsTracker; import com.zaxxer.hikari.proxy.IHikariConnectionProxy; import com.zaxxer.hikari.proxy.ProxyFactory; @@ -139,8 +139,8 @@ public final class HikariPool implements HikariPoolMBean, IBagStateListener this.leakDetectionThreshold = configuration.getLeakDetectionThreshold(); this.isIsolateInternalQueries = configuration.isIsolateInternalQueries(); - this.isRecordMetrics = configuration.isRecordMetrics(); - this.metricsTracker = MetricsFactory.createMetricsTracker((isRecordMetrics ? configuration.getMetricsTrackerClassName() : "com.zaxxer.hikari.metrics.MetricsTracker"), this); + this.isRecordMetrics = configuration.getMetricRegistry() != null; + this.metricsTracker = (isRecordMetrics ? new CodaHaleMetricsTracker(this, configuration.getMetricRegistry()) : new MetricsTracker(this)); this.dataSource = PoolUtilities.initializeDataSource(configuration.getDataSourceClassName(), configuration.getDataSource(), configuration.getDataSourceProperties(), configuration.getJdbcUrl(), username, password); diff --git a/hikaricp/src/test/java/com/zaxxer/hikari/TestConnections.java b/hikaricp/src/test/java/com/zaxxer/hikari/TestConnections.java index 28b16fe8..d8d9a915 100644 --- a/hikaricp/src/test/java/com/zaxxer/hikari/TestConnections.java +++ b/hikaricp/src/test/java/com/zaxxer/hikari/TestConnections.java @@ -41,7 +41,6 @@ import com.zaxxer.hikari.util.PoolUtilities; */ public class TestConnections { - @SuppressWarnings("deprecation") @Test public void testCreate() throws SQLException { @@ -51,7 +50,6 @@ public class TestConnections config.setInitializationFailFast(true); config.setConnectionTestQuery("VALUES 1"); config.setConnectionInitSql("SELECT 1"); - config.setRecordMetrics(true); config.setReadOnly(true); config.setLeakDetectionThreshold(TimeUnit.SECONDS.toMillis(60)); config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");