Repository: hbase
Updated Branches:
refs/heads/branch-1 57ca428c5 -> 36d634d35
HBASE-15281 Allow the FileSystem inside HFileSystem to be wrapped (Rajesh Nishtala)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/36d634d3
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/36d634d3
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/36d634d3
Branch: refs/heads/branch-1
Commit: 36d634d353c2193d87d60f6525647360d8a27379
Parents: 57ca428
Author: Mikhail Antonov <antonov@apache.org>
Authored: Mon May 2 13:23:51 2016 -0700
Committer: Mikhail Antonov <antonov@apache.org>
Committed: Mon May 2 13:26:37 2016 -0700
----------------------------------------------------------------------
.../org/apache/hadoop/hbase/fs/HFileSystem.java | 27 ++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/36d634d3/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java
index fb58360..521bc57 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/fs/HFileSystem.java
@@ -101,11 +101,13 @@ public class HFileSystem extends FilterFileSystem {
if (useHBaseChecksum && !(fs instanceof LocalFileSystem)) {
conf = new Configuration(conf);
conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);
- this.noChecksumFs = newInstanceFileSystem(conf);
+ this.noChecksumFs = maybeWrapFileSystem(newInstanceFileSystem(conf), conf);
this.noChecksumFs.setVerifyChecksum(false);
} else {
- this.noChecksumFs = fs;
+ this.noChecksumFs = maybeWrapFileSystem(fs, conf);
}
+
+ this.fs = maybeWrapFileSystem(this.fs, conf);
}
/**
@@ -191,6 +193,27 @@ public class HFileSystem extends FilterFileSystem {
return fs;
}
+ /**
+ * Returns an instance of Filesystem wrapped into the class specified in
+ * hbase.fs.wrapper property, if one is set in the configuration, returns
+ * unmodified FS instance passed in as an argument otherwise.
+ * @param base Filesystem instance to wrap
+ * @param conf Configuration
+ * @return wrapped instance of FS, or the same instance if no wrapping configured.
+ */
+ private FileSystem maybeWrapFileSystem(FileSystem base, Configuration conf) {
+ try {
+ Class<?> clazz = conf.getClass("hbase.fs.wrapper", null);
+ if (clazz != null) {
+ return (FileSystem) clazz.getConstructor(FileSystem.class, Configuration.class)
+ .newInstance(base, conf);
+ }
+ } catch (Exception e) {
+ LOG.error("Failed to wrap filesystem: " + e);
+ }
+ return base;
+ }
+
public static boolean addLocationsOrderInterceptor(Configuration conf) throws IOException
{
return addLocationsOrderInterceptor(conf, new ReorderWALBlocks());
}
|