From e4ad6e9f647dc07604b42733eecdff24dd30c519 Mon Sep 17 00:00:00 2001 From: Duo Zhang Date: Tue, 23 Nov 2021 18:31:18 +0800 Subject: [PATCH] HBASE-26475 The flush and compact methods in HTU should skip processing secondary replicas (#3868) Signed-off-by: Xiaolin Ha --- .../hadoop/hbase/HBaseTestingUtility.java | 4 --- .../apache/hadoop/hbase/MiniHBaseCluster.java | 25 +++++++++++-------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java index f130f31b8f4..204c75a237e 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java @@ -1471,7 +1471,6 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility { /** * Flushes all caches in the mini hbase cluster - * @throws IOException */ public void flush() throws IOException { getMiniHBaseCluster().flushcache(); @@ -1479,7 +1478,6 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility { /** * Flushes all caches in the mini hbase cluster - * @throws IOException */ public void flush(TableName tableName) throws IOException { getMiniHBaseCluster().flushcache(tableName); @@ -1487,7 +1485,6 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility { /** * Compact all regions in the mini hbase cluster - * @throws IOException */ public void compact(boolean major) throws IOException { getMiniHBaseCluster().compact(major); @@ -1495,7 +1492,6 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility { /** * Compact all of a table's reagion in the mini hbase cluster - * @throws IOException */ public void compact(TableName tableName, boolean major) throws IOException { getMiniHBaseCluster().compact(tableName, major); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java index f795eef86c0..4942dc868f4 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java @@ -24,9 +24,9 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; - import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.hbase.client.RegionReplicaUtil; import org.apache.hadoop.hbase.master.HMaster; import org.apache.hadoop.hbase.regionserver.HRegion; import org.apache.hadoop.hbase.regionserver.HRegion.FlushResult; @@ -727,6 +727,9 @@ public class MiniHBaseCluster extends HBaseCluster { } private void executeFlush(HRegion region) throws IOException { + if (!RegionReplicaUtil.isDefaultReplica(region.getRegionInfo())) { + return; + } // retry 5 times if we can not flush for (int i = 0; i < 5; i++) { FlushResult result = region.flush(true); @@ -766,10 +769,11 @@ public class MiniHBaseCluster extends HBaseCluster { * @throws IOException */ public void compact(boolean major) throws IOException { - for (JVMClusterUtil.RegionServerThread t: - this.hbaseCluster.getRegionServers()) { - for(HRegion r: t.getRegionServer().getOnlineRegionsLocalContext()) { - r.compact(major); + for (JVMClusterUtil.RegionServerThread t : this.hbaseCluster.getRegionServers()) { + for (HRegion r : t.getRegionServer().getOnlineRegionsLocalContext()) { + if (RegionReplicaUtil.isDefaultReplica(r.getRegionInfo())) { + r.compact(major); + } } } } @@ -779,11 +783,12 @@ public class MiniHBaseCluster extends HBaseCluster { * @throws IOException */ public void compact(TableName tableName, boolean major) throws IOException { - for (JVMClusterUtil.RegionServerThread t: - this.hbaseCluster.getRegionServers()) { - for(HRegion r: t.getRegionServer().getOnlineRegionsLocalContext()) { - if(r.getTableDescriptor().getTableName().equals(tableName)) { - r.compact(major); + for (JVMClusterUtil.RegionServerThread t : this.hbaseCluster.getRegionServers()) { + for (HRegion r : t.getRegionServer().getOnlineRegionsLocalContext()) { + if (r.getTableDescriptor().getTableName().equals(tableName)) { + if (RegionReplicaUtil.isDefaultReplica(r.getRegionInfo())) { + r.compact(major); + } } } }