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)) {