diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/NamespaceDescriptor.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/NamespaceDescriptor.java index 07386b557c8f..1774fb79a17c 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/NamespaceDescriptor.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/NamespaceDescriptor.java @@ -47,6 +47,10 @@ public class NamespaceDescriptor { public static final byte [] DEFAULT_NAMESPACE_NAME = Bytes.toBytes("default"); public static final String DEFAULT_NAMESPACE_NAME_STR = Bytes.toString(DEFAULT_NAMESPACE_NAME); + /** Master local region namespace name. */ + public static final byte [] MASTER_NAMESPACE_NAME = Bytes.toBytes("master"); + public static final String MASTER_NAMESPACE_NAME_STR = + Bytes.toString(MASTER_NAMESPACE_NAME); public static final NamespaceDescriptor DEFAULT_NAMESPACE = NamespaceDescriptor.create( DEFAULT_NAMESPACE_NAME_STR).build(); @@ -58,6 +62,7 @@ public class NamespaceDescriptor { Set set = new HashSet<>(); set.add(NamespaceDescriptor.DEFAULT_NAMESPACE_NAME_STR); set.add(NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR); + set.add(NamespaceDescriptor.MASTER_NAMESPACE_NAME_STR); RESERVED_NAMESPACES = Collections.unmodifiableSet(set); } public final static Set RESERVED_NAMESPACES_BYTES; 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 62668ec7a4db..3b7536d0ddd1 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 @@ -338,7 +338,11 @@ private TableName(ByteBuffer namespace, ByteBuffer qualifier) throws IllegalArgu this.namespace = NamespaceDescriptor.SYSTEM_NAMESPACE_NAME; this.namespaceAsString = NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR; this.systemTable = true; - } else { + } else if (Bytes.equals(NamespaceDescriptor.MASTER_NAMESPACE_NAME, namespace)) { + this.namespace = NamespaceDescriptor.MASTER_NAMESPACE_NAME; + this.namespaceAsString = NamespaceDescriptor.MASTER_NAMESPACE_NAME_STR; + this.systemTable = true; + } else { this.namespace = new byte[namespace.remaining()]; namespace.duplicate().get(this.namespace); this.namespaceAsString = Bytes.toString(this.namespace); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestNamespace.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestNamespace.java index 9eb7d819a976..f2657f7ca90d 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestNamespace.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestNamespace.java @@ -169,6 +169,15 @@ public void testDeleteReservedNS() throws Exception { } finally { assertTrue(exceptionCaught); } + + try { + admin.deleteNamespace(NamespaceDescriptor.MASTER_NAMESPACE_NAME_STR); + } catch (IOException exp) { + LOG.warn(exp.toString(), exp); + exceptionCaught = true; + } finally { + assertTrue(exceptionCaught); + } } @Test