You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jd...@apache.org on 2009/12/08 00:39:27 UTC

svn commit: r888193 - in /hadoop/hbase/trunk: CHANGES.txt src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java

Author: jdcryans
Date: Mon Dec  7 23:39:26 2009
New Revision: 888193

URL: http://svn.apache.org/viewvc?rev=888193&view=rev
Log:
HBASE-2022  NPE in housekeeping kills RS

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=888193&r1=888192&r2=888193&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Mon Dec  7 23:39:26 2009
@@ -121,6 +121,7 @@
    HBASE-2018  Updates to .META. blocked under high MemStore load
    HBASE-1994  Master will lose hlog entries while splitting if region has
                empty oldlogfile.log (Lars George via Stack)
+   HBASE-2022  NPE in housekeeping kills RS
 
   IMPROVEMENTS
    HBASE-1760  Cleanup TODOs in HTable

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=888193&r1=888192&r2=888193&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Mon Dec  7 23:39:26 2009
@@ -1122,9 +1122,13 @@
     if (this.toDo.isEmpty()) {
       return;
     }
-    // This iterator is 'safe'.  We are guaranteed a view on state of the
-    // queue at time iterator was taken out.  Apparently goes from oldest.
+    // This iterator isn't safe if elements are gone and HRS.Worker could
+    // remove them (it already checks for null there). Goes from oldest.
     for (ToDoEntry e: this.toDo) {
+      if(e == null) {
+        LOG.warn("toDo gave a null entry during iteration");
+        break;
+      }
       HMsg msg = e.msg;
       if (msg != null) {
         if (msg.isType(HMsg.Type.MSG_REGION_OPEN)) {