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

svn commit: r1182038 - in /hbase/branches/0.89/src: main/java/org/apache/hadoop/hbase/master/HMaster.java test/java/org/apache/hadoop/hbase/client/TestAdmin.java

Author: nspiegelberg
Date: Tue Oct 11 19:13:25 2011
New Revision: 1182038

URL: http://svn.apache.org/viewvc?rev=1182038&view=rev
Log:
fix the issue of .META. getting ignored

Summary:
Add a test for getTableRegions to check if we get regions for a normal table
and also for the META table

Test Plan:
Tested on the dev cluster

on issuing
major_compact '.META.'
from the hbase shell

verified the output in the master logs

2011-10-04 19:11:26,657 INFO org.apache.hadoop.hbase.master.BaseScanner: All 1
.META. region(s) scanned
2011-10-04 19:12:01,879 DEBUG org.apache.hadoop.hbase.master.HMaster: Received
a modifyTable operation TABLE_MAJOR_COMPACT for .META.
2011-10-04 19:12:01,879 DEBUG org.apache.hadoop.hbase.master.HMaster: Came Here
- 22011-10-04 19:12:01,880 DEBUG org.apache.hadoop.hbase.master.HMaster:
Including {server: 10.30.223.192:60020, regionname: .META.,,1.1028785192,
startKey: <>}
2011-10-04 19:12:01,880 DEBUG org.apache.hadoop.hbase.master.HMaster: Came Here
- 2.12011-10-04 19:12:01,880 DEBUG org.apache.hadoop.hbase.master.HMaster: Came
Here - 2.1.2
2011-10-04 19:12:01,880 DEBUG org.apache.hadoop.hbase.master.RegionManager:
Adding operation TABLE_MAJOR_COMPACT from tasklist
2011-10-04 19:12:02,510 DEBUG org.apache.hadoop.hbase.master.RegionManager:
Sending MSG_REGION_MAJOR_COMPACT REGION => {NAME => '.META.,,1', STARTKEY => '',
ENDKEY => '', ENCODED => 1028785192, TABLE => {{NAME => '.META.', IS_META =>
'true', FAMILIES => [{NAME => 'info', BLOOMFILTER => 'NONE', REPLICATION_SCOPE
=> '0', VERSIONS => '10', COMPRESSION => 'NONE', TTL => '2147483647', BLOCKSIZE
=> '8192', IN_MEMORY => 'true', BLOCKCACHE => 'true'}]}} to 10.30.223.192:60020
2011-10-04 19:12:15,151 INFO org.apache.hadoop.hbase.master.ServerManager: 3
region servers, 0 dead, average load 0.6666666666666666

Reviewers: kannan, kranganathan

Reviewed By: kannan

CC: hbase-eng@lists, kannan, aaiyer

Differential Revision: 338463

Modified:
    hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
    hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java

Modified: hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1182038&r1=1182037&r2=1182038&view=diff
==============================================================================
--- hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Tue Oct 11 19:13:25 2011
@@ -1143,25 +1143,37 @@ public class HMaster extends Thread impl
   throws IOException {
     final ArrayList<Pair<HRegionInfo, HServerAddress>> result =
       Lists.newArrayList();
-    MetaScannerVisitor visitor =
-      new MetaScannerVisitor() {
-        @Override
-        public boolean processRow(Result data) throws IOException {
-          if (data == null || data.size() <= 0)
+
+    if (!Bytes.equals(HConstants.META_TABLE_NAME, tableName)) {
+      MetaScannerVisitor visitor =
+        new MetaScannerVisitor() {
+          @Override
+          public boolean processRow(Result data) throws IOException {
+            if (data == null || data.size() <= 0)
+              return true;
+            Pair<HRegionInfo, HServerAddress> pair =
+              metaRowToRegionPair(data);
+            if (pair == null) return false;
+            if (!Bytes.equals(pair.getFirst().getTableDesc().getName(),
+                  tableName)) {
+              return false;
+            }
+            result.add(pair);
             return true;
-          Pair<HRegionInfo, HServerAddress> pair =
-            metaRowToRegionPair(data);
-          if (pair == null) return false;
-          if (!Bytes.equals(pair.getFirst().getTableDesc().getName(),
-                tableName)) {
-            return false;
           }
-          result.add(pair);
-          return true;
-        }
-    };
+      };
 
-    MetaScanner.metaScan(conf, visitor, tableName);
+      MetaScanner.metaScan(conf, visitor, tableName);
+    }
+    else {
+      List<MetaRegion> metaRegions = regionManager.getListOfOnlineMetaRegions();
+	for (MetaRegion mRegion: metaRegions) {
+		if (Bytes.equals(mRegion.getRegionInfo().getTableDesc().getName(), tableName)) {
+			result.add(new Pair<HRegionInfo, HServerAddress>
+              (mRegion.getRegionInfo(), mRegion.getServer()));
+		}
+	}
+    }
     return result;
   }
 

Modified: hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java?rev=1182038&r1=1182037&r2=1182038&view=diff
==============================================================================
--- hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java (original)
+++ hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java Tue Oct 11 19:13:25 2011
@@ -92,6 +92,19 @@ public class TestAdmin {
   }
 
   @Test
+  public void testGetTableRegions() throws IOException {
+    TEST_UTIL.createTable(Bytes.toBytes("testCreateNormalTable"),
+      HConstants.CATALOG_FAMILY);
+    HMaster master = TEST_UTIL.getMiniHBaseCluster().getMaster();
+    List<Pair<HRegionInfo,HServerAddress>>  tableRegions =
+        master.getTableRegions(Bytes.toBytes("testCreateTable"));
+    assertTrue(tableRegions.size() != 0);
+    List<Pair<HRegionInfo,HServerAddress>>  metaRegions =
+        master.getTableRegions(HConstants.META_TABLE_NAME);
+    assertTrue(metaRegions.size() != 0);
+  }
+
+  @Test
   public void testCreateTableWithRegions() throws IOException {
 
     byte[] tableName = Bytes.toBytes("testCreateTableWithRegions");