Harsh J created HADOOP-8833: ------------------------------- Summary: fs -text should make sure to call inputstream.seek(0) before using input stream Key: HADOOP-8833 URL: https://issues.apache.org/jira/browse/HADOOP-8833 Project: Hadoop Common Issue Type: Bug Components: fs Affects Versions: 2.0.2-alpha Reporter: Harsh J Assignee: Harsh J
>From Muddy Dixon on HADOOP-8449: Hi We found the changes in order of switch and guard block in {code} private InputStream forMagic(Path p, FileSystem srcFs) throws IOException {code} Because of this change, return value of {code} codec.createInputStream(i) {code} is changed if codec exists. {code} private InputStream forMagic(Path p, FileSystem srcFs) throws IOException { FSDataInputStream i = srcFs.open(p); // check codecs CompressionCodecFactory cf = new CompressionCodecFactory(getConf()); CompressionCodec codec = cf.getCodec(p); if (codec != null) { return codec.createInputStream(i); } switch(i.readShort()) { // cases } {code} New: {code} private InputStream forMagic(Path p, FileSystem srcFs) throws IOException { FSDataInputStream i = srcFs.open(p); switch(i.readShort()) { // <=== index (or pointer) processes!! // cases default: { // Check the type of compression instead, depending on Codec class's // own detection methods, based on the provided path. CompressionCodecFactory cf = new CompressionCodecFactory(getConf()); CompressionCodec codec = cf.getCodec(p); if (codec != null) { return codec.createInputStream(i); } break; } } // File is non-compressed, or not a file container we know. i.seek(0); return i; } {code} Fix is to use i.seek(0) before we use i anywhere. I missed that. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira