You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2012/12/11 06:09:53 UTC

svn commit: r1419998 - in /hbase/trunk/hbase-server/src: main/java/org/apache/hadoop/hbase/catalog/MetaReader.java test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java

Author: tedyu
Date: Tue Dec 11 05:09:51 2012
New Revision: 1419998

URL: http://svn.apache.org/viewvc?rev=1419998&view=rev
Log:
HBASE-7307 MetaReader.tableExists should not return false if the specified table regions has been split (Rajesh)


Modified:
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java?rev=1419998&r1=1419997&r2=1419998&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java Tue Dec 11 05:09:51 2012
@@ -322,7 +322,6 @@ public class MetaReader {
           return true;
         }
         if (!isInsideTable(this.current, tableNameBytes)) return false;
-        if (this.current.isSplitParent()) return true;
         // Else call super and add this Result to the collection.
         super.visit(r);
         // Stop collecting regions from table after we get one.

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java?rev=1419998&r1=1419997&r2=1419998&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java Tue Dec 11 05:09:51 2012
@@ -46,6 +46,7 @@ import org.apache.hadoop.hbase.Server;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.UnknownRegionException;
 import org.apache.hadoop.hbase.ZooKeeperConnectionException;
+import org.apache.hadoop.hbase.catalog.MetaReader;
 import org.apache.hadoop.hbase.client.Delete;
 import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.client.HTable;
@@ -626,7 +627,48 @@ public class TestSplitTransactionOnClust
       }
     }
   }
-  
+
+  @Test(timeout = 20000)
+  public void testTableExistsIfTheSpecifiedTableRegionIsSplitParent() throws Exception {
+    final byte[] tableName = 
+        Bytes.toBytes("testTableExistsIfTheSpecifiedTableRegionIsSplitParent");
+    HRegionServer regionServer = null;
+    List<HRegion> regions = null;
+    HBaseAdmin admin = new HBaseAdmin(TESTING_UTIL.getConfiguration());
+    try {
+      // Create table then get the single region for our new table.
+      HTableDescriptor htd = new HTableDescriptor(tableName);
+      htd.addFamily(new HColumnDescriptor("cf"));
+      admin.createTable(htd);
+      HTable t = new HTable(cluster.getConfiguration(), tableName);
+      regions = cluster.getRegions(tableName);
+      int regionServerIndex = cluster.getServerWith(regions.get(0).getRegionName());
+      regionServer = cluster.getRegionServer(regionServerIndex);
+      insertData(tableName, admin, t);
+      // Turn off balancer so it doesn't cut in and mess up our placements.
+      admin.setBalancerRunning(false, false);
+      // Turn off the meta scanner so it don't remove parent on us.
+      cluster.getMaster().setCatalogJanitorEnabled(false);
+      boolean tableExists = MetaReader.tableExists(regionServer.getCatalogTracker(),
+          Bytes.toString(tableName));
+      assertEquals("The specified table should present.", true, tableExists);
+      SplitTransaction st = new SplitTransaction(regions.get(0), Bytes.toBytes("row2"));
+      try {
+        st.prepare();
+        st.createDaughters(regionServer, regionServer);
+      } catch (IOException e) {
+
+      }
+      tableExists = MetaReader.tableExists(regionServer.getCatalogTracker(),
+          Bytes.toString(tableName));
+      assertEquals("The specified table should present.", true, tableExists);
+    } finally {
+      admin.setBalancerRunning(true, false);
+      cluster.getMaster().setCatalogJanitorEnabled(true);
+      admin.close();
+    }
+  }
+
   private void insertData(final byte[] tableName, HBaseAdmin admin, HTable t) throws IOException,
       InterruptedException {
     Put p = new Put(Bytes.toBytes("row1"));