You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2014/10/13 21:24:36 UTC

git commit: HBASE-12029 Use Table and RegionLocator in HTable.getRegionLocations() (Solomon Duskis)

Repository: hbase
Updated Branches:
  refs/heads/master b30d2f315 -> 9a893a9c6


HBASE-12029 Use Table and RegionLocator in HTable.getRegionLocations() (Solomon Duskis)


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/9a893a9c
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/9a893a9c
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/9a893a9c

Branch: refs/heads/master
Commit: 9a893a9c6a837e3147f365af5207562473e968a5
Parents: b30d2f3
Author: stack <st...@apache.org>
Authored: Mon Oct 13 12:24:27 2014 -0700
Committer: stack <st...@apache.org>
Committed: Mon Oct 13 12:24:27 2014 -0700

----------------------------------------------------------------------
 .../hadoop/hbase/client/ConnectionManager.java  |   2 +-
 .../org/apache/hadoop/hbase/client/HTable.java  |  22 +++-
 .../apache/hadoop/hbase/client/MetaScanner.java |  26 ++++-
 .../hadoop/hbase/client/RegionLocator.java      |   9 ++
 .../hadoop/hbase/rest/RegionsResource.java      |   2 +-
 .../mapreduce/MultiTableInputFormatBase.java    |   5 +-
 .../hbase/mapreduce/TableInputFormat.java       |   2 +
 .../hbase/mapreduce/TableInputFormatBase.java   |  16 ++-
 .../hadoop/hbase/util/RegionSizeCalculator.java | 104 ++++++++++---------
 .../apache/hadoop/hbase/TestMultiVersions.java  |   3 +-
 .../hadoop/hbase/client/TestMetaScanner.java    |   2 +-
 .../TestEndToEndSplitTransaction.java           |   4 +-
 .../apache/hadoop/hbase/util/TestHBaseFsck.java |   4 +-
 .../hbase/util/TestRegionSizeCalculator.java    |  34 +++---
 14 files changed, 153 insertions(+), 82 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java
