hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "stack (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-7278) Some bugs of HTableDesciptor
Date Wed, 05 Dec 2012 04:34:58 GMT

    [ https://issues.apache.org/jira/browse/HBASE-7278?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13510268#comment-13510268
] 

stack commented on HBASE-7278:
------------------------------

Thanks for the review Hiroshi.  These look like legit issues that you've turned up.  Thanks.

bq. I think we should start to remove implementing WritableComparable, but it might greatly
break the compatibility.

That is ok for trunk.

We are moving to protobuf and stripping Writables in trunk (including WritableComparable which
maybe just becomes Comparable?  Depends on context).


                
> Some bugs of HTableDesciptor
> ----------------------------
>
>                 Key: HBASE-7278
>                 URL: https://issues.apache.org/jira/browse/HBASE-7278
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Hiroshi Ikeda
>            Priority: Minor
>
> There are some bugs of the class HTableDescriptor.
> {code}
>   public HTableDescriptor(final byte [] name) {
>     super();
>     setMetaFlags(this.name);
>     this.name = this.isMetaRegion()? name: isLegalTableName(name);
>     this.nameAsString = Bytes.toString(this.name);
>   }
> {code}
> I think "setMetaFlags(this.name)" should be "setMetaFlags(name)".
> {code}
>   /**
>    * Check passed byte buffer, "tableName", is legal user-space table name.
>    * @return Returns passed <code>tableName</code> param
>    * @throws NullPointerException If passed <code>tableName</code> is null
>    * @throws IllegalArgumentException if passed a tableName
>    * that is made of other than 'word' characters or underscores: i.e.
>    * <code>[a-zA-Z_0-9].
>    */
>   public static byte [] isLegalTableName(final byte [] tableName) {
>     if (tableName == null || tableName.length <= 0) {
>       throw new IllegalArgumentException("Name is null or empty");
>     }
> {code}
> The implementation is against the contract of throwing NullPointerException.
> I'm not sure the contract is wrong or the implementation is wrong.
> Also the contract of throwing IllegalArgumentException is a little different from the
actual implementation, and in general we must actually call this method and catch IllegalArgumentException
in order to know whether the given name can be used as a table name.
> I feel HTableDescriptor allows itself to be in invalid states, and I cannot fix the class
well.
> I think we should start to remove implementing WritableComparable, but it might greatly
break the compatibility.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message