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

Hudson commented on HADOOP-5459:
--------------------------------

Integrated in Hadoop-trunk #796 (See 
[http://hudson.zones.apache.org/hudson/job/Hadoop-trunk/796/])
    

> CRC errors not detected reading intermediate output into memory with 
> problematic length
> ---------------------------------------------------------------------------------------
>
>                 Key: HADOOP-5459
>                 URL: https://issues.apache.org/jira/browse/HADOOP-5459
>             Project: Hadoop Core
>          Issue Type: Bug
>    Affects Versions: 0.20.0
>            Reporter: Chris Douglas
>            Assignee: Chris Douglas
>             Fix For: 0.20.0
>
>         Attachments: 5459-0.patch, 5459-1.patch
>
>
> It's possible that the expected, uncompressed length of the segment is less 
> than the available/decompressed data. This can happen in some worst-cases for 
> compression, but it is exceedingly rare. It is also possible (though also 
> fantastically unlikely) for the data to deflate to a size greater than that 
> reported by the map. CRC errors will remain undetected because 
> IFileInputStream does not validate the checksum until the end of the stream, 
> and close() does not advance the stream to the end of the segment. The 
> (abbreviated) read loop fetching data in shuffleInMemory:
> {code}
> int n = input.read(shuffleData, 0, shuffleData.length);
> while (n > 0) { 
>   bytesRead += n;
>   n = input.read(shuffleData, bytesRead, 
>                  (shuffleData.length-bytesRead));
> } 
> {code}
> Will read only up to the expected length. Without reading the whole segment, 
> the checksum is not validated. Even if IFileInputStream instances are closed, 
> they should always validate checksums.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to