Skip to content

Commit dd13e64

Browse files
committed
HBASE-28144 Canary publish read failure fails with NPE if region location is null (#5456)
Signed-off-by: Wellington Chevreuil <wchevreuil@apache.org> Signed-off-by: David Manning <david.manning@salesforce.com>
1 parent 736595f commit dd13e64

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

hbase-server/src/main/java/org/apache/hadoop/hbase/tool/CanaryTool.java

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -323,13 +323,15 @@ public void resetFailuresCountDetails() {
323323
}
324324

325325
private void incFailuresCountDetails(ServerName serverName, RegionInfo region) {
326-
perServerFailuresCount.compute(serverName, (server, count) -> {
327-
if (count == null) {
328-
count = new LongAdder();
329-
}
330-
count.increment();
331-
return count;
332-
});
326+
if (serverName != null) {
327+
perServerFailuresCount.compute(serverName, (server, count) -> {
328+
if (count == null) {
329+
count = new LongAdder();
330+
}
331+
count.increment();
332+
return count;
333+
});
334+
}
333335
perTableFailuresCount.compute(region.getTable().getNameAsString(), (tableName, count) -> {
334336
if (count == null) {
335337
count = new LongAdder();
@@ -340,18 +342,18 @@ private void incFailuresCountDetails(ServerName serverName, RegionInfo region) {
340342
}
341343

342344
public void publishReadFailure(ServerName serverName, RegionInfo region, Exception e) {
343-
incReadFailureCount();
344-
incFailuresCountDetails(serverName, region);
345345
LOG.error("Read from {} on serverName={} failed", region.getRegionNameAsString(), serverName,
346346
e);
347+
incReadFailureCount();
348+
incFailuresCountDetails(serverName, region);
347349
}
348350

349351
public void publishReadFailure(ServerName serverName, RegionInfo region,
350352
ColumnFamilyDescriptor column, Exception e) {
351-
incReadFailureCount();
352-
incFailuresCountDetails(serverName, region);
353353
LOG.error("Read from {} on serverName={}, columnFamily={} failed",
354354
region.getRegionNameAsString(), serverName, column.getNameAsString(), e);
355+
incReadFailureCount();
356+
incFailuresCountDetails(serverName, region);
355357
}
356358

357359
public void publishReadTiming(ServerName serverName, RegionInfo region,
@@ -368,17 +370,17 @@ public void publishReadTiming(ServerName serverName, RegionInfo region,
368370
}
369371

370372
public void publishWriteFailure(ServerName serverName, RegionInfo region, Exception e) {
373+
LOG.error("Write to {} on {} failed", region.getRegionNameAsString(), serverName, e);
371374
incWriteFailureCount();
372375
incFailuresCountDetails(serverName, region);
373-
LOG.error("Write to {} on {} failed", region.getRegionNameAsString(), serverName, e);
374376
}
375377

376378
public void publishWriteFailure(ServerName serverName, RegionInfo region,
377379
ColumnFamilyDescriptor column, Exception e) {
378-
incWriteFailureCount();
379-
incFailuresCountDetails(serverName, region);
380380
LOG.error("Write to {} on {} {} failed", region.getRegionNameAsString(), serverName,
381381
column.getNameAsString(), e);
382+
incWriteFailureCount();
383+
incFailuresCountDetails(serverName, region);
382384
}
383385

384386
public void publishWriteTiming(ServerName serverName, RegionInfo region,

0 commit comments

Comments
 (0)