You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-dev@hadoop.apache.org by "Raghu Angadi (JIRA)" <ji...@apache.org> on 2007/07/18 20:28:04 UTC

[jira] Issue Comment Edited: (HADOOP-1285) ChecksumFileSystem : Can't read when io.file.buffer.size < bytePerChecksum

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

Raghu Angadi edited comment on HADOOP-1285 at 7/18/07 11:26 AM:
----------------------------------------------------------------

Fixed by HADOOP-1470.


 was:
Fixed by HADOOP-1140.

> ChecksumFileSystem : Can't read when io.file.buffer.size < bytePerChecksum
> --------------------------------------------------------------------------
>
>                 Key: HADOOP-1285
>                 URL: https://issues.apache.org/jira/browse/HADOOP-1285
>             Project: Hadoop
>          Issue Type: Bug
>          Components: fs
>    Affects Versions: 0.12.3
>            Reporter: Raghu Angadi
>
> Looks like ChecksumFileSystem fails to read a file when bytesPerChecksum is larger than io.file.buffer.size. Default for bytesPerChecksum  and buffer size are 512 and 4096, so default config might not see the problem.
> I noticed this problem when I was testing block level CRCs with different configs.
> How to reproduce with latest trunk:
> Copy a text  file larger than 512 bytes to dfs : bin/hadoop fs -copyFromLocal ~/tmp/x.txt x.txt
> then set io.file.buffer.size to something smaller than 512 (say 53). Now try to read the file :
>  bin/hadoop dfs -cat x.txt
> This will print only the first 53 characters.
> The following code or comment at  ChecksumFileSystem.java:163 seems suspect. But not sure if more changes are required:
> {code}
>     public int read(byte b[], int off, int len) throws IOException {
>       // make sure that it ends at a checksum boundary
>       long curPos = getPos();
>       long endPos = len+curPos/bytesPerSum*bytesPerSum;
>       return readBuffer(b, off, (int)(endPos-curPos));
>     }
> {code}

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