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

Vinay updated HADOOP-9505:
--------------------------

    Resolution: Duplicate
        Status: Resolved  (was: Patch Available)

> Specifying checksum type to NULL can cause write failures with AIOBE
> --------------------------------------------------------------------
>
>                 Key: HADOOP-9505
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9505
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: fs
>    Affects Versions: 2.1.0-beta
>            Reporter: Uma Maheswara Rao G
>            Assignee: Vinay
>            Priority: Minor
>         Attachments: HADOOP-9505.patch
>
>
> I have created a file with checksum disable option and I am seeing 
> ArrayIndexOutOfBoundsException.
> {code}
> out = fs.create(fileName, FsPermission.getDefault(), flags, fs.getConf()
>         .getInt("io.file.buffer.size", 4096), replFactor, fs
>         .getDefaultBlockSize(fileName), null, ChecksumOpt.createDisabled());
> {code}
> See the trace here:
> {noformat}
> java.lang.ArrayIndexOutOfBoundsException: 0
>       at org.apache.hadoop.fs.FSOutputSummer.int2byte(FSOutputSummer.java:178)
>       at 
> org.apache.hadoop.fs.FSOutputSummer.writeChecksumChunk(FSOutputSummer.java:162)
>       at org.apache.hadoop.fs.FSOutputSummer.write1(FSOutputSummer.java:106)
>       at org.apache.hadoop.fs.FSOutputSummer.write(FSOutputSummer.java:92)
>       at 
> org.apache.hadoop.fs.FSDataOutputStream$PositionCache.write(FSDataOutputStream.java:54)
>       at java.io.DataOutputStream.write(DataOutputStream.java:90)
>       at org.apache.hadoop.hdfs.DFSTestUtil.createFile(DFSTestUtil.java:261)
>       at 
> org.apache.hadoop.hdfs.TestReplication.testBadBlockReportOnTransfer(TestReplication.java:174)
> {noformat}
> In FSOutputSummer#int2byte will not check any bytes length, so, do you think 
> we have to to check the length then only we call this in CRC NULL case, as 
> there will not be any checksum bytes?
> {code}
> static byte[] int2byte(int integer, byte[] bytes) {
>     bytes[0] = (byte)((integer >>> 24) & 0xFF);
>     bytes[1] = (byte)((integer >>> 16) & 0xFF);
>     bytes[2] = (byte)((integer >>>  8) & 0xFF);
>     bytes[3] = (byte)((integer >>>  0) & 0xFF);
>     return bytes;
>   }
> {code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to