From 2cdd913837ba659b29f90ba1472606493479a633 Mon Sep 17 00:00:00 2001 From: skysiders Date: Sat, 24 Dec 2022 21:27:55 +0800 Subject: [PATCH 1/2] add permission check after mkdir --- ql/src/java/org/apache/hadoop/hive/ql/Context.java | 3 +++ .../apache/hadoop/hive/ql/cache/results/QueryResultsCache.java | 3 +++ .../org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java | 3 +++ .../java/org/apache/hadoop/hive/ql/session/SessionState.java | 3 +++ 4 files changed, 12 insertions(+) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/Context.java b/ql/src/java/org/apache/hadoop/hive/ql/Context.java index f21ac7efaad5..d762c4e5761b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/Context.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/Context.java @@ -582,6 +582,9 @@ private Path getScratchDir(String scheme, String authority, throw new RuntimeException("Cannot make directory: " + dirPath.toString()); } + if (!fsPermission.equals(fsPermission.applyUMask(FsPermission.getUMask(conf)))) { + fs.setPermission(dirPath, fsPermission); + } if (isHDFSCleanup) { fs.deleteOnExit(dirPath); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/cache/results/QueryResultsCache.java b/ql/src/java/org/apache/hadoop/hive/ql/cache/results/QueryResultsCache.java index 4b833b730cf9..25ef1d0f705c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/cache/results/QueryResultsCache.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/cache/results/QueryResultsCache.java @@ -371,6 +371,9 @@ private QueryResultsCache(HiveConf configuration) throws IOException { FsPermission fsPermission = new FsPermission("700"); fs.mkdirs(cacheDirPath, fsPermission); + if (!fsPermission.equals(fsPermission.applyUMask(FsPermission.getUMask(conf)))) { + fs.setPermission(cacheDirPath, fsPermission); + } // Create non-existent path for 0-row results zeroRowsPath = new Path(cacheDirPath, "dummy_zero_rows"); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java index ba8d53fbfb25..3f7b6e25b41e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezSessionState.java @@ -796,6 +796,9 @@ private Path createTezDir(String sessionId, String suffix) throws IOException { FileSystem fs = tezDir.getFileSystem(conf); FsPermission fsPermission = new FsPermission(HiveConf.getVar(conf, HiveConf.ConfVars.SCRATCHDIRPERMISSION)); fs.mkdirs(tezDir, fsPermission); + if (!fsPermission.equals(fsPermission.applyUMask(FsPermission.getUMask(conf)))) { + fs.setPermission(tezDir, fsPermission); + } // Make sure the path is normalized (we expect validation to pass since we just created it). tezDir = DagUtils.validateTargetDir(tezDir, conf).getPath(); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java index 32c0891d3f94..6dbe916e96dc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java @@ -853,6 +853,9 @@ static void createPath(HiveConf conf, Path path, String permission, boolean isLo if (!fs.mkdirs(path, fsPermission)) { throw new IOException("Failed to create directory " + path + " on fs " + fs.getUri()); } + if (!fsPermission.equals(fsPermission.applyUMask(FsPermission.getUMask(conf)))) { + fs.setPermission(path, fsPermission); + } String dirType = isLocal ? "local" : "HDFS"; LOG.info("Created " + dirType + " directory: " + path.toString()); } From 0ba7f6aaa8a6f94237ad61961af6796ef80000c8 Mon Sep 17 00:00:00 2001 From: skysiders Date: Sun, 8 Jan 2023 09:50:23 +0800 Subject: [PATCH 2/2] fix code style --- .../apache/hadoop/hive/ql/cache/results/QueryResultsCache.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/cache/results/QueryResultsCache.java b/ql/src/java/org/apache/hadoop/hive/ql/cache/results/QueryResultsCache.java index 25ef1d0f705c..3edd3d64218b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/cache/results/QueryResultsCache.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/cache/results/QueryResultsCache.java @@ -372,7 +372,7 @@ private QueryResultsCache(HiveConf configuration) throws IOException { fs.mkdirs(cacheDirPath, fsPermission); if (!fsPermission.equals(fsPermission.applyUMask(FsPermission.getUMask(conf)))) { - fs.setPermission(cacheDirPath, fsPermission); + fs.setPermission(cacheDirPath, fsPermission); } // Create non-existent path for 0-row results zeroRowsPath = new Path(cacheDirPath, "dummy_zero_rows");