[ 
https://issues.apache.org/jira/browse/HADOOP-8833?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Harsh J updated HADOOP-8833:
----------------------------

    Target Version/s: 3.0.0, 2.0.3-alpha  (was: 3.0.0)
    
> 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
>         Attachments: HADOOP-8833.patch, HADOOP-8833.patch, HADOOP-8833.patch
>
>
> 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

Reply via email to