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 ec...@apache.org on 2015/10/23 21:01:32 UTC
[65/75] [abbrv] hadoop git commit: HADOOP-9692. Improving log message
when SequenceFile reader throws EOFException on zero-length file. (Zhe Zhang
and Chu Tong via ozawa)
HADOOP-9692. Improving log message when SequenceFile reader throws EOFException on zero-length file. (Zhe Zhang and Chu Tong via ozawa)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/513ec3de
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/513ec3de
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/513ec3de
Branch: refs/heads/HADOOP-11890
Commit: 513ec3de194f705ca342de16829e1f85be227e7f
Parents: 039a1f9
Author: Tsuyoshi Ozawa <oz...@apache.org>
Authored: Thu Oct 22 11:55:25 2015 +0900
Committer: Tsuyoshi Ozawa <oz...@apache.org>
Committed: Fri Oct 23 06:50:50 2015 +0900
----------------------------------------------------------------------
hadoop-common-project/hadoop-common/CHANGES.txt | 3 +++
.../java/org/apache/hadoop/io/SequenceFile.java | 15 +++++++++++---
.../org/apache/hadoop/io/TestSequenceFile.java | 21 ++++++++++++++++++++
3 files changed, 36 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/513ec3de/hadoop-common-project/hadoop-common/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt
index 0d3daa2..a7a1d1b 100644
--- a/hadoop-common-project/hadoop-common/CHANGES.txt
+++ b/hadoop-common-project/hadoop-common/CHANGES.txt
@@ -902,6 +902,9 @@ Release 2.8.0 - UNRELEASED
HADOOP-10406. TestIPC.testIpcWithReaderQueuing may fail. (Xiao Chen via wang)
+ HADOOP-9692. Improving log message when SequenceFile reader throws
+ EOFException on zero-length file. (Zhe Zhang and Chu Tong via ozawa)
+
OPTIMIZATIONS
HADOOP-11785. Reduce the number of listStatus operation in distcp
http://git-wip-us.apache.org/repos/asf/hadoop/blob/513ec3de/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/SequenceFile.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/SequenceFile.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/SequenceFile.java
index e37e855..ed57eee 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/SequenceFile.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/SequenceFile.java
@@ -1912,17 +1912,26 @@ public class SequenceFile {
*/
private void init(boolean tempReader) throws IOException {
byte[] versionBlock = new byte[VERSION.length];
- in.readFully(versionBlock);
+ String exceptionMsg = this + " not a SequenceFile";
+
+ // Try to read sequence file header.
+ try {
+ in.readFully(versionBlock);
+ } catch (EOFException e) {
+ throw new EOFException(exceptionMsg);
+ }
if ((versionBlock[0] != VERSION[0]) ||
(versionBlock[1] != VERSION[1]) ||
- (versionBlock[2] != VERSION[2]))
+ (versionBlock[2] != VERSION[2])) {
throw new IOException(this + " not a SequenceFile");
+ }
// Set 'version'
version = versionBlock[3];
- if (version > VERSION[3])
+ if (version > VERSION[3]) {
throw new VersionMismatchException(VERSION[3], version);
+ }
if (version < BLOCK_COMPRESS_VERSION) {
UTF8 className = new UTF8();
http://git-wip-us.apache.org/repos/asf/hadoop/blob/513ec3de/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestSequenceFile.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestSequenceFile.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestSequenceFile.java
index 7495c6e..99c97db 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestSequenceFile.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestSequenceFile.java
@@ -522,6 +522,27 @@ public class TestSequenceFile extends TestCase {
assertTrue("InputStream for " + path + " should have been closed.", openedFile[0].isClosed());
}
+ /**
+ * Test to makes sure zero length sequence file is handled properly while
+ * initializing.
+ */
+ public void testInitZeroLengthSequenceFile() throws IOException {
+ Configuration conf = new Configuration();
+ LocalFileSystem fs = FileSystem.getLocal(conf);
+
+ // create an empty file (which is not a valid sequence file)
+ Path path = new Path(System.getProperty("test.build.data", ".") +
+ "/zerolength.seq");
+ fs.create(path).close();
+
+ try {
+ new SequenceFile.Reader(conf, SequenceFile.Reader.file(path));
+ fail("IOException expected.");
+ } catch (IOException expected) {
+ assertTrue(expected instanceof EOFException);
+ }
+ }
+
/**
* Test that makes sure createWriter succeeds on a file that was
* already created