diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 7ee0fb7896a..a09b2bee02e 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -1031,6 +1031,9 @@ Release 2.7.3 - UNRELEASED HADOOP-12413. AccessControlList should avoid calling getGroupNames in isUserInList with empty groups. (Zhihai Xu via cnauroth) + HADOOP-12794. Support additional compression levels for GzipCodec. + (Ravi Mutyala via junping_du) + OPTIMIZATIONS HADOOP-12810. FileSystem#listLocatedStatus causes unnecessary RPC calls diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/zlib/ZlibCompressor.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/zlib/ZlibCompressor.java index b9550449f7f..24d98a53397 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/zlib/ZlibCompressor.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/zlib/ZlibCompressor.java @@ -67,7 +67,47 @@ public class ZlibCompressor implements Compressor { * Compression level for fastest compression. */ BEST_SPEED (1), - + + /** + * Compression level 2. + */ + TWO (2), + + + /** + * Compression level 3. + */ + THREE (3), + + + /** + * Compression level 4. + */ + FOUR (4), + + + /** + * Compression level 5. + */ + FIVE (5), + + + /** + * Compression level 6. + */ + SIX (6), + + /** + * Compression level 7. + */ + SEVEN (7), + + /** + * Compression level 8. + */ + EIGHT (8), + + /** * Compression level for best compression. */ diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/compress/zlib/TestZlibCompressorDecompressor.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/compress/zlib/TestZlibCompressorDecompressor.java index e7511251b64..2e4eaf88bb1 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/compress/zlib/TestZlibCompressorDecompressor.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/compress/zlib/TestZlibCompressorDecompressor.java @@ -122,6 +122,31 @@ public class TestZlibCompressorDecompressor { } } + @Test + public void testZlibCompressorDecompressorWithCompressionLevels() { + Configuration conf = new Configuration(); + conf.set("zlib.compress.level","FOUR"); + if (ZlibFactory.isNativeZlibLoaded(conf)) { + byte[] rawData; + int tryNumber = 5; + int BYTE_SIZE = 10 * 1024; + Compressor zlibCompressor = ZlibFactory.getZlibCompressor(conf); + Decompressor zlibDecompressor = ZlibFactory.getZlibDecompressor(conf); + rawData = generate(BYTE_SIZE); + try { + for (int i = 0; i < tryNumber; i++) + compressDecompressZlib(rawData, (ZlibCompressor) zlibCompressor, + (ZlibDecompressor) zlibDecompressor); + zlibCompressor.reinit(conf); + } catch (Exception ex) { + fail("testZlibCompressorDecompressorWithConfiguration ex error " + ex); + } + } else { + assertTrue("ZlibFactory is using native libs against request", + ZlibFactory.isNativeZlibLoaded(conf)); + } + } + @Test public void testZlibCompressDecompress() { byte[] rawData = null;