From 4f52554cfbbedbf7185de1a808a7ea06057ba8d3 Mon Sep 17 00:00:00 2001 From: guluo Date: Thu, 11 May 2023 22:54:03 +0800 Subject: [PATCH 1/5] Solve HMaster.getCompactionState NPE issue --- .../apache/hadoop/hbase/master/HMaster.java | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index f3d4dfb292d3..b51a0676a03d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -4155,18 +4155,25 @@ public CompactionState getCompactionState(final TableName tableName) { continue; } RegionMetrics regionMetrics = sl.getRegionMetrics().get(regionInfo.getRegionName()); - if (regionMetrics.getCompactionState() == CompactionState.MAJOR) { - if (compactionState == CompactionState.MINOR) { - compactionState = CompactionState.MAJOR_AND_MINOR; - } else { - compactionState = CompactionState.MAJOR; - } - } else if (regionMetrics.getCompactionState() == CompactionState.MINOR) { - if (compactionState == CompactionState.MAJOR) { - compactionState = CompactionState.MAJOR_AND_MINOR; - } else { - compactionState = CompactionState.MINOR; + if (regionMetrics != null) { + if (regionMetrics.getCompactionState() == CompactionState.MAJOR) { + if (compactionState == CompactionState.MINOR) { + compactionState = CompactionState.MAJOR_AND_MINOR; + } else { + compactionState = CompactionState.MAJOR; + } + } else if (regionMetrics.getCompactionState() == CompactionState.MINOR) { + if (compactionState == CompactionState.MAJOR) { + compactionState = CompactionState.MAJOR_AND_MINOR; + } else { + compactionState = CompactionState.MINOR; + } } + } else { + String getCompactionDetailsErrorMsg = String.format("Can not get compaction details for region: %s, it may be disabled or in transition.", + regionInfo.getRegionNameAsString()); + LOG.error(getCompactionDetailsErrorMsg); + throw new Exception(getCompactionDetailsErrorMsg); } } } catch (Exception e) { From 175d3303221b1e27bdd73627e144a5fa180f1c96 Mon Sep 17 00:00:00 2001 From: guluo Date: Sat, 13 May 2023 21:52:02 +0800 Subject: [PATCH 2/5] Just skip the region if it is not online. --- .../apache/hadoop/hbase/master/HMaster.java | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index b51a0676a03d..ce4359e79a0a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -4155,25 +4155,23 @@ public CompactionState getCompactionState(final TableName tableName) { continue; } RegionMetrics regionMetrics = sl.getRegionMetrics().get(regionInfo.getRegionName()); - if (regionMetrics != null) { - if (regionMetrics.getCompactionState() == CompactionState.MAJOR) { - if (compactionState == CompactionState.MINOR) { - compactionState = CompactionState.MAJOR_AND_MINOR; - } else { - compactionState = CompactionState.MAJOR; - } - } else if (regionMetrics.getCompactionState() == CompactionState.MINOR) { - if (compactionState == CompactionState.MAJOR) { - compactionState = CompactionState.MAJOR_AND_MINOR; - } else { - compactionState = CompactionState.MINOR; - } + if (regionMetrics == null) { + LOG.error("Can not get compaction details for the region: " + regionInfo.getRegionNameAsString() + + " , it may be not online."); + continue; + } + if (regionMetrics.getCompactionState() == CompactionState.MAJOR) { + if (compactionState == CompactionState.MINOR) { + compactionState = CompactionState.MAJOR_AND_MINOR; + } else { + compactionState = CompactionState.MAJOR; + } + } else if (regionMetrics.getCompactionState() == CompactionState.MINOR) { + if (compactionState == CompactionState.MAJOR) { + compactionState = CompactionState.MAJOR_AND_MINOR; + } else { + compactionState = CompactionState.MINOR; } - } else { - String getCompactionDetailsErrorMsg = String.format("Can not get compaction details for region: %s, it may be disabled or in transition.", - regionInfo.getRegionNameAsString()); - LOG.error(getCompactionDetailsErrorMsg); - throw new Exception(getCompactionDetailsErrorMsg); } } } catch (Exception e) { From 4e393de0a0f4a007fc6b6ac74362952b6bea31c1 Mon Sep 17 00:00:00 2001 From: guluo Date: Wed, 17 May 2023 23:02:01 +0800 Subject: [PATCH 3/5] fix style issue --- .../src/main/java/org/apache/hadoop/hbase/master/HMaster.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index ce4359e79a0a..2c4e7d6a5aea 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -4156,8 +4156,8 @@ public CompactionState getCompactionState(final TableName tableName) { } RegionMetrics regionMetrics = sl.getRegionMetrics().get(regionInfo.getRegionName()); if (regionMetrics == null) { - LOG.error("Can not get compaction details for the region: " + regionInfo.getRegionNameAsString() + - " , it may be not online."); + LOG.error("Can not get compaction details for the region: " + + regionInfo.getRegionNameAsString() + " , it may be not online."); continue; } if (regionMetrics.getCompactionState() == CompactionState.MAJOR) { From c43d660d2bdb00e9a359c24ff33a7a0a55e2c233 Mon Sep 17 00:00:00 2001 From: guluo Date: Wed, 31 May 2023 22:56:57 +0800 Subject: [PATCH 4/5] Use parameterised logging and change the log level to WARN --- .../main/java/org/apache/hadoop/hbase/master/HMaster.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index 2c4e7d6a5aea..7d06840db1d7 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -4156,8 +4156,9 @@ public CompactionState getCompactionState(final TableName tableName) { } RegionMetrics regionMetrics = sl.getRegionMetrics().get(regionInfo.getRegionName()); if (regionMetrics == null) { - LOG.error("Can not get compaction details for the region: " - + regionInfo.getRegionNameAsString() + " , it may be not online."); + LOG.warn(String.format( + "Can not get compaction details for the region: %s , it may be not online.", + regionInfo.getRegionNameAsString())); continue; } if (regionMetrics.getCompactionState() == CompactionState.MAJOR) { From de292d09fc6b87faa05a47b6a7466ed283a33efd Mon Sep 17 00:00:00 2001 From: guluo Date: Fri, 2 Jun 2023 23:12:56 +0800 Subject: [PATCH 5/5] update logs --- .../main/java/org/apache/hadoop/hbase/master/HMaster.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index 7d06840db1d7..bb2eeeb22cec 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -4156,9 +4156,8 @@ public CompactionState getCompactionState(final TableName tableName) { } RegionMetrics regionMetrics = sl.getRegionMetrics().get(regionInfo.getRegionName()); if (regionMetrics == null) { - LOG.warn(String.format( - "Can not get compaction details for the region: %s , it may be not online.", - regionInfo.getRegionNameAsString())); + LOG.warn("Can not get compaction details for the region: {} , it may be not online.", + regionInfo.getRegionNameAsString()); continue; } if (regionMetrics.getCompactionState() == CompactionState.MAJOR) {