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 2010/10/29 20:34:32 UTC

svn commit: r1028872 - in /hbase/trunk: CHANGES.txt src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java

Author: stack
Date: Fri Oct 29 18:34:32 2010
New Revision: 1028872

URL: http://svn.apache.org/viewvc?rev=1028872&view=rev
Log:
HBASE-3169  NPE when master joins running cluster if a RIT references a RS no longer present

Modified:
    hbase/trunk/CHANGES.txt
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java

Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1028872&r1=1028871&r2=1028872&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Fri Oct 29 18:34:32 2010
@@ -1056,6 +1056,8 @@ Release 0.21.0 - Unreleased
                (Kannan Muthukkaruppan via Stack)
    HBASE-3102  Enhance HBase rMetrics for Long-running Stats
                (Nicolas Spiegelberg via Stack)
+   HBASE-3169  NPE when master joins running cluster if a RIT references
+               a RS no longer present
 
   NEW FEATURES
    HBASE-1961  HBase EC2 scripts

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java?rev=1028872&r1=1028871&r2=1028872&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java Fri Oct 29 18:34:32 2010
@@ -292,8 +292,17 @@ public class AssignmentManager extends Z
         // Region is opened, insert into RIT and handle it
         regionsInTransition.put(encodedRegionName, new RegionState(
             regionInfo, RegionState.State.OPENING, data.getStamp()));
-        new OpenedRegionHandler(master, this, data, regionInfo,
-            serverManager.getServerInfo(data.getServerName())).process();
+        HServerInfo hsi = serverManager.getServerInfo(data.getServerName());
+        // hsi could be null if this server is no longer online.  If
+        // that the case, just let this RIT timeout; it'll be assigned
+        // to new server then.
+        if (hsi == null) {
+          LOG.warn("Region in transition " + regionInfo.getEncodedName() +
+            " references a server no longer up " + data.getServerName() +
+            "; letting RIT timeout so will be assigned elsewhere");
+          break;
+        }
+        new OpenedRegionHandler(master, this, data, regionInfo, hsi).process();
         break;
       }
     }