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 13b958b  HIVE-25506: Ignore mulitple password sources in 
JdbcStorageHandler(Harish Perumal via Naveen Gangam)
13b958b is described below

commit 13b958b76973b963f3b497cf42e2bc2965c15e24
Author: Harish Jaiprakash <[email protected]>
AuthorDate: Wed Sep 8 16:04:59 2021 -0700

    HIVE-25506: Ignore mulitple password sources in JdbcStorageHandler(Harish 
Perumal via Naveen Gangam)
---
 .../jdbc/conf/JdbcStorageConfigManager.java        |  8 +++++--
 .../jdbc/conf}/TestJdbcStorageConfigManager.java   | 26 ++++++++++++++--------
 2 files changed, 23 insertions(+), 11 deletions(-)

diff --git 
a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/JdbcStorageConfigManager.java
 
b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/JdbcStorageConfigManager.java
index 0175409..182ccfd 100644
--- 
a/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/JdbcStorageConfigManager.java
+++ 
b/jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/JdbcStorageConfigManager.java
@@ -88,8 +88,12 @@ public class JdbcStorageConfigManager {
     String keystore = 
properties.getProperty(keyTransform.apply(CONFIG_PWD_KEYSTORE));
     String uri = properties.getProperty(keyTransform.apply(CONFIG_PWD_URI));
     if (countNonNull(passwd, keystore, uri) > 1) {
-      throw new HiveException(
-          "Only one of " + CONFIG_PWD + ", " + CONFIG_PWD_KEYSTORE + ", " + 
CONFIG_PWD_URI + " can be set");
+      // In tez, when the job conf is copied there is a code path in 
HiveInputFormat where all the table properties
+      // are copied and the password is copied from the job credentials, so 
its possible to have 2 of them set.
+      // For now ignore this and print a warning message, we should fix so 
that the above code is used instead.
+      LOGGER.warn("Only one of " + CONFIG_PWD + ", " + CONFIG_PWD_KEYSTORE + 
", " + CONFIG_PWD_URI + " can be set");
+      // throw new HiveException(
+      //    "Only one of " + CONFIG_PWD + ", " + CONFIG_PWD_KEYSTORE + ", " + 
CONFIG_PWD_URI + " can be set");
     }
     if (passwd == null && keystore != null) {
       String key = properties.getProperty(keyTransform.apply(CONFIG_PWD_KEY));
diff --git 
a/jdbc-handler/src/test/java/org/apache/hive/config/TestJdbcStorageConfigManager.java
 
b/jdbc-handler/src/test/java/org/apache/hive/storage/jdbc/conf/TestJdbcStorageConfigManager.java
similarity index 80%
rename from 
jdbc-handler/src/test/java/org/apache/hive/config/TestJdbcStorageConfigManager.java
rename to 
jdbc-handler/src/test/java/org/apache/hive/storage/jdbc/conf/TestJdbcStorageConfigManager.java
index 3db15b7..7534fb6 100644
--- 
a/jdbc-handler/src/test/java/org/apache/hive/config/TestJdbcStorageConfigManager.java
+++ 
b/jdbc-handler/src/test/java/org/apache/hive/storage/jdbc/conf/TestJdbcStorageConfigManager.java
@@ -12,11 +12,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.hive.config;
+package org.apache.hive.storage.jdbc.conf;
 
-import org.apache.hive.storage.jdbc.conf.DatabaseType;
-import org.apache.hive.storage.jdbc.conf.JdbcStorageConfig;
-import org.apache.hive.storage.jdbc.conf.JdbcStorageConfigManager;
 import org.junit.Ignore;
 import org.junit.Test;
 
@@ -24,10 +21,10 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.notNullValue;
-import static org.junit.Assert.assertThat;
 
 public class TestJdbcStorageConfigManager {
 
@@ -39,7 +36,7 @@ public class TestJdbcStorageConfigManager {
     props.put(JdbcStorageConfig.QUERY.getPropertyName(), "SELECT 
col1,col2,col3 FROM sometable");
     props.put(JdbcStorageConfig.JDBC_DRIVER_CLASS.getPropertyName(), 
"com.mysql.jdbc.Driver");
 
-    Map<String, String> jobMap = new HashMap<String, String>();
+    Map<String, String> jobMap = new HashMap<>();
     JdbcStorageConfigManager.copyConfigurationToJob(props, jobMap);
 
     assertThat(jobMap, is(notNullValue()));
@@ -58,7 +55,7 @@ public class TestJdbcStorageConfigManager {
     props.put(JdbcStorageConfig.DATABASE_TYPE.getPropertyName(), 
DatabaseType.MYSQL.toString());
     props.put(JdbcStorageConfig.QUERY.getPropertyName(), "SELECT 
col1,col2,col3 FROM sometable");
 
-    Map<String, String> jobMap = new HashMap<String, String>();
+    Map<String, String> jobMap = new HashMap<>();
     JdbcStorageConfigManager.copyConfigurationToJob(props, jobMap);
   }
 
@@ -69,7 +66,7 @@ public class TestJdbcStorageConfigManager {
     props.put(JdbcStorageConfig.JDBC_URL.getPropertyName(), 
"jdbc://localhost:3306/hive");
     props.put(JdbcStorageConfig.QUERY.getPropertyName(), "SELECT 
col1,col2,col3 FROM sometable");
 
-    Map<String, String> jobMap = new HashMap<String, String>();
+    Map<String, String> jobMap = new HashMap<>();
     JdbcStorageConfigManager.copyConfigurationToJob(props, jobMap);
   }
 
@@ -81,8 +78,19 @@ public class TestJdbcStorageConfigManager {
     props.put(JdbcStorageConfig.JDBC_URL.getPropertyName(), 
"jdbc://localhost:3306/hive");
     props.put(JdbcStorageConfig.QUERY.getPropertyName(), "SELECT 
col1,col2,col3 FROM sometable");
 
-    Map<String, String> jobMap = new HashMap<String, String>();
+    Map<String, String> jobMap = new HashMap<>();
     JdbcStorageConfigManager.copyConfigurationToJob(props, jobMap);
   }
 
+  @Test
+  public void testExtractPassword() throws Exception {
+    String prefix = "test.";
+    String password = "my-super-secret";
+    Properties props = new Properties();
+    props.put(prefix + JdbcStorageConfigManager.CONFIG_PWD, password);
+    props.put(prefix + JdbcStorageConfigManager.CONFIG_PWD_URI, 
"test:///random-stuff");
+
+    String passwd = JdbcStorageConfigManager.getPasswordFromProperties(props, 
s -> prefix + s);
+    assertThat(passwd, is(equalTo(password)));
+  }
 }

Reply via email to