diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index 26cdc5a..3f2704c 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -3430,9 +3430,11 @@ public static boolean createDirsWithPermission(Configuration conf, Path mkdir, return createDirsWithPermission(conf, mkdir, fsPermission, recursive); } - public static boolean createDirsWithPermission(Configuration conf, Path mkdir, + public static boolean createDirsWithPermission(Configuration conf, Path mkdirPath, FsPermission fsPermission, boolean recursive) throws IOException { String origUmask = null; + LOG.info("Create dirs " + mkdirPath + " with permission " + fsPermission + " recursive " + + recursive); if (recursive) { origUmask = conf.get("fs.permissions.umask-mode"); @@ -3441,17 +3443,22 @@ public static boolean createDirsWithPermission(Configuration conf, Path mkdir, conf.set("fs.permissions.umask-mode", "000"); } - FileSystem fs = mkdir.getFileSystem(conf); - boolean retval = fs.mkdirs(mkdir, fsPermission); - - if (recursive) { - if (origUmask != null) { - conf.set("fs.permissions.umask-mode", origUmask); - } else { - conf.unset("fs.permissions.umask-mode"); + FileSystem fs = FileSystem.newInstance(mkdirPath.toUri(), conf); + boolean retval = false; + try { + retval = fs.mkdirs(mkdirPath, fsPermission); + } finally { + if (recursive) { + if (origUmask != null) { + conf.set("fs.permissions.umask-mode", origUmask); + } else { + conf.unset("fs.permissions.umask-mode"); + } } + + fs.close(); + return retval; } - return retval; } /**