This is an automated email from the ASF dual-hosted git repository.

ngangam pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new e7b2380  HIVE-24499: Throw error when connector driver jar is not in 
classpath(Saihemanth Gantasala via Naveen Gangam)
e7b2380 is described below

commit e7b2380375e2a5f284da36d12858271f62fffe0f
Author: saihemanth <saihema...@cloudera.com>
AuthorDate: Tue May 4 10:51:36 2021 -0700

    HIVE-24499: Throw error when connector driver jar is not in 
classpath(Saihemanth Gantasala via Naveen Gangam)
---
 .../dataconnector/AbstractDataConnectorProvider.java      |  4 +++-
 .../dataconnector/jdbc/AbstractJDBCConnectorProvider.java | 15 +++++++++------
 .../dataconnector/jdbc/DerbySQLConnectorProvider.java     |  3 +--
 .../dataconnector/jdbc/MySQLConnectorProvider.java        |  3 +--
 .../dataconnector/jdbc/PostgreSQLConnectorProvider.java   |  3 +--
 5 files changed, 15 insertions(+), 13 deletions(-)

diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/AbstractDataConnectorProvider.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/AbstractDataConnectorProvider.java
index 5375dfd..9a87eb0 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/AbstractDataConnectorProvider.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/AbstractDataConnectorProvider.java
@@ -20,10 +20,12 @@ public abstract class AbstractDataConnectorProvider 
implements IDataConnectorPro
   protected Object  handle = null;
   protected boolean isOpen = false;
   protected DataConnector connector = null;
+  protected String driverClassName = null;
 
-  public AbstractDataConnectorProvider(String dbName, DataConnector connector) 
{
+  public AbstractDataConnectorProvider(String dbName, DataConnector connector, 
String driverClassName) {
     this.scoped_db = dbName;
     this.connector = connector;
+    this.driverClassName = driverClassName;
   }
 
   @Override public final void setScope(String scoped_db) {
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/AbstractJDBCConnectorProvider.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/AbstractJDBCConnectorProvider.java
index e53a356..35fda41 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/AbstractJDBCConnectorProvider.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/AbstractJDBCConnectorProvider.java
@@ -58,8 +58,8 @@ public abstract class AbstractJDBCConnectorProvider extends 
AbstractDataConnecto
   String username = null;
   String password = null; // TODO convert to byte array
 
-  public AbstractJDBCConnectorProvider(String dbName, DataConnector dataConn) {
-    super(dbName, dataConn);
+  public AbstractJDBCConnectorProvider(String dbName, DataConnector dataConn, 
String driverClass) {
+    super(dbName, dataConn, driverClass);
     this.type = connector.getType().toUpperCase(); // TODO
     this.jdbcUrl = connector.getUrl();
     this.username = connector.getParameters().get(JDBC_USERNAME);
@@ -79,16 +79,19 @@ public abstract class AbstractJDBCConnectorProvider extends 
AbstractDataConnecto
     try {
       warehouse = new Warehouse(MetastoreConf.newMetastoreConf());
     } catch (MetaException e) { /* ignore */ }
+
+    try {
+      Class.forName(driverClassName);
+    } catch (ClassNotFoundException cnfe) {
+      LOG.warn("Driver class not found in classpath:" + driverClassName);
+      throw new RuntimeException("Driver class not found:" + 
driverClass.getClass().getName(), cnfe);
+    }
   }
 
   @Override public void open() throws ConnectException {
     try {
-      Class.forName(driverClassName);
       handle = DriverManager.getConnection(jdbcUrl, username, password);
       isOpen = true;
-    } catch (ClassNotFoundException cnfe) {
-      LOG.warn("Driver class not found in classpath:" + driverClassName);
-      throw new RuntimeException("Driver class not found:" + driverClassName, 
cnfe);
     } catch (SQLException sqle) {
       LOG.warn("Could not connect to remote data source at " + jdbcUrl);
       throw new ConnectException("Could not connect to remote datasource at " 
+ jdbcUrl + ",cause:" + sqle.getMessage());
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/DerbySQLConnectorProvider.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/DerbySQLConnectorProvider.java
index 9830974..21c2887 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/DerbySQLConnectorProvider.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/DerbySQLConnectorProvider.java
@@ -19,8 +19,7 @@ public class DerbySQLConnectorProvider extends 
AbstractJDBCConnectorProvider {
   private static final String DRIVER_CLASS = 
"org.apache.derby.jdbc.AutoloadedDriver".intern();
 
   public DerbySQLConnectorProvider(String dbName, DataConnector connector) {
-    super(dbName, connector);
-    driverClassName = DRIVER_CLASS;
+    super(dbName, connector, DRIVER_CLASS);
   }
 
   /**
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/MySQLConnectorProvider.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/MySQLConnectorProvider.java
index 9b8b434..da89116 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/MySQLConnectorProvider.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/MySQLConnectorProvider.java
@@ -18,8 +18,7 @@ public class MySQLConnectorProvider extends 
AbstractJDBCConnectorProvider {
   private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver".intern();
 
   public MySQLConnectorProvider(String dbName, DataConnector dataConn) {
-    super(dbName, dataConn);
-    driverClassName = DRIVER_CLASS;
+    super(dbName, dataConn, DRIVER_CLASS);
   }
 
   /**
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/PostgreSQLConnectorProvider.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/PostgreSQLConnectorProvider.java
index 51bc97e..736de46 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/PostgreSQLConnectorProvider.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/dataconnector/jdbc/PostgreSQLConnectorProvider.java
@@ -16,8 +16,7 @@ public class PostgreSQLConnectorProvider extends 
AbstractJDBCConnectorProvider {
   private static final String DRIVER_CLASS = "org.postgresql.Driver".intern();
 
   public PostgreSQLConnectorProvider(String dbName, DataConnector dataConn) {
-    super(dbName, dataConn);
-    driverClassName = DRIVER_CLASS;
+    super(dbName, dataConn, DRIVER_CLASS);
   }
 
   /**

Reply via email to