You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2014/03/04 10:28:49 UTC

svn commit: r1573962 - in /hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase: HTableDescriptor.java client/HBaseAdmin.java snapshot/SnapshotDescriptionUtils.java

Author: mbertozzi
Date: Tue Mar  4 09:28:48 2014
New Revision: 1573962

URL: http://svn.apache.org/r1573962
Log:
HBASE-9708 Improve Snapshot Name Error Message (Esteban Gutierrez)

Modified:
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java?rev=1573962&r1=1573961&r2=1573962&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java Tue Mar  4 09:28:48 2014
@@ -383,6 +383,10 @@ public class HTableDescriptor implements
   // A non-capture group so that this can be embedded.
   public static final String VALID_USER_TABLE_REGEX = "(?:[a-zA-Z_0-9][a-zA-Z_0-9.-]*)";
 
+  public static byte [] isLegalTableName(final byte [] tableName) {
+    return isLegalTableName(tableName, false);
+  }
+
   /**
    * Check passed byte buffer, "tableName", is legal user-space table name.
    * @return Returns passed <code>tableName</code> param
@@ -391,23 +395,25 @@ public class HTableDescriptor implements
    * 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) {
+  public static byte [] isLegalTableName(final byte [] tableName, boolean isSnapshot) {
     if (tableName == null || tableName.length <= 0) {
       throw new IllegalArgumentException("Name is null or empty");
     }
     if (tableName[0] == '.' || tableName[0] == '-') {
       throw new IllegalArgumentException("Illegal first character <" + tableName[0] +
-          "> at 0. User-space table names can only start with 'word " +
-          "characters': i.e. [a-zA-Z_0-9]: " + Bytes.toString(tableName));
+          "> at 0. " + (isSnapshot ? "snapshot" : "User-space table") +
+          " can only start with 'word characters': i.e. [a-zA-Z_0-9]: " +
+          Bytes.toString(tableName));
     }
     for (int i = 0; i < tableName.length; i++) {
-      if (Character.isLetterOrDigit(tableName[i]) || tableName[i] == '_' || 
-    		  tableName[i] == '-' || tableName[i] == '.') {
+      if (Character.isLetterOrDigit(tableName[i]) || tableName[i] == '_' ||
+          tableName[i] == '-' || tableName[i] == '.') {
         continue;
       }
       throw new IllegalArgumentException("Illegal character <" + tableName[i] +
-        "> at " + i + ". User-space table names can only contain " +
-        "'word characters': i.e. [a-zA-Z_0-9-.]: " + Bytes.toString(tableName));
+        "> at " + i + ". " + (isSnapshot ? "snapshot" : "User-space table") +
+        " can only contain 'word characters': i.e. [a-zA-Z_0-9-.]: " +
+        Bytes.toString(tableName));
     }
     return tableName;
   }

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java?rev=1573962&r1=1573961&r2=1573962&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java Tue Mar  4 09:28:48 2014
@@ -2336,7 +2336,7 @@ public class HBaseAdmin implements Abort
    */
   public void deleteSnapshot(final byte[] snapshotName) throws IOException {
     // make sure the snapshot is possibly valid
-    HTableDescriptor.isLegalTableName(snapshotName);
+    HTableDescriptor.isLegalTableName(snapshotName, true);
     // do the delete
     SnapshotDescription snapshot = SnapshotDescription.newBuilder()
       .setName(Bytes.toString(snapshotName)).build();

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java?rev=1573962&r1=1573961&r2=1573962&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java Tue Mar  4 09:28:48 2014
@@ -137,7 +137,7 @@ public class SnapshotDescriptionUtils {
       throw new IllegalArgumentException(".META. and -ROOT- snapshots are not allowed");
     }
     // make sure the snapshot name is valid
-    HTableDescriptor.isLegalTableName(Bytes.toBytes(snapshot.getName()));
+    HTableDescriptor.isLegalTableName(Bytes.toBytes(snapshot.getName()), true);
     // make sure the table name is valid
     HTableDescriptor.isLegalTableName(Bytes.toBytes(snapshot.getTable()));
   }