You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2017/08/15 20:26:33 UTC
hbase git commit: HBASE-18512,
Region Server will abort with IllegalStateException if HDFS umask has
limited scope
Repository: hbase
Updated Branches:
refs/heads/branch-1 3ed765257 -> d7c6a0bf4
HBASE-18512, Region Server will abort with IllegalStateException if HDFS umask has limited scope
Signed-off-by: tedyu <yu...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/d7c6a0bf
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/d7c6a0bf
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/d7c6a0bf
Branch: refs/heads/branch-1
Commit: d7c6a0bf43d6658593e62725359a093e584200c5
Parents: 3ed7652
Author: Pankaj Kumar <pa...@huawei.com>
Authored: Mon Aug 14 21:27:45 2017 +0800
Committer: tedyu <yu...@gmail.com>
Committed: Tue Aug 15 13:26:28 2017 -0700
----------------------------------------------------------------------
.../security/access/SecureBulkLoadEndpoint.java | 21 +++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/d7c6a0bf/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java
index 90bd96b..9670684 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java
@@ -149,15 +149,26 @@ public class SecureBulkLoadEndpoint extends SecureBulkLoadService
fs = baseStagingDir.getFileSystem(conf);
if (!fs.exists(baseStagingDir)) {
fs.mkdirs(baseStagingDir, PERM_HIDDEN);
- } else {
- fs.setPermission(baseStagingDir, PERM_HIDDEN);
}
- //no sticky bit in hadoop-1.0, making directory nonempty so it never gets erased
- fs.mkdirs(new Path(baseStagingDir,"DONOTERASE"), PERM_HIDDEN);
FileStatus status = fs.getFileStatus(baseStagingDir);
- if(status == null) {
+ if (status == null) {
throw new IllegalStateException("Failed to create staging directory");
}
+
+ // If HDFS UMASK value has limited scope then staging directory permission may not be 711
+ // after creation, so we should set staging directory permission explicitly.
+ if (!status.getPermission().equals(PERM_HIDDEN)) {
+ fs.setPermission(baseStagingDir, PERM_HIDDEN);
+ status = fs.getFileStatus(baseStagingDir);
+ }
+
+ // no sticky bit in hadoop-1.0, making directory nonempty so it never gets erased
+ Path doNotEraseDir = new Path(baseStagingDir, "DONOTERASE");
+ if (!fs.exists(doNotEraseDir)) {
+ fs.mkdirs(doNotEraseDir, PERM_HIDDEN);
+ fs.setPermission(doNotEraseDir, PERM_HIDDEN);
+ }
+
String scheme = fs.getScheme().toLowerCase();
if (!fsSet.contains(scheme) && !status.getPermission().equals(PERM_HIDDEN)) {
throw new IllegalStateException(