From 6c2ff7212d516bcea491df8c366e85aa562a785c Mon Sep 17 00:00:00 2001 From: Viraj Jasani Date: Mon, 9 Oct 2023 17:13:24 -0700 Subject: [PATCH] HBASE-28144 Canary publish read failure fails with NPE if region location is null --- .../apache/hadoop/hbase/tool/CanaryTool.java | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) 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 12cb90c08e66..d5676263c820 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 @@ -323,13 +323,15 @@ public void resetFailuresCountDetails() { } private void incFailuresCountDetails(ServerName serverName, RegionInfo region) { - perServerFailuresCount.compute(serverName, (server, count) -> { - if (count == null) { - count = new LongAdder(); - } - count.increment(); - return count; - }); + if (serverName != null) { + perServerFailuresCount.compute(serverName, (server, count) -> { + if (count == null) { + count = new LongAdder(); + } + count.increment(); + return count; + }); + } perTableFailuresCount.compute(region.getTable().getNameAsString(), (tableName, count) -> { if (count == null) { count = new LongAdder(); @@ -340,18 +342,18 @@ private void incFailuresCountDetails(ServerName serverName, RegionInfo region) { } public void publishReadFailure(ServerName serverName, RegionInfo region, Exception e) { - incReadFailureCount(); - incFailuresCountDetails(serverName, region); LOG.error("Read from {} on serverName={} failed", region.getRegionNameAsString(), serverName, e); + incReadFailureCount(); + incFailuresCountDetails(serverName, region); } public void publishReadFailure(ServerName serverName, RegionInfo region, ColumnFamilyDescriptor column, Exception e) { - incReadFailureCount(); - incFailuresCountDetails(serverName, region); LOG.error("Read from {} on serverName={}, columnFamily={} failed", region.getRegionNameAsString(), serverName, column.getNameAsString(), e); + incReadFailureCount(); + incFailuresCountDetails(serverName, region); } public void publishReadTiming(ServerName serverName, RegionInfo region, @@ -368,17 +370,17 @@ public void publishReadTiming(ServerName serverName, RegionInfo region, } public void publishWriteFailure(ServerName serverName, RegionInfo region, Exception e) { + LOG.error("Write to {} on {} failed", region.getRegionNameAsString(), serverName, e); incWriteFailureCount(); incFailuresCountDetails(serverName, region); - LOG.error("Write to {} on {} failed", region.getRegionNameAsString(), serverName, e); } public void publishWriteFailure(ServerName serverName, RegionInfo region, ColumnFamilyDescriptor column, Exception e) { - incWriteFailureCount(); - incFailuresCountDetails(serverName, region); LOG.error("Write to {} on {} {} failed", region.getRegionNameAsString(), serverName, column.getNameAsString(), e); + incWriteFailureCount(); + incFailuresCountDetails(serverName, region); } public void publishWriteTiming(ServerName serverName, RegionInfo region,