This is an automated email from the ASF dual-hosted git repository. stack pushed a commit to branch branch-2 in repository https://gitbox.apache.org/repos/asf/hbase.git
commit 4c6f0f35bfbe6250942d7aa0bcb8efca543baeff Author: stack <[email protected]> AuthorDate: Mon Feb 8 14:38:03 2021 -0800 HBASE-25512 May throw StringIndexOutOfBoundsException when construct illegal tablename error Revert of a revert -- i.e. a reapply -- that adds in the JIRA # missing from original commit. --- hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java | 6 ++---- .../src/test/java/org/apache/hadoop/hbase/TestTableName.java | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java index b1205e0..903c42e 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java @@ -185,16 +185,14 @@ public final class TableName implements Comparable<TableName> { if(end - start < 1) { throw new IllegalArgumentException(isSnapshot ? "Snapshot" : "Table" + " qualifier must not be empty"); } + String qualifierString = Bytes.toString(qualifierName, start, end - start); 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' from any language: " + - Bytes.toString(qualifierName, start, end)); + qualifierString); } - // Treat the bytes as UTF-8 - String qualifierString = new String( - qualifierName, start, (end - start), StandardCharsets.UTF_8); if (qualifierString.equals(DISALLOWED_TABLE_NAME)) { // Per https://zookeeper.apache.org/doc/r3.4.10/zookeeperProgrammers.html#ch_zkDataModel // A znode named "zookeeper" is disallowed by zookeeper. diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/TestTableName.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/TestTableName.java index e1cd52a..a908a48 100644 --- a/hbase-common/src/test/java/org/apache/hadoop/hbase/TestTableName.java +++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/TestTableName.java @@ -137,7 +137,7 @@ public class TestTableName { @Test public void testIllegalHTableNames() { for (String tn : illegalTableNames) { - assertThrows(Exception.class, + assertThrows(IllegalArgumentException.class, () -> TableName.isLegalFullyQualifiedTableName(Bytes.toBytes(tn))); } }
