You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ac...@apache.org on 2013/06/28 23:05:43 UTC
svn commit: r1497922 - in
/hadoop/common/trunk/hadoop-common-project/hadoop-common: CHANGES.txt
src/main/java/org/apache/hadoop/io/compress/BlockDecompressorStream.java
src/test/java/org/apache/hadoop/io/compress/TestBlockDecompressorStream.java
Author: acmurthy
Date: Fri Jun 28 21:05:43 2013
New Revision: 1497922
URL: http://svn.apache.org/r1497922
Log:
HADOOP-9665. Fixed BlockDecompressorStream#decompress to return -1 rather than throw EOF at end of file. Contributed by Zhijie Shen.
Modified:
hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockDecompressorStream.java
hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/compress/TestBlockDecompressorStream.java
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1497922&r1=1497921&r2=1497922&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt Fri Jun 28 21:05:43 2013
@@ -775,6 +775,9 @@ Release 2.1.0-beta - 2013-07-02
HADOOP-9264. Port change to use Java untar API on Windows from
branch-1-win to trunk. (Chris Nauroth via suresh)
+ HADOOP-9665. Fixed BlockDecompressorStream#decompress to return -1 rather
+ than throw EOF at end of file. (Zhijie Shen via acmurthy)
+
Release 2.0.5-alpha - 06/06/2013
INCOMPATIBLE CHANGES
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockDecompressorStream.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockDecompressorStream.java?rev=1497922&r1=1497921&r2=1497922&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockDecompressorStream.java (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockDecompressorStream.java Fri Jun 28 21:05:43 2013
@@ -93,7 +93,13 @@ public class BlockDecompressorStream ext
}
}
if (decompressor.needsInput()) {
- int m = getCompressedData();
+ int m;
+ try {
+ m = getCompressedData();
+ } catch (EOFException e) {
+ eof = true;
+ return -1;
+ }
// Send the read data to the decompressor
decompressor.setInput(buffer, 0, m);
}
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/compress/TestBlockDecompressorStream.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/compress/TestBlockDecompressorStream.java?rev=1497922&r1=1497921&r2=1497922&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/compress/TestBlockDecompressorStream.java (original)
+++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/compress/TestBlockDecompressorStream.java Fri Jun 28 21:05:43 2013
@@ -17,14 +17,16 @@
*/
package org.apache.hadoop.io.compress;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.nio.ByteBuffer;
import org.apache.hadoop.conf.Configuration;
-
import org.junit.Test;
-import static org.junit.Assert.*;
public class TestBlockDecompressorStream {
@@ -33,9 +35,23 @@ public class TestBlockDecompressorStream
private ByteArrayOutputStream bytesOut;
@Test
- public void testRead() throws IOException {
+ public void testRead1() throws IOException {
+ testRead(0);
+ }
+
+ @Test
+ public void testRead2() throws IOException {
+ // Test eof after getting non-zero block size info
+ testRead(4);
+ }
+
+ private void testRead(int bufLen) throws IOException {
// compress empty stream
bytesOut = new ByteArrayOutputStream();
+ if (bufLen > 0) {
+ bytesOut.write(ByteBuffer.allocate(bufLen).putInt(1024).array(), 0,
+ bufLen);
+ }
BlockCompressorStream blockCompressorStream =
new BlockCompressorStream(bytesOut,
new FakeCompressor(), 1024, 0);
@@ -44,7 +60,8 @@ public class TestBlockDecompressorStream
// check compressed output
buf = bytesOut.toByteArray();
- assertEquals("empty file compressed output size is not 4", 4, buf.length);
+ assertEquals("empty file compressed output size is not " + (bufLen + 4),
+ bufLen + 4, buf.length);
// use compressed output as input for decompression
bytesIn = new ByteArrayInputStream(buf);
@@ -57,6 +74,8 @@ public class TestBlockDecompressorStream
-1 , blockDecompressorStream.read());
} catch (IOException e) {
fail("unexpected IOException : " + e);
+ } finally {
+ blockDecompressorStream.close();
}
}
}