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 2013/07/03 23:28:21 UTC

svn commit: r1499564 - in /hbase/branches/0.94/src: main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java

Author: stack
Date: Wed Jul  3 21:28:21 2013
New Revision: 1499564

URL: http://svn.apache.org/r1499564
Log:
HBASE-8814 Possible NPE in split if a region has empty store files; REVERT.  FAILING TEST

Modified:
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
    hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java?rev=1499564&r1=1499563&r2=1499564&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java Wed Jul  3 21:28:21 2013
@@ -953,8 +953,6 @@ public class StoreFile extends SchemaCon
       //check if smaller than first key
       KeyValue splitKey = KeyValue.createLastOnRow(splitRow);
       byte[] firstKey = f.createReader().getFirstKey();
-      // If firstKey is null means storefile is empty.
-      if (firstKey == null) return null;
       if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
           splitKey.getKeyOffset(), splitKey.getKeyLength(), 
           firstKey, 0, firstKey.length) < 0) {
@@ -965,8 +963,6 @@ public class StoreFile extends SchemaCon
       //check if larger than last key.
       KeyValue splitKey = KeyValue.createFirstOnRow(splitRow);
       byte[] lastKey = f.createReader().getLastKey();      
-      // If lastKey is null means storefile is empty.
-      if (lastKey == null) return null;
       if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
           splitKey.getKeyOffset(), splitKey.getKeyLength(), 
           lastKey, 0, lastKey.length) > 0) {

Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java?rev=1499564&r1=1499563&r2=1499564&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java Wed Jul  3 21:28:21 2013
@@ -43,9 +43,6 @@ import org.apache.hadoop.hbase.client.De
 import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.client.HTable;
 import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.client.ResultScanner;
-import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.executor.EventHandler.EventType;
 import org.apache.hadoop.hbase.executor.RegionTransitionData;
 import org.apache.hadoop.hbase.master.AssignmentManager;
@@ -782,67 +779,6 @@ public class TestSplitTransactionOnClust
     }
   }
   
-  @Test(timeout = 180000)
-  public void testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles() throws Exception {
-    Configuration conf = TESTING_UTIL.getConfiguration();
-    ZooKeeperWatcher zkw = HBaseTestingUtility.getZooKeeperWatcher(TESTING_UTIL);
-    String userTableName = "testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles";
-    HTableDescriptor htd = new HTableDescriptor(userTableName);
-    HColumnDescriptor hcd = new HColumnDescriptor("col");
-    htd.addFamily(hcd);
-    admin.createTable(htd);
-    ZKAssign.blockUntilNoRIT(zkw);
-    HTable table = new HTable(conf, userTableName);
-    try {
-      for (int i = 0; i <= 5; i++) {
-        String row = "row" + i;
-        Put p = new Put(row.getBytes());
-        String val = "Val" + i;
-        p.add("col".getBytes(), "ql".getBytes(), val.getBytes());
-        table.put(p);
-        admin.flush(userTableName);
-        Delete d = new Delete(row.getBytes());
-        // Do a normal delete
-        table.delete(d);
-        admin.flush(userTableName);
-      }
-      admin.majorCompact(userTableName);
-      List<HRegionInfo> regionsOfTable = TESTING_UTIL.getMiniHBaseCluster()
-          .getMaster().getAssignmentManager()
-          .getRegionsOfTable(userTableName.getBytes());
-      HRegionInfo hRegionInfo = regionsOfTable.get(0);
-      Put p = new Put("row6".getBytes());
-      p.add("col".getBytes(), "ql".getBytes(), "val".getBytes());
-      table.put(p);
-      p = new Put("row7".getBytes());
-      p.add("col".getBytes(), "ql".getBytes(), "val".getBytes());
-      table.put(p);
-      p = new Put("row8".getBytes());
-      p.add("col".getBytes(), "ql".getBytes(), "val".getBytes());
-      table.put(p);
-      admin.flush(userTableName);
-      admin.split(hRegionInfo.getRegionName(), "row7".getBytes());
-      regionsOfTable = TESTING_UTIL.getMiniHBaseCluster().getMaster()
-          .getAssignmentManager().getRegionsOfTable(userTableName.getBytes());
-
-      while (regionsOfTable.size() != 2) {
-        Thread.sleep(2000);
-        regionsOfTable = TESTING_UTIL.getMiniHBaseCluster().getMaster()
-            .getAssignmentManager().getRegionsOfTable(userTableName.getBytes());
-      }
-      assertEquals(2, regionsOfTable.size());
-      Scan s = new Scan();
-      ResultScanner scanner = table.getScanner(s);
-      int mainTableCount = 0;
-      for (Result rr = scanner.next(); rr != null; rr = scanner.next()) {
-        mainTableCount++;
-      }
-      assertEquals(3, mainTableCount);
-    } finally {
-      table.close();
-    }
-  }
-
   private void insertData(final byte[] tableName, HBaseAdmin admin, HTable t) throws IOException,
       InterruptedException {
     Put p = new Put(Bytes.toBytes("row1"));