This is an automated email from the ASF dual-hosted git repository. sunchao pushed a commit to branch branch-2.3 in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/branch-2.3 by this push: new d27bfae HIVE-17155: findConfFile() in HiveConf.java has some issues with the conf path (Aihua Xu, reviewed by Yongzhi Chen) (#1820) d27bfae is described below commit d27bfaebf3949fa2bf490c48a4e0c59235d55060 Author: Chang chen <baibaic...@gmail.com> AuthorDate: Sat Jan 30 06:45:22 2021 +0800 HIVE-17155: findConfFile() in HiveConf.java has some issues with the conf path (Aihua Xu, reviewed by Yongzhi Chen) (#1820) --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 41d12ce..412e7d0 100644 --- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -161,19 +161,25 @@ public class HiveConf extends Configuration { result = checkConfigFile(new File(confPath, name)); if (result == null) { String homePath = System.getenv("HIVE_HOME"); - String nameInConf = "conf" + File.pathSeparator + name; + String nameInConf = "conf" + File.separator + name; result = checkConfigFile(new File(homePath, nameInConf)); if (result == null) { URI jarUri = null; try { - jarUri = HiveConf.class.getProtectionDomain().getCodeSource().getLocation().toURI(); + // Handle both file:// and jar:<url>!{entry} in the case of shaded hive libs + URL sourceUrl = HiveConf.class.getProtectionDomain().getCodeSource().getLocation(); + jarUri = sourceUrl.getProtocol().equalsIgnoreCase("jar") ? new URI(sourceUrl.getPath()) : sourceUrl.toURI(); } catch (Throwable e) { if (l4j.isInfoEnabled()) { l4j.info("Cannot get jar URI", e); } System.err.println("Cannot get jar URI: " + e.getMessage()); } - result = checkConfigFile(new File(new File(jarUri).getParentFile(), nameInConf)); + // From the jar file, the parent is /lib folder + File parent = new File(jarUri).getParentFile(); + if (parent != null) { + result = checkConfigFile(new File(parent.getParentFile(), nameInConf)); + } } } }