FAQ
NativeS3FsInputStream read() method for reading a single byte is incorrect
--------------------------------------------------------------------------

Key: HADOOP-3640
URL: https://issues.apache.org/jira/browse/HADOOP-3640
Project: Hadoop Core
Issue Type: Bug
Affects Versions: 0.18.0
Reporter: Tom White
Assignee: Tom White

From Albert Chern:
I think there may be a bug in the read() method of NativeS3InputStream, which looks like this:

{code}
public synchronized int read() throws IOException {
int result = in.read();
if (result > 0) {
pos += result;
}
return result;
}
{code}

The return value of InputStream.read() should be the next byte in the range 0 to 255, or -1 if there are no more bytes. So shouldn't this method look something like this?

{code}
public synchronized int read() throws IOException {
int result = in.read();
if (result > -1) {
pos ++;
}
return result;
}
{code}

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

Search Discussions

  • Tom White (JIRA) at Jun 25, 2008 at 9:35 am
    [ https://issues.apache.org/jira/browse/HADOOP-3640?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Tom White updated HADOOP-3640:
    ------------------------------

    Status: Patch Available (was: Open)
    NativeS3FsInputStream read() method for reading a single byte is incorrect
    --------------------------------------------------------------------------

    Key: HADOOP-3640
    URL: https://issues.apache.org/jira/browse/HADOOP-3640
    Project: Hadoop Core
    Issue Type: Bug
    Affects Versions: 0.18.0
    Reporter: Tom White
    Assignee: Tom White
    Attachments: hadoop-3640.patch


    From Albert Chern:
    I think there may be a bug in the read() method of NativeS3InputStream, which looks like this:
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > 0) {
    pos += result;
    }
    return result;
    }
    {code}
    The return value of InputStream.read() should be the next byte in the range 0 to 255, or -1 if there are no more bytes. So shouldn't this method look something like this?
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > -1) {
    pos ++;
    }
    return result;
    }
    {code}
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Tom White (JIRA) at Jun 25, 2008 at 9:35 am
    [ https://issues.apache.org/jira/browse/HADOOP-3640?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Tom White updated HADOOP-3640:
    ------------------------------

    Attachment: hadoop-3640.patch

    Patch to make this change. Interestingly, this is not causing a problem since the NativeS3FsInputStream (which is a private class) is always wrapped in BufferedFSInputStream. BufferedFSInputStream actually never calls read() (the single byte version) on the underlying stream, even from its implementation of read(), since it uses the buffered version.
    NativeS3FsInputStream read() method for reading a single byte is incorrect
    --------------------------------------------------------------------------

    Key: HADOOP-3640
    URL: https://issues.apache.org/jira/browse/HADOOP-3640
    Project: Hadoop Core
    Issue Type: Bug
    Affects Versions: 0.18.0
    Reporter: Tom White
    Assignee: Tom White
    Attachments: hadoop-3640.patch


    From Albert Chern:
    I think there may be a bug in the read() method of NativeS3InputStream, which looks like this:
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > 0) {
    pos += result;
    }
    return result;
    }
    {code}
    The return value of InputStream.read() should be the next byte in the range 0 to 255, or -1 if there are no more bytes. So shouldn't this method look something like this?
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > -1) {
    pos ++;
    }
    return result;
    }
    {code}
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Hadoop QA (JIRA) at Jun 25, 2008 at 2:35 pm
    [ https://issues.apache.org/jira/browse/HADOOP-3640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12608056#action_12608056 ]

    Hadoop QA commented on HADOOP-3640:
    -----------------------------------

    -1 overall. Here are the results of testing the latest attachment
    http://issues.apache.org/jira/secure/attachment/12384660/hadoop-3640.patch
    against trunk revision 671385.

    +1 @author. The patch does not contain any @author tags.

    -1 tests included. The patch doesn't appear to include any new or modified tests.
    Please justify why no tests are needed for this patch.

    +1 javadoc. The javadoc tool did not generate any warning messages.

    +1 javac. The applied patch does not increase the total number of javac compiler warnings.

    +1 findbugs. The patch does not introduce any new Findbugs warnings.

    +1 release audit. The applied patch does not increase the total number of release audit warnings.

    -1 core tests. The patch failed core unit tests.

    +1 contrib tests. The patch passed contrib unit tests.

    Test results: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/2735/testReport/
    Findbugs warnings: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/2735/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
    Checkstyle results: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/2735/artifact/trunk/build/test/checkstyle-errors.html
    Console output: http://hudson.zones.apache.org/hudson/job/Hadoop-Patch/2735/console

    This message is automatically generated.
    NativeS3FsInputStream read() method for reading a single byte is incorrect
    --------------------------------------------------------------------------

    Key: HADOOP-3640
    URL: https://issues.apache.org/jira/browse/HADOOP-3640
    Project: Hadoop Core
    Issue Type: Bug
    Affects Versions: 0.18.0
    Reporter: Tom White
    Assignee: Tom White
    Attachments: hadoop-3640.patch


    From Albert Chern:
    I think there may be a bug in the read() method of NativeS3InputStream, which looks like this:
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > 0) {
    pos += result;
    }
    return result;
    }
    {code}
    The return value of InputStream.read() should be the next byte in the range 0 to 255, or -1 if there are no more bytes. So shouldn't this method look something like this?
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > -1) {
    pos ++;
    }
    return result;
    }
    {code}
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Tom White (JIRA) at Jun 25, 2008 at 2:39 pm
    [ https://issues.apache.org/jira/browse/HADOOP-3640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12608062#action_12608062 ]

    Tom White commented on HADOOP-3640:
    -----------------------------------

    Test failure is unrelated to this patch.
    NativeS3FsInputStream read() method for reading a single byte is incorrect
    --------------------------------------------------------------------------

    Key: HADOOP-3640
    URL: https://issues.apache.org/jira/browse/HADOOP-3640
    Project: Hadoop Core
    Issue Type: Bug
    Affects Versions: 0.18.0
    Reporter: Tom White
    Assignee: Tom White
    Attachments: hadoop-3640.patch


    From Albert Chern:
    I think there may be a bug in the read() method of NativeS3InputStream, which looks like this:
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > 0) {
    pos += result;
    }
    return result;
    }
    {code}
    The return value of InputStream.read() should be the next byte in the range 0 to 255, or -1 if there are no more bytes. So shouldn't this method look something like this?
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > -1) {
    pos ++;
    }
    return result;
    }
    {code}
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Owen O'Malley (JIRA) at Jun 30, 2008 at 6:54 pm
    [ https://issues.apache.org/jira/browse/HADOOP-3640?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Owen O'Malley updated HADOOP-3640:
    ----------------------------------

    Resolution: Fixed
    Fix Version/s: 0.19.0
    Hadoop Flags: [Reviewed]
    Status: Resolved (was: Patch Available)

    I just committed this. Thanks, Tom!
    NativeS3FsInputStream read() method for reading a single byte is incorrect
    --------------------------------------------------------------------------

    Key: HADOOP-3640
    URL: https://issues.apache.org/jira/browse/HADOOP-3640
    Project: Hadoop Core
    Issue Type: Bug
    Affects Versions: 0.18.0
    Reporter: Tom White
    Assignee: Tom White
    Fix For: 0.19.0

    Attachments: hadoop-3640.patch


    From Albert Chern:
    I think there may be a bug in the read() method of NativeS3InputStream, which looks like this:
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > 0) {
    pos += result;
    }
    return result;
    }
    {code}
    The return value of InputStream.read() should be the next byte in the range 0 to 255, or -1 if there are no more bytes. So shouldn't this method look something like this?
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > -1) {
    pos ++;
    }
    return result;
    }
    {code}
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Hudson (JIRA) at Jul 1, 2008 at 12:57 pm
    [ https://issues.apache.org/jira/browse/HADOOP-3640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12609570#action_12609570 ]

    Hudson commented on HADOOP-3640:
    --------------------------------

    Integrated in Hadoop-trunk #535 (See [http://hudson.zones.apache.org/hudson/job/Hadoop-trunk/535/])
    NativeS3FsInputStream read() method for reading a single byte is incorrect
    --------------------------------------------------------------------------

    Key: HADOOP-3640
    URL: https://issues.apache.org/jira/browse/HADOOP-3640
    Project: Hadoop Core
    Issue Type: Bug
    Affects Versions: 0.18.0
    Reporter: Tom White
    Assignee: Tom White
    Fix For: 0.19.0

    Attachments: hadoop-3640.patch


    From Albert Chern:
    I think there may be a bug in the read() method of NativeS3InputStream, which looks like this:
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > 0) {
    pos += result;
    }
    return result;
    }
    {code}
    The return value of InputStream.read() should be the next byte in the range 0 to 255, or -1 if there are no more bytes. So shouldn't this method look something like this?
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > -1) {
    pos ++;
    }
    return result;
    }
    {code}
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Robert Chansler (JIRA) at Oct 22, 2008 at 12:45 am
    [ https://issues.apache.org/jira/browse/HADOOP-3640?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Robert Chansler updated HADOOP-3640:
    ------------------------------------

    Component/s: fs/s3
    NativeS3FsInputStream read() method for reading a single byte is incorrect
    --------------------------------------------------------------------------

    Key: HADOOP-3640
    URL: https://issues.apache.org/jira/browse/HADOOP-3640
    Project: Hadoop Core
    Issue Type: Bug
    Components: fs/s3
    Affects Versions: 0.18.0
    Reporter: Tom White
    Assignee: Tom White
    Fix For: 0.19.0

    Attachments: hadoop-3640.patch


    From Albert Chern:
    I think there may be a bug in the read() method of NativeS3InputStream, which looks like this:
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > 0) {
    pos += result;
    }
    return result;
    }
    {code}
    The return value of InputStream.read() should be the next byte in the range 0 to 255, or -1 if there are no more bytes. So shouldn't this method look something like this?
    {code}
    public synchronized int read() throws IOException {
    int result = in.read();
    if (result > -1) {
    pos ++;
    }
    return result;
    }
    {code}
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupcommon-dev @
categorieshadoop
postedJun 25, '08 at 9:25a
activeOct 22, '08 at 12:45a
posts8
users1
websitehadoop.apache.org...
irc#hadoop

1 user in discussion

Robert Chansler (JIRA): 8 posts

People

Translate

site design / logo © 2022 Grokbase