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

HBase shell "major_compact" command should properly convert "table_or_region_name" parameter to java byte array properly before simply calling "HBaseAdmin.majorCompact" method

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Invalid
    • None
    • None
    • shell
    • None

    Description

      On HBase shell, major_compact command simply passes the received table_or_region_name parameter straight to java HBaseAdmin.majorCompact method.

      On some corner cases, HBase tables row keys may have special characters. Then, if a region is split in such a way that row keys with special characters are now part of the region name, calling major_compact on this regions will fail, if the special character ASCII code is higher than 127. This happens because Java byte type is signed, while ruby byte type isn't, causing the region name to be converted to a wrong string at Java side.

      For example, considering a region named as below:

      test,\xF8\xB9B2!$\x9C\x0A\xFEG\xC0\xE3\x8B\x1B\xFF\x15,1481745228583.b4bc69356d89018bfad3ee106b717285.
      

      Calling major_compat on it fails as follows:

      hbase(main):008:0* major_compact "test,\xF8\xB9B2!$\x9C\x0A\xFEG\xC0\xE3\x8B\x1B\xFF\x15,1484177359169.8128fa75ae0cd4eba38da2667ac8ec98."
      
      ERROR: Illegal character code:44, <,> at 4. User-space table qualifiers can only contain 'alphanumeric characters': i.e. [a-zA-Z_0-9-.]: test,�B2!$�
      �G���1484177359169.8128fa75ae0cd4eba38da2667ac8ec98.
      

      An easy solution is to convert table_or_region_name parameter properly, prior to calling HBaseAdmin.majorCompact in the same way as it's already done on some other shell commands, such as get:

      admin.major_compact(table_or_region_name.to_s.to_java_bytes, family)
      

      Attachments

        Issue Links

          Activity

            People

              wchevreuil Wellington Chevreuil
              wchevreuil Wellington Chevreuil
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: