You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by yc...@apache.org on 2019/01/26 05:27:50 UTC
hive git commit: HIVE-21045: Add HMS total api count stats and
connection pool stats to metrics (Karthik Manamcheri,
reviewed by Naveen Gangam and Yongzhi Chen)
Repository: hive
Updated Branches:
refs/heads/master a3bac4d7e -> fd92d8865
HIVE-21045: Add HMS total api count stats and connection pool stats to metrics (Karthik Manamcheri, reviewed by Naveen Gangam and Yongzhi Chen)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/fd92d886
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/fd92d886
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/fd92d886
Branch: refs/heads/master
Commit: fd92d88655a93673f4cdebfa4bd46d059ea57e9c
Parents: a3bac4d
Author: Yongzhi Chen <yc...@apache.org>
Authored: Fri Jan 25 17:14:47 2019 -0500
Committer: Yongzhi Chen <yc...@apache.org>
Committed: Sat Jan 26 00:19:08 2019 -0500
----------------------------------------------------------------------
.../metastore/PersistenceManagerProvider.java | 5 +-
.../datasource/BoneCPDataSourceProvider.java | 107 ++++++++++++++++---
.../datasource/DataSourceProvider.java | 18 ++--
.../datasource/DataSourceProviderFactory.java | 48 +++------
.../datasource/DbCPDataSourceProvider.java | 7 +-
.../datasource/HikariCPDataSourceProvider.java | 23 ++--
.../metastore/metrics/MetricsConstants.java | 2 +
.../hive/metastore/metrics/PerfLogger.java | 17 ++-
.../hadoop/hive/metastore/txn/TxnHandler.java | 2 +-
.../TestDataSourceProviderFactory.java | 87 ++-------------
10 files changed, 168 insertions(+), 148 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/fd92d886/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/PersistenceManagerProvider.java
----------------------------------------------------------------------
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/PersistenceManagerProvider.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/PersistenceManagerProvider.java
index dfd7abf..084ae83 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/PersistenceManagerProvider.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/PersistenceManagerProvider.java
@@ -54,7 +54,6 @@ import javax.jdo.datastore.DataStoreCache;
import javax.sql.DataSource;
import java.io.IOException;
import java.lang.reflect.Field;
-import java.lang.reflect.Method;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collections;
@@ -225,9 +224,7 @@ public class PersistenceManagerProvider {
}
private static void initPMF(Configuration conf) {
- DataSourceProvider dsp = DataSourceProviderFactory
- .hasProviderSpecificConfigurations(conf) ? DataSourceProviderFactory
- .getDataSourceProvider(conf) : null;
+ DataSourceProvider dsp = DataSourceProviderFactory.tryGetDataSourceProviderOrNull(conf);
if (dsp == null) {
pmf = JDOHelper.getPersistenceManagerFactory(prop);
http://git-wip-us.apache.org/repos/asf/hive/blob/fd92d886/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java
----------------------------------------------------------------------
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java
index 7e33c51..f3243c5 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/BoneCPDataSourceProvider.java
@@ -17,17 +17,27 @@
*/
package org.apache.hadoop.hive.metastore.datasource;
+import java.sql.SQLException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Properties;
+import javax.sql.DataSource;
+
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Metric;
+import com.codahale.metrics.MetricRegistry;
+import com.codahale.metrics.MetricSet;
import com.jolbox.bonecp.BoneCPConfig;
import com.jolbox.bonecp.BoneCPDataSource;
+import com.jolbox.bonecp.StatisticsMBean;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.metastore.conf.MetastoreConf;
+import org.apache.hadoop.hive.metastore.metrics.Metrics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.sql.DataSource;
-import java.sql.SQLException;
-import java.util.Properties;
-
/**
* DataSourceProvider for the BoneCP connection pool.
*/
@@ -61,15 +71,16 @@ public class BoneCPDataSourceProvider implements DataSourceProvider {
throw new SQLException("Cannot create BoneCP configuration: ", e);
}
config.setJdbcUrl(driverUrl);
- //if we are waiting for connection for a long time, something is really wrong
- //better raise an error than hang forever
- //see DefaultConnectionStrategy.getConnectionInternal()
+ // if we are waiting for connection for a long time, something is really wrong
+ // better raise an error than hang forever
+ // see DefaultConnectionStrategy.getConnectionInternal()
config.setConnectionTimeoutInMs(connectionTimeout);
config.setMaxConnectionsPerPartition(maxPoolSize);
config.setPartitionCount(Integer.parseInt(partitionCount));
config.setUser(user);
config.setPassword(passwd);
- return new BoneCPDataSource(config);
+
+ return initMetrics(new BoneCPDataSource(config));
}
@Override
@@ -79,9 +90,81 @@ public class BoneCPDataSourceProvider implements DataSourceProvider {
}
@Override
- public boolean supports(Configuration configuration) {
- String poolingType = MetastoreConf.getVar(configuration,
- MetastoreConf.ConfVars.CONNECTION_POOLING_TYPE);
- return BONECP.equalsIgnoreCase(poolingType);
+ public String getPoolingType() {
+ return BONECP;
+ }
+
+ private BoneCPDataSource initMetrics(BoneCPDataSource ds) {
+ final MetricRegistry registry = Metrics.getRegistry();
+ if (registry != null) {
+ registry.registerAll(new BoneCPMetrics(ds));
+ }
+ return ds;
+ }
+
+ private static class BoneCPMetrics implements MetricSet {
+ private BoneCPDataSource ds;
+ private Optional<String> poolName;
+
+ private BoneCPMetrics(final BoneCPDataSource ds) {
+ this.ds = ds;
+ this.poolName = Optional.ofNullable(ds.getPoolName());
+ }
+
+ private String name(final String gaugeName) {
+ return poolName.orElse("BoneCP") + ".pool." + gaugeName;
+ }
+
+ @Override
+ public Map<String, Metric> getMetrics() {
+ final Map<String, Metric> gauges = new HashMap<>();
+
+ gauges.put(name("TotalConnections"), new Gauge<Integer>() {
+ @Override
+ public Integer getValue() {
+ if (ds.getPool() != null) {
+ return ds.getPool().getStatistics().getTotalCreatedConnections();
+ } else {
+ return 0;
+ }
+ }
+ });
+
+ gauges.put(name("IdleConnections"), new Gauge<Integer>() {
+ @Override
+ public Integer getValue() {
+ if (ds.getPool() != null) {
+ return ds.getPool().getStatistics().getTotalFree();
+ } else {
+ return 0;
+ }
+ }
+ });
+
+ gauges.put(name("ActiveConnections"), new Gauge<Integer>() {
+ @Override
+ public Integer getValue() {
+ if (ds.getPool() != null) {
+ return ds.getPool().getStatistics().getTotalLeased();
+ } else {
+ return 0;
+ }
+ }
+ });
+
+ gauges.put(name("WaitTimeAvg"), new Gauge<Double>() {
+ @Override
+ public Double getValue() {
+ if (ds.getPool() != null) {
+ return ds.getPool().getStatistics().getConnectionWaitTimeAvg();
+ } else {
+ return 0.0;
+ }
+ }
+ });
+
+ return Collections.unmodifiableMap(gauges);
+ }
}
+
}
http://git-wip-us.apache.org/repos/asf/hive/blob/fd92d886/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DataSourceProvider.java
----------------------------------------------------------------------
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DataSourceProvider.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DataSourceProvider.java
index 6dc63fb..d71fa7d 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DataSourceProvider.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DataSourceProvider.java
@@ -17,14 +17,14 @@
*/
package org.apache.hadoop.hive.metastore.datasource;
-import com.google.common.collect.Iterables;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hive.metastore.conf.MetastoreConf;
-
-import javax.sql.DataSource;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Properties;
+import javax.sql.DataSource;
+
+import com.google.common.collect.Iterables;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.metastore.conf.MetastoreConf;
public interface DataSourceProvider {
@@ -42,11 +42,11 @@ public interface DataSourceProvider {
boolean mayReturnClosedConnection();
/**
- * @param configuration Hadoop configuration object
- * @return factory able to create a connection pool for the implementation
- * specified in the configuration
+ * Get the declared pooling type string. This is used to check against the constant in
+ * config options.
+ * @return The pooling type string associated with the data source.
*/
- boolean supports(Configuration configuration);
+ String getPoolingType();
/**
* @param hdpConfig
http://git-wip-us.apache.org/repos/asf/hive/blob/fd92d886/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DataSourceProviderFactory.java
----------------------------------------------------------------------
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DataSourceProviderFactory.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DataSourceProviderFactory.java
index 5a92e10..bad12b2 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DataSourceProviderFactory.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DataSourceProviderFactory.java
@@ -27,40 +27,26 @@ import org.apache.hadoop.hive.metastore.conf.MetastoreConf;
* Configuration object.
*/
public abstract class DataSourceProviderFactory {
-
- private static final ImmutableList<DataSourceProvider> FACTORIES =
- ImmutableList.<DataSourceProvider>builder().add(new HikariCPDataSourceProvider(), new BoneCPDataSourceProvider(),
- new DbCPDataSourceProvider()).build();
+ private static final ImmutableList<DataSourceProvider> FACTORIES = ImmutableList.of(
+ new HikariCPDataSourceProvider(),
+ new BoneCPDataSourceProvider(),
+ new DbCPDataSourceProvider());
/**
+ * The data source providers declare if they are supported or not based on the config.
+ * This function looks through all the data source providers and picks the first one which is
+ * supported. If no data source provider is found, returns a null.
+ *
* @param hdpConfig hadoop configuration
- * @return factory for the configured datanucleus.connectionPoolingType
+ * @return factory for the configured datanucleus.connectionPoolingType or null if no supported
+ * data source providers are found.
*/
- public static DataSourceProvider getDataSourceProvider(Configuration hdpConfig) {
-
- for (DataSourceProvider factory : FACTORIES) {
-
- if (factory.supports(hdpConfig)) {
- return factory;
- }
- }
- return null;
+ public static DataSourceProvider tryGetDataSourceProviderOrNull(Configuration hdpConfig) {
+ final String configuredPoolingType = MetastoreConf.getVar(hdpConfig,
+ MetastoreConf.ConfVars.CONNECTION_POOLING_TYPE);
+ return Iterables.tryFind(FACTORIES, factory -> {
+ String poolingType = factory.getPoolingType();
+ return poolingType != null && poolingType.equalsIgnoreCase(configuredPoolingType);
+ }).orNull();
}
-
- /**
- * @param hdpConfig hadoop configuration
- * @return true if the configuration contains settings specifically aimed for one
- * of the supported conntection pool implementations.
- */
- public static boolean hasProviderSpecificConfigurations(Configuration hdpConfig) {
-
- String poolingType = MetastoreConf.getVar(hdpConfig, MetastoreConf.ConfVars.CONNECTION_POOLING_TYPE).toLowerCase();
-
- return Iterables.any(hdpConfig, entry ->
- {
- String key = entry.getKey();
- return key != null && (key.startsWith(poolingType));
- });
- }
-
}
http://git-wip-us.apache.org/repos/asf/hive/blob/fd92d886/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java
----------------------------------------------------------------------
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java
index 7fe487b..1275e54 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/DbCPDataSourceProvider.java
@@ -17,6 +17,7 @@
*/
package org.apache.hadoop.hive.metastore.datasource;
+import com.codahale.metrics.MetricRegistry;
import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnectionFactory;
@@ -109,9 +110,7 @@ public class DbCPDataSourceProvider implements DataSourceProvider {
}
@Override
- public boolean supports(Configuration configuration) {
- String poolingType = MetastoreConf.getVar(configuration,
- MetastoreConf.ConfVars.CONNECTION_POOLING_TYPE);
- return DBCP.equalsIgnoreCase(poolingType);
+ public String getPoolingType() {
+ return DBCP;
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/fd92d886/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java
----------------------------------------------------------------------
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java
index 8f6ae57..7fd78d6 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/datasource/HikariCPDataSourceProvider.java
@@ -17,10 +17,12 @@
*/
package org.apache.hadoop.hive.metastore.datasource;
+import com.codahale.metrics.MetricRegistry;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.metastore.conf.MetastoreConf;
+import org.apache.hadoop.hive.metastore.metrics.Metrics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,8 +37,8 @@ public class HikariCPDataSourceProvider implements DataSourceProvider {
private static final Logger LOG = LoggerFactory.getLogger(HikariCPDataSourceProvider.class);
- public static final String HIKARI = "hikaricp";
- private static final String CONNECTION_TIMEOUT_PROPERTY= HIKARI + ".connectionTimeout";
+ static final String HIKARI = "hikaricp";
+ private static final String CONNECTION_TIMEOUT_PROPERTY = HIKARI + ".connectionTimeout";
@Override
public DataSource create(Configuration hdpConfig) throws SQLException {
@@ -64,7 +66,8 @@ public class HikariCPDataSourceProvider implements DataSourceProvider {
config.setPassword(passwd);
//https://github.com/brettwooldridge/HikariCP
config.setConnectionTimeout(connectionTimeout);
- return new HikariDataSource(config);
+
+ return new HikariDataSource(initMetrics(config));
}
@Override
@@ -74,10 +77,8 @@ public class HikariCPDataSourceProvider implements DataSourceProvider {
}
@Override
- public boolean supports(Configuration configuration) {
- String poolingType = MetastoreConf.getVar(configuration,
- MetastoreConf.ConfVars.CONNECTION_POOLING_TYPE);
- return HIKARI.equalsIgnoreCase(poolingType);
+ public String getPoolingType() {
+ return HIKARI;
}
private Properties replacePrefix(Properties props) {
@@ -86,4 +87,12 @@ public class HikariCPDataSourceProvider implements DataSourceProvider {
newProps.put(key.toString().replaceFirst(HIKARI + ".", ""), value));
return newProps;
}
+
+ private static HikariConfig initMetrics(final HikariConfig config) {
+ final MetricRegistry registry = Metrics.getRegistry();
+ if (registry != null) {
+ config.setMetricRegistry(registry);
+ }
+ return config;
+ }
}
http://git-wip-us.apache.org/repos/asf/hive/blob/fd92d886/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/metrics/MetricsConstants.java
----------------------------------------------------------------------
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/metrics/MetricsConstants.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/metrics/MetricsConstants.java
index 3b188f8..24c8c4c 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/metrics/MetricsConstants.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/metrics/MetricsConstants.java
@@ -21,6 +21,8 @@ public class MetricsConstants {
public static final String ACTIVE_CALLS = "active_calls_";
public static final String API_PREFIX = "api_";
+ public static final String TOTAL_API_CALLS = "total_api_calls";
+
public static final String CREATE_TOTAL_DATABASES = "create_total_count_dbs";
public static final String CREATE_TOTAL_TABLES = "create_total_count_tables";
public static final String CREATE_TOTAL_PARTITIONS = "create_total_count_partitions";
http://git-wip-us.apache.org/repos/asf/hive/blob/fd92d886/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/metrics/PerfLogger.java
----------------------------------------------------------------------
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/metrics/PerfLogger.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/metrics/PerfLogger.java
index a2def26..c111343 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/metrics/PerfLogger.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/metrics/PerfLogger.java
@@ -164,15 +164,19 @@ public class PerfLogger {
return ImmutableMap.copyOf(endTimes);
}
- //Methods for metrics integration. Each thread-local PerfLogger will open/close scope during each perf-log method.
- protected transient Map<String, Timer.Context> timerContexts = new HashMap<>();
+ // Methods for metrics integration. Each thread-local PerfLogger will open/close scope during each perf-log method.
+ private transient Map<String, Timer.Context> timerContexts = new HashMap<>();
+ private transient Timer.Context totalApiCallsTimerContext = null;
private void beginMetrics(String method) {
Timer timer = Metrics.getOrCreateTimer(MetricsConstants.API_PREFIX + method);
if (timer != null) {
timerContexts.put(method, timer.time());
}
-
+ timer = Metrics.getOrCreateTimer(MetricsConstants.TOTAL_API_CALLS);
+ if (timer != null) {
+ totalApiCallsTimerContext = timer.time();
+ }
}
private void endMetrics(String method) {
@@ -180,6 +184,9 @@ public class PerfLogger {
if (context != null) {
context.close();
}
+ if (totalApiCallsTimerContext != null) {
+ totalApiCallsTimerContext.close();
+ }
}
/**
@@ -190,5 +197,9 @@ public class PerfLogger {
context.close();
}
timerContexts.clear();
+ if (totalApiCallsTimerContext != null) {
+ totalApiCallsTimerContext.close();
+ totalApiCallsTimerContext = null;
+ }
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/fd92d886/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
----------------------------------------------------------------------
diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
index a17abfc..7520922 100644
--- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
+++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnHandler.java
@@ -5013,7 +5013,7 @@ abstract class TxnHandler implements TxnStore, TxnStore.MutexAPI {
}
private static synchronized DataSource setupJdbcConnectionPool(Configuration conf, int maxPoolSize, long getConnectionTimeoutMs) throws SQLException {
- DataSourceProvider dsp = DataSourceProviderFactory.getDataSourceProvider(conf);
+ DataSourceProvider dsp = DataSourceProviderFactory.tryGetDataSourceProviderOrNull(conf);
if (dsp != null) {
doRetryOnConnPool = dsp.mayReturnClosedConnection();
return dsp.create(conf);
http://git-wip-us.apache.org/repos/asf/hive/blob/fd92d886/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/datasource/TestDataSourceProviderFactory.java
----------------------------------------------------------------------
diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/datasource/TestDataSourceProviderFactory.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/datasource/TestDataSourceProviderFactory.java
index 6ae7f50..f3b6f9f 100644
--- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/datasource/TestDataSourceProviderFactory.java
+++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/datasource/TestDataSourceProviderFactory.java
@@ -50,29 +50,16 @@ public class TestDataSourceProviderFactory {
MetastoreConf.setVar(conf, ConfVars.CONNECTION_POOLING_TYPE, "dummy");
- DataSourceProvider dsp = DataSourceProviderFactory.getDataSourceProvider(conf);
+ DataSourceProvider dsp = DataSourceProviderFactory.tryGetDataSourceProviderOrNull(conf);
Assert.assertNull(dsp);
}
@Test
- public void testCanCreateDataSourceForSpecificProp() throws SQLException {
-
- Assert.assertFalse(
- DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- MetastoreConf.setVar(conf, ConfVars.CONNECTION_POOLING_TYPE, BoneCPDataSourceProvider.BONECP);
- conf.set(BoneCPDataSourceProvider.BONECP + ".dummy.var", "dummy");
-
- Assert.assertTrue(
- DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
- }
-
- @Test
public void testCreateBoneCpDataSource() throws SQLException {
MetastoreConf.setVar(conf, ConfVars.CONNECTION_POOLING_TYPE, BoneCPDataSourceProvider.BONECP);
- DataSourceProvider dsp = DataSourceProviderFactory.getDataSourceProvider(conf);
+ DataSourceProvider dsp = DataSourceProviderFactory.tryGetDataSourceProviderOrNull(conf);
Assert.assertNotNull(dsp);
DataSource ds = dsp.create(conf);
@@ -85,7 +72,7 @@ public class TestDataSourceProviderFactory {
MetastoreConf.setVar(conf, ConfVars.CONNECTION_POOLING_TYPE, BoneCPDataSourceProvider.BONECP);
conf.set(BoneCPDataSourceProvider.BONECP + ".initSQL", "select 1 from dual");
- DataSourceProvider dsp = DataSourceProviderFactory.getDataSourceProvider(conf);
+ DataSourceProvider dsp = DataSourceProviderFactory.tryGetDataSourceProviderOrNull(conf);
Assert.assertNotNull(dsp);
DataSource ds = dsp.create(conf);
@@ -99,7 +86,7 @@ public class TestDataSourceProviderFactory {
MetastoreConf.setVar(conf, ConfVars.CONNECTION_POOLING_TYPE, BoneCPDataSourceProvider.BONECP);
conf.set(BoneCPDataSourceProvider.BONECP + ".acquireRetryDelayInMs", "599");
- DataSourceProvider dsp = DataSourceProviderFactory.getDataSourceProvider(conf);
+ DataSourceProvider dsp = DataSourceProviderFactory.tryGetDataSourceProviderOrNull(conf);
Assert.assertNotNull(dsp);
DataSource ds = dsp.create(conf);
@@ -113,7 +100,7 @@ public class TestDataSourceProviderFactory {
MetastoreConf.setVar(conf, ConfVars.CONNECTION_POOLING_TYPE, BoneCPDataSourceProvider.BONECP);
conf.set(BoneCPDataSourceProvider.BONECP + ".disableJMX", "true");
- DataSourceProvider dsp = DataSourceProviderFactory.getDataSourceProvider(conf);
+ DataSourceProvider dsp = DataSourceProviderFactory.tryGetDataSourceProviderOrNull(conf);
Assert.assertNotNull(dsp);
DataSource ds = dsp.create(conf);
@@ -128,7 +115,7 @@ public class TestDataSourceProviderFactory {
// This is needed to prevent the HikariDataSource from trying to connect to the DB
conf.set(HikariCPDataSourceProvider.HIKARI + ".initializationFailTimeout", "-1");
- DataSourceProvider dsp = DataSourceProviderFactory.getDataSourceProvider(conf);
+ DataSourceProvider dsp = DataSourceProviderFactory.tryGetDataSourceProviderOrNull(conf);
Assert.assertNotNull(dsp);
DataSource ds = dsp.create(conf);
@@ -142,7 +129,7 @@ public class TestDataSourceProviderFactory {
conf.set(HikariCPDataSourceProvider.HIKARI + ".connectionInitSql", "select 1 from dual");
conf.set(HikariCPDataSourceProvider.HIKARI + ".initializationFailTimeout", "-1");
- DataSourceProvider dsp = DataSourceProviderFactory.getDataSourceProvider(conf);
+ DataSourceProvider dsp = DataSourceProviderFactory.tryGetDataSourceProviderOrNull(conf);
Assert.assertNotNull(dsp);
DataSource ds = dsp.create(conf);
@@ -157,7 +144,7 @@ public class TestDataSourceProviderFactory {
conf.set(HikariCPDataSourceProvider.HIKARI + ".idleTimeout", "59999");
conf.set(HikariCPDataSourceProvider.HIKARI + ".initializationFailTimeout", "-1");
- DataSourceProvider dsp = DataSourceProviderFactory.getDataSourceProvider(conf);
+ DataSourceProvider dsp = DataSourceProviderFactory.tryGetDataSourceProviderOrNull(conf);
Assert.assertNotNull(dsp);
DataSource ds = dsp.create(conf);
@@ -172,7 +159,7 @@ public class TestDataSourceProviderFactory {
conf.set(HikariCPDataSourceProvider.HIKARI + ".allowPoolSuspension", "false");
conf.set(HikariCPDataSourceProvider.HIKARI + ".initializationFailTimeout", "-1");
- DataSourceProvider dsp = DataSourceProviderFactory.getDataSourceProvider(conf);
+ DataSourceProvider dsp = DataSourceProviderFactory.tryGetDataSourceProviderOrNull(conf);
Assert.assertNotNull(dsp);
DataSource ds = dsp.create(conf);
@@ -185,64 +172,10 @@ public class TestDataSourceProviderFactory {
MetastoreConf.setVar(conf, ConfVars.CONNECTION_POOLING_TYPE, DbCPDataSourceProvider.DBCP);
- DataSourceProvider dsp = DataSourceProviderFactory.getDataSourceProvider(conf);
+ DataSourceProvider dsp = DataSourceProviderFactory.tryGetDataSourceProviderOrNull(conf);
Assert.assertNotNull(dsp);
DataSource ds = dsp.create(conf);
Assert.assertTrue(ds instanceof PoolingDataSource);
}
-
- @Test
- public void testHasProviderSpecificConfigurationBonecp() throws SQLException {
-
- MetastoreConf.setVar(conf, ConfVars.CONNECTION_POOLING_TYPE, BoneCPDataSourceProvider.BONECP);
-
- Assert.assertFalse(DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- conf.set("dbcp.dummyConf", "dummyValue");
- Assert.assertFalse(DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- conf.set("hikaricp.dummyConf", "dummyValue");
- Assert.assertFalse(DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- conf.set("bonecp.dummyConf", "dummyValue");
- Assert.assertTrue(DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- }
-
- @Test
- public void testHasProviderSpecificConfigurationHikaricp() throws SQLException {
-
- MetastoreConf.setVar(conf, ConfVars.CONNECTION_POOLING_TYPE, HikariCPDataSourceProvider.HIKARI);
-
- Assert.assertFalse(DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- conf.set("dbcp.dummyConf", "dummyValue");
- Assert.assertFalse(DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- conf.set("bonecp.dummyConf", "dummyValue");
- Assert.assertFalse(DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- conf.set("hikaricp.dummyConf", "dummyValue");
- Assert.assertTrue(DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- }
-
- @Test
- public void testHasProviderSpecificConfigurationDbcp() throws SQLException {
-
- MetastoreConf.setVar(conf, ConfVars.CONNECTION_POOLING_TYPE, DbCPDataSourceProvider.DBCP);
-
- Assert.assertFalse(DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- conf.set("hikaricp.dummyConf", "dummyValue");
- Assert.assertFalse(DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- conf.set("bonecp.dummyConf", "dummyValue");
- Assert.assertFalse(DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- conf.set("dbcp.dummyConf", "dummyValue");
- Assert.assertTrue(DataSourceProviderFactory.hasProviderSpecificConfigurations(conf));
-
- }
}