hbase-issues mailing list archives

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

     [ https://issues.apache.org/jira/browse/HBASE-7278?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Hiroshi Ikeda updated HBASE-7278:
---------------------------------

    Description: 
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.
    
> 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