Repository: hbase
Updated Branches:
  refs/heads/master a0e3cb6c0 -> 1acbd36c9


http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.java
index d3f982f..e3327e2 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyNamespaceProcedure.java
@@ -15,19 +15,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.hadoop.hbase.master.procedure;
 
 import java.io.IOException;
-
 import org.apache.hadoop.hbase.NamespaceDescriptor;
 import org.apache.hadoop.hbase.NamespaceNotFoundException;
 import org.apache.hadoop.hbase.constraint.ConstraintException;
+import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer;
 import org.apache.yetus.audience.InterfaceAudience;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.hadoop.hbase.master.TableNamespaceManager;
-import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer;
+
 import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
 import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;
 import 
org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ModifyNamespaceState;
@@ -42,11 +40,9 @@ public class ModifyNamespaceProcedure
 
   private NamespaceDescriptor oldNsDescriptor;
   private NamespaceDescriptor newNsDescriptor;
-  private Boolean traceEnabled;
 
   public ModifyNamespaceProcedure() {
     this.oldNsDescriptor = null;
-    this.traceEnabled = null;
   }
 
   public ModifyNamespaceProcedure(final MasterProcedureEnv env,
@@ -59,36 +55,31 @@ public class ModifyNamespaceProcedure
     super(env, latch);
     this.oldNsDescriptor = null;
     this.newNsDescriptor = newNsDescriptor;
-    this.traceEnabled = null;
   }
 
   @Override
   protected Flow executeFromState(final MasterProcedureEnv env, final 
ModifyNamespaceState state)
       throws InterruptedException {
-    if (isTraceEnabled()) {
-      LOG.trace(this + " execute state=" + state);
-    }
-
+    LOG.trace("{} execute state={}", this, state);
     try {
       switch (state) {
-      case MODIFY_NAMESPACE_PREPARE:
-        boolean success = prepareModify(env);
-        releaseSyncLatch();
-        if (!success) {
-          assert isFailed() : "Modify namespace should have an exception here";
+        case MODIFY_NAMESPACE_PREPARE:
+          boolean success = prepareModify(env);
+          releaseSyncLatch();
+          if (!success) {
+            assert isFailed() : "Modify namespace should have an exception 
here";
+            return Flow.NO_MORE_STATE;
+          }
+          setNextState(ModifyNamespaceState.MODIFY_NAMESPACE_UPDATE_NS_TABLE);
+          break;
+        case MODIFY_NAMESPACE_UPDATE_NS_TABLE:
+          addOrUpdateNamespace(env, newNsDescriptor);
           return Flow.NO_MORE_STATE;
-        }
-        setNextState(ModifyNamespaceState.MODIFY_NAMESPACE_UPDATE_NS_TABLE);
-        break;
-      case MODIFY_NAMESPACE_UPDATE_NS_TABLE:
-        insertIntoNSTable(env);
-        setNextState(ModifyNamespaceState.MODIFY_NAMESPACE_UPDATE_ZK);
-        break;
-      case MODIFY_NAMESPACE_UPDATE_ZK:
-        updateZKNamespaceManager(env);
-        return Flow.NO_MORE_STATE;
-      default:
-        throw new UnsupportedOperationException(this + " unhandled state=" + 
state);
+        case MODIFY_NAMESPACE_UPDATE_ZK:
+          // not used any more
+          return Flow.NO_MORE_STATE;
+        default:
+          throw new UnsupportedOperationException(this + " unhandled state=" + 
state);
       }
     } catch (IOException e) {
       if (isRollbackSupported(state)) {
@@ -116,7 +107,7 @@ public class ModifyNamespaceProcedure
   }
 
   @Override
-  protected boolean isRollbackSupported(final ModifyNamespaceState state) {
+  protected boolean isRollbackSupported(ModifyNamespaceState state) {
     switch (state) {
       case MODIFY_NAMESPACE_PREPARE:
         return true;
@@ -126,12 +117,12 @@ public class ModifyNamespaceProcedure
   }
 
   @Override
-  protected ModifyNamespaceState getState(final int stateId) {
-    return ModifyNamespaceState.valueOf(stateId);
+  protected ModifyNamespaceState getState(int stateId) {
+    return ModifyNamespaceState.forNumber(stateId);
   }
 
   @Override
-  protected int getStateId(final ModifyNamespaceState state) {
+  protected int getStateId(ModifyNamespaceState state) {
     return state.getNumber();
   }
 
@@ -141,13 +132,12 @@ public class ModifyNamespaceProcedure
   }
 
   @Override
-  protected void serializeStateData(ProcedureStateSerializer serializer)
-      throws IOException {
+  protected void serializeStateData(ProcedureStateSerializer serializer) 
throws IOException {
     super.serializeStateData(serializer);
 
     MasterProcedureProtos.ModifyNamespaceStateData.Builder modifyNamespaceMsg =
-        
MasterProcedureProtos.ModifyNamespaceStateData.newBuilder().setNamespaceDescriptor(
-          ProtobufUtil.toProtoNamespaceDescriptor(this.newNsDescriptor));
+      MasterProcedureProtos.ModifyNamespaceStateData.newBuilder()
+        
.setNamespaceDescriptor(ProtobufUtil.toProtoNamespaceDescriptor(this.newNsDescriptor));
     if (this.oldNsDescriptor != null) {
       modifyNamespaceMsg.setUnmodifiedNamespaceDescriptor(
         ProtobufUtil.toProtoNamespaceDescriptor(this.oldNsDescriptor));
@@ -156,17 +146,16 @@ public class ModifyNamespaceProcedure
   }
 
   @Override
-  protected void deserializeStateData(ProcedureStateSerializer serializer)
-      throws IOException {
+  protected void deserializeStateData(ProcedureStateSerializer serializer) 
throws IOException {
     super.deserializeStateData(serializer);
 
     MasterProcedureProtos.ModifyNamespaceStateData modifyNamespaceMsg =
-        
serializer.deserialize(MasterProcedureProtos.ModifyNamespaceStateData.class);
+      
serializer.deserialize(MasterProcedureProtos.ModifyNamespaceStateData.class);
     newNsDescriptor =
-        
ProtobufUtil.toNamespaceDescriptor(modifyNamespaceMsg.getNamespaceDescriptor());
+      
ProtobufUtil.toNamespaceDescriptor(modifyNamespaceMsg.getNamespaceDescriptor());
     if (modifyNamespaceMsg.hasUnmodifiedNamespaceDescriptor()) {
       oldNsDescriptor =
-          
ProtobufUtil.toNamespaceDescriptor(modifyNamespaceMsg.getUnmodifiedNamespaceDescriptor());
+        
ProtobufUtil.toNamespaceDescriptor(modifyNamespaceMsg.getUnmodifiedNamespaceDescriptor());
     }
   }
 
@@ -187,8 +176,8 @@ public class ModifyNamespaceProcedure
    */
   private boolean prepareModify(final MasterProcedureEnv env) throws 
IOException {
     if 
(getTableNamespaceManager(env).doesNamespaceExist(newNsDescriptor.getName()) == 
false) {
-      setFailure("master-modify-namespace", new NamespaceNotFoundException(
-            newNsDescriptor.getName()));
+      setFailure("master-modify-namespace",
+        new NamespaceNotFoundException(newNsDescriptor.getName()));
       return false;
     }
     try {
@@ -202,38 +191,4 @@ public class ModifyNamespaceProcedure
     oldNsDescriptor = 
getTableNamespaceManager(env).get(newNsDescriptor.getName());
     return true;
   }
-
-  /**
-   * Insert/update the row into namespace table
-   * @param env MasterProcedureEnv
-   * @throws IOException
-   */
-  private void insertIntoNSTable(final MasterProcedureEnv env) throws 
IOException {
-    getTableNamespaceManager(env).insertIntoNSTable(newNsDescriptor);
-  }
-
-  /**
-   * Update ZooKeeper.
-   * @param env MasterProcedureEnv
-   * @throws IOException
-   */
-  private void updateZKNamespaceManager(final MasterProcedureEnv env) throws 
IOException {
-    getTableNamespaceManager(env).updateZKNamespaceManager(newNsDescriptor);
-  }
-
-  private TableNamespaceManager getTableNamespaceManager(final 
MasterProcedureEnv env) {
-    return 
env.getMasterServices().getClusterSchema().getTableNamespaceManager();
-  }
-
-  /**
-   * The procedure could be restarted from a different machine. If the 
variable is null, we need to
-   * retrieve it.
-   * @return traceEnabled
-   */
-  private Boolean isTraceEnabled() {
-    if (traceEnabled == null) {
-      traceEnabled = LOG.isTraceEnabled();
-    }
-    return traceEnabled;
-  }
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.java
index 4fd582d..7e47586 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.java
@@ -26,6 +26,13 @@ import org.apache.yetus.audience.InterfaceAudience;
  */
 @InterfaceAudience.Private
 public interface TableProcedureInterface {
+
+  /**
+   * Used for acquire/release lock for namespace related operations, just a 
place holder as we do
+   * not have namespace table any more.
+   */
+  public static final TableName DUMMY_NAMESPACE_TABLE_NAME = 
TableName.NAMESPACE_TABLE_NAME;
+
   public enum TableOperationType {
     CREATE, DELETE, DISABLE, EDIT, ENABLE, READ,
     REGION_EDIT, REGION_SPLIT, REGION_MERGE, REGION_ASSIGN, REGION_UNASSIGN,

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TableQueue.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TableQueue.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TableQueue.java
index 81c883b..6fb147e 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TableQueue.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TableQueue.java
@@ -53,8 +53,8 @@ class TableQueue extends Queue<TableName> {
       case ENABLE:
         return true;
       case EDIT:
-        // we allow concurrent edit on the NS table
-        return !proc.getTableName().equals(TableName.NAMESPACE_TABLE_NAME);
+        // we allow concurrent edit on the ns family in meta table
+        return 
!proc.getTableName().equals(TableProcedureInterface.DUMMY_NAMESPACE_TABLE_NAME);
       case READ:
         return false;
       // region operations are using the shared-lock on the table

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
index c10a824..4b6da53 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
@@ -1,4 +1,4 @@
-/*
+/**
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -95,7 +95,6 @@ import org.apache.hadoop.hbase.NamespaceDescriptor;
 import org.apache.hadoop.hbase.NotServingRegionException;
 import org.apache.hadoop.hbase.PrivateCellUtil;
 import org.apache.hadoop.hbase.RegionTooBusyException;
-import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.Tag;
 import org.apache.hadoop.hbase.TagUtil;
 import org.apache.hadoop.hbase.UnknownScannerException;
@@ -8298,8 +8297,7 @@ public class HRegion implements HeapSize, 
PropagatingConfigurationObserver, Regi
    */
   public byte[] checkSplit() {
     // Can't split META
-    if (this.getRegionInfo().isMetaRegion() ||
-        
TableName.NAMESPACE_TABLE_NAME.equals(this.getRegionInfo().getTable())) {
+    if (this.getRegionInfo().isMetaRegion()) {
       if (shouldForceSplit()) {
         LOG.warn("Cannot split meta region in HBase 0.20 and above");
       }

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
index 24743b9..c6e3eee 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
@@ -779,13 +779,10 @@ public class HRegionServer extends HasThread implements
   }
 
   /**
-   * Create a 'smarter' Connection, one that is capable of by-passing RPC if 
the request is to
-   * the local server; i.e. a short-circuit Connection. Safe to use going to 
local or remote
-   * server. Create this instance in a method can be intercepted and mocked in 
tests.
-   * @throws IOException
+   * Create a 'smarter' Connection, one that is capable of by-passing RPC if 
the request is to the
+   * local server; i.e. a short-circuit Connection. Safe to use going to local 
or remote server.
    */
-  @VisibleForTesting
-  protected ClusterConnection createClusterConnection() throws IOException {
+  private ClusterConnection createClusterConnection() throws IOException {
     Configuration conf = this.conf;
     if (conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM) != null) {
       // Use server ZK cluster for server-issued connections, so we clone
@@ -796,8 +793,15 @@ public class HRegionServer extends HasThread implements
     // Create a cluster connection that when appropriate, can short-circuit 
and go directly to the
     // local server if the request is to the local server bypassing RPC. Can 
be used for both local
     // and remote invocations.
-    return ConnectionUtils.createShortCircuitConnection(conf, null, 
userProvider.getCurrent(),
-      serverName, rpcServices, rpcServices);
+    ClusterConnection conn = 
ConnectionUtils.createShortCircuitConnection(conf, null,
+      userProvider.getCurrent(), serverName, rpcServices, rpcServices);
+    // This is used to initialize the batch thread pool inside the connection 
implementation.
+    // When deploy a fresh cluster, we may first use the cluster connection in 
InitMetaProcedure,
+    // which will be executed inside the PEWorker, and then the batch thread 
pool will inherit the
+    // thread group of PEWorker, which will be destroy when shutting down the 
ProcedureExecutor. It
+    // will cause lots of procedure related UTs to fail, so here let's 
initialize it first, no harm.
+    conn.getTable(TableName.META_TABLE_NAME).close();
+    return conn;
   }
 
   /**
@@ -823,7 +827,6 @@ public class HRegionServer extends HasThread implements
 
   /**
    * Setup our cluster connection if not already initialized.
-   * @throws IOException
    */
   protected synchronized void setupClusterConnection() throws IOException {
     if (clusterConnection == null) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
index 1a84bfd..835fc0d 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
@@ -875,7 +875,7 @@ public class AccessController implements MasterCoprocessor, 
RegionCoprocessor,
     // wait till the acl table is created.
     if (AccessControlLists.isAclTable(desc)) {
       this.aclTabAvailable = true;
-    } else if (!(TableName.NAMESPACE_TABLE_NAME.equals(desc.getTableName()))) {
+    } else {
       if (!aclTabAvailable) {
         LOG.warn("Not adding owner permission for table " + 
desc.getTableName() + ". "
             + AccessControlLists.ACL_TABLE_NAME + " is not yet created. "

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSTableDescriptors.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSTableDescriptors.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSTableDescriptors.java
index 28c7ec3..3dce0de 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSTableDescriptors.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSTableDescriptors.java
@@ -178,6 +178,17 @@ public class FSTableDescriptors implements 
TableDescriptors {
         // Disable blooms for meta.  Needs work.  Seems to mess w/ 
getClosestOrBefore.
         .setBloomFilterType(BloomType.NONE)
         .build())
+      .setColumnFamily(ColumnFamilyDescriptorBuilder
+        .newBuilder(HConstants.NAMESPACE_FAMILY)
+        .setMaxVersions(conf.getInt(HConstants.HBASE_META_VERSIONS,
+                HConstants.DEFAULT_HBASE_META_VERSIONS))
+        .setInMemory(true)
+        .setBlocksize(conf.getInt(HConstants.HBASE_META_BLOCK_SIZE,
+                HConstants.DEFAULT_HBASE_META_BLOCK_SIZE))
+        .setScope(HConstants.REPLICATION_SCOPE_LOCAL)
+        // Disable blooms for meta.  Needs work.  Seems to mess w/ 
getClosestOrBefore.
+        .setBloomFilterType(BloomType.NONE)
+        .build())
       .setCoprocessor(CoprocessorDescriptorBuilder.newBuilder(
         MultiRowMutationEndpoint.class.getName())
         .setPriority(Coprocessor.PRIORITY_SYSTEM).build());

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java
index 3f383d6..655bbdb 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java
@@ -3436,7 +3436,6 @@ public class HBaseTestingUtility extends 
HBaseZKTestingUtility {
    */
   public void waitUntilAllSystemRegionsAssigned() throws IOException {
     waitUntilAllRegionsAssigned(TableName.META_TABLE_NAME);
-    waitUntilAllRegionsAssigned(TableName.NAMESPACE_TABLE_NAME);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/TestGlobalMemStoreSize.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestGlobalMemStoreSize.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestGlobalMemStoreSize.java
index 9aecf06..44b06de 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestGlobalMemStoreSize.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestGlobalMemStoreSize.java
@@ -58,8 +58,8 @@ public class TestGlobalMemStoreSize {
   private static final Logger LOG = 
LoggerFactory.getLogger(TestGlobalMemStoreSize.class);
   private static int regionServerNum = 4;
   private static int regionNum = 16;
-  // total region num = region num + root and meta regions
-  private static int totalRegionNum = regionNum+2;
+  // total region num = region num + meta regions
+  private static int totalRegionNum = regionNum + 1;
 
   private HBaseTestingUtility TEST_UTIL;
   private MiniHBaseCluster cluster;

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/TestNamespace.java
----------------------------------------------------------------------
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 c9db891..5d5bc50 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
@@ -19,7 +19,6 @@ package org.apache.hadoop.hbase;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -63,7 +62,6 @@ public class TestNamespace {
   private static HBaseTestingUtility TEST_UTIL;
   protected static Admin admin;
   protected static HBaseCluster cluster;
-  private static ZKNamespaceManager zkNamespaceManager;
   private String prefix = "TestNamespace";
 
   @Rule
@@ -76,9 +74,6 @@ public class TestNamespace {
     admin = TEST_UTIL.getAdmin();
     cluster = TEST_UTIL.getHBaseCluster();
     master = ((MiniHBaseCluster)cluster).getMaster();
-    zkNamespaceManager =
-        new ZKNamespaceManager(master.getZooKeeper());
-    zkNamespaceManager.start();
     LOG.info("Done initializing cluster");
   }
 
@@ -107,19 +102,16 @@ public class TestNamespace {
         
admin.getNamespaceDescriptor(NamespaceDescriptor.DEFAULT_NAMESPACE.getName());
     assertNotNull(ns);
     assertEquals(ns.getName(), 
NamespaceDescriptor.DEFAULT_NAMESPACE.getName());
-    
assertNotNull(zkNamespaceManager.get(NamespaceDescriptor.DEFAULT_NAMESPACE_NAME_STR));
 
     ns = 
admin.getNamespaceDescriptor(NamespaceDescriptor.SYSTEM_NAMESPACE.getName());
     assertNotNull(ns);
     assertEquals(ns.getName(), NamespaceDescriptor.SYSTEM_NAMESPACE.getName());
-    
assertNotNull(zkNamespaceManager.get(NamespaceDescriptor.SYSTEM_NAMESPACE_NAME_STR));
 
     assertEquals(2, admin.listNamespaceDescriptors().length);
 
     //verify existence of system tables
     Set<TableName> systemTables = Sets.newHashSet(
-        TableName.META_TABLE_NAME,
-        TableName.NAMESPACE_TABLE_NAME);
+        TableName.META_TABLE_NAME);
     HTableDescriptor[] descs =
         
admin.listTableDescriptorsByNamespace(NamespaceDescriptor.SYSTEM_NAMESPACE.getName());
     assertEquals(systemTables.size(), descs.length);
@@ -181,18 +173,9 @@ public class TestNamespace {
     //create namespace and verify
     admin.createNamespace(NamespaceDescriptor.create(nsName).build());
     assertEquals(3, admin.listNamespaceDescriptors().length);
-    TEST_UTIL.waitFor(60000, new Waiter.Predicate<Exception>() {
-      @Override
-      public boolean evaluate() throws Exception {
-        return zkNamespaceManager.list().size() == 3;
-      }
-    });
-    assertNotNull(zkNamespaceManager.get(nsName));
     //remove namespace and verify
     admin.deleteNamespace(nsName);
     assertEquals(2, admin.listNamespaceDescriptors().length);
-    assertEquals(2, zkNamespaceManager.list().size());
-    assertNull(zkNamespaceManager.get(nsName));
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncNamespaceAdminApi.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncNamespaceAdminApi.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncNamespaceAdminApi.java
index f74b095..8de32b8 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncNamespaceAdminApi.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncNamespaceAdminApi.java
@@ -19,8 +19,6 @@ package org.apache.hadoop.hbase.client;
 
 import static 
org.apache.hadoop.hbase.client.AsyncProcess.START_LOG_ERRORS_AFTER_COUNT_KEY;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -29,14 +27,10 @@ import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.HTableDescriptor;
-import org.apache.hadoop.hbase.MiniHBaseCluster;
 import org.apache.hadoop.hbase.NamespaceDescriptor;
 import org.apache.hadoop.hbase.NamespaceExistException;
 import org.apache.hadoop.hbase.NamespaceNotFoundException;
 import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.Waiter;
-import org.apache.hadoop.hbase.ZKNamespaceManager;
-import org.apache.hadoop.hbase.master.HMaster;
 import org.apache.hadoop.hbase.testclassification.ClientTests;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.junit.BeforeClass;
@@ -58,8 +52,6 @@ public class TestAsyncNamespaceAdminApi extends 
TestAsyncAdminBase {
       HBaseClassTestRule.forClass(TestAsyncNamespaceAdminApi.class);
 
   private String prefix = "TestNamespace";
-  private static HMaster master;
-  private static ZKNamespaceManager zkNamespaceManager;
 
   @BeforeClass
   public static void setUpBeforeClass() throws Exception {
@@ -69,9 +61,6 @@ public class TestAsyncNamespaceAdminApi extends 
TestAsyncAdminBase {
     TEST_UTIL.getConfiguration().setInt(START_LOG_ERRORS_AFTER_COUNT_KEY, 0);
     TEST_UTIL.startMiniCluster(1);
     ASYNC_CONN = 
ConnectionFactory.createAsyncConnection(TEST_UTIL.getConfiguration()).get();
-    master = TEST_UTIL.getHBaseCluster().getMaster();
-    zkNamespaceManager = new ZKNamespaceManager(master.getZooKeeper());
-    zkNamespaceManager.start();
     LOG.info("Done initializing cluster");
   }
 
@@ -83,18 +72,9 @@ public class TestAsyncNamespaceAdminApi extends 
TestAsyncAdminBase {
     // create namespace and verify
     admin.createNamespace(NamespaceDescriptor.create(nsName).build()).join();
     assertEquals(3, admin.listNamespaceDescriptors().get().size());
-    TEST_UTIL.waitFor(60000, new Waiter.Predicate<Exception>() {
-      @Override
-      public boolean evaluate() throws Exception {
-        return zkNamespaceManager.list().size() == 3;
-      }
-    });
-    assertNotNull(zkNamespaceManager.get(nsName));
     // delete namespace and verify
     admin.deleteNamespace(nsName).join();
     assertEquals(2, admin.listNamespaceDescriptors().get().size());
-    assertEquals(2, zkNamespaceManager.list().size());
-    assertNull(zkNamespaceManager.get(nsName));
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
index c4285b4..65bc3f6 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
@@ -6396,7 +6396,7 @@ public class TestFromClientSide {
     scan.setCaching(1);
     // Filter out any records
     scan.setFilter(new FilterList(new FirstKeyOnlyFilter(), new 
InclusiveStopFilter(new byte[0])));
-    try (Table table = 
TEST_UTIL.getConnection().getTable(TableName.NAMESPACE_TABLE_NAME)) {
+    try (Table table = 
TEST_UTIL.getConnection().getTable(TableName.META_TABLE_NAME)) {
       try (ResultScanner s = table.getScanner(scan)) {
         assertNull(s.next());
       }

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/AbstractTestDLS.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/AbstractTestDLS.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/AbstractTestDLS.java
index a11064d..388c53d 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/AbstractTestDLS.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/AbstractTestDLS.java
@@ -505,19 +505,19 @@ public abstract class AbstractTestDLS {
     LOG.debug("Waiting for no more RIT\n");
     blockUntilNoRIT(zkw, master);
     NavigableSet<String> regions = 
HBaseTestingUtility.getAllOnlineRegions(cluster);
-    LOG.debug("Verifying only catalog and namespace regions are assigned\n");
-    if (regions.size() != 2) {
+    LOG.debug("Verifying only catalog region is assigned\n");
+    if (regions.size() != 1) {
       for (String oregion : regions)
         LOG.debug("Region still online: " + oregion);
     }
-    assertEquals(2 + existingRegions, regions.size());
+    assertEquals(1 + existingRegions, regions.size());
     LOG.debug("Enabling table\n");
     TEST_UTIL.getAdmin().enableTable(tableName);
     LOG.debug("Waiting for no more RIT\n");
     blockUntilNoRIT(zkw, master);
     LOG.debug("Verifying there are " + numRegions + " assigned on cluster\n");
     regions = HBaseTestingUtility.getAllOnlineRegions(cluster);
-    assertEquals(numRegions + 2 + existingRegions, regions.size());
+    assertEquals(numRegions + 1 + existingRegions, regions.size());
     return table;
   }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java
index b079501..75d9ee1 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java
@@ -20,7 +20,6 @@ package org.apache.hadoop.hbase.master;
 import java.io.IOException;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.CompatibilityFactory;
-import org.apache.hadoop.hbase.CoordinatedStateManager;
 import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.MiniHBaseCluster;
@@ -42,40 +41,51 @@ import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
 import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos;
 import 
org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos;
 
-@Category({MasterTests.class, MediumTests.class})
+@Category({ MasterTests.class, MediumTests.class })
 public class TestMasterMetrics {
 
   @ClassRule
   public static final HBaseClassTestRule CLASS_RULE =
-      HBaseClassTestRule.forClass(TestMasterMetrics.class);
+    HBaseClassTestRule.forClass(TestMasterMetrics.class);
 
   private static final Logger LOG = 
LoggerFactory.getLogger(TestMasterMetrics.class);
-  private static final MetricsAssertHelper metricsHelper = CompatibilityFactory
-      .getInstance(MetricsAssertHelper.class);
+  private static final MetricsAssertHelper metricsHelper =
+    CompatibilityFactory.getInstance(MetricsAssertHelper.class);
 
   private static MiniHBaseCluster cluster;
   private static HMaster master;
-  private static HBaseTestingUtility TEST_UTIL;
+  private static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
 
   public static class MyMaster extends HMaster {
+
     public MyMaster(Configuration conf) throws IOException, KeeperException, 
InterruptedException {
       super(conf);
     }
+
     @Override
-    protected void tryRegionServerReport(
-        long reportStartTime, long reportEndTime) {
+    protected void tryRegionServerReport(long reportStartTime, long 
reportEndTime) {
       // do nothing
     }
+  }
+
+  public static class MyRegionServer extends 
MiniHBaseCluster.MiniHBaseClusterRegionServer {
+
+    public MyRegionServer(Configuration conf) throws IOException, 
InterruptedException {
+      super(conf);
+    }
 
+    @Override
+    protected void tryRegionServerReport(long reportStartTime, long 
reportEndTime) {
+      // do nothing
+    }
   }
 
   @BeforeClass
   public static void startCluster() throws Exception {
     LOG.info("Starting cluster");
-    TEST_UTIL = new HBaseTestingUtility();
     // Set master class and use default values for other options.
-    StartMiniClusterOption option = StartMiniClusterOption.builder()
-        .masterClass(MyMaster.class).build();
+    StartMiniClusterOption option = 
StartMiniClusterOption.builder().masterClass(MyMaster.class)
+      .rsClass(MyRegionServer.class).build();
     TEST_UTIL.startMiniCluster(option);
     cluster = TEST_UTIL.getHBaseCluster();
     LOG.info("Waiting for active/ready master");
@@ -85,61 +95,44 @@ public class TestMasterMetrics {
 
   @AfterClass
   public static void after() throws Exception {
-    if (TEST_UTIL != null) {
-      TEST_UTIL.shutdownMiniCluster();
-    }
+    master.stopMaster();
+    TEST_UTIL.shutdownMiniCluster();
   }
 
   @Test
   public void testClusterRequests() throws Exception {
-
     // sending fake request to master to see how metric value has changed
-
     RegionServerStatusProtos.RegionServerReportRequest.Builder request =
-        RegionServerStatusProtos.RegionServerReportRequest.newBuilder();
+      RegionServerStatusProtos.RegionServerReportRequest.newBuilder();
     ServerName serverName = cluster.getMaster(0).getServerName();
     request.setServer(ProtobufUtil.toServerName(serverName));
     long expectedRequestNumber = 10000;
 
     MetricsMasterSource masterSource = 
master.getMasterMetrics().getMetricsSource();
     ClusterStatusProtos.ServerLoad sl = 
ClusterStatusProtos.ServerLoad.newBuilder()
-                                           
.setTotalNumberOfRequests(expectedRequestNumber)
-                                           .build();
+      .setTotalNumberOfRequests(expectedRequestNumber).build();
     request.setLoad(sl);
 
     master.getMasterRpcServices().regionServerReport(null, request.build());
-    boolean tablesOnMaster = 
LoadBalancer.isTablesOnMaster(TEST_UTIL.getConfiguration());
-    if (tablesOnMaster) {
-      metricsHelper.assertCounter("cluster_requests", expectedRequestNumber, 
masterSource);
-    } else {
-      metricsHelper.assertCounterGt("cluster_requests", expectedRequestNumber, 
masterSource);
-
-    }
+    metricsHelper.assertCounter("cluster_requests", expectedRequestNumber, 
masterSource);
 
     expectedRequestNumber = 15000;
 
-    sl = ClusterStatusProtos.ServerLoad.newBuilder()
-        .setTotalNumberOfRequests(expectedRequestNumber)
-        .build();
+    sl = 
ClusterStatusProtos.ServerLoad.newBuilder().setTotalNumberOfRequests(expectedRequestNumber)
+      .build();
     request.setLoad(sl);
 
     master.getMasterRpcServices().regionServerReport(null, request.build());
-    if (tablesOnMaster) {
-      metricsHelper.assertCounter("cluster_requests", expectedRequestNumber, 
masterSource);
-    } else {
-      metricsHelper.assertCounterGt("cluster_requests", expectedRequestNumber, 
masterSource);
-    }
-
-    master.stopMaster();
+    metricsHelper.assertCounter("cluster_requests", expectedRequestNumber, 
masterSource);
   }
 
   @Test
   public void testDefaultMasterMetrics() throws Exception {
     MetricsMasterSource masterSource = 
master.getMasterMetrics().getMetricsSource();
     boolean tablesOnMaster = 
LoadBalancer.isTablesOnMaster(TEST_UTIL.getConfiguration());
-    metricsHelper.assertGauge( "numRegionServers",1 + (tablesOnMaster? 1: 0), 
masterSource);
-    metricsHelper.assertGauge( "averageLoad", 1 + (tablesOnMaster? 0: 1), 
masterSource);
-    metricsHelper.assertGauge( "numDeadRegionServers", 0, masterSource);
+    metricsHelper.assertGauge("numRegionServers", 1 + (tablesOnMaster ? 1 : 
0), masterSource);
+    metricsHelper.assertGauge("averageLoad", 1, masterSource);
+    metricsHelper.assertGauge("numDeadRegionServers", 0, masterSource);
 
     metricsHelper.assertGauge("masterStartTime", master.getMasterStartTime(), 
masterSource);
     metricsHelper.assertGauge("masterActiveTime", 
master.getMasterActiveTime(), masterSource);

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterOperationsForRegionReplicas.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterOperationsForRegionReplicas.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterOperationsForRegionReplicas.java
index 3f4590c..4d5c946 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterOperationsForRegionReplicas.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterOperationsForRegionReplicas.java
@@ -200,7 +200,7 @@ public class TestMasterOperationsForRegionReplicas {
       StartMiniClusterOption option = StartMiniClusterOption.builder()
           .numRegionServers(numSlaves).rsPorts(rsports).build();
       TEST_UTIL.startMiniHBaseCluster(option);
-      TEST_UTIL.waitTableEnabled(tableName);
+      TEST_UTIL.waitTableAvailable(tableName);
       validateFromSnapshotFromMeta(TEST_UTIL, tableName, numRegions, 
numReplica,
         ADMIN.getConnection());
 
@@ -208,7 +208,7 @@ public class TestMasterOperationsForRegionReplicas {
       // one server running
       TEST_UTIL.shutdownMiniHBaseCluster();
       TEST_UTIL.startMiniHBaseCluster();
-      TEST_UTIL.waitTableEnabled(tableName);
+      TEST_UTIL.waitTableAvailable(tableName);
       validateSingleRegionServerAssignment(ADMIN.getConnection(), numRegions, 
numReplica);
       for (int i = 1; i < numSlaves; i++) { //restore the cluster
         TEST_UTIL.getMiniHBaseCluster().startRegionServer();
@@ -334,7 +334,7 @@ public class TestMasterOperationsForRegionReplicas {
       connection);
     snapshot.initialize();
     Map<RegionInfo, ServerName> regionToServerMap = 
snapshot.getRegionToRegionServerMap();
-    assert(regionToServerMap.size() == numRegions * numReplica + 1); //'1' for 
the namespace
+    assert(regionToServerMap.size() == numRegions * numReplica);
     Map<ServerName, List<RegionInfo>> serverToRegionMap = 
snapshot.getRegionServerToRegionMap();
     for (Map.Entry<ServerName, List<RegionInfo>> entry : 
serverToRegionMap.entrySet()) {
       if 
(entry.getKey().equals(util.getHBaseCluster().getMaster().getServerName())) {
@@ -361,14 +361,14 @@ public class TestMasterOperationsForRegionReplicas {
       connection);
     snapshot.initialize();
     Map<RegionInfo, ServerName>  regionToServerMap = 
snapshot.getRegionToRegionServerMap();
-    assertEquals(regionToServerMap.size(), numRegions * numReplica + 1);
+    assertEquals(regionToServerMap.size(), numRegions * numReplica);
     Map<ServerName, List<RegionInfo>> serverToRegionMap = 
snapshot.getRegionServerToRegionMap();
     assertEquals("One Region Only", 1, serverToRegionMap.keySet().size());
     for (Map.Entry<ServerName, List<RegionInfo>> entry : 
serverToRegionMap.entrySet()) {
       if 
(entry.getKey().equals(TEST_UTIL.getHBaseCluster().getMaster().getServerName()))
 {
         continue;
       }
-      assertEquals(entry.getValue().size(), numRegions * numReplica + 1);
+      assertEquals(entry.getValue().size(), numRegions * numReplica);
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java
index 665e5c6..fca2866 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java
@@ -91,9 +91,8 @@ public class TestMasterRestartAfterDisablingTable {
     TEST_UTIL.getAdmin().disableTable(tableName);
 
     NavigableSet<String> regions = 
HBaseTestingUtility.getAllOnlineRegions(cluster);
-    assertEquals(
-        "The number of regions for the table tableRestart should be 0 and only"
-            + "the catalog and namespace tables should be present.", 2, 
regions.size());
+    assertEquals("The number of regions for the table tableRestart should be 0 
and only" +
+      "the catalog table should be present.", 1, regions.size());
 
     List<MasterThread> masterThreads = cluster.getMasterThreads();
     MasterThread activeMaster = null;
@@ -120,12 +119,10 @@ public class TestMasterRestartAfterDisablingTable {
     TEST_UTIL.waitUntilNoRegionsInTransition(60000);
     log("Verifying there are " + numRegions + " assigned on cluster\n");
     regions = HBaseTestingUtility.getAllOnlineRegions(cluster);
-    assertEquals("The assigned regions were not onlined after master"
-        + " switch except for the catalog and namespace tables.",
-          6, regions.size());
-    assertTrue("The table should be in enabled state",
-        cluster.getMaster().getTableStateManager()
-        .isTableState(TableName.valueOf(name.getMethodName()), 
TableState.State.ENABLED));
+    assertEquals("The assigned regions were not onlined after master" +
+      " switch except for the catalog table.", 5, regions.size());
+    assertTrue("The table should be in enabled state", 
cluster.getMaster().getTableStateManager()
+      .isTableState(TableName.valueOf(name.getMethodName()), 
TableState.State.ENABLED));
     ht.close();
     TEST_UTIL.shutdownMiniCluster();
   }

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMigrateNamespaceTable.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMigrateNamespaceTable.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMigrateNamespaceTable.java
new file mode 100644
index 0000000..d114317
--- /dev/null
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMigrateNamespaceTable.java
@@ -0,0 +1,108 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.master;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import java.io.IOException;
+import org.apache.hadoop.hbase.HBaseClassTestRule;
+import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.NamespaceDescriptor;
+import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.client.Table;
+import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
+import 
org.apache.hadoop.hbase.master.procedure.AbstractStateMachineNamespaceProcedure;
+import org.apache.hadoop.hbase.testclassification.LargeTests;
+import org.apache.hadoop.hbase.testclassification.MasterTests;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.util.JVMClusterUtil.MasterThread;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
+
+/**
+ * Testcase for HBASE-21154.
+ */
+@Category({ MasterTests.class, LargeTests.class })
+public class TestMigrateNamespaceTable {
+
+  @ClassRule
+  public static final HBaseClassTestRule CLASS_RULE =
+    HBaseClassTestRule.forClass(TestMigrateNamespaceTable.class);
+
+  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
+
+  @BeforeClass
+  public static void setUp() throws Exception {
+    UTIL.startMiniCluster(1);
+  }
+
+  @AfterClass
+  public static void tearDow() throws Exception {
+    UTIL.shutdownMiniCluster();
+  }
+
+  @Test
+  public void testMigrate() throws IOException, InterruptedException {
+    UTIL.getAdmin().createTable(TableDescriptorBuilder.NAMESPACE_TABLEDESC);
+    try (Table table = 
UTIL.getConnection().getTable(TableName.NAMESPACE_TABLE_NAME)) {
+      for (int i = 0; i < 5; i++) {
+        NamespaceDescriptor nd = NamespaceDescriptor.create("Test-NS-" + i)
+          .addConfiguration("key-" + i, "value-" + i).build();
+        table.put(new Put(Bytes.toBytes(nd.getName())).addColumn(
+          TableDescriptorBuilder.NAMESPACE_FAMILY_INFO_BYTES,
+          TableDescriptorBuilder.NAMESPACE_COL_DESC_BYTES,
+          ProtobufUtil.toProtoNamespaceDescriptor(nd).toByteArray()));
+        AbstractStateMachineNamespaceProcedure
+          
.createDirectory(UTIL.getMiniHBaseCluster().getMaster().getMasterFileSystem(), 
nd);
+      }
+    }
+    MasterThread masterThread = UTIL.getMiniHBaseCluster().getMasterThread();
+    masterThread.getMaster().stop("For testing");
+    masterThread.join();
+    UTIL.getMiniHBaseCluster().startMaster();
+    // 5 + default and system('hbase')
+    assertEquals(7, UTIL.getAdmin().listNamespaceDescriptors().length);
+    for (int i = 0; i < 5; i++) {
+      NamespaceDescriptor nd = 
UTIL.getAdmin().getNamespaceDescriptor("Test-NS-" + i);
+      assertEquals("Test-NS-" + i, nd.getName());
+      assertEquals(1, nd.getConfiguration().size());
+      assertEquals("value-" + i, nd.getConfigurationValue("key-" + i));
+    }
+    UTIL.waitFor(30000, () -> 
UTIL.getAdmin().isTableDisabled(TableName.NAMESPACE_TABLE_NAME));
+
+    masterThread = UTIL.getMiniHBaseCluster().getMasterThread();
+    masterThread.getMaster().stop("For testing");
+    masterThread.join();
+
+    UTIL.getMiniHBaseCluster().startMaster();
+
+    // make sure that we could still restart the cluster after disabling the 
namespace table.
+    assertEquals(7, UTIL.getAdmin().listNamespaceDescriptors().length);
+
+    // let's delete the namespace table
+    UTIL.getAdmin().deleteTable(TableName.NAMESPACE_TABLE_NAME);
+    assertFalse(UTIL.getAdmin().tableExists(TableName.NAMESPACE_TABLE_NAME));
+  }
+}

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRestartCluster.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRestartCluster.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRestartCluster.java
index 04720cd..4ba1876 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRestartCluster.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRestartCluster.java
@@ -81,7 +81,7 @@ public class TestRestartCluster {
     }
 
     List<RegionInfo> allRegions = 
MetaTableAccessor.getAllRegions(UTIL.getConnection(), false);
-    assertEquals(4, allRegions.size());
+    assertEquals(3, allRegions.size());
 
     LOG.info("\n\nShutting down cluster");
     UTIL.shutdownMiniHBaseCluster();
@@ -96,7 +96,7 @@ public class TestRestartCluster {
     // Otherwise we're reusing an Connection that has gone stale because
     // the shutdown of the cluster also called shut of the connection.
     allRegions = MetaTableAccessor.getAllRegions(UTIL.getConnection(), false);
-    assertEquals(4, allRegions.size());
+    assertEquals(3, allRegions.size());
     LOG.info("\n\nWaiting for tables to be available");
     for(TableName TABLE: TABLES) {
       try {
@@ -201,9 +201,6 @@ public class TestRestartCluster {
       snapshot.getRegionToRegionServerMap();
     assertEquals(regionToRegionServerMap.size(), 
newRegionToRegionServerMap.size());
     for (Map.Entry<RegionInfo, ServerName> entry : 
newRegionToRegionServerMap.entrySet()) {
-      if (TableName.NAMESPACE_TABLE_NAME.equals(entry.getKey().getTable())) {
-        continue;
-      }
       ServerName oldServer = regionToRegionServerMap.get(entry.getKey());
       ServerName currentServer = entry.getValue();
       LOG.info(

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRollingRestart.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRollingRestart.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRollingRestart.java
index ff8ad0b..8a6f708 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRollingRestart.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRollingRestart.java
@@ -103,11 +103,13 @@ public class TestRollingRestart {
     log("Waiting for no more RIT\n");
     TEST_UTIL.waitUntilNoRegionsInTransition(60000);
     NavigableSet<String> regions = 
HBaseTestingUtility.getAllOnlineRegions(cluster);
-    log("Verifying only catalog and namespace regions are assigned\n");
-    if (regions.size() != 2) {
-      for (String oregion : regions) log("Region still online: " + oregion);
+    log("Verifying only catalog region is assigned\n");
+    if (regions.size() != 1) {
+      for (String oregion : regions) {
+        log("Region still online: " + oregion);
+      }
     }
-    assertEquals(2, regions.size());
+    assertEquals(1, regions.size());
     log("Enabling table\n");
     TEST_UTIL.getAdmin().enableTable(tableName);
     log("Waiting for no more RIT\n");

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestRegionMoveAndAbandon.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestRegionMoveAndAbandon.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestRegionMoveAndAbandon.java
index 05047c6..bb95a6f 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestRegionMoveAndAbandon.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestRegionMoveAndAbandon.java
@@ -64,6 +64,7 @@ public class TestRegionMoveAndAbandon {
   private MiniZooKeeperCluster zkCluster;
   private HRegionServer rs1;
   private HRegionServer rs2;
+  private TableName tableName;
   private RegionInfo regionInfo;
 
   @Before
@@ -75,10 +76,10 @@ public class TestRegionMoveAndAbandon {
     rs1 = cluster.getRegionServer(0);
     rs2 = cluster.getRegionServer(1);
     assertEquals(2, cluster.getRegionServerThreads().size());
-    // We'll use hbase:namespace for our testing
-    UTIL.waitTableAvailable(TableName.NAMESPACE_TABLE_NAME, 30_000);
-    regionInfo =
-      
Iterables.getOnlyElement(cluster.getRegions(TableName.NAMESPACE_TABLE_NAME)).getRegionInfo();
+    tableName = TableName.valueOf(name.getMethodName());
+    UTIL.createTable(tableName, Bytes.toBytes("cf"));
+    UTIL.waitTableAvailable(tableName, 30_000);
+    regionInfo = 
Iterables.getOnlyElement(cluster.getRegions(tableName)).getRegionInfo();
   }
 
   @After
@@ -105,7 +106,7 @@ public class TestRegionMoveAndAbandon {
     // Stop RS1
     cluster.killRegionServer(rs1.getServerName());
     // Region should get moved to RS2
-    UTIL.waitTableAvailable(TableName.NAMESPACE_TABLE_NAME, 30_000);
+    UTIL.waitTableAvailable(tableName, 30_000);
     // Restart the master
     LOG.info("Killing master {}", cluster.getMaster().getServerName());
     cluster.killMaster(cluster.getMaster().getServerName());
@@ -120,7 +121,7 @@ public class TestRegionMoveAndAbandon {
     UTIL.waitFor(30_000, new Waiter.Predicate<Exception>() {
       @Override
       public boolean evaluate() throws Exception {
-        try (Table nsTable = 
UTIL.getConnection().getTable(TableName.NAMESPACE_TABLE_NAME)) {
+        try (Table nsTable = UTIL.getConnection().getTable(tableName)) {
           // Doesn't matter what we're getting. We just want to make sure we 
can access the region
           nsTable.get(new Get(Bytes.toBytes("a")));
           return true;

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticLoadBalancer.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticLoadBalancer.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticLoadBalancer.java
index a74a3e5..4bc566c 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticLoadBalancer.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticLoadBalancer.java
@@ -160,7 +160,6 @@ public class TestFavoredStochasticLoadBalancer extends 
BalancerTestBase {
     LoadBalancer balancer = master.getLoadBalancer();
     List<RegionInfo> regions = admin.getRegions(tableName);
     regions.addAll(admin.getTableRegions(TableName.META_TABLE_NAME));
-    regions.addAll(admin.getTableRegions(TableName.NAMESPACE_TABLE_NAME));
     List<ServerName> servers = Lists.newArrayList(
       
admin.getClusterMetrics(EnumSet.of(Option.LIVE_SERVERS)).getLiveServerMetrics().keySet());
     Map<ServerName, List<RegionInfo>> map = 
balancer.roundRobinAssignment(regions, servers);

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.java
index 66e72d0..484ebaa 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.java
@@ -902,7 +902,7 @@ public class TestMasterProcedureScheduler {
 
     @Override
     public TableName getTableName() {
-      return TableName.NAMESPACE_TABLE_NAME;
+      return TableProcedureInterface.DUMMY_NAMESPACE_TABLE_NAME;
     }
 
     @Override
@@ -1009,7 +1009,7 @@ public class TestMasterProcedureScheduler {
 
     LockedResource tableResource = locks.get(1);
     assertLockResource(tableResource, LockedResourceType.TABLE,
-      TableName.NAMESPACE_TABLE_NAME.getNameAsString());
+      TableProcedureInterface.DUMMY_NAMESPACE_TABLE_NAME.getNameAsString());
     assertSharedLock(tableResource, 1);
     assertTrue(tableResource.getWaitingProcedures().isEmpty());
   }

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyNamespaceProcedure.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyNamespaceProcedure.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyNamespaceProcedure.java
index e76aacd..4622f79 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyNamespaceProcedure.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyNamespaceProcedure.java
@@ -240,11 +240,9 @@ public class TestModifyNamespaceProcedure {
     ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, true);
 
     // Modify
-    nsd.setConfiguration(nsKey, nsValue);
-
     // Start the Modify procedure && kill the executor
-    long procId = procExec.submitProcedure(
-      new ModifyNamespaceProcedure(procExec.getEnvironment(), nsd));
+    long procId = procExec.submitProcedure(new 
ModifyNamespaceProcedure(procExec.getEnvironment(),
+      NamespaceDescriptor.create(nsd).addConfiguration(nsKey, 
nsValue).build()));
 
     int lastStep = 2; // failing before MODIFY_NAMESPACE_UPDATE_NS_TABLE
     MasterProcedureTestingUtility.testRollbackAndDoubleExecution(procExec, 
procId, lastStep);

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestProcedurePriority.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestProcedurePriority.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestProcedurePriority.java
index 32fb173..9ebad27 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestProcedurePriority.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestProcedurePriority.java
@@ -136,8 +136,6 @@ public class TestProcedurePriority {
       .stream().filter(t -> 
!t.getRegionServer().getRegions(TableName.META_TABLE_NAME).isEmpty())
       .findAny().get();
     HRegionServer rsNoMeta = 
UTIL.getOtherRegionServer(rsWithMetaThread.getRegionServer());
-    // wait for NS table initialization to avoid our error inject affecting 
master initialization
-    UTIL.waitTableAvailable(TableName.NAMESPACE_TABLE_NAME);
     FAIL = true;
     UTIL.getMiniHBaseCluster().killRegionServer(rsNoMeta.getServerName());
     // wait until all the worker thread are stuck, which means that the stuck 
checker will start to

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestLogRoller.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestLogRoller.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestLogRoller.java
index e8c9423..7892d44 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestLogRoller.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestLogRoller.java
@@ -24,9 +24,11 @@ import static org.junit.Assert.assertTrue;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.regionserver.wal.FSHLog;
 import org.apache.hadoop.hbase.testclassification.MediumTests;
 import org.apache.hadoop.hbase.testclassification.RegionServerTests;
+import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;
 import org.junit.After;
 import org.junit.Before;
@@ -49,6 +51,9 @@ public class TestLogRoller {
   public void setup() throws Exception {
     TEST_UTIL.getConfiguration().setInt("hbase.regionserver.logroll.period", 
logRollPeriod);
     TEST_UTIL.startMiniCluster(1);
+    TableName name = TableName.valueOf("Test");
+    TEST_UTIL.createTable(name, Bytes.toBytes("cf"));
+    TEST_UTIL.waitTableAvailable(name);
   }
 
   @After

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.java
index 9bbce09..0e7c019 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.java
@@ -443,7 +443,6 @@ public class TestPerColumnFamilyFlush {
    * When a log roll is about to happen, we do a flush of the regions who will 
be affected by the
    * log roll. These flushes cannot be a selective flushes, otherwise we 
cannot roll the logs. This
    * test ensures that we do a full-flush in that scenario.
-   * @throws IOException
    */
   @Test
   public void testFlushingWhenLogRolling() throws Exception {
@@ -467,12 +466,6 @@ public class TestPerColumnFamilyFlush {
     TEST_UTIL.startMiniCluster(numRegionServers);
     try {
       Table table = TEST_UTIL.createTable(tableName, FAMILIES);
-      // Force flush the namespace table so edits to it are not hanging around 
as oldest
-      // edits. Otherwise, below, when we make maximum number of WAL files, 
then it will be
-      // the namespace region that is flushed and not the below 
'desiredRegion'.
-      try (Admin admin = TEST_UTIL.getConnection().getAdmin()) {
-        admin.flush(TableName.NAMESPACE_TABLE_NAME);
-      }
       Pair<HRegion, HRegionServer> desiredRegionAndServer = 
getRegionWithName(tableName);
       final HRegion desiredRegion = desiredRegionAndServer.getFirst();
       assertTrue("Could not find a region which hosts the new region.", 
desiredRegion != null);

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.java
index d8a9074..a4c0918 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.java
@@ -135,7 +135,7 @@ public class TestRegionReplicasWithRestartScenarios {
     checkDuplicates(onlineRegions3);
     assertFalse(res);
     int totalRegions = onlineRegions.size() + onlineRegions2.size() + 
onlineRegions3.size();
-    assertEquals(62, totalRegions);
+    assertEquals(61, totalRegions);
   }
 
   private boolean checkDuplicates(Collection<HRegion> onlineRegions3) throws 
Exception {

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java
index 79ee15d..40c3d29 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java
@@ -239,7 +239,7 @@ public class TestRegionServerMetrics {
 
   @Test
   public void testRegionCount() throws Exception {
-    metricsHelper.assertGauge("regionCount", TABLES_ON_MASTER? 1: 3, 
serverSource);
+    metricsHelper.assertGauge("regionCount", TABLES_ON_MASTER ? 1 : 2, 
serverSource);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestLogRolling.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestLogRolling.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestLogRolling.java
index 83bd9ab..4c19aa0 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestLogRolling.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestLogRolling.java
@@ -254,9 +254,6 @@ public abstract class AbstractTestLogRolling  {
       final WAL log = server.getWAL(region.getRegionInfo());
       Store s = region.getStore(HConstants.CATALOG_FAMILY);
 
-      //have to flush namespace to ensure it doesn't affect wall tests
-      admin.flush(TableName.NAMESPACE_TABLE_NAME);
-
       // Put some stuff into table, to make sure we have some files to compact.
       for (int i = 1; i <= 2; ++i) {
         doPut(table, i);

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationWALEntryFilters.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationWALEntryFilters.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationWALEntryFilters.java
index f2c5e50..7faaefb 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationWALEntryFilters.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationWALEntryFilters.java
@@ -73,14 +73,7 @@ public class TestReplicationWALEntryFilters {
 
     assertNull(filter.filter(metaEntry));
 
-    // ns table
-    WALKeyImpl key2 =
-        new WALKeyImpl(new byte[0], TableName.NAMESPACE_TABLE_NAME, 
System.currentTimeMillis());
-    Entry nsEntry = new Entry(key2, null);
-    assertNull(filter.filter(nsEntry));
-
     // user table
-
     WALKeyImpl key3 = new WALKeyImpl(new byte[0], TableName.valueOf("foo"),
         System.currentTimeMillis());
     Entry userEntry = new Entry(key3, null);

http://git-wip-us.apache.org/repos/asf/hbase/blob/1acbd36c/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckMOB.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckMOB.java 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckMOB.java
index 85ab16d..0855559 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckMOB.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckMOB.java
@@ -80,7 +80,6 @@ public class TestHBaseFsckMOB extends BaseTestHBaseFsck {
     admin.setBalancerRunning(false, true);
 
     TEST_UTIL.waitUntilAllRegionsAssigned(TableName.META_TABLE_NAME);
-    TEST_UTIL.waitUntilAllRegionsAssigned(TableName.NAMESPACE_TABLE_NAME);
   }
 
   @AfterClass

Reply via email to