From 30db5503900534e1825aec3bbdd0af950d9dc3e7 Mon Sep 17 00:00:00 2001 From: Nishant Bangarwa Date: Thu, 24 Oct 2019 00:38:01 +0530 Subject: [PATCH] [HIVE-22395] ability to read druid metastore password from jceks --- .../hadoop/hive/druid/DruidStorageHandler.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/druid-handler/src/java/org/apache/hadoop/hive/druid/DruidStorageHandler.java b/druid-handler/src/java/org/apache/hadoop/hive/druid/DruidStorageHandler.java index 287cf5f8ce..725676fad5 100644 --- a/druid-handler/src/java/org/apache/hadoop/hive/druid/DruidStorageHandler.java +++ b/druid-handler/src/java/org/apache/hadoop/hive/druid/DruidStorageHandler.java @@ -831,6 +831,16 @@ private SQLMetadataConnector getConnector() { return Suppliers.memoize(this::buildConnector).get(); } + private static String getPassword(Configuration conf, HiveConf.ConfVars var) { + try { + return String.valueOf(conf.getPassword(var.varname)); + } catch (IOException e) { + // Reading password from configuration for backwards compatibility. + LOG.warn("Unable to retrieve password from credential providers. Trying to read it from config..", e); + return conf.get(var.varname); + } + } + private SQLMetadataConnector buildConnector() { if (connector != null) { @@ -839,7 +849,7 @@ private SQLMetadataConnector buildConnector() { final String dbType = HiveConf.getVar(getConf(), HiveConf.ConfVars.DRUID_METADATA_DB_TYPE); final String username = HiveConf.getVar(getConf(), HiveConf.ConfVars.DRUID_METADATA_DB_USERNAME); - final String password = HiveConf.getVar(getConf(), HiveConf.ConfVars.DRUID_METADATA_DB_PASSWORD); + final String password = getPassword(getConf(), HiveConf.ConfVars.DRUID_METADATA_DB_PASSWORD); final String uri = HiveConf.getVar(getConf(), HiveConf.ConfVars.DRUID_METADATA_DB_URI); LOG.debug("Supplying SQL Connector with DB type {}, URI {}, User {}", dbType, uri, username); @SuppressWarnings("Guava") final Supplier -- 2.20.1 (Apple Git-117)