private boolean shouldLoadFromMeta() throws IOException {
    if (migrationDone) {
      return true;
    }
    // the implementation is bit tricky
    // if there is already a disable namespace table procedure or the namespace table is already
    // disabled, we are safe to read from meta table as the migration is already done. If not, since
    // we are part of the master initialization work, so we can make sure that when reaching here,
    // the master has not been marked as initialize yet. And DisableTableProcedure can only be
    // executed after master is initialized, so here we are safe to read from namespace table,
    // without worrying about that the namespace table is disabled while we are reading and crash
    // the master startup.
    if (
      masterServices.getTableStateManager().isTableState(TableName.NAMESPACE_TABLE_NAME,
        TableState.State.DISABLED)
    ) {
      return true;
    }
    if (
      masterServices.getProcedures().stream().filter(p -> p instanceof DisableTableProcedure)
        .anyMatch(
          p -> ((DisableTableProcedure) p).getTableName().equals(TableName.NAMESPACE_TABLE_NAME))
    ) {
      return true;
    }
    return false;
  }
This is a helper class used internally to manage the namespace metadata that is stored in the ns
family in meta table.
hbase-server/src/main/java/org/apache/hadoop/hbase/master/TableNamespaceManager.java