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 "Simon Gilliot (Created) (JIRA)" <ji...@apache.org> on 2012/04/12 18:55:17 UTC

[jira] [Created] (HADOOP-8272) BytesWritable length problem

BytesWritable length problem
----------------------------

                 Key: HADOOP-8272
                 URL: https://issues.apache.org/jira/browse/HADOOP-8272
             Project: Hadoop Common
          Issue Type: Bug
          Components: io
    Affects Versions: 0.20.205.0
            Reporter: Simon Gilliot


I tried to create my own Writable which contains a BytesWritable.

In my conctructor, I tried to create an empty BytesWritable :
BytesWritable key = new BytesWritable();

Next, in my readFields, I did :
key.readFields(in); LOG.debug(Bytes.toString(key.getBytes()));

The key contains much more bytes than I had wrote.
In fact, if my BytesWritable contains 100 bytes, I thing that the readFields() of BytesWritable call :
* setSize(0) (which seems useless since the values in the old range are preserved and any new values are undefined). * setSize(100) which extends the bytes array (by setCapacity) to 1.5 * the size (so 150) without initalizing it
* readFully(bytes, 0, 100) which fill the bytes array from '0' to '100' offsets.

And when I call getBytes() on it, the bytes array of 150 bytes is returned without any control.

That seems possible that the same problem happens in other conditions, when we increase ths bytes array size.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Resolved] (HADOOP-8272) BytesWritable length problem

Posted by "Todd Lipcon (Resolved) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HADOOP-8272?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Todd Lipcon resolved HADOOP-8272.
---------------------------------

    Resolution: Invalid

This is not a bug - this is the expected behavior of getBytes(). Please refer to the javadoc:
{code}

  /**
   * Get the data backing the BytesWritable. Please use {@link #copyBytes()}
   * if you need the returned array to be precisely the length of the data.
   * @return The data is only valid between 0 and getLength() - 1.
   */
{code}
                
> BytesWritable length problem
> ----------------------------
>
>                 Key: HADOOP-8272
>                 URL: https://issues.apache.org/jira/browse/HADOOP-8272
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: io
>    Affects Versions: 0.20.205.0
>            Reporter: Simon Gilliot
>              Labels: hadoop
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> I tried to create my own Writable which contains a BytesWritable.
> In my conctructor, I tried to create an empty BytesWritable :
> BytesWritable key = new BytesWritable();
> Next, in my readFields, I did :
> key.readFields(in); LOG.debug(Bytes.toString(key.getBytes()));
> The key contains much more bytes than I had wrote.
> In fact, if my BytesWritable contains 100 bytes, I thing that the readFields() of BytesWritable call :
> * setSize(0) (which seems useless since the values in the old range are preserved and any new values are undefined). * setSize(100) which extends the bytes array (by setCapacity) to 1.5 * the size (so 150) without initalizing it
> * readFully(bytes, 0, 100) which fill the bytes array from '0' to '100' offsets.
> And when I call getBytes() on it, the bytes array of 150 bytes is returned without any control.
> That seems possible that the same problem happens in other conditions, when we increase ths bytes array size.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira