From 967e0e1b2ba21040e561f16d33ac9db788eb83e3 Mon Sep 17 00:00:00 2001 From: stack Date: Fri, 1 Nov 2019 16:56:35 -0700 Subject: [PATCH] HBASE-23244 NPEs running Canary --- .../java/org/apache/hadoop/hbase/tool/CanaryTool.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/CanaryTool.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/CanaryTool.java index 6302df563c62..a967dab81750 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/CanaryTool.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/CanaryTool.java @@ -492,7 +492,8 @@ public Void read() { sink.publishReadTiming(serverName, region, column, stopWatch.getTime()); } catch (Exception e) { sink.publishReadFailure(serverName, region, column, e); - sink.updateReadFailures(region.getRegionNameAsString(), serverName.getHostname()); + sink.updateReadFailures(region == null? "NULL": region.getRegionNameAsString(), + serverName == null? "NULL": serverName.getHostname()); } finally { if (rs != null) { rs.close(); @@ -1579,6 +1580,10 @@ private static List> sniff(final Admin admin, final Sink sink, try (RegionLocator regionLocator = admin.getConnection().getRegionLocator(tableDesc.getTableName())) { for (HRegionLocation location: regionLocator.getAllRegionLocations()) { + if (location == null) { + LOG.warn("Null location"); + continue; + } ServerName rs = location.getServerName(); RegionInfo region = location.getRegion(); tasks.add(new RegionTask(admin.getConnection(), region, rs, (RegionStdOutSink)sink, @@ -1795,6 +1800,10 @@ private Map> getAllRegionServerByName() { try (RegionLocator regionLocator = this.admin.getConnection().getRegionLocator(tableDesc.getTableName())) { for (HRegionLocation location : regionLocator.getAllRegionLocations()) { + if (location == null) { + LOG.warn("Null location"); + continue; + } ServerName rs = location.getServerName(); String rsName = rs.getHostname(); RegionInfo r = location.getRegion();