Description
hbase(main):009:0> snapshot 't1', '.t1Snapshot'
ERROR: Illegal first character <46> at 0. Namespaces can only start with alphanumeric characters': i.e. [a-zA-Z_0-9]: t1Snapshot
hbase(main):008:0> create '-test' , 'cf1'
ERROR: Illegal first character <45> at 0.Namespaces can only start with alphanumeric characters': i.e. [a-zA-Z_0-9]: -test
>> As per message "Namespaces" is wrong. But in this scenario, snapshot / table name start character is wrong.
Its because in the code the message is as below
if (qualifierName[start] == '.' || qualifierName[start] == '-') { throw new IllegalArgumentException("Illegal first character <" + qualifierName[0] + "> at 0. Namespaces can only start with alphanumeric " + "characters': i.e. [a-zA-Z_0-9]: " + Bytes.toString(qualifierName));
The correct code should be as below
if (qualifierName[start] == '.' || qualifierName[start] == '-') { throw new IllegalArgumentException("Illegal first character <" + qualifierName[start] + "> at 0. " + (isSnapshot ? "Snapshot" : "User-space table") + " qualifiers can only start with 'alphanumeric " + "characters': i.e. [a-zA-Z_0-9]: " + Bytes.toString(qualifierName, start, end));