فهرست منبع

HADOOP-2693 NPE in getClosestRowBefore

git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/trunk@617724 13f79535-47bb-0310-9956-ffa450edef68
Michael Stack 17 سال پیش
والد
کامیت
157593728d
2فایلهای تغییر یافته به همراه7 افزوده شده و 14 حذف شده
  1. 1 0
      src/contrib/hbase/CHANGES.txt
  2. 6 14
      src/contrib/hbase/src/java/org/apache/hadoop/hbase/HStore.java

+ 1 - 0
src/contrib/hbase/CHANGES.txt

@@ -15,6 +15,7 @@ Trunk (unreleased changes)
   BUG FIXES
    HADOOP-2731 Under load, regions become extremely large and eventually cause
                region servers to become unresponsive
+   HADOOP-2693 NPE in getClosestRowBefore (Bryan Duxbury & Stack)
 
   IMPROVEMENTS
    HADOOP-2555 Refactor the HTable#get and HTable#getRow methods to avoid

+ 6 - 14
src/contrib/hbase/src/java/org/apache/hadoop/hbase/HStore.java

@@ -1830,20 +1830,13 @@ public class HStore implements HConstants {
       for(int i = maparray.length - 1; i >= 0; i--) {
         Text row_from_mapfile = 
           rowAtOrBeforeFromMapFile(maparray[i], row, timestamp);
-
-        // for when we have MapFile.Reader#getClosest before functionality
-/*        Text row_from_mapfile = null;
-        WritableComparable value = null; 
-        
-        HStoreKey hskResult = 
-          (HStoreKey)maparray[i].getClosest(rowKey, value, true);
-        
-        if (hskResult != null) {
-          row_from_mapfile = hskResult.getRow();
-        }*/
-                
-/*        LOG.debug("Best from this mapfile was " + row_from_mapfile);*/
         
+        // if the result from the mapfile is null, then we know that
+        // the mapfile was empty and can move on to the next one.
+        if (row_from_mapfile == null) {
+          continue;
+        }
+      
         // short circuit on an exact match
         if (row.equals(row_from_mapfile)) {
           return row;
@@ -1855,7 +1848,6 @@ public class HStore implements HConstants {
         }
       }
       
-/*      LOG.debug("Went searching for " + row + ", found " + bestSoFar);*/
       return bestSoFar;
     } finally {
       this.lock.readLock().unlock();