You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2020/08/30 09:31:52 UTC
[hbase] branch master updated: HBASE-24964 Remove
MetaTableAccessor.tableExists (#2330)
This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 2c4204a HBASE-24964 Remove MetaTableAccessor.tableExists (#2330)
2c4204a is described below
commit 2c4204ad75162bc8cf475c5cae6898ea5f12a463
Author: Duo Zhang <zh...@apache.org>
AuthorDate: Sun Aug 30 17:31:26 2020 +0800
HBASE-24964 Remove MetaTableAccessor.tableExists (#2330)
Signed-off-by: Viraj Jasani <vj...@apache.org>
---
.../hadoop/hbase/backup/util/BackupUtils.java | 53 ++++++++++++----------
.../org/apache/hadoop/hbase/MetaTableAccessor.java | 14 ------
.../org/apache/hadoop/hbase/TableDescriptors.java | 8 ++++
.../org/apache/hadoop/hbase/master/HMaster.java | 4 +-
.../AbstractStateMachineRegionProcedure.java | 15 ------
.../AbstractStateMachineTableProcedure.java | 4 +-
.../master/procedure/CloneSnapshotProcedure.java | 6 +--
.../master/procedure/CreateTableProcedure.java | 2 +-
.../master/procedure/DisableTableProcedure.java | 2 +-
.../master/procedure/EnableTableProcedure.java | 3 +-
.../master/procedure/ModifyTableProcedure.java | 2 +-
.../master/procedure/RestoreSnapshotProcedure.java | 4 +-
.../hbase/master/slowlog/SlowLogMasterService.java | 2 +-
.../hbase/master/snapshot/SnapshotManager.java | 3 +-
.../hadoop/hbase/namespace/NamespaceAuditor.java | 2 +-
.../hadoop/hbase/quotas/MasterQuotaManager.java | 5 +-
.../hbase/quotas/SpaceQuotaRefresherChore.java | 13 +++---
.../access/SnapshotScannerHDFSAclCleaner.java | 2 +-
.../security/visibility/VisibilityController.java | 25 +++++-----
.../apache/hadoop/hbase/TestMetaTableAccessor.java | 19 --------
.../procedure/MasterProcedureTestingUtility.java | 11 ++++-
.../hbase/namequeues/TestSlowLogAccessor.java | 18 ++++----
.../TestQuotaObserverChoreRegionReports.java | 16 +++----
.../hbase/quotas/TestSpaceQuotasWithSnapshots.java | 7 ++-
.../TestSplitTransactionOnCluster.java | 7 +--
25 files changed, 102 insertions(+), 145 deletions(-)
diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/util/BackupUtils.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/util/BackupUtils.java
index f45c94a..2f81bfc 100644
--- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/util/BackupUtils.java
+++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/util/BackupUtils.java
@@ -49,6 +49,7 @@ import org.apache.hadoop.hbase.backup.HBackupFileSystem;
import org.apache.hadoop.hbase.backup.RestoreRequest;
import org.apache.hadoop.hbase.backup.impl.BackupManifest;
import org.apache.hadoop.hbase.backup.impl.BackupManifest.BackupImage;
+import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.RegionInfo;
import org.apache.hadoop.hbase.client.TableDescriptor;
@@ -128,32 +129,34 @@ public final class BackupUtils {
// for each table in the table set, copy out the table info and region
// info files in the correct directory structure
- for (TableName table : backupInfo.getTables()) {
- if (!MetaTableAccessor.tableExists(conn, table)) {
- LOG.warn("Table " + table + " does not exists, skipping it.");
- continue;
- }
- TableDescriptor orig = FSTableDescriptors.getTableDescriptorFromFs(fs, rootDir, table);
-
- // write a copy of descriptor to the target directory
- Path target = new Path(backupInfo.getTableBackupDir(table));
- FileSystem targetFs = target.getFileSystem(conf);
- FSTableDescriptors descriptors =
- new FSTableDescriptors(targetFs, CommonFSUtils.getRootDir(conf));
- descriptors.createTableDescriptorForTableDirectory(target, orig, false);
- LOG.debug("Attempting to copy table info for:" + table + " target: " + target
- + " descriptor: " + orig);
- LOG.debug("Finished copying tableinfo.");
- List<RegionInfo> regions = MetaTableAccessor.getTableRegions(conn, table);
- // For each region, write the region info to disk
- LOG.debug("Starting to write region info for table " + table);
- for (RegionInfo regionInfo : regions) {
- Path regionDir = FSUtils
- .getRegionDirFromTableDir(new Path(backupInfo.getTableBackupDir(table)), regionInfo);
- regionDir = new Path(backupInfo.getTableBackupDir(table), regionDir.getName());
- writeRegioninfoOnFilesystem(conf, targetFs, regionDir, regionInfo);
+ try (Admin admin = conn.getAdmin()) {
+ for (TableName table : backupInfo.getTables()) {
+ if (!admin.tableExists(table)) {
+ LOG.warn("Table " + table + " does not exists, skipping it.");
+ continue;
+ }
+ TableDescriptor orig = FSTableDescriptors.getTableDescriptorFromFs(fs, rootDir, table);
+
+ // write a copy of descriptor to the target directory
+ Path target = new Path(backupInfo.getTableBackupDir(table));
+ FileSystem targetFs = target.getFileSystem(conf);
+ FSTableDescriptors descriptors =
+ new FSTableDescriptors(targetFs, CommonFSUtils.getRootDir(conf));
+ descriptors.createTableDescriptorForTableDirectory(target, orig, false);
+ LOG.debug("Attempting to copy table info for:" + table + " target: " + target +
+ " descriptor: " + orig);
+ LOG.debug("Finished copying tableinfo.");
+ List<RegionInfo> regions = MetaTableAccessor.getTableRegions(conn, table);
+ // For each region, write the region info to disk
+ LOG.debug("Starting to write region info for table " + table);
+ for (RegionInfo regionInfo : regions) {
+ Path regionDir = FSUtils
+ .getRegionDirFromTableDir(new Path(backupInfo.getTableBackupDir(table)), regionInfo);
+ regionDir = new Path(backupInfo.getTableBackupDir(table), regionDir.getName());
+ writeRegioninfoOnFilesystem(conf, targetFs, regionDir, regionInfo);
+ }
+ LOG.debug("Finished writing region info for table " + table);
}
- LOG.debug("Finished writing region info for table " + table);
}
}
diff --git a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/MetaTableAccessor.java b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/MetaTableAccessor.java
index eb1ce38..6144de9 100644
--- a/hbase-balancer/src/main/java/org/apache/hadoop/hbase/MetaTableAccessor.java
+++ b/hbase-balancer/src/main/java/org/apache/hadoop/hbase/MetaTableAccessor.java
@@ -355,20 +355,6 @@ public final class MetaTableAccessor {
}
/**
- * Checks if the specified table exists. Looks at the hbase:meta table hosted on the specified
- * server.
- * @param connection connection we're using
- * @param tableName table to check
- * @return true if the table exists in meta, false if not
- */
- public static boolean tableExists(Connection connection, final TableName tableName)
- throws IOException {
- // Catalog tables always exist.
- return tableName.equals(TableName.META_TABLE_NAME) ||
- getTableState(connection, tableName) != null;
- }
-
- /**
* Lists all of the regions currently in META.
* @param connection to connect with
* @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/TableDescriptors.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/TableDescriptors.java
index e82082c..f7e0704 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/TableDescriptors.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/TableDescriptors.java
@@ -28,6 +28,14 @@ import org.apache.hadoop.hbase.client.TableDescriptor;
*/
@InterfaceAudience.Private
public interface TableDescriptors {
+
+ /**
+ * Test whether a given table exists, i.e, has a table descriptor.
+ */
+ default boolean exists(TableName tableName) throws IOException {
+ return get(tableName) != null;
+ }
+
/**
* @return TableDescriptor for tablename
*/
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index f1453f3..022f292 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -2607,8 +2607,8 @@ public class HMaster extends HRegionServer implements MasterServices {
}
private void checkTableExists(final TableName tableName)
- throws IOException, TableNotFoundException {
- if (!MetaTableAccessor.tableExists(getConnection(), tableName)) {
+ throws IOException, TableNotFoundException {
+ if (!tableDescriptors.exists(tableName)) {
throw new TableNotFoundException(tableName);
}
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.java
index cf4818c..4558110 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineRegionProcedure.java
@@ -19,8 +19,6 @@
package org.apache.hadoop.hbase.master.procedure;
import java.io.IOException;
-
-import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.TableNotFoundException;
import org.apache.hadoop.hbase.client.RegionInfo;
@@ -78,19 +76,6 @@ public abstract class AbstractStateMachineRegionProcedure<TState>
sb.append(", region=").append(getRegion().getShortNameToLog());
}
- /**
- * Check whether a table is modifiable - exists and either offline or online with config set
- * @param env MasterProcedureEnv
- * @throws IOException
- */
- @Override
- protected void checkTableModifiable(final MasterProcedureEnv env) throws IOException {
- // Checks whether the table exists
- if (!MetaTableAccessor.tableExists(env.getMasterServices().getConnection(), getTableName())) {
- throw new TableNotFoundException(getTableName());
- }
- }
-
@Override
protected boolean holdLock(MasterProcedureEnv env) {
return true;
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.java
index 3b907f5..1edfc74 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.java
@@ -20,7 +20,6 @@ package org.apache.hadoop.hbase.master.procedure;
import java.io.IOException;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseIOException;
-import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.TableNotDisabledException;
import org.apache.hadoop.hbase.TableNotEnabledException;
@@ -120,11 +119,10 @@ public abstract class AbstractStateMachineTableProcedure<TState>
/**
* Check whether a table is modifiable - exists and either offline or online with config set
* @param env MasterProcedureEnv
- * @throws IOException
*/
protected void checkTableModifiable(final MasterProcedureEnv env) throws IOException {
// Checks whether the table exists
- if (!MetaTableAccessor.tableExists(env.getMasterServices().getConnection(), getTableName())) {
+ if (!env.getMasterServices().getTableDescriptors().exists(getTableName())) {
throw new TableNotFoundException(getTableName());
}
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.java
index 3b483e6..dae7b94 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.java
@@ -27,7 +27,6 @@ import java.util.Map;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.TableExistsException;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.RegionInfo;
@@ -330,12 +329,11 @@ public class CloneSnapshotProcedure
/**
* Action before any real action of cloning from snapshot.
* @param env MasterProcedureEnv
- * @throws IOException
*/
private void prepareClone(final MasterProcedureEnv env) throws IOException {
final TableName tableName = getTableName();
- if (MetaTableAccessor.tableExists(env.getMasterServices().getConnection(), tableName)) {
- throw new TableExistsException(getTableName());
+ if (env.getMasterServices().getTableDescriptors().exists(tableName)) {
+ throw new TableExistsException(tableName);
}
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java
index 113f96c..e7162d9 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CreateTableProcedure.java
@@ -243,7 +243,7 @@ public class CreateTableProcedure
private boolean prepareCreate(final MasterProcedureEnv env) throws IOException {
final TableName tableName = getTableName();
- if (MetaTableAccessor.tableExists(env.getMasterServices().getConnection(), tableName)) {
+ if (env.getMasterServices().getTableDescriptors().exists(tableName)) {
setFailure("master-create-table", new TableExistsException(getTableName()));
return false;
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.java
index a8a2a974..e67327e 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.java
@@ -246,7 +246,7 @@ public class DisableTableProcedure
setFailure("master-disable-table",
new ConstraintException("Cannot disable " + this.tableName));
canTableBeDisabled = false;
- } else if (!MetaTableAccessor.tableExists(env.getMasterServices().getConnection(), tableName)) {
+ } else if (!env.getMasterServices().getTableDescriptors().exists(tableName)) {
setFailure("master-disable-table", new TableNotFoundException(tableName));
canTableBeDisabled = false;
} else if (!skipTableStateCheck) {
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java
index 67afa7f..8ad3ae6 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.java
@@ -282,9 +282,8 @@ public class EnableTableProcedure
*/
private boolean prepareEnable(final MasterProcedureEnv env) throws IOException {
boolean canTableBeEnabled = true;
-
// Check whether table exists
- if (!MetaTableAccessor.tableExists(env.getMasterServices().getConnection(), tableName)) {
+ if (!env.getMasterServices().getTableDescriptors().exists(tableName)) {
setFailure("master-enable-table", new TableNotFoundException(tableName));
canTableBeEnabled = false;
} else {
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
index 49b04e4..64f4bf6 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ModifyTableProcedure.java
@@ -274,7 +274,7 @@ public class ModifyTableProcedure
*/
private void prepareModify(final MasterProcedureEnv env) throws IOException {
// Checks whether the table exists
- if (!MetaTableAccessor.tableExists(env.getMasterServices().getConnection(), getTableName())) {
+ if (!env.getMasterServices().getTableDescriptors().exists(getTableName())) {
throw new TableNotFoundException(getTableName());
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.java
index 4f6b1a1..06564a9 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/RestoreSnapshotProcedure.java
@@ -24,7 +24,6 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.DoNotRetryIOException;
@@ -54,6 +53,7 @@ import org.apache.hadoop.hbase.util.Pair;
import org.apache.yetus.audience.InterfaceAudience;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;
import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos;
@@ -330,7 +330,7 @@ public class RestoreSnapshotProcedure
private void prepareRestore(final MasterProcedureEnv env) throws IOException {
final TableName tableName = getTableName();
// Checks whether the table exists
- if (!MetaTableAccessor.tableExists(env.getMasterServices().getConnection(), tableName)) {
+ if (!env.getMasterServices().getTableDescriptors().exists(tableName)) {
throw new TableNotFoundException(tableName);
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/slowlog/SlowLogMasterService.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/slowlog/SlowLogMasterService.java
index 554ed88..2a7e5b4 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/slowlog/SlowLogMasterService.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/slowlog/SlowLogMasterService.java
@@ -63,7 +63,7 @@ public class SlowLogMasterService {
LOG.info("Slow/Large requests logging to system table hbase:slowlog is disabled. Quitting.");
return;
}
- if (!MetaTableAccessor.tableExists(masterServices.getConnection(),
+ if (!masterServices.getTableDescriptors().exists(
SlowLogTableAccessor.SLOW_LOG_TABLE_NAME)) {
LOG.info("slowlog table not found. Creating.");
this.masterServices.createSystemTable(TABLE_DESCRIPTOR_BUILDER.build());
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java
index ad302e1..8f57e6e 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java
@@ -42,7 +42,6 @@ import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseInterfaceAudience;
import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.Stoppable;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.TableDescriptor;
@@ -851,7 +850,7 @@ public class SnapshotManager extends MasterProcedureManager implements Stoppable
// Execute the restore/clone operation
long procId;
- if (MetaTableAccessor.tableExists(master.getConnection(), tableName)) {
+ if (master.getTableDescriptors().exists(tableName)) {
procId = restoreSnapshot(reqSnapshot, tableName, snapshot, snapshotTableDesc, nonceKey,
restoreAcl);
} else {
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/namespace/NamespaceAuditor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/namespace/NamespaceAuditor.java
index 0a74b09..a6b13e6 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/namespace/NamespaceAuditor.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/namespace/NamespaceAuditor.java
@@ -66,7 +66,7 @@ public class NamespaceAuditor {
public void checkQuotaToCreateTable(TableName tName, int regions) throws IOException {
if (stateManager.isInitialized()) {
// We do this check to fail fast.
- if (MetaTableAccessor.tableExists(this.masterServices.getConnection(), tName)) {
+ if (masterServices.getTableDescriptors().exists(tName)) {
throw new TableExistsException(tName);
}
stateManager.checkAndUpdateNamespaceTableCount(tName, regions);
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/MasterQuotaManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/MasterQuotaManager.java
index 75ca769..d80134a 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/MasterQuotaManager.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/MasterQuotaManager.java
@@ -28,12 +28,10 @@ import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.hbase.DoNotRetryIOException;
-import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.RegionStateListener;
import org.apache.hadoop.hbase.TableName;
@@ -105,8 +103,7 @@ public class MasterQuotaManager implements RegionStateListener {
}
// Create the quota table if missing
- if (!MetaTableAccessor.tableExists(masterServices.getConnection(),
- QuotaUtil.QUOTA_TABLE_NAME)) {
+ if (!masterServices.getTableDescriptors().exists(QuotaUtil.QUOTA_TABLE_NAME)) {
LOG.info("Quota table not found. Creating...");
createQuotaTable();
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/SpaceQuotaRefresherChore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/SpaceQuotaRefresherChore.java
index 94f1bda..e03b48f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/SpaceQuotaRefresherChore.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/quotas/SpaceQuotaRefresherChore.java
@@ -21,19 +21,18 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.TimeUnit;
-
import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.ScheduledChore;
import org.apache.hadoop.hbase.TableName;
-import org.apache.yetus.audience.InterfaceAudience;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* A {@link ScheduledChore} which periodically updates the {@link RegionServerSpaceQuotaManager}
@@ -160,7 +159,9 @@ public class SpaceQuotaRefresherChore extends ScheduledChore {
* @throws IOException throws IOException
*/
boolean checkQuotaTableExists() throws IOException {
- return MetaTableAccessor.tableExists(getConnection(), QuotaUtil.QUOTA_TABLE_NAME);
+ try (Admin admin = getConnection().getAdmin()) {
+ return admin.tableExists(QuotaUtil.QUOTA_TABLE_NAME);
+ }
}
/**
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclCleaner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclCleaner.java
index 6bf4c1f..8ce4266 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclCleaner.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclCleaner.java
@@ -122,6 +122,6 @@ public class SnapshotScannerHDFSAclCleaner extends BaseHFileCleanerDelegate {
}
private boolean tableExists(TableName tableName) throws IOException {
- return master != null && MetaTableAccessor.tableExists(master.getConnection(), tableName);
+ return master != null && master.getTableDescriptors().exists(tableName);
}
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java
index 6cc690f..02ed4dd 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/VisibilityController.java
@@ -40,7 +40,6 @@ import org.apache.hadoop.hbase.CellScanner;
import org.apache.hadoop.hbase.CoprocessorEnvironment;
import org.apache.hadoop.hbase.DoNotRetryIOException;
import org.apache.hadoop.hbase.HBaseInterfaceAudience;
-import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.PrivateCellUtil;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.Tag;
@@ -207,18 +206,20 @@ public class VisibilityController implements MasterCoprocessor, RegionCoprocesso
/********************************* Master related hooks **********************************/
@Override
- public void postStartMaster(ObserverContext<MasterCoprocessorEnvironment> ctx) throws IOException {
+ public void postStartMaster(ObserverContext<MasterCoprocessorEnvironment> ctx)
+ throws IOException {
// Need to create the new system table for labels here
- if (!MetaTableAccessor.tableExists(ctx.getEnvironment().getConnection(), LABELS_TABLE_NAME)) {
- // We will cache all the labels. No need of normal table block cache.
- // Let the "labels" table having only one region always. We are not expecting too many labels
- // in the system.
- TableDescriptor tableDescriptor = TableDescriptorBuilder.newBuilder(LABELS_TABLE_NAME)
- .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(LABELS_TABLE_FAMILY)
- .setBloomFilterType(BloomType.NONE).setBlockCacheEnabled(false).build())
- .setValue(TableDescriptorBuilder.SPLIT_POLICY, DisabledRegionSplitPolicy.class.getName())
- .build();
- try (Admin admin = ctx.getEnvironment().getConnection().getAdmin()) {
+ try (Admin admin = ctx.getEnvironment().getConnection().getAdmin()) {
+ if (!admin.tableExists(LABELS_TABLE_NAME)) {
+ // We will cache all the labels. No need of normal table block cache.
+ // Let the "labels" table having only one region always. We are not expecting too many
+ // labels in the system.
+ TableDescriptor tableDescriptor = TableDescriptorBuilder.newBuilder(LABELS_TABLE_NAME)
+ .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(LABELS_TABLE_FAMILY)
+ .setBloomFilterType(BloomType.NONE).setBlockCacheEnabled(false).build())
+ .setValue(TableDescriptorBuilder.SPLIT_POLICY, DisabledRegionSplitPolicy.class.getName())
+ .build();
+
admin.createTable(tableDescriptor);
}
}
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMetaTableAccessor.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMetaTableAccessor.java
index 112fa01..8e3d046 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMetaTableAccessor.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMetaTableAccessor.java
@@ -18,7 +18,6 @@
package org.apache.hadoop.hbase;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
@@ -324,24 +323,6 @@ public class TestMetaTableAccessor {
}
@Test
- public void testTableExists() throws IOException {
- final TableName tableName = TableName.valueOf(name.getMethodName());
- assertFalse(MetaTableAccessor.tableExists(connection, tableName));
- UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);
- assertTrue(MetaTableAccessor.tableExists(connection, tableName));
- Admin admin = UTIL.getAdmin();
- admin.disableTable(tableName);
- admin.deleteTable(tableName);
- assertFalse(MetaTableAccessor.tableExists(connection, tableName));
- assertTrue(MetaTableAccessor.tableExists(connection, TableName.META_TABLE_NAME));
- UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);
- assertTrue(MetaTableAccessor.tableExists(connection, tableName));
- admin.disableTable(tableName);
- admin.deleteTable(tableName);
- assertFalse(MetaTableAccessor.tableExists(connection, tableName));
- }
-
- @Test
public void testGetRegion() throws IOException, InterruptedException {
final String name = this.name.getMethodName();
LOG.info("Started " + name);
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java
index 0cc625f..24245a2 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java
@@ -39,6 +39,7 @@ import org.apache.hadoop.hbase.MiniHBaseCluster;
import org.apache.hadoop.hbase.RegionLocations;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.BufferedMutator;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
@@ -213,7 +214,7 @@ public class MasterProcedureTestingUtility {
LOG.debug("Table directory layout is as expected.");
// check meta
- assertTrue(MetaTableAccessor.tableExists(master.getConnection(), tableName));
+ assertTrue(tableExists(master.getConnection(), tableName));
assertEquals(regions.length, countMetaRegions(master, tableName));
// check htd
@@ -234,7 +235,7 @@ public class MasterProcedureTestingUtility {
assertFalse(fs.exists(tableDir));
// check meta
- assertFalse(MetaTableAccessor.tableExists(master.getConnection(), tableName));
+ assertFalse(tableExists(master.getConnection(), tableName));
assertEquals(0, countMetaRegions(master, tableName));
// check htd
@@ -582,6 +583,12 @@ public class MasterProcedureTestingUtility {
}
}
+ public static boolean tableExists(Connection conn, TableName tableName) throws IOException {
+ try (Admin admin = conn.getAdmin()) {
+ return admin.tableExists(tableName);
+ }
+ }
+
public static class InjectAbortOnLoadListener
implements ProcedureExecutor.ProcedureExecutorListener {
private final ProcedureExecutor<MasterProcedureEnv> procExec;
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/namequeues/TestSlowLogAccessor.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/namequeues/TestSlowLogAccessor.java
index a914796..4ebf2a5 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/namequeues/TestSlowLogAccessor.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/namequeues/TestSlowLogAccessor.java
@@ -28,7 +28,6 @@ import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
@@ -37,12 +36,9 @@ import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.namequeues.request.NamedQueueGetRequest;
import org.apache.hadoop.hbase.namequeues.response.NamedQueueGetResponse;
import org.apache.hadoop.hbase.regionserver.HRegionServer;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.TooSlowLog;
import org.apache.hadoop.hbase.slowlog.SlowLogTableAccessor;
import org.apache.hadoop.hbase.testclassification.MasterTests;
import org.apache.hadoop.hbase.testclassification.MediumTests;
-import org.apache.hbase.thirdparty.com.google.common.util.concurrent.Uninterruptibles;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
@@ -53,6 +49,11 @@ import org.junit.experimental.categories.Category;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.hbase.thirdparty.com.google.common.util.concurrent.Uninterruptibles;
+
+import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos;
+import org.apache.hadoop.hbase.shaded.protobuf.generated.TooSlowLog;
+
/**
* Tests for SlowLog System Table
*/
@@ -167,17 +168,16 @@ public class TestSlowLogAccessor {
}
}
- private Connection waitForSlowLogTableCreation() {
- Connection connection =
- HBASE_TESTING_UTILITY.getMiniHBaseCluster().getRegionServer(0).getConnection();
+ private Connection waitForSlowLogTableCreation() throws IOException {
Assert.assertNotEquals(-1, HBASE_TESTING_UTILITY.waitFor(2000, () -> {
try {
- return MetaTableAccessor.tableExists(connection, SlowLogTableAccessor.SLOW_LOG_TABLE_NAME);
+ return HBASE_TESTING_UTILITY.getAdmin()
+ .tableExists(SlowLogTableAccessor.SLOW_LOG_TABLE_NAME);
} catch (IOException e) {
return false;
}
}));
- return connection;
+ return HBASE_TESTING_UTILITY.getConnection();
}
@Test
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaObserverChoreRegionReports.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaObserverChoreRegionReports.java
index f69976b..912f042 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaObserverChoreRegionReports.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestQuotaObserverChoreRegionReports.java
@@ -19,17 +19,16 @@ package org.apache.hadoop.hbase.quotas;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.concurrent.TimeUnit;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.Waiter;
import org.apache.hadoop.hbase.client.Admin;
@@ -43,7 +42,6 @@ import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.master.HMaster;
-import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;
import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.After;
@@ -96,9 +94,9 @@ public class TestQuotaObserverChoreRegionReports {
TEST_UTIL.startMiniCluster(1);
// Wait till quota table onlined.
TEST_UTIL.waitFor(10000, new Waiter.Predicate<Exception>() {
- @Override public boolean evaluate() throws Exception {
- return MetaTableAccessor.tableExists(TEST_UTIL.getConnection(),
- QuotaTableUtil.QUOTA_TABLE_NAME);
+ @Override
+ public boolean evaluate() throws Exception {
+ return TEST_UTIL.getAdmin().tableExists(QuotaTableUtil.QUOTA_TABLE_NAME);
}
});
@@ -155,9 +153,9 @@ public class TestQuotaObserverChoreRegionReports {
TEST_UTIL.startMiniCluster(1);
// Wait till quota table onlined.
TEST_UTIL.waitFor(10000, new Waiter.Predicate<Exception>() {
- @Override public boolean evaluate() throws Exception {
- return MetaTableAccessor.tableExists(TEST_UTIL.getConnection(),
- QuotaTableUtil.QUOTA_TABLE_NAME);
+ @Override
+ public boolean evaluate() throws Exception {
+ return TEST_UTIL.getAdmin().tableExists(QuotaTableUtil.QUOTA_TABLE_NAME);
}
});
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestSpaceQuotasWithSnapshots.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestSpaceQuotasWithSnapshots.java
index 22e98c7..d681d2d 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestSpaceQuotasWithSnapshots.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/quotas/TestSpaceQuotasWithSnapshots.java
@@ -30,7 +30,6 @@ import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellScanner;
import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.Waiter;
import org.apache.hadoop.hbase.Waiter.Predicate;
@@ -88,9 +87,9 @@ public class TestSpaceQuotasWithSnapshots {
TEST_UTIL.startMiniCluster(1);
// Wait till quota table onlined.
TEST_UTIL.waitFor(10000, new Waiter.Predicate<Exception>() {
- @Override public boolean evaluate() throws Exception {
- return MetaTableAccessor.tableExists(TEST_UTIL.getConnection(),
- QuotaTableUtil.QUOTA_TABLE_NAME);
+ @Override
+ public boolean evaluate() throws Exception {
+ return TEST_UTIL.getAdmin().tableExists(QuotaTableUtil.QUOTA_TABLE_NAME);
}
});
}
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
index 3d5dbbf..98e8c9e 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
@@ -49,7 +49,6 @@ import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.MasterNotRunningException;
-import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.MiniHBaseCluster;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.StartMiniClusterOption;
@@ -672,8 +671,7 @@ public class TestSplitTransactionOnCluster {
admin.balancerSwitch(false, true);
// Turn off the meta scanner so it don't remove parent on us.
cluster.getMaster().setCatalogJanitorEnabled(false);
- boolean tableExists = MetaTableAccessor.tableExists(regionServer.getConnection(),
- tableName);
+ boolean tableExists = TESTING_UTIL.getAdmin().tableExists(tableName);
assertEquals("The specified table should be present.", true, tableExists);
final HRegion region = findSplittableRegion(oldRegions);
regionServerIndex = cluster.getServerWith(region.getRegionInfo().getRegionName());
@@ -693,8 +691,7 @@ public class TestSplitTransactionOnCluster {
Thread.sleep(1000);
} while ((newRegions.contains(oldRegions.get(0)) || newRegions.contains(oldRegions.get(1)))
|| newRegions.size() != 4);
- tableExists = MetaTableAccessor.tableExists(regionServer.getConnection(),
- tableName);
+ tableExists = TESTING_UTIL.getAdmin().tableExists(tableName);
assertEquals("The specified table should be present.", true, tableExists);
// exists works on stale and we see the put after the flush
byte[] b1 = Bytes.toBytes("row1");