From ce2460b058fbd9147bdf7bdadb0583cb07f6d01c Mon Sep 17 00:00:00 2001 From: wenwj0 <36262341+wenwj0@users.noreply.github.com> Date: Tue, 14 Jun 2022 14:23:27 +0800 Subject: [PATCH] Revert "HBASE-26649 Support meta replica LoadBalance mode for RegionLocator#getAllRegionLocations() (#4442)" This reverts commit 33041da496b334d646c0794058f64391d375051a. --- .../hadoop/hbase/ClientMetaTableAccessor.java | 34 +------------------ .../client/AsyncNonMetaRegionLocator.java | 1 - .../{ => client}/CatalogReplicaMode.java | 4 +-- .../client/TestAsyncNonMetaRegionLocator.java | 1 - .../TestMetaRegionReplicaReplication.java | 21 ++++-------- 5 files changed, 9 insertions(+), 52 deletions(-) rename hbase-client/src/main/java/org/apache/hadoop/hbase/{ => client}/CatalogReplicaMode.java (96%) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ClientMetaTableAccessor.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ClientMetaTableAccessor.java index e948048325fe..14076f0d7b00 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ClientMetaTableAccessor.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ClientMetaTableAccessor.java @@ -17,7 +17,6 @@ */ package org.apache.hadoop.hbase; -import static org.apache.hadoop.hbase.client.RegionLocator.LOCATOR_META_REPLICAS_MODE; import static org.apache.hadoop.hbase.util.FutureUtils.addListener; import java.io.Closeable; @@ -27,7 +26,6 @@ import java.util.List; import java.util.Optional; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors; import org.apache.hadoop.hbase.client.AdvancedScanResultConsumer; import org.apache.hadoop.hbase.client.AsyncTable; @@ -259,37 +257,7 @@ private static CompletableFuture scanMeta(AsyncTable future = new CompletableFuture(); - // Get the region locator's meta replica mode. - CatalogReplicaMode metaReplicaMode = CatalogReplicaMode.fromString(metaTable.getConfiguration() - .get(LOCATOR_META_REPLICAS_MODE, CatalogReplicaMode.NONE.toString())); - - if (metaReplicaMode == CatalogReplicaMode.LOAD_BALANCE) { - addListener(metaTable.getDescriptor(), (desc, error) -> { - if (error != null) { - LOG.error("Failed to get meta table descriptor, error: ", error); - future.completeExceptionally(error); - return; - } - - int numOfReplicas = desc.getRegionReplication(); - if (numOfReplicas > 1) { - int replicaId = ThreadLocalRandom.current().nextInt(numOfReplicas); - - // When the replicaId is 0, do not set to Consistency.TIMELINE - if (replicaId > 0) { - scan.setReplicaId(replicaId); - scan.setConsistency(Consistency.TIMELINE); - } - } - metaTable.scan(scan, new MetaTableScanResultConsumer(rowUpperLimit, visitor, future)); - }); - } else { - if (metaReplicaMode == CatalogReplicaMode.HEDGED_READ) { - scan.setConsistency(Consistency.TIMELINE); - } - metaTable.scan(scan, new MetaTableScanResultConsumer(rowUpperLimit, visitor, future)); - } - + metaTable.scan(scan, new MetaTableScanResultConsumer(rowUpperLimit, visitor, future)); return future; } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.java index 2692a0b776b0..2e3b7f566916 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.java @@ -50,7 +50,6 @@ import java.util.concurrent.TimeUnit; import org.apache.commons.lang3.ObjectUtils; import org.apache.hadoop.hbase.CatalogFamilyFormat; -import org.apache.hadoop.hbase.CatalogReplicaMode; import org.apache.hadoop.hbase.HBaseIOException; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionLocation; diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/CatalogReplicaMode.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/CatalogReplicaMode.java similarity index 96% rename from hbase-client/src/main/java/org/apache/hadoop/hbase/CatalogReplicaMode.java rename to hbase-client/src/main/java/org/apache/hadoop/hbase/client/CatalogReplicaMode.java index b89673d45a88..647d5dcf38f5 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/CatalogReplicaMode.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/CatalogReplicaMode.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.hadoop.hbase; +package org.apache.hadoop.hbase.client; import org.apache.yetus.audience.InterfaceAudience; @@ -33,7 +33,7 @@ * */ @InterfaceAudience.Private -public enum CatalogReplicaMode { +enum CatalogReplicaMode { NONE { @Override public String toString() { diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.java index f5f3cc4c6fbd..8a81d7ce774d 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.java @@ -37,7 +37,6 @@ import java.util.concurrent.ThreadLocalRandom; import java.util.stream.IntStream; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hbase.CatalogReplicaMode; import org.apache.hadoop.hbase.HBaseClassTestRule; import org.apache.hadoop.hbase.HBaseTestingUtil; import org.apache.hadoop.hbase.HRegionLocation; diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestMetaRegionReplicaReplication.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestMetaRegionReplicaReplication.java index 411bdc53b047..10399a8a0620 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestMetaRegionReplicaReplication.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/regionserver/TestMetaRegionReplicaReplication.java @@ -43,7 +43,6 @@ import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.RegionInfo; -import org.apache.hadoop.hbase.client.RegionLocator; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.client.Table; @@ -397,8 +396,11 @@ private void primaryIncreaseReplicaNoChange(final long[] before, final long[] af } private void primaryIncreaseReplicaIncrease(final long[] before, final long[] after) { - // There are read requests increase for all meta replica regions, - for (int i = 0; i < after.length; i++) { + // There are read requests increase for primary meta replica. + assertTrue(after[RegionInfo.DEFAULT_REPLICA_ID] > before[RegionInfo.DEFAULT_REPLICA_ID]); + + // There are read requests incrase for meta replica regions. + for (int i = 1; i < after.length; i++) { assertTrue(after[i] > before[i]); } } @@ -418,7 +420,6 @@ public void testHBaseMetaReplicaGets() throws Exception { final Region[] metaRegions = getAllRegions(TableName.META_TABLE_NAME, numOfMetaReplica); long[] readReqsForMetaReplicas = new long[numOfMetaReplica]; long[] readReqsForMetaReplicasAfterGet = new long[numOfMetaReplica]; - long[] readReqsForMetaReplicasAfterGetAllLocations = new long[numOfMetaReplica]; long[] readReqsForMetaReplicasAfterMove = new long[numOfMetaReplica]; long[] readReqsForMetaReplicasAfterSecondMove = new long[numOfMetaReplica]; long[] readReqsForMetaReplicasAfterThirdGet = new long[numOfMetaReplica]; @@ -467,16 +468,6 @@ public void testHBaseMetaReplicaGets() throws Exception { // There are more reads against all meta replica regions, including the primary region. primaryIncreaseReplicaIncrease(readReqsForMetaReplicas, readReqsForMetaReplicasAfterGet); - RegionLocator locator = tableForGet.getRegionLocator(); - - for (int j = 0; j < numOfMetaReplica * 3; j ++) { - locator.getAllRegionLocations(); - } - - getMetaReplicaReadRequests(metaRegions, readReqsForMetaReplicasAfterGetAllLocations); - primaryIncreaseReplicaIncrease(readReqsForMetaReplicasAfterGet, - readReqsForMetaReplicasAfterGetAllLocations); - // move one of regions so it meta cache may be invalid. HTU.moveRegionAndWait(userRegion.getRegionInfo(), destRs.getServerName()); @@ -486,7 +477,7 @@ public void testHBaseMetaReplicaGets() throws Exception { // There are read requests increase for primary meta replica. // For rest of meta replicas, there is no change as regionMove will tell the new location - primaryIncreaseReplicaNoChange(readReqsForMetaReplicasAfterGetAllLocations, + primaryIncreaseReplicaNoChange(readReqsForMetaReplicasAfterGet, readReqsForMetaReplicasAfterMove); // Move region again. HTU.moveRegionAndWait(userRegion.getRegionInfo(), srcRs.getServerName());