You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2017/01/05 18:57:32 UTC
[2/6] hbase git commit: HBASE-16710 Add ZStandard Codec to
Compression.java
HBASE-16710 Add ZStandard Codec to Compression.java
Signed-off-by: Andrew Purtell <ap...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/667c5eb3
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/667c5eb3
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/667c5eb3
Branch: refs/heads/branch-1
Commit: 667c5eb3a08a3ba798e7784ac4d5bea2b32206ff
Parents: a9bac6a
Author: rahul gidwani <rg...@salesforce.com>
Authored: Tue Sep 27 10:18:09 2016 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Thu Jan 5 10:47:12 2017 -0800
----------------------------------------------------------------------
.../hadoop/hbase/io/compress/Compression.java | 27 ++++++++++++++++++++
.../hadoop/hbase/util/TestCompressionTest.java | 2 ++
2 files changed, 29 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/667c5eb3/hbase-common/src/main/java/org/apache/hadoop/hbase/io/compress/Compression.java
----------------------------------------------------------------------
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/compress/Compression.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/compress/Compression.java
index 099b445..9697da3 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/compress/Compression.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/compress/Compression.java
@@ -262,6 +262,33 @@ public final class Compression {
throw new RuntimeException(e);
}
}
+ },
+ ZSTD("zstd") {
+ // Use base type to avoid compile-time dependencies.
+ private volatile transient CompressionCodec zStandardCodec;
+ private transient Object lock = new Object();
+
+ @Override
+ CompressionCodec getCodec(Configuration conf) {
+ if (zStandardCodec == null) {
+ synchronized (lock) {
+ if (zStandardCodec == null) {
+ zStandardCodec = buildCodec(conf);
+ }
+ }
+ }
+ return zStandardCodec;
+ }
+
+ private CompressionCodec buildCodec(Configuration conf) {
+ try {
+ Class<?> externalCodec =
+ getClassLoaderForCodec().loadClass("org.apache.hadoop.io.compress.ZStandardCodec");
+ return (CompressionCodec) ReflectionUtils.newInstance(externalCodec, conf);
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
};
private final transient Configuration conf; // FindBugs: SE_BAD_FIELD so just made it transient
http://git-wip-us.apache.org/repos/asf/hbase/blob/667c5eb3/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java
index b8e79ed..40a6f3f 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestCompressionTest.java
@@ -75,6 +75,7 @@ public class TestCompressionTest {
nativeCodecTest("LZ4", null, "org.apache.hadoop.io.compress.Lz4Codec");
nativeCodecTest("SNAPPY", "snappy", "org.apache.hadoop.io.compress.SnappyCodec");
nativeCodecTest("BZIP2", "bzip2", "org.apache.hadoop.io.compress.BZip2Codec");
+ nativeCodecTest("ZSTD", "zstd", "org.apache.hadoop.io.compress.ZStandardCodec");
} else {
// Hadoop nativelib is not available
LOG.debug("Native code not loaded");
@@ -82,6 +83,7 @@ public class TestCompressionTest {
assertFalse(CompressionTest.testCompression("LZ4"));
assertFalse(CompressionTest.testCompression("SNAPPY"));
assertFalse(CompressionTest.testCompression("BZIP2"));
+ assertFalse(CompressionTest.testCompression("ZSTD"));
}
}