HBASE-26475 The flush and compact methods in HTU should skip processing secondary replicas (#3868)

Signed-off-by: Xiaolin Ha <haxiaolin@apache.org>
This commit is contained in:
Duo Zhang 2021-11-23 18:31:18 +08:00 committed by GitHub
parent b870b6d9ac
commit 1c48248ef8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 15 deletions

View File

@ -27,6 +27,7 @@ import java.util.Set;
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.hbase.client.RegionInfoBuilder; import org.apache.hadoop.hbase.client.RegionInfoBuilder;
import org.apache.hadoop.hbase.client.RegionReplicaUtil;
import org.apache.hadoop.hbase.master.HMaster; import org.apache.hadoop.hbase.master.HMaster;
import org.apache.hadoop.hbase.regionserver.HRegion; import org.apache.hadoop.hbase.regionserver.HRegion;
import org.apache.hadoop.hbase.regionserver.HRegion.FlushResult; import org.apache.hadoop.hbase.regionserver.HRegion.FlushResult;
@ -664,6 +665,9 @@ public class SingleProcessHBaseCluster extends HBaseClusterInterface {
} }
private void executeFlush(HRegion region) throws IOException { private void executeFlush(HRegion region) throws IOException {
if (!RegionReplicaUtil.isDefaultReplica(region.getRegionInfo())) {
return;
}
// retry 5 times if we can not flush // retry 5 times if we can not flush
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
FlushResult result = region.flush(true); FlushResult result = region.flush(true);
@ -704,7 +708,9 @@ public class SingleProcessHBaseCluster extends HBaseClusterInterface {
public void compact(boolean major) throws IOException { public void compact(boolean major) throws IOException {
for (JVMClusterUtil.RegionServerThread t : this.hbaseCluster.getRegionServers()) { for (JVMClusterUtil.RegionServerThread t : this.hbaseCluster.getRegionServers()) {
for (HRegion r : t.getRegionServer().getOnlineRegionsLocalContext()) { for (HRegion r : t.getRegionServer().getOnlineRegionsLocalContext()) {
r.compact(major); if (RegionReplicaUtil.isDefaultReplica(r.getRegionInfo())) {
r.compact(major);
}
} }
} }
} }
@ -716,7 +722,9 @@ public class SingleProcessHBaseCluster extends HBaseClusterInterface {
for (JVMClusterUtil.RegionServerThread t : this.hbaseCluster.getRegionServers()) { for (JVMClusterUtil.RegionServerThread t : this.hbaseCluster.getRegionServers()) {
for (HRegion r : t.getRegionServer().getOnlineRegionsLocalContext()) { for (HRegion r : t.getRegionServer().getOnlineRegionsLocalContext()) {
if (r.getTableDescriptor().getTableName().equals(tableName)) { if (r.getTableDescriptor().getTableName().equals(tableName)) {
r.compact(major); if (RegionReplicaUtil.isDefaultReplica(r.getRegionInfo())) {
r.compact(major);
}
} }
} }
} }

View File

@ -1407,7 +1407,6 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility {
/** /**
* Flushes all caches in the mini hbase cluster * Flushes all caches in the mini hbase cluster
* @throws IOException
*/ */
public void flush() throws IOException { public void flush() throws IOException {
getMiniHBaseCluster().flushcache(); getMiniHBaseCluster().flushcache();
@ -1415,7 +1414,6 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility {
/** /**
* Flushes all caches in the mini hbase cluster * Flushes all caches in the mini hbase cluster
* @throws IOException
*/ */
public void flush(TableName tableName) throws IOException { public void flush(TableName tableName) throws IOException {
getMiniHBaseCluster().flushcache(tableName); getMiniHBaseCluster().flushcache(tableName);
@ -1423,7 +1421,6 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility {
/** /**
* Compact all regions in the mini hbase cluster * Compact all regions in the mini hbase cluster
* @throws IOException
*/ */
public void compact(boolean major) throws IOException { public void compact(boolean major) throws IOException {
getMiniHBaseCluster().compact(major); getMiniHBaseCluster().compact(major);
@ -1431,7 +1428,6 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility {
/** /**
* Compact all of a table's reagion in the mini hbase cluster * Compact all of a table's reagion in the mini hbase cluster
* @throws IOException
*/ */
public void compact(TableName tableName, boolean major) throws IOException { public void compact(TableName tableName, boolean major) throws IOException {
getMiniHBaseCluster().compact(tableName, major); getMiniHBaseCluster().compact(tableName, major);

View File

@ -27,6 +27,7 @@ import java.util.Set;
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.hbase.client.RegionInfoBuilder; import org.apache.hadoop.hbase.client.RegionInfoBuilder;
import org.apache.hadoop.hbase.client.RegionReplicaUtil;
import org.apache.hadoop.hbase.master.HMaster; import org.apache.hadoop.hbase.master.HMaster;
import org.apache.hadoop.hbase.regionserver.HRegion; import org.apache.hadoop.hbase.regionserver.HRegion;
import org.apache.hadoop.hbase.regionserver.HRegion.FlushResult; import org.apache.hadoop.hbase.regionserver.HRegion.FlushResult;
@ -710,6 +711,9 @@ public class MiniHBaseCluster extends HBaseCluster {
} }
private void executeFlush(HRegion region) throws IOException { private void executeFlush(HRegion region) throws IOException {
if (!RegionReplicaUtil.isDefaultReplica(region.getRegionInfo())) {
return;
}
// retry 5 times if we can not flush // retry 5 times if we can not flush
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
FlushResult result = region.flush(true); FlushResult result = region.flush(true);
@ -749,10 +753,11 @@ public class MiniHBaseCluster extends HBaseCluster {
* @throws IOException * @throws IOException
*/ */
public void compact(boolean major) throws IOException { public void compact(boolean major) throws IOException {
for (JVMClusterUtil.RegionServerThread t: for (JVMClusterUtil.RegionServerThread t : this.hbaseCluster.getRegionServers()) {
this.hbaseCluster.getRegionServers()) { for (HRegion r : t.getRegionServer().getOnlineRegionsLocalContext()) {
for(HRegion r: t.getRegionServer().getOnlineRegionsLocalContext()) { if (RegionReplicaUtil.isDefaultReplica(r.getRegionInfo())) {
r.compact(major); r.compact(major);
}
} }
} }
} }
@ -762,11 +767,12 @@ public class MiniHBaseCluster extends HBaseCluster {
* @throws IOException * @throws IOException
*/ */
public void compact(TableName tableName, boolean major) throws IOException { public void compact(TableName tableName, boolean major) throws IOException {
for (JVMClusterUtil.RegionServerThread t: for (JVMClusterUtil.RegionServerThread t : this.hbaseCluster.getRegionServers()) {
this.hbaseCluster.getRegionServers()) { for (HRegion r : t.getRegionServer().getOnlineRegionsLocalContext()) {
for(HRegion r: t.getRegionServer().getOnlineRegionsLocalContext()) { if (r.getTableDescriptor().getTableName().equals(tableName)) {
if(r.getTableDescriptor().getTableName().equals(tableName)) { if (RegionReplicaUtil.isDefaultReplica(r.getRegionInfo())) {
r.compact(major); r.compact(major);
}
} }
} }
} }