Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-7278

Some bugs of HTableDesciptor

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Duplicate
    • None
    • None
    • None
    • None

    Description

      There are some bugs of the class HTableDescriptor.

        public HTableDescriptor(final byte [] name) {
          super();
          setMetaFlags(this.name);
          this.name = this.isMetaRegion()? name: isLegalTableName(name);
          this.nameAsString = Bytes.toString(this.name);
        }
      

      I think "setMetaFlags(this.name)" should be "setMetaFlags(name)".

        /**
         * 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");
          }
      

      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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            ikeda Hiroshi Ikeda
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: