HBASE-15933 NullPointerException may be thrown from 
SimpleRegionNormalizer#getRegionSize()


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/cfe868d5
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/cfe868d5
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/cfe868d5

Branch: refs/heads/hbase-12439
Commit: cfe868d56eeb0367c2fcf4a18a1d06c57abb7e54
Parents: a0f49c9
Author: tedyu <yuzhih...@gmail.com>
Authored: Thu Jun 2 01:55:28 2016 -0700
Committer: tedyu <yuzhih...@gmail.com>
Committed: Thu Jun 2 01:55:28 2016 -0700

----------------------------------------------------------------------
 .../hbase/master/normalizer/SimpleRegionNormalizer.java      | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/cfe868d5/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java
index 583f873..d209eb7 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java
@@ -140,7 +140,9 @@ public class SimpleRegionNormalizer implements 
RegionNormalizer {
     for (int i = 0; i < tableRegions.size(); i++) {
       HRegionInfo hri = tableRegions.get(i);
       long regionSize = getRegionSize(hri);
-      totalSizeMb += regionSize;
+      if (regionSize > 0) {
+        totalSizeMb += regionSize;
+      }
     }
 
     double avgRegionSize = totalSizeMb / (double) tableRegions.size();
@@ -204,6 +206,10 @@ public class SimpleRegionNormalizer implements 
RegionNormalizer {
       getRegionServerOfRegion(hri);
     RegionLoad regionLoad = masterServices.getServerManager().getLoad(sn).
       getRegionsLoad().get(hri.getRegionName());
+    if (regionLoad == null) {
+      LOG.debug(hri.getRegionNameAsString() + " was not found in RegionsLoad");
+      return -1;
+    }
     return regionLoad.getStorefileSizeMB();
   }
 }

Reply via email to