Author: stack
Date: Mon Mar 17 04:44:19 2014
New Revision: 1578225

URL: http://svn.apache.org/r1578225
Log:
HBASE-10762 clone_snapshot doesn't check for missing namespace

Modified:
    
hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
    
hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClient.java

Modified: 
hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: 
http://svn.apache.org/viewvc/hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1578225&r1=1578224&r2=1578225&view=diff
==============================================================================
--- 
hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
 (original)
+++ 
hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
 Mon Mar 17 04:44:19 2014
@@ -2930,6 +2930,14 @@ MasterServices, Server {
       throw new ServiceException(e);
     }
 
+    // ensure namespace exists
+    try {
+      TableName dstTable = TableName.valueOf(request.getSnapshot().getTable());
+      getNamespaceDescriptor(dstTable.getNamespaceAsString());
+    } catch (IOException ioe) {
+      throw new ServiceException(ioe);
+    }
+
     try {
       SnapshotDescription reqSnapshot = request.getSnapshot();
       snapshotManager.restoreSnapshot(reqSnapshot);

Modified: 
hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClient.java
URL: 
http://svn.apache.org/viewvc/hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClient.java?rev=1578225&r1=1578224&r2=1578225&view=diff
==============================================================================
--- 
hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClient.java
 (original)
+++ 
hbase/branches/0.96/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestCloneSnapshotFromClient.java
 Mon Mar 17 04:44:19 2014
@@ -30,6 +30,7 @@ import org.apache.hadoop.hbase.HConstant
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.LargeTests;
 import org.apache.hadoop.hbase.NamespaceDescriptor;
+import org.apache.hadoop.hbase.NamespaceNotFoundException;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.master.MasterFileSystem;
 import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;
@@ -147,6 +148,12 @@ public class TestCloneSnapshotFromClient
     admin.cloneSnapshot(snapshotName, tableName);
   }
 
+  @Test(expected = NamespaceNotFoundException.class)
+  public void testCloneOnMissingNamespace() throws IOException, 
InterruptedException {
+    TableName clonedTableName = TableName.valueOf("unknownNS:clonetb");
+    admin.cloneSnapshot(snapshotName1, clonedTableName);
+  }
+
   @Test
   public void testCloneSnapshot() throws IOException, InterruptedException {
     TableName clonedTableName = TableName.valueOf("clonedtb-" + 
System.currentTimeMillis());


Reply via email to