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 2015/09/22 21:56:55 UTC
hbase git commit: HBASE-14445 ExportSnapshot does not honor -chmod
option
Repository: hbase
Updated Branches:
refs/heads/master 487f74172 -> f697d2d31
HBASE-14445 ExportSnapshot does not honor -chmod option
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/f697d2d3
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/f697d2d3
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/f697d2d3
Branch: refs/heads/master
Commit: f697d2d312bc04072ccd64c231319e7e571d1aff
Parents: 487f741
Author: tedyu <yu...@gmail.com>
Authored: Tue Sep 22 12:56:48 2015 -0700
Committer: tedyu <yu...@gmail.com>
Committed: Tue Sep 22 12:56:48 2015 -0700
----------------------------------------------------------------------
.../hadoop/hbase/snapshot/ExportSnapshot.java | 28 ++++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/f697d2d3/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java
index 5595fc9..0bcbc1e 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/snapshot/ExportSnapshot.java
@@ -300,8 +300,13 @@ public class ExportSnapshot extends Configured implements Tool {
createOutputPath(parent);
}
outputFs.mkdirs(path);
- // override the owner when non-null user/group is specified
- outputFs.setOwner(path, filesUser, filesGroup);
+ if (filesUser != null || filesGroup != null) {
+ // override the owner when non-null user/group is specified
+ outputFs.setOwner(path, filesUser, filesGroup);
+ }
+ if (filesMode > 0) {
+ outputFs.setPermission(path, new FsPermission(filesMode));
+ }
}
}
@@ -835,6 +840,22 @@ public class ExportSnapshot extends Configured implements Tool {
}
/**
+ * Set path permission.
+ */
+ private void setPermission(final FileSystem fs, final Path path, final short filesMode,
+ final boolean recursive) throws IOException {
+ if (filesMode > 0) {
+ FsPermission perm = new FsPermission(filesMode);
+ if (recursive && fs.isDirectory(path)) {
+ for (FileStatus child : fs.listStatus(path)) {
+ setPermission(fs, child.getPath(), filesMode, recursive);
+ }
+ }
+ fs.setPermission(path, perm);
+ }
+ }
+
+ /**
* Execute the export snapshot by copying the snapshot metadata, hfiles and wals.
* @return 0 on success, and != 0 upon failure.
*/
@@ -960,6 +981,9 @@ public class ExportSnapshot extends Configured implements Tool {
if (filesUser != null || filesGroup != null) {
setOwner(outputFs, snapshotTmpDir, filesUser, filesGroup, true);
}
+ if (filesMode > 0) {
+ setPermission(outputFs, snapshotTmpDir, (short)filesMode, true);
+ }
} catch (IOException e) {
throw new ExportSnapshotException("Failed to copy the snapshot directory: from=" +
snapshotDir + " to=" + initialOutputSnapshotDir, e);