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' "); }
