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(); } }