HBASE-21517 Move the getTableRegionForRow method from HMaster to TestMaster
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/d6e1d18b Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/d6e1d18b Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/d6e1d18b Branch: refs/heads/HBASE-20952 Commit: d6e1d18be901bd969be976ad8d20359e876e6cd0 Parents: 7877e09 Author: Duo Zhang <zhang...@apache.org> Authored: Tue Nov 27 16:14:44 2018 +0800 Committer: Duo Zhang <zhang...@apache.org> Committed: Wed Nov 28 09:40:27 2018 +0800 ---------------------------------------------------------------------- .../org/apache/hadoop/hbase/master/HMaster.java | 35 -------------------- .../apache/hadoop/hbase/master/TestMaster.java | 34 +++++++++++++++++-- 2 files changed, 32 insertions(+), 37 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/d6e1d18b/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 428030d..132e271 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 @@ -47,7 +47,6 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -84,7 +83,6 @@ import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder; import org.apache.hadoop.hbase.client.MasterSwitchType; import org.apache.hadoop.hbase.client.RegionInfo; import org.apache.hadoop.hbase.client.RegionInfoBuilder; -import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.TableDescriptor; import org.apache.hadoop.hbase.client.TableDescriptorBuilder; import org.apache.hadoop.hbase.client.TableState; @@ -2626,39 +2624,6 @@ public class HMaster extends HRegionServer implements MasterServices { }); } - /** - * Return the region and current deployment for the region containing - * the given row. If the region cannot be found, returns null. If it - * is found, but not currently deployed, the second element of the pair - * may be null. - */ - @VisibleForTesting // Used by TestMaster. - Pair<RegionInfo, ServerName> getTableRegionForRow( - final TableName tableName, final byte [] rowKey) - throws IOException { - final AtomicReference<Pair<RegionInfo, ServerName>> result = new AtomicReference<>(null); - - MetaTableAccessor.Visitor visitor = new MetaTableAccessor.Visitor() { - @Override - public boolean visit(Result data) throws IOException { - if (data == null || data.size() <= 0) { - return true; - } - Pair<RegionInfo, ServerName> pair = - new Pair<>(MetaTableAccessor.getRegionInfo(data), - MetaTableAccessor.getServerName(data,0)); - if (!pair.getFirst().getTable().equals(tableName)) { - return false; - } - result.set(pair); - return true; - } - }; - - MetaTableAccessor.scanMeta(clusterConnection, visitor, tableName, rowKey, 1); - return result.get(); - } - private long modifyTable(final TableName tableName, final TableDescriptorGetter newDescriptorGetter, final long nonceGroup, final long nonce) throws IOException { http://git-wip-us.apache.org/repos/asf/hbase/blob/d6e1d18b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java index af89cbc..7fdf601 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMaster.java @@ -26,6 +26,7 @@ import static org.junit.Assert.fail; import java.io.IOException; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; @@ -43,6 +44,7 @@ import org.apache.hadoop.hbase.UnknownRegionException; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.RegionInfo; import org.apache.hadoop.hbase.client.RegionInfoBuilder; +import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.client.TableState; import org.apache.hadoop.hbase.testclassification.MasterTests; @@ -94,6 +96,35 @@ public class TestMaster { TEST_UTIL.shutdownMiniCluster(); } + /** + * Return the region and current deployment for the region containing the given row. If the region + * cannot be found, returns null. If it is found, but not currently deployed, the second element + * of the pair may be null. + */ + private Pair<RegionInfo, ServerName> getTableRegionForRow(HMaster master, TableName tableName, + byte[] rowKey) throws IOException { + final AtomicReference<Pair<RegionInfo, ServerName>> result = new AtomicReference<>(null); + + MetaTableAccessor.Visitor visitor = new MetaTableAccessor.Visitor() { + @Override + public boolean visit(Result data) throws IOException { + if (data == null || data.size() <= 0) { + return true; + } + Pair<RegionInfo, ServerName> pair = new Pair<>(MetaTableAccessor.getRegionInfo(data), + MetaTableAccessor.getServerName(data, 0)); + if (!pair.getFirst().getTable().equals(tableName)) { + return false; + } + result.set(pair); + return true; + } + }; + + MetaTableAccessor.scanMeta(master.getConnection(), visitor, tableName, rowKey, 1); + return result.get(); + } + @Test @SuppressWarnings("deprecation") public void testMasterOpsWhileSplitting() throws Exception { @@ -128,8 +159,7 @@ public class TestMaster { // We have three regions because one is split-in-progress assertEquals(3, tableRegions.size()); LOG.info("Making sure we can call getTableRegionClosest while opening"); - Pair<RegionInfo, ServerName> pair = - m.getTableRegionForRow(TABLENAME, Bytes.toBytes("cde")); + Pair<RegionInfo, ServerName> pair = getTableRegionForRow(m, TABLENAME, Bytes.toBytes("cde")); LOG.info("Result is: " + pair); Pair<RegionInfo, ServerName> tableRegionFromName = MetaTableAccessor.getRegion(m.getConnection(),