Author: stack
Date: Tue Sep 21 22:00:12 2010
New Revision: 999664

URL: http://svn.apache.org/viewvc?rev=999664&view=rev
Log:
HBASE-3023 NPE processing server crash in MetaReader. getServerUserRegions

Modified:
    hbase/trunk/CHANGES.txt
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java

Modified: hbase/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=999664&r1=999663&r2=999664&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Tue Sep 21 22:00:12 2010
@@ -532,6 +532,7 @@ Release 0.21.0 - Unreleased
                the region
    HBASE-3018  Bulk assignment on startup runs serially through the cluster
                servers assigning in bulk to one at a time
+   HBASE-3023  NPE processing server crash in MetaReader. getServerUserRegions
 
   IMPROVEMENTS
    HBASE-1760  Cleanup TODOs in HTable

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java?rev=999664&r1=999663&r2=999664&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java 
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java 
Tue Sep 21 22:00:12 2010
@@ -232,7 +232,8 @@ public class MetaReader {
 
   /**
    * @param data A .META. table row.
-   * @return A pair of the regioninfo and the server address from 
<code>data</code>.
+   * @return A pair of the regioninfo and the server address from 
<code>data</code>
+   * (or null for server address if no address set in .META.).
    * @throws IOException
    */
   public static Pair<HRegionInfo, HServerAddress> metaRowToRegionPair(
@@ -410,7 +411,10 @@ public class MetaReader {
       while((result = metaServer.next(scannerid)) != null) {
         if (result != null && result.size() > 0) {
           Pair<HRegionInfo, HServerAddress> pair = metaRowToRegionPair(result);
-          if (!pair.getSecond().equals(hsi.getServerAddress())) continue;
+          if (pair.getSecond() == null ||
+              !pair.getSecond().equals(hsi.getServerAddress())) {
+            continue;
+          }
           hris.put(pair.getFirst(), result);
         }
       }

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java?rev=999664&r1=999663&r2=999664&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java 
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java 
Tue Sep 21 22:00:12 2010
@@ -111,7 +111,7 @@ public class ServerManager {
       String deadServersList = deadservers.toString();
       LOG.info("regionservers=" + numServers +
         ", averageload=" + StringUtils.limitDecimalTo2(averageLoad) +
-        ((numDeadServers > 0)?  ("deadservers=" + deadServersList): ""));
+        ((numDeadServers > 0)?  (", deadservers=" + deadServersList): ""));
     }
   }
 


Reply via email to