hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From anto...@apache.org
Subject hbase git commit: HBASE-15281 Allow the FileSystem inside HFileSystem to be wrapped (Rajesh Nishtala)
Date Mon, 02 May 2016 20:50:52 GMT
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());
   }


Mime
View raw message