index 1da1320..c7270ba 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java
@@ -1008,7 +1008,7 @@ class ConnectionManager {
     public List<HRegionLocation> locateRegions(final TableName tableName,
         final boolean useCache, final boolean offlined) throws IOException {
       NavigableMap<HRegionInfo, ServerName> regions = MetaScanner.allTableRegions(conf, this,
-          tableName, offlined);
+          tableName);
       final List<HRegionLocation> locations = new ArrayList<HRegionLocation>();
       for (HRegionInfo regionInfo : regions.keySet()) {
         RegionLocations list = locateRegion(tableName, regionInfo.getStartKey(), useCache, true);

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java
index 0143b7e..fafa604 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java
@@ -25,6 +25,7 @@ import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.NavigableMap;
 import java.util.TreeMap;
 import java.util.concurrent.Callable;
@@ -606,12 +607,29 @@ public class HTable implements HTableInterface, RegionLocator {
    * This is mainly useful for the MapReduce integration.
    * @return A map of HRegionInfo with it's server address
    * @throws IOException if a remote or network exception occurs
-   * @deprecated This is no longer a public API
+   * @deprecated This is no longer a public API.  Use {@link #getAllRegionLocations()} instead.
    */
   @Deprecated
   public NavigableMap<HRegionInfo, ServerName> getRegionLocations() throws IOException {
     // TODO: Odd that this returns a Map of HRI to SN whereas getRegionLocator, singular, returns an HRegionLocation.
-    return MetaScanner.allTableRegions(getConfiguration(), this.connection, getName(), false);
+    return MetaScanner.allTableRegions(getConfiguration(), this.connection, getName());
+  }
+
+  /**
+   * Gets all the regions and their address for this table.
+   * <p>
+   * This is mainly useful for the MapReduce integration.
+   * @return A map of HRegionInfo with it's server address
+   * @throws IOException if a remote or network exception occurs
+   */
+  @Override
+  public List<HRegionLocation> getAllRegionLocations() throws IOException {
+    NavigableMap<HRegionInfo, ServerName> locations = getRegionLocations();
+    ArrayList<HRegionLocation> regions = new ArrayList<>(locations.size());
+    for (Entry<HRegionInfo, ServerName> entry : locations.entrySet()) {
+      regions.add(new HRegionLocation(entry.getKey(), entry.getValue()));
+    }
+    return regions;
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java
index a488573..8013930 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java
@@ -132,8 +132,10 @@ public class MetaScanner {
       final byte[] row, final int rowLimit, final TableName metaTableName)
     throws IOException {
 
+    boolean closeConnection = false;
     if (connection == null){
-      connection = ConnectionManager.getConnectionInternal(configuration);
+      connection = ConnectionFactory.createConnection(configuration);
+      closeConnection = true;
     }
 
     int rowUpperLimit = rowLimit > 0 ? rowLimit: Integer.MAX_VALUE;
@@ -217,7 +219,9 @@ public class MetaScanner {
           LOG.debug("Got exception in closing meta table", t);
         }
       }
-
+      if (closeConnection) {
+        connection.close();
+      }
     }
   }
 
@@ -276,10 +280,24 @@ public class MetaScanner {
    * leave out offlined regions from returned list.
    * @return Map of all user-space regions to servers
    * @throws IOException
+   * @deprecated Use {@link #allTableRegions(Configuration, Connection, TableName)} instead
    */
+  @Deprecated
   public static NavigableMap<HRegionInfo, ServerName> allTableRegions(Configuration conf,
-      Connection connection, final TableName tableName,
-      final boolean offlined) throws IOException {
+      Connection connection, final TableName tableName, boolean offlined) throws IOException {
+    return allTableRegions(conf, connection, tableName);
+  }
+
+  /**
+   * Lists all of the table regions currently in META.
+   * @param conf
+   * @param offlined True if we are to include offlined regions, false and we'll
+   * leave out offlined regions from returned list.
+   * @return Map of all user-space regions to servers
+   * @throws IOException
+   */
+  public static NavigableMap<HRegionInfo, ServerName> allTableRegions(Configuration conf,
+      Connection connection, final TableName tableName) throws IOException {
     final NavigableMap<HRegionInfo, ServerName> regions =
       new TreeMap<HRegionInfo, ServerName>();
     MetaScannerVisitor visitor = new TableMetaScannerVisitor(tableName) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionLocator.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionLocator.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionLocator.java
index 505e841..2d56c0e 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionLocator.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionLocator.java
@@ -26,6 +26,7 @@ import org.apache.hadoop.hbase.util.Pair;
 
 import java.io.Closeable;
 import java.io.IOException;
+import java.util.List;
 
 /**
  * Used to view region location information for a single HBase table.
@@ -55,6 +56,14 @@ public interface RegionLocator extends Closeable {
     throws IOException;
 
   /**
+   * Retrieves all of the regions associated with this table.
+   * @return a {@link List} of all regions associated with this table.
+   * @throws IOException if a remote or network exception occurs
+   */
+  public List<HRegionLocation> getAllRegionLocations()
+    throws IOException;
+
+  /**
    * Gets the starting row key for every region in the currently open table.
    * <p>
    * This is mainly useful for the MapReduce integration.

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RegionsResource.java
----------------------------------------------------------------------
diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RegionsResource.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RegionsResource.java
index ddc2f56..1ecb7c6 100644
--- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RegionsResource.java
+++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/RegionsResource.java
@@ -77,7 +77,7 @@ public class RegionsResource extends ResourceBase {
       TableName tableName = TableName.valueOf(tableResource.getName());
       TableInfoModel model = new TableInfoModel(tableName.getNameAsString());
       Map<HRegionInfo,ServerName> regions = MetaScanner.allTableRegions(
-        servlet.getConfiguration(), null, tableName, false);
+        servlet.getConfiguration(), null, tableName);
       for (Map.Entry<HRegionInfo,ServerName> e: regions.entrySet()) {
         HRegionInfo hri = e.getKey();
         ServerName addr = e.getValue();

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatBase.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatBase.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatBase.java
index 1bae235..6a66d37 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatBase.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatBase.java
@@ -157,7 +157,8 @@ public abstract class MultiTableInputFormatBase extends
         byte[] startRow = scan.getStartRow();
         byte[] stopRow = scan.getStopRow();
 
-        RegionSizeCalculator sizeCalculator = new RegionSizeCalculator((HTable) table);
+        RegionSizeCalculator sizeCalculator = new RegionSizeCalculator(
+            regionLocator, conn.getAdmin());
 
         for (int i = 0; i < keys.getFirst().length; i++) {
           if (!includeRegionInSplit(keys.getFirst()[i], keys.getSecond()[i])) {
@@ -184,7 +185,7 @@ public abstract class MultiTableInputFormatBase extends
 
             long regionSize = sizeCalculator.getRegionSize(regionInfo.getRegionName());
             TableSplit split =
-                new TableSplit(table.getName(),
+                new TableSplit(regionLocator.getName(),
                     scan, splitStart, splitStop, regionHostname, regionSize);
 
             splits.add(split);

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormat.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormat.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormat.java
index 42a231b..8dac05a 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormat.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormat.java
@@ -109,6 +109,8 @@ implements Configurable {
     this.conf = configuration;
     TableName tableName = TableName.valueOf(conf.get(INPUT_TABLE));
     try {
+      // TODO: Replace setHTable() with initializeTable() once we have 
+      //       a clean method of closing a connection.
       setHTable(new HTable(new Configuration(conf), tableName));
     } catch (Exception e) {
       LOG.error(StringUtils.stringifyException(e));

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.java
index 5dcfe00..ff41314 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableInputFormatBase.java
@@ -35,6 +35,7 @@ import org.apache.hadoop.hbase.classification.InterfaceStability;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.HRegionLocation;
 import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.HTable;
 import org.apache.hadoop.hbase.client.RegionLocator;
@@ -286,15 +287,28 @@ extends InputFormat<ImmutableBytesWritable, Result> {
    * Allows subclasses to set the {@link HTable}.
    *
    * @param table  The table to get the data from.
+   * @throws IOExceptfion 
    * @deprecated Use {@link #initializeTable(Connection, TableName)} instead.
    */
   @Deprecated
-  protected void setHTable(HTable table) {
+  protected void setHTable(HTable table) throws IOException {
     this.table = table;
     this.regionLocator = table;
   }
 
   /**
+   * Allows subclasses to initalize the table information.
+   *
+   * @param connection  The {@link Connection} to the HBase cluster.
+   * @param tableName  The {@link TableName} of the table to process. 
+   * @throws IOExceptfion 
+   */
+  protected void initializeTable(Connection connection, TableName tableName) throws IOException {
+    this.table = connection.getTable(tableName);
+    this.regionLocator = connection.getRegionLocator(tableName);
+  }
+
+  /**
    * Gets the scan defining the actual details like columns etc.
    *
    * @return The internal scan instance.

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSizeCalculator.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSizeCalculator.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSizeCalculator.java
index f9c4c92..92c4410 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSizeCalculator.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSizeCalculator.java
@@ -17,28 +17,30 @@
  */
 package org.apache.hadoop.hbase.util;
 
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.hadoop.hbase.classification.InterfaceAudience;
-import org.apache.hadoop.hbase.classification.InterfaceStability;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.ClusterStatus;
-import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.HRegionLocation;
 import org.apache.hadoop.hbase.RegionLoad;
 import org.apache.hadoop.hbase.ServerLoad;
 import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.classification.InterfaceAudience;
+import org.apache.hadoop.hbase.classification.InterfaceStability;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.client.HTable;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
+import org.apache.hadoop.hbase.client.RegionLocator;
 
 /**
  * Computes size of each region for given table and given column families.
@@ -59,57 +61,65 @@ public class RegionSizeCalculator {
 
   /**
    * Computes size of each region for table and given column families.
-   * */
+   * 
+   * @deprecated Use {@link #RegionSizeCalculator(RegionLocator, Admin)} instead.
+   */
+  @Deprecated
   public RegionSizeCalculator(HTable table) throws IOException {
-    this(table, new HBaseAdmin(table.getConfiguration()));
+    HBaseAdmin admin = new HBaseAdmin(table.getConfiguration());
+    try {
+      init(table, admin);
+    } finally {
+      admin.close();
+    }
   }
 
-  /** ctor for unit testing */
-  RegionSizeCalculator (HTable table, Admin admin) throws IOException {
+  /**
+   * Computes size of each region for table and given column families.
+   * */
+  public RegionSizeCalculator(RegionLocator regionLocator, Admin admin) throws IOException {
+    init(regionLocator, admin);
+  }
 
-    try {
-      if (!enabled(table.getConfiguration())) {
-        LOG.info("Region size calculation disabled.");
-        return;
-      }
+  private void init(RegionLocator regionLocator, Admin admin)
+      throws IOException {
+    if (!enabled(admin.getConfiguration())) {
+      LOG.info("Region size calculation disabled.");
+      return;
+    }
 
-      LOG.info("Calculating region sizes for table \"" + new String(table.getTableName()) + "\".");
+    LOG.info("Calculating region sizes for table \"" + regionLocator.getName() + "\".");
 
-      //get regions for table
-      Set<HRegionInfo> tableRegionInfos = table.getRegionLocations().keySet();
-      Set<byte[]> tableRegions = new TreeSet<byte[]>(Bytes.BYTES_COMPARATOR);
-      for (HRegionInfo regionInfo : tableRegionInfos) {
-        tableRegions.add(regionInfo.getRegionName());
-      }
+    //get regions for table
+    List<HRegionLocation> tableRegionInfos = regionLocator.getAllRegionLocations();
+    Set<byte[]> tableRegions = new TreeSet<byte[]>(Bytes.BYTES_COMPARATOR);
+    for (HRegionLocation regionInfo : tableRegionInfos) {
+      tableRegions.add(regionInfo.getRegionInfo().getRegionName());
+    }
 
-      ClusterStatus clusterStatus = admin.getClusterStatus();
-      Collection<ServerName> servers = clusterStatus.getServers();
-      final long megaByte = 1024L * 1024L;
+    ClusterStatus clusterStatus = admin.getClusterStatus();
+    Collection<ServerName> servers = clusterStatus.getServers();
+    final long megaByte = 1024L * 1024L;
 
-      //iterate all cluster regions, filter regions from our table and compute their size
-      for (ServerName serverName: servers) {
-        ServerLoad serverLoad = clusterStatus.getLoad(serverName);
+    //iterate all cluster regions, filter regions from our table and compute their size
+    for (ServerName serverName: servers) {
+      ServerLoad serverLoad = clusterStatus.getLoad(serverName);
 
-        for (RegionLoad regionLoad: serverLoad.getRegionsLoad().values()) {
-          byte[] regionId = regionLoad.getName();
+      for (RegionLoad regionLoad: serverLoad.getRegionsLoad().values()) {
+        byte[] regionId = regionLoad.getName();
 
-          if (tableRegions.contains(regionId)) {
+        if (tableRegions.contains(regionId)) {
 
-            long regionSizeBytes = regionLoad.getStorefileSizeMB() * megaByte;
-            sizeMap.put(regionId, regionSizeBytes);
+          long regionSizeBytes = regionLoad.getStorefileSizeMB() * megaByte;
+          sizeMap.put(regionId, regionSizeBytes);
 
-            if (LOG.isDebugEnabled()) {
-              LOG.debug("Region " + regionLoad.getNameAsString() + " has size " + regionSizeBytes);
-            }
+          if (LOG.isDebugEnabled()) {
+            LOG.debug("Region " + regionLoad.getNameAsString() + " has size " + regionSizeBytes);
           }
         }
       }
-      LOG.debug("Region sizes calculated");
-
-    } finally {
-      admin.close();
     }
-
+    LOG.debug("Region sizes calculated");
   }
 
   boolean enabled(Configuration configuration) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMultiVersions.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMultiVersions.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMultiVersions.java
index 2a9b953..3491d72 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMultiVersions.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestMultiVersions.java
@@ -212,8 +212,7 @@ public class TestMultiVersions {
     NavigableMap<HRegionInfo, ServerName> locations = table.getRegionLocations();
     assertEquals(2, locations.size());
     int index = 0;
-    for (Map.Entry<HRegionInfo, ServerName> e: locations.entrySet()) {
-      HRegionInfo hri = e.getKey();
+    for (HRegionInfo hri: locations.keySet()) {
       if (index == 0) {
         assertTrue(Bytes.equals(HConstants.EMPTY_START_ROW, hri.getStartKey()));
         assertTrue(Bytes.equals(hri.getEndKey(), splitRows[0]));

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMetaScanner.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMetaScanner.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMetaScanner.java
index f0bc1ec..91028a9 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMetaScanner.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestMetaScanner.java
@@ -190,7 +190,7 @@ public class TestMetaScanner {
          while(!isStopped()) {
            try {
             NavigableMap<HRegionInfo, ServerName> regions =
-                MetaScanner.allTableRegions(TEST_UTIL.getConfiguration(), null, TABLENAME, false);
+                MetaScanner.allTableRegions(TEST_UTIL.getConfiguration(), null, TABLENAME);
 
             LOG.info("-------");
             byte[] lastEndKey = HConstants.EMPTY_START_ROW;

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java
index d2164d1..1651ab6 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java
@@ -237,7 +237,7 @@ public class TestEndToEndSplitTransaction {
         Random random = new Random();
         for (int i= 0; i< 5; i++) {
           NavigableMap<HRegionInfo, ServerName> regions = MetaScanner.allTableRegions(conf, null,
-              tableName, false);
+              tableName);
           if (regions.size() == 0) {
             continue;
           }
@@ -310,7 +310,7 @@ public class TestEndToEndSplitTransaction {
 
       //MetaScanner.allTableRegions()
       NavigableMap<HRegionInfo, ServerName> regions = MetaScanner.allTableRegions(conf, null,
-          tableName, false);
+          tableName);
       verifyTableRegions(regions.keySet());
 
       //MetaScanner.listAllRegions()

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
index 19b2d31..064922d 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsck.java
@@ -1264,7 +1264,7 @@ public class TestHBaseFsck {
       setupTableWithRegionReplica(table, 2);
       assertEquals(ROWKEYS.length, countRows());
       NavigableMap<HRegionInfo, ServerName> map = MetaScanner.allTableRegions(conf, null,
-          tbl.getName(), false);
+          tbl.getName());
       int i = 0;
       // store the HRIs of the regions we will mess up
       for (Map.Entry<HRegionInfo, ServerName> m : map.entrySet()) {
@@ -1296,7 +1296,7 @@ public class TestHBaseFsck {
       i = 0;
       HRegionInfo[] newHris = new HRegionInfo[2];
       // get all table's regions from meta
-      map = MetaScanner.allTableRegions(conf, null, tbl.getName(), false);
+      map = MetaScanner.allTableRegions(conf, null, tbl.getName());
       // get the HRIs of the new regions (hbck created new regions for fixing the hdfs mess-up)
       for (Map.Entry<HRegionInfo, ServerName> m : map.entrySet()) {
         if (m.getKey().getStartKey().length > 0 &&

http://git-wip-us.apache.org/repos/asf/hbase/blob/9a893a9c/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionSizeCalculator.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionSizeCalculator.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionSizeCalculator.java
index a8e0a55..8b74112 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionSizeCalculator.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestRegionSizeCalculator.java
@@ -20,14 +20,15 @@ package org.apache.hadoop.hbase.util;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.ClusterStatus;
 import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.HRegionLocation;
 import org.apache.hadoop.hbase.RegionLoad;
 import org.apache.hadoop.hbase.ServerLoad;
 import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.testclassification.MiscTests;
 import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
-import org.apache.hadoop.hbase.client.HTable;
+import org.apache.hadoop.hbase.client.RegionLocator;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.mockito.Mockito;
@@ -36,7 +37,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.NavigableMap;
 import java.util.TreeMap;
 
 import static org.junit.Assert.assertEquals;
@@ -52,7 +52,7 @@ public class TestRegionSizeCalculator {
   @Test
   public void testSimpleTestCase() throws Exception {
 
-    HTable table = mockTable("region1", "region2", "region3");
+    RegionLocator regionLocator = mockRegionLocator("region1", "region2", "region3");
 
     Admin admin = mockAdmin(
       mockServer(
@@ -65,7 +65,7 @@ public class TestRegionSizeCalculator {
       )
     );
 
-    RegionSizeCalculator calculator = new RegionSizeCalculator(table, admin);
+    RegionSizeCalculator calculator = new RegionSizeCalculator(regionLocator, admin);
 
     assertEquals(123 * megabyte, calculator.getRegionSize("region1".getBytes()));
     assertEquals(54321 * megabyte, calculator.getRegionSize("region2".getBytes()));
@@ -84,7 +84,7 @@ public class TestRegionSizeCalculator {
   @Test
   public void testLargeRegion() throws Exception {
 
-    HTable table = mockTable("largeRegion");
+    RegionLocator regionLocator = mockRegionLocator("largeRegion");
 
     Admin admin = mockAdmin(
       mockServer(
@@ -92,7 +92,7 @@ public class TestRegionSizeCalculator {
       )
     );
 
-    RegionSizeCalculator calculator = new RegionSizeCalculator(table, admin);
+    RegionSizeCalculator calculator = new RegionSizeCalculator(regionLocator, admin);
 
     assertEquals(((long) Integer.MAX_VALUE) * megabyte, calculator.getRegionSize("largeRegion".getBytes()));
   }
@@ -101,7 +101,7 @@ public class TestRegionSizeCalculator {
   @Test
   public void testDisabled() throws Exception {
     String regionName = "cz.goout:/index.html";
-    HTable table = mockTable(regionName);
+    RegionLocator table = mockRegionLocator(regionName);
 
     Admin admin = mockAdmin(
       mockServer(
@@ -124,29 +124,29 @@ public class TestRegionSizeCalculator {
   /**
    * Makes some table with given region names.
    * */
-  private HTable mockTable(String... regionNames) throws IOException {
-    HTable mockedTable = Mockito.mock(HTable.class);
-    when(mockedTable.getConfiguration()).thenReturn(configuration);
-    when(mockedTable.getTableName()).thenReturn("sizeTestTable".getBytes());
-    NavigableMap<HRegionInfo, ServerName> regionLocations = new TreeMap<HRegionInfo, ServerName>();
-    when(mockedTable.getRegionLocations()).thenReturn(regionLocations);
+  private RegionLocator mockRegionLocator(String... regionNames) throws IOException {
+    RegionLocator mockedTable = Mockito.mock(RegionLocator.class);
+    when(mockedTable.getName()).thenReturn(TableName.valueOf("sizeTestTable"));
+    List<HRegionLocation> regionLocations = new ArrayList<>();
+    when(mockedTable.getAllRegionLocations()).thenReturn(regionLocations);
 
     for (String regionName : regionNames) {
       HRegionInfo info = Mockito.mock(HRegionInfo.class);
       when(info.getRegionName()).thenReturn(regionName.getBytes());
-      regionLocations.put(info, null);//we are not interested in values
+      regionLocations.add(new HRegionLocation(info, null));//we are not interested in values
     }
 
     return mockedTable;
   }
 
   /**
-   * Creates mock returing ClusterStatus info about given servers.
+   * Creates mock returning ClusterStatus info about given servers.
   */
   private Admin mockAdmin(ServerLoad... servers) throws Exception {
     //get clusterstatus
-    Admin mockAdmin = Mockito.mock(HBaseAdmin.class);
+    Admin mockAdmin = Mockito.mock(Admin.class);
     ClusterStatus clusterStatus = mockCluster(servers);
+    when(mockAdmin.getConfiguration()).thenReturn(configuration);
     when(mockAdmin.getClusterStatus()).thenReturn(clusterStatus);
     return mockAdmin;
   }