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)));
+ }
}