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/12/23 19:30:43 UTC

hbase git commit: HBASE-12736

Repository: hbase
Updated Branches:
  refs/heads/master 700de7d92 -> 4880e5d83


HBASE-12736

Signed-off-by: stack <st...@apache.org>


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

Branch: refs/heads/master
Commit: 4880e5d83b7e8f7589b02b91eeccdecaadd76c5b
Parents: 700de7d
Author: Jurriaan Mous <ju...@jurmo.us>
Authored: Sat Dec 20 15:07:54 2014 +0100
Committer: stack <st...@apache.org>
Committed: Tue Dec 23 10:30:25 2014 -0800

----------------------------------------------------------------------
 .../hadoop/hbase/client/ConnectionManager.java  |  7 +--
 .../apache/hadoop/hbase/client/HBaseAdmin.java  |  4 +-
 .../org/apache/hadoop/hbase/client/HTable.java  |  2 +-
 .../apache/hadoop/hbase/client/MetaScanner.java | 59 +++++++++-----------
 .../hbase/client/TestClientNoCluster.java       |  6 +-
 .../hadoop/hbase/rest/RegionsResource.java      |  8 ++-
 .../hadoop/hbase/master/CatalogJanitor.java     |  2 +-
 .../org/apache/hadoop/hbase/master/HMaster.java |  2 +-
 .../org/apache/hadoop/hbase/util/HBaseFsck.java |  4 +-
 .../hadoop/hbase/client/TestMetaScanner.java    | 29 +++++-----
 .../hbase/master/TestRegionPlacement.java       | 11 ++--
 .../hadoop/hbase/master/TestRestartCluster.java |  9 ++-
 .../TestEndToEndSplitTransaction.java           | 17 ++++--
 .../apache/hadoop/hbase/util/TestHBaseFsck.java | 17 +++---
 14 files changed, 96 insertions(+), 81 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/4880e5d8/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 acb64c8..b34fa69 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
@@ -918,7 +918,7 @@ class ConnectionManager {
           return true;
         }
       };
-      MetaScanner.metaScan(conf, this, visitor, tableName);
+      MetaScanner.metaScan(this, visitor, tableName);
       return available.get() && (regionCount.get() > 0);
     }
 
@@ -963,7 +963,7 @@ class ConnectionManager {
           return true;
         }
       };
-      MetaScanner.metaScan(conf, this, visitor, tableName);
+      MetaScanner.metaScan(this, visitor, tableName);
       // +1 needs to be added so that the empty start row is also taken into account
       return available.get() && (regionCount.get() == splitKeys.length + 1);
     }
@@ -1005,8 +1005,7 @@ class ConnectionManager {
     @Override
     public List<HRegionLocation> locateRegions(final TableName tableName,
         final boolean useCache, final boolean offlined) throws IOException {
-      NavigableMap<HRegionInfo, ServerName> regions =
-        MetaScanner.allTableRegions(conf, this, tableName);
+      NavigableMap<HRegionInfo, ServerName> regions = MetaScanner.allTableRegions(this, 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/4880e5d8/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
index 0677606..5a9ca74 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
@@ -581,7 +581,7 @@ public class HBaseAdmin implements Admin {
             return true;
           }
         };
-        MetaScanner.metaScan(conf, connection, visitor, desc.getTableName());
+        MetaScanner.metaScan(connection, visitor, desc.getTableName());
         if (actualRegCount.get() < numRegs) {
           if (tries == this.numRetries * this.retryLongerMultiplier - 1) {
             throw new RegionOfflineException("Only " + actualRegCount.get() +
@@ -2257,7 +2257,7 @@ public class HBaseAdmin implements Admin {
         }
       };
 
-      MetaScanner.metaScan(conf, connection, visitor, null);
+      MetaScanner.metaScan(connection, visitor, null);
       pair = result.get();
     }
     return pair;

http://git-wip-us.apache.org/repos/asf/hbase/blob/4880e5d8/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 0508fce..a9eb01c 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
@@ -649,7 +649,7 @@ public class HTable implements HTableInterface, RegionLocator {
   @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());
+    return MetaScanner.allTableRegions(this.connection, getName());
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/hbase/blob/4880e5d8/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 e171f4a..3bc4000 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
@@ -63,32 +63,30 @@ public class MetaScanner {
    * start row value as table name.
    * 
    * <p>Visible for testing. Use {@link
-   * #metaScan(Configuration, Connection, MetaScannerVisitor, TableName)} instead.
+   * #metaScan(Connection, MetaScannerVisitor, TableName)} instead.
    *
-   * @param configuration conf
    * @param visitor A custom visitor
    * @throws IOException e
    */
   @VisibleForTesting // Do not use. Used by tests only and hbck.
-  public static void metaScan(Configuration configuration, MetaScannerVisitor visitor)
-  throws IOException {
-    metaScan(configuration, visitor, null, null, Integer.MAX_VALUE);
+  public static void metaScan(Connection connection,
+      MetaScannerVisitor visitor) throws IOException {
+    metaScan(connection, visitor, null, null, Integer.MAX_VALUE);
   }
 
   /**
    * Scans the meta table and calls a visitor on each RowResult. Uses a table
    * name to locate meta regions.
    *
-   * @param configuration config
    * @param connection connection to use internally (null to use a new instance)
    * @param visitor visitor object
    * @param userTableName User table name in meta table to start scan at.  Pass
    * null if not interested in a particular table.
    * @throws IOException e
    */
-  public static void metaScan(Configuration configuration, Connection connection,
+  public static void metaScan(Connection connection,
       MetaScannerVisitor visitor, TableName userTableName) throws IOException {
-    metaScan(configuration, connection, visitor, userTableName, null, Integer.MAX_VALUE,
+    metaScan(connection, visitor, userTableName, null, Integer.MAX_VALUE,
         TableName.META_TABLE_NAME);
   }
 
@@ -98,9 +96,9 @@ public class MetaScanner {
    * <code>rowLimit</code> of rows.
    * 
    * <p>Visible for testing. Use {@link
-   * #metaScan(Configuration, Connection, MetaScannerVisitor, TableName)} instead.
+   * #metaScan(Connection, MetaScannerVisitor, TableName)} instead.
    *
-   * @param configuration HBase configuration.
+   * @param connection to scan on
    * @param visitor Visitor object.
    * @param userTableName User table name in meta table to start scan at.  Pass
    * null if not interested in a particular table.
@@ -111,11 +109,12 @@ public class MetaScanner {
    * @throws IOException e
    */
   @VisibleForTesting // Do not use. Used by Master but by a method that is used testing.
-  public static void metaScan(Configuration configuration,
+  public static void metaScan(Connection connection,
       MetaScannerVisitor visitor, TableName userTableName, byte[] row,
       int rowLimit)
   throws IOException {
-    metaScan(configuration, null, visitor, userTableName, row, rowLimit, TableName.META_TABLE_NAME);
+    metaScan(connection, visitor, userTableName, row, rowLimit, TableName
+        .META_TABLE_NAME);
   }
 
   /**
@@ -123,7 +122,6 @@ public class MetaScanner {
    * name and a row name to locate meta regions. And it only scans at most
    * <code>rowLimit</code> of rows.
    *
-   * @param configuration HBase configuration.
    * @param connection connection to use internally (null to use a new instance)
    * @param visitor Visitor object. Closes the visitor before returning.
    * @param tableName User table name in meta table to start scan at.  Pass
@@ -135,17 +133,11 @@ public class MetaScanner {
    * @param metaTableName Meta table to scan, root or meta.
    * @throws IOException e
    */
-  static void metaScan(Configuration configuration, Connection connection,
+  static void metaScan(Connection connection,
       final MetaScannerVisitor visitor, final TableName tableName,
       final byte[] row, final int rowLimit, final TableName metaTableName)
     throws IOException {
 
-    boolean closeConnection = false;
-    if (connection == null) {
-      connection = ConnectionFactory.createConnection(configuration);
-      closeConnection = true;
-    }
-
     int rowUpperLimit = rowLimit > 0 ? rowLimit: Integer.MAX_VALUE;
     // Calculate startrow for scan.
     byte[] startRow;
@@ -179,8 +171,9 @@ public class MetaScanner {
           HConstants.ZEROES, false);
       }
       final Scan scan = new Scan(startRow).addFamily(HConstants.CATALOG_FAMILY);
-      int scannerCaching = configuration.getInt(HConstants.HBASE_META_SCANNER_CACHING,
-        HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);
+      int scannerCaching = connection.getConfiguration()
+          .getInt(HConstants.HBASE_META_SCANNER_CACHING,
+              HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);
       if (rowUpperLimit <= scannerCaching) {
           scan.setSmall(true);
       }
@@ -211,9 +204,6 @@ public class MetaScanner {
           LOG.debug("Got exception in closing the meta scanner visitor", t);
         }
       }
-      if (closeConnection) {
-        if (connection != null) connection.close();
-      }
     }
   }
 
@@ -246,14 +236,16 @@ public class MetaScanner {
 
   /**
    * Lists all of the regions currently in META.
-   * @param conf
+   * @param conf configuration
+   * @param connection to connect with
    * @param offlined True if we are to include offlined regions, false and we'll
    * leave out offlined regions from returned list.
    * @return List of all user-space regions.
    * @throws IOException
    */
   @VisibleForTesting // And for hbck.
-  public static List<HRegionInfo> listAllRegions(Configuration conf, final boolean offlined)
+  public static List<HRegionInfo> listAllRegions(Configuration conf, Connection connection,
+      final boolean offlined)
   throws IOException {
     final List<HRegionInfo> regions = new ArrayList<HRegionInfo>();
     MetaScannerVisitor visitor = new MetaScannerVisitorBase() {
@@ -276,7 +268,7 @@ public class MetaScanner {
           return true;
         }
     };
-    metaScan(conf, visitor);
+    metaScan(connection, visitor);
     return regions;
   }
 
@@ -287,23 +279,22 @@ 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 Use {@link #allTableRegions(Connection, TableName)} instead
    */
   @Deprecated
   public static NavigableMap<HRegionInfo, ServerName> allTableRegions(Configuration conf,
       Connection connection, final TableName tableName, boolean offlined) throws IOException {
-    return allTableRegions(conf, connection, tableName);
+    return allTableRegions(connection, tableName);
   }
 
   /**
    * Lists all of the table regions currently in META.
-   * @param conf
    * @param connection
    * @param tableName
    * @return Map of all user-space regions to servers
    * @throws IOException
    */
-  public static NavigableMap<HRegionInfo, ServerName> allTableRegions(Configuration conf,
+  public static NavigableMap<HRegionInfo, ServerName> allTableRegions(
       Connection connection, final TableName tableName) throws IOException {
     final NavigableMap<HRegionInfo, ServerName> regions =
       new TreeMap<HRegionInfo, ServerName>();
@@ -321,7 +312,7 @@ public class MetaScanner {
         return true;
       }
     };
-    metaScan(conf, connection, visitor, tableName);
+    metaScan(connection, visitor, tableName);
     return regions;
   }
 
@@ -340,7 +331,7 @@ public class MetaScanner {
         return true;
       }
     };
-    metaScan(conf, connection, visitor, tableName);
+    metaScan(connection, visitor, tableName);
     return regions;
   }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/4880e5d8/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestClientNoCluster.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestClientNoCluster.java b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestClientNoCluster.java
index d855c74..da643fc 100644
--- a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestClientNoCluster.java
+++ b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestClientNoCluster.java
@@ -170,7 +170,7 @@ public class TestClientNoCluster extends Configured implements Tool {
    * @throws IOException
    */
   @Test
-  public void testRocTimeout() throws IOException {
+  public void testRpcTimeout() throws IOException {
     Configuration localConfig = HBaseConfiguration.create(this.conf);
     // This override mocks up our exists/get call to throw a RegionServerStoppedException.
     localConfig.set("hbase.client.connection.impl", RpcTimeoutConnection.class.getName());
@@ -204,7 +204,9 @@ public class TestClientNoCluster extends Configured implements Tool {
   public void testDoNotRetryMetaScanner() throws IOException {
     this.conf.set("hbase.client.connection.impl",
       RegionServerStoppedOnScannerOpenConnection.class.getName());
-    MetaScanner.metaScan(this.conf, null);
+    try (Connection connection = ConnectionFactory.createConnection(conf)) {
+      MetaScanner.metaScan(connection, null);
+    }
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/hbase/blob/4880e5d8/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 1ecb7c6..001c6b5 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
@@ -38,6 +38,8 @@ import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableNotFoundException;
+import org.apache.hadoop.hbase.client.Connection;
+import org.apache.hadoop.hbase.client.ConnectionFactory;
 import org.apache.hadoop.hbase.client.MetaScanner;
 import org.apache.hadoop.hbase.rest.model.TableInfoModel;
 import org.apache.hadoop.hbase.rest.model.TableRegionModel;
@@ -76,8 +78,10 @@ public class RegionsResource extends ResourceBase {
     try {
       TableName tableName = TableName.valueOf(tableResource.getName());
       TableInfoModel model = new TableInfoModel(tableName.getNameAsString());
-      Map<HRegionInfo,ServerName> regions = MetaScanner.allTableRegions(
-        servlet.getConfiguration(), null, tableName);
+
+      Connection connection = ConnectionFactory.createConnection(servlet.getConfiguration());
+      Map<HRegionInfo, ServerName> regions = MetaScanner.allTableRegions(connection, tableName);
+      connection.close();
       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/4880e5d8/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
index 25c405c..9f71b90 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
@@ -166,7 +166,7 @@ public class CatalogJanitor extends Chore {
 
     // Run full scan of hbase:meta catalog table passing in our custom visitor with
     // the start row
-    MetaScanner.metaScan(server.getConfiguration(), this.connection, visitor, tableName);
+    MetaScanner.metaScan(this.connection, visitor, tableName);
 
     return new Triple<Integer, Map<HRegionInfo, Result>, Map<HRegionInfo, Result>>(
         count.get(), mergedRegions, splitParents);

http://git-wip-us.apache.org/repos/asf/hbase/blob/4880e5d8/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
----------------------------------------------------------------------
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 db61e95..0bb02f2 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
@@ -1627,7 +1627,7 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
         }
     };
 
-    MetaScanner.metaScan(conf, visitor, tableName, rowKey, 1);
+    MetaScanner.metaScan(clusterConnection, visitor, tableName, rowKey, 1);
     return result.get();
   }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/4880e5d8/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
index 7bae831..6176229 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java
@@ -621,7 +621,7 @@ public class HBaseFsck extends Configured {
   public void checkRegionBoundaries() {
     try {
       ByteArrayComparator comparator = new ByteArrayComparator();
-      List<HRegionInfo> regions = MetaScanner.listAllRegions(getConf(), false);
+      List<HRegionInfo> regions = MetaScanner.listAllRegions(getConf(), connection, false);
       final RegionBoundariesInformation currentRegionBoundariesInformation =
           new RegionBoundariesInformation();
       Path hbaseRoot = FSUtils.getRootDir(getConf());
@@ -3077,7 +3077,7 @@ public class HBaseFsck extends Configured {
     };
     if (!checkMetaOnly) {
       // Scan hbase:meta to pick up user regions
-      MetaScanner.metaScan(getConf(), visitor);
+      MetaScanner.metaScan(connection, visitor);
     }
 
     errors.print("");

http://git-wip-us.apache.org/repos/asf/hbase/blob/4880e5d8/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 91028a9..70e2c33 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
@@ -54,9 +54,11 @@ import org.junit.experimental.categories.Category;
 public class TestMetaScanner {
   final Log LOG = LogFactory.getLog(getClass());
   private final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
+  private Connection connection;
 
   public void setUp() throws Exception {
     TEST_UTIL.startMiniCluster(1);
+    this.connection = TEST_UTIL.getConnection();
   }
 
   @After
@@ -67,13 +69,13 @@ public class TestMetaScanner {
   @Test
   public void testMetaScanner() throws Exception {
     LOG.info("Starting testMetaScanner");
+
     setUp();
-    final TableName TABLENAME =
-        TableName.valueOf("testMetaScanner");
+    final TableName TABLENAME = TableName.valueOf("testMetaScanner");
     final byte[] FAMILY = Bytes.toBytes("family");
     TEST_UTIL.createTable(TABLENAME, FAMILY);
     Configuration conf = TEST_UTIL.getConfiguration();
-    HTable table = new HTable(conf, TABLENAME);
+    HTable table = (HTable) connection.getTable(TABLENAME);
     TEST_UTIL.createMultiRegions(conf, table, FAMILY,
         new byte[][]{
           HConstants.EMPTY_START_ROW,
@@ -87,28 +89,28 @@ public class TestMetaScanner {
     doReturn(true).when(visitor).processRow((Result)anyObject());
 
     // Scanning the entire table should give us three rows
-    MetaScanner.metaScan(conf, null, visitor, TABLENAME);
+    MetaScanner.metaScan(connection, visitor, TABLENAME);
     verify(visitor, times(3)).processRow((Result)anyObject());
 
     // Scanning the table with a specified empty start row should also
     // give us three hbase:meta rows
     reset(visitor);
     doReturn(true).when(visitor).processRow((Result)anyObject());
-    MetaScanner.metaScan(conf, visitor, TABLENAME, HConstants.EMPTY_BYTE_ARRAY, 1000);
+    MetaScanner.metaScan(connection, visitor, TABLENAME, HConstants.EMPTY_BYTE_ARRAY, 1000);
     verify(visitor, times(3)).processRow((Result)anyObject());
 
     // Scanning the table starting in the middle should give us two rows:
     // region_a and region_b
     reset(visitor);
     doReturn(true).when(visitor).processRow((Result)anyObject());
-    MetaScanner.metaScan(conf, visitor, TABLENAME, Bytes.toBytes("region_ac"), 1000);
+    MetaScanner.metaScan(connection, visitor, TABLENAME, Bytes.toBytes("region_ac"), 1000);
     verify(visitor, times(2)).processRow((Result)anyObject());
 
     // Scanning with a limit of 1 should only give us one row
     reset(visitor);
-    doReturn(true).when(visitor).processRow((Result)anyObject());
-    MetaScanner.metaScan(conf, visitor, TABLENAME, Bytes.toBytes("region_ac"), 1);
-    verify(visitor, times(1)).processRow((Result)anyObject());
+    doReturn(true).when(visitor).processRow((Result) anyObject());
+    MetaScanner.metaScan(connection, visitor, TABLENAME, Bytes.toBytes("region_ac"), 1);
+    verify(visitor, times(1)).processRow((Result) anyObject());
     table.close();
   }
 
@@ -135,8 +137,8 @@ public class TestMetaScanner {
       public void run() {
         while (!isStopped()) {
           try {
-            List<HRegionInfo> regions = MetaScanner.listAllRegions(
-              TEST_UTIL.getConfiguration(), false);
+            List<HRegionInfo> regions = MetaScanner.listAllRegions(TEST_UTIL.getConfiguration(),
+                connection, false);
 
             //select a random region
             HRegionInfo parent = regions.get(random.nextInt(regions.size()));
@@ -167,7 +169,7 @@ public class TestMetaScanner {
               Bytes.toBytes(midKey),
               end);
 
-            MetaTableAccessor.splitRegion(TEST_UTIL.getHBaseAdmin().getConnection(),
+            MetaTableAccessor.splitRegion(connection,
               parent, splita, splitb, ServerName.valueOf("fooserver", 1, 0));
 
             Threads.sleep(random.nextInt(200));
@@ -190,7 +192,7 @@ public class TestMetaScanner {
          while(!isStopped()) {
            try {
             NavigableMap<HRegionInfo, ServerName> regions =
-                MetaScanner.allTableRegions(TEST_UTIL.getConfiguration(), null, TABLENAME);
+                MetaScanner.allTableRegions(connection, TABLENAME);
 
             LOG.info("-------");
             byte[] lastEndKey = HConstants.EMPTY_START_ROW;
@@ -243,4 +245,3 @@ public class TestMetaScanner {
   }
 
 }
-

http://git-wip-us.apache.org/repos/asf/hbase/blob/4880e5d8/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionPlacement.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionPlacement.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionPlacement.java
index 5da9d03..25dd13e 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionPlacement.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionPlacement.java
@@ -47,6 +47,8 @@ import org.apache.hadoop.hbase.NamespaceDescriptor;
 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.Connection;
+import org.apache.hadoop.hbase.client.ConnectionFactory;
 import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.client.HTable;
 import org.apache.hadoop.hbase.client.MetaScanner;
@@ -73,6 +75,7 @@ public class TestRegionPlacement {
   final static Log LOG = LogFactory.getLog(TestRegionPlacement.class);
   private final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();
   private final static int SLAVES = 10;
+  private static Connection CONNECTION;
   private static Admin admin;
   private static RegionPlacementMaintainer rp;
   private static Position[] positions = Position.values();
@@ -89,7 +92,8 @@ public class TestRegionPlacement {
         FavoredNodeLoadBalancer.class, LoadBalancer.class);
     conf.setBoolean("hbase.tests.use.shortcircuit.reads", false);
     TEST_UTIL.startMiniCluster(SLAVES);
-    admin = new HBaseAdmin(conf);
+    CONNECTION = TEST_UTIL.getConnection();
+    admin = CONNECTION.getAdmin();
     rp = new RegionPlacementMaintainer(conf);
   }
 
@@ -522,7 +526,7 @@ public class TestRegionPlacement {
       @Override
       public void close() throws IOException {}
     };
-    MetaScanner.metaScan(TEST_UTIL.getConfiguration(), visitor);
+    MetaScanner.metaScan(CONNECTION, visitor);
     LOG.info("There are " + regionOnPrimaryNum.intValue() + " out of " +
         totalRegionNum.intValue() + " regions running on the primary" +
         " region servers" );
@@ -549,8 +553,7 @@ public class TestRegionPlacement {
     desc.addFamily(new HColumnDescriptor(HConstants.CATALOG_FAMILY));
     admin.createTable(desc, splitKeys);
 
-    @SuppressWarnings("deprecation")
-    HTable ht = new HTable(TEST_UTIL.getConfiguration(), tableName);
+    HTable ht = (HTable) CONNECTION.getTable(tableName);
     @SuppressWarnings("deprecation")
     Map<HRegionInfo, ServerName> regions = ht.getRegionLocations();
     assertEquals("Tried to create " + expectedRegions + " regions "

http://git-wip-us.apache.org/repos/asf/hbase/blob/4880e5d8/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 5b6f985..ad22fe9 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
@@ -35,6 +35,8 @@ import org.apache.hadoop.hbase.MiniHBaseCluster;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableExistsException;
 import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.Connection;
+import org.apache.hadoop.hbase.client.ConnectionFactory;
 import org.apache.hadoop.hbase.client.MetaScanner;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.MasterTests;
@@ -64,6 +66,8 @@ public class TestRestartCluster {
   @Test (timeout=300000)
   public void testClusterRestart() throws Exception {
     UTIL.startMiniCluster(3);
+    Connection connection = UTIL.getConnection();
+
     while (!UTIL.getMiniHBaseCluster().getMaster().isInitialized()) {
       Threads.sleep(1);
     }
@@ -76,7 +80,7 @@ public class TestRestartCluster {
     }
 
     List<HRegionInfo> allRegions =
-      MetaScanner.listAllRegions(UTIL.getConfiguration(), true);
+        MetaScanner.listAllRegions(UTIL.getConfiguration(), connection, true);
     assertEquals(4, allRegions.size());
 
     LOG.info("\n\nShutting down cluster");
@@ -91,7 +95,8 @@ public class TestRestartCluster {
     // Need to use a new 'Configuration' so we make a new HConnection.
     // Otherwise we're reusing an HConnection that has gone stale because
     // the shutdown of the cluster also called shut of the connection.
-    allRegions = MetaScanner.listAllRegions(new Configuration(UTIL.getConfiguration()), true);
+    allRegions =
+        MetaScanner.listAllRegions(new Configuration(UTIL.getConfiguration()), connection, true);
     assertEquals(4, allRegions.size());
     LOG.info("\n\nWaiting for tables to be available");
     for(TableName TABLE: TABLES) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/4880e5d8/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 962b408..3f70a9b 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
@@ -42,6 +42,8 @@ import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.Stoppable;
 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.ConnectionFactory;
 import org.apache.hadoop.hbase.client.Get;
 import org.apache.hadoop.hbase.client.HConnection;
 import org.apache.hadoop.hbase.client.HConnectionManager;
@@ -216,6 +218,7 @@ public class TestEndToEndSplitTransaction {
   }
 
   static class RegionSplitter extends Thread {
+    final Connection connection;
     Throwable ex;
     Table table;
     TableName tableName;
@@ -229,6 +232,7 @@ public class TestEndToEndSplitTransaction {
       this.family = table.getTableDescriptor().getFamiliesKeys().iterator().next();
       admin = TEST_UTIL.getHBaseAdmin();
       rs = TEST_UTIL.getMiniHBaseCluster().getRegionServer(0);
+      connection = TEST_UTIL.getConnection();
     }
 
     @Override
@@ -236,8 +240,8 @@ public class TestEndToEndSplitTransaction {
       try {
         Random random = new Random();
         for (int i= 0; i< 5; i++) {
-          NavigableMap<HRegionInfo, ServerName> regions = MetaScanner.allTableRegions(conf, null,
-              tableName);
+          NavigableMap<HRegionInfo, ServerName> regions =
+              MetaScanner.allTableRegions(connection, tableName);
           if (regions.size() == 0) {
             continue;
           }
@@ -294,27 +298,30 @@ public class TestEndToEndSplitTransaction {
    * Checks regions using MetaScanner, MetaTableAccessor and HTable methods
    */
   static class RegionChecker extends Chore {
+    Connection connection;
     Configuration conf;
     TableName tableName;
     Throwable ex;
 
-    RegionChecker(Configuration conf, Stoppable stopper, TableName tableName) {
+    RegionChecker(Configuration conf, Stoppable stopper, TableName tableName) throws IOException {
       super("RegionChecker", 10, stopper);
       this.conf = conf;
       this.tableName = tableName;
       this.setDaemon(true);
+
+      this.connection = ConnectionFactory.createConnection(conf);
     }
 
     /** verify region boundaries obtained from MetaScanner */
     void verifyRegionsUsingMetaScanner() throws Exception {
 
       //MetaScanner.allTableRegions()
-      NavigableMap<HRegionInfo, ServerName> regions = MetaScanner.allTableRegions(conf, null,
+      NavigableMap<HRegionInfo, ServerName> regions = MetaScanner.allTableRegions(connection,
           tableName);
       verifyTableRegions(regions.keySet());
 
       //MetaScanner.listAllRegions()
-      List<HRegionInfo> regionList = MetaScanner.listAllRegions(conf, false);
+      List<HRegionInfo> regionList = MetaScanner.listAllRegions(conf, connection, false);
       verifyTableRegions(Sets.newTreeSet(regionList));
     }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/4880e5d8/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 30600c2..e59e07b 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
@@ -70,6 +70,7 @@ import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.MetaTableAccessor;
 import org.apache.hadoop.hbase.client.Admin;
+import org.apache.hadoop.hbase.client.ClusterConnection;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.ConnectionFactory;
 import org.apache.hadoop.hbase.client.Delete;
@@ -311,7 +312,7 @@ public class TestHBaseFsck {
     dumpMeta(htd.getTableName());
 
     Map<HRegionInfo, ServerName> hris = tbl.getRegionLocations();
-    HConnection conn = (HConnection) ConnectionFactory.createConnection(conf);
+    ClusterConnection conn = (ClusterConnection) ConnectionFactory.createConnection(conf);
     for (Entry<HRegionInfo, ServerName> e: hris.entrySet()) {
       HRegionInfo hri = e.getKey();
       ServerName hsa = e.getValue();
@@ -1265,7 +1266,8 @@ public class TestHBaseFsck {
       HRegionInfo[] oldHris = new HRegionInfo[2];
       setupTableWithRegionReplica(table, 2);
       assertEquals(ROWKEYS.length, countRows());
-      NavigableMap<HRegionInfo, ServerName> map = MetaScanner.allTableRegions(conf, null,
+      NavigableMap<HRegionInfo, ServerName> map =
+          MetaScanner.allTableRegions(TEST_UTIL.getConnection(),
           tbl.getName());
       int i = 0;
       // store the HRIs of the regions we will mess up
@@ -1298,7 +1300,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());
+      map = MetaScanner.allTableRegions(TEST_UTIL.getConnection(), 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 &&
@@ -2180,15 +2182,15 @@ public class TestHBaseFsck {
    */
   @Test (timeout=180000)
   public void testMissingRegionInfoQualifier() throws Exception {
-    TableName table =
-        TableName.valueOf("testMissingRegionInfoQualifier");
+    Connection connection = ConnectionFactory.createConnection(conf);
+    TableName table = TableName.valueOf("testMissingRegionInfoQualifier");
     try {
       setupTable(table);
 
       // Mess it up by removing the RegionInfo for one region.
       final List<Delete> deletes = new LinkedList<Delete>();
-      Table meta = new HTable(conf, TableName.META_TABLE_NAME);
-      MetaScanner.metaScan(conf, new MetaScanner.MetaScannerVisitor() {
+      Table meta = connection.getTable(TableName.META_TABLE_NAME);
+      MetaScanner.metaScan(connection, new MetaScanner.MetaScannerVisitor() {
 
         @Override
         public boolean processRow(Result rowResult) throws IOException {
@@ -2225,6 +2227,7 @@ public class TestHBaseFsck {
     } finally {
       deleteTable(table);
     }
+    connection.close();
   }