Repository: hbase
Updated Branches:
  refs/heads/branch-1.2 2676d498f -> 22d2c72c0
  refs/heads/branch-1.3 25a629621 -> d1b0c3223


HBASE-17861: Regionserver down when checking the permission of staging dir if 
hbase.rootdir is on S3

Signed-off-by: tedyu <[email protected]>
(cherry picked from commit 4057a6c89c74c9f595cb51ac3bdc288396a0b257)

 Conflicts:
        
hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/7d7279d1
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/7d7279d1
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/7d7279d1

Branch: refs/heads/branch-1.3
Commit: 7d7279d19d534f660eaa8dd9dec63fe8b547fb89
Parents: 25a6296
Author: Yi Liang <[email protected]>
Authored: Mon Apr 3 20:39:35 2017 -0700
Committer: Sean Busbey <[email protected]>
Committed: Fri Aug 17 23:00:46 2018 -0500

----------------------------------------------------------------------
 .../hbase/security/access/SecureBulkLoadEndpoint.java   | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/7d7279d1/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 fc2baaf..f0169ab 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
@@ -145,16 +145,20 @@ public class SecureBulkLoadEndpoint extends 
SecureBulkLoadService
     Set<String> fsSet = getFileSystemSchemesWithoutPermissionSupport(conf);
 
     try {
-      fs = FileSystem.get(conf);
-      fs.mkdirs(baseStagingDir, PERM_HIDDEN);
-      fs.setPermission(baseStagingDir, PERM_HIDDEN);
+      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) {
         throw new IllegalStateException("Failed to create staging directory");
       }
-      if(!status.getPermission().equals(PERM_HIDDEN)) {
+      String scheme = fs.getScheme().toLowerCase();
+      if (!fsSet.contains(scheme) && 
!status.getPermission().equals(PERM_HIDDEN)) {
         throw new IllegalStateException(
             "Staging directory of " + baseStagingDir + " already exists but 
permissions aren't set to '-rwx--x--x' ");
       }

Reply via email to