On 6/13/07, Raghu Angadi <[EMAIL PROTECTED]> wrote:
Bwolen Yang wrote: > Here is probably the cause of this bug: > > 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)); > } > > Here, the caller calls the function with 127 bytes, and bytesPerSum is 256.Is this from looking at the code or you actually saw the values like this at runtime?
taking values at runtime (i have it thru exceptions when the result is 0 and print out he values).
I think 'len' is never supposed to be less than bytesPerChecksum because there is a BufferedInputStream between with a buffer size of io.buffer.size (default 4096). So this buffer size is supposed to be larger than bytesPerChecksum (requirement changes with HADOOP-1450 where it uses buffer size equal to bytesPerChecksum).
bwolen
