hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Harsh J (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HADOOP-8833) fs -text should make sure to call inputstream.seek(0) before using input stream
Date Sat, 22 Sep 2012 18:53:07 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-8833?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13461246#comment-13461246
] 

Harsh J commented on HADOOP-8833:
---------------------------------

I ran the new test locally - works on a Mac too so apparently no native dependency as I'd
originally thought (due to deflate):

{code}
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.apache.hadoop.hdfs.TestDFSShell
Tests run: 20, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 36.699 sec
{code}

Committing shortly. Thanks again Tom and Karthik.
                
> 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

Mime
View raw message