From bcaf10e5a9c1d1d4aaeb2f1762114d308a46c00c Mon Sep 17 00:00:00 2001 From: guluo Date: Fri, 12 May 2023 20:51:32 +0800 Subject: [PATCH 1/2] Solve the issue that the getting result of table compaction state is not quite right --- .../java/org/apache/hadoop/hbase/master/HMaster.java | 11 +++++++++++ 1 file changed, 11 insertions(+) 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..0e1f7ed109c3 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 @@ -4142,6 +4142,7 @@ public RSGroupInfoManager getRSGroupInfoManager() { */ public CompactionState getCompactionState(final TableName tableName) { CompactionState compactionState = CompactionState.NONE; + List notOnlineRegions = new ArrayList<>(); try { List regions = assignmentManager.getRegionStates().getRegionsOfTable(tableName); for (RegionInfo regionInfo : regions) { @@ -4155,6 +4156,13 @@ public CompactionState getCompactionState(final TableName tableName) { continue; } RegionMetrics regionMetrics = sl.getRegionMetrics().get(regionInfo.getRegionName()); + if (regionMetrics == null) { + String regionName = regionInfo.getRegionNameAsString(); + LOG.error("Can not get compaction details for region: " + regionName + + ", it may be disabled or in transition."); + notOnlineRegions.add(regionName); + continue; + } if (regionMetrics.getCompactionState() == CompactionState.MAJOR) { if (compactionState == CompactionState.MINOR) { compactionState = CompactionState.MAJOR_AND_MINOR; @@ -4169,6 +4177,9 @@ public CompactionState getCompactionState(final TableName tableName) { } } } + if (notOnlineRegions.size() > 0 && compactionState == CompactionState.NONE) { + compactionState = null; + } } catch (Exception e) { compactionState = null; LOG.error("Exception when get compaction state for " + tableName.getNameAsString(), e); From c7ce83fb4096f09aa7410aeb8dcdcf2b2f6d880c Mon Sep 17 00:00:00 2001 From: guluo Date: Fri, 12 May 2023 20:55:34 +0800 Subject: [PATCH 2/2] update error logs --- .../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 0e1f7ed109c3..61b50ffa22a2 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 @@ -4158,8 +4158,8 @@ public CompactionState getCompactionState(final TableName tableName) { RegionMetrics regionMetrics = sl.getRegionMetrics().get(regionInfo.getRegionName()); if (regionMetrics == null) { String regionName = regionInfo.getRegionNameAsString(); - LOG.error("Can not get compaction details for region: " + regionName + - ", it may be disabled or in transition."); + LOG.error("Can not get compaction details for the region: " + regionName + + " , it may be disabled or in transition."); notOnlineRegions.add(regionName); continue; }