From e86b13f75ad2f1e88dc5f225e1297c1fd3ef954a Mon Sep 17 00:00:00 2001 From: Enis Soztutar Date: Fri, 25 Apr 2014 23:07:00 +0000 Subject: [PATCH 35/45] HBASE-10957 HMaster can abort with NPE in #rebuildUserRegions (Nicolas Liochon) git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/hbase-10070@1590184 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/java/org/apache/hadoop/hbase/catalog/MetaReader.java | 3 ++- .../java/org/apache/hadoop/hbase/master/AssignmentManager.java | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git hbase-client/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java hbase-client/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java index ca5ae39..9517113 100644 --- hbase-client/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java +++ hbase-client/src/main/java/org/apache/hadoop/hbase/catalog/MetaReader.java @@ -718,7 +718,8 @@ public class MetaReader { /** * Returns an HRegionLocationList extracted from the result. - * @return an HRegionLocationList containing all locations for the region range + * @return an HRegionLocationList containing all locations for the region range or null if + * we can't deserialize the result. */ public static RegionLocations getRegionLocations(final Result r) { if (r == null) return null; diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java index 6c01904..f407569 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java @@ -54,6 +54,7 @@ import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HRegionLocation; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.NotServingRegionException; +import org.apache.hadoop.hbase.RegionLocations; import org.apache.hadoop.hbase.RegionTransition; import org.apache.hadoop.hbase.Server; import org.apache.hadoop.hbase.ServerName; @@ -2760,7 +2761,13 @@ public class AssignmentManager extends ZooKeeperListener { Set offlineServers = new HashSet(); // Iterate regions in META for (Result result : results) { - HRegionLocation[] locations = MetaReader.getRegionLocations(result).getRegionLocations(); + if (result == null && LOG.isDebugEnabled()){ + LOG.debug("null result from meta - ignoring but this is strange."); + continue; + } + RegionLocations rl = MetaReader.getRegionLocations(result); + if (rl == null) continue; + HRegionLocation[] locations = rl.getRegionLocations(); if (locations == null) continue; for (HRegionLocation hrl : locations) { HRegionInfo regionInfo = hrl.getRegionInfo(); -- 2.0.0