This is an automated email from the ASF dual-hosted git repository.

tanxinyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new ed6f56b25ab Fix partition cache after region migration (#12404)
ed6f56b25ab is described below

commit ed6f56b25ab03028dea597bed2b78a7679100682
Author: Li Yu Heng <[email protected]>
AuthorDate: Wed Apr 24 17:45:13 2024 +0800

    Fix partition cache after region migration (#12404)
---
 .../iotdb/confignode/manager/load/balancer/RouteBalancer.java  | 10 ++++++++--
 .../iotdb/confignode/procedure/env/RegionMaintainHandler.java  |  7 ++++---
 .../plan/analyze/cache/partition/PartitionCache.java           |  1 +
 3 files changed, 13 insertions(+), 5 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java
index 30ca728e7a9..79ca434e1d3 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java
@@ -139,7 +139,7 @@ public class RouteBalancer implements 
IClusterStatusSubscriber {
   }
 
   /** Balance cluster RegionGroup leader distribution through configured 
algorithm. */
-  public synchronized void balanceRegionLeader() {
+  private synchronized void balanceRegionLeader() {
     if (IS_ENABLE_AUTO_LEADER_BALANCE_FOR_SCHEMA_REGION) {
       balanceRegionLeader(TConsensusGroupType.SchemaRegion, 
SCHEMA_REGION_CONSENSUS_PROTOCOL_CLASS);
     }
@@ -240,8 +240,13 @@ public class RouteBalancer implements 
IClusterStatusSubscriber {
     getLoadManager().forceUpdateConsensusGroupCache(successTransferMap);
   }
 
+  public synchronized void balanceRegionLeaderAndPriority() {
+    balanceRegionLeader();
+    balanceRegionPriority();
+  }
+
   /** Balance cluster RegionGroup route priority through configured algorithm. 
*/
-  public synchronized void balanceRegionPriority() {
+  private synchronized void balanceRegionPriority() {
     priorityMapLock.writeLock().lock();
     AtomicBoolean needBroadcast = new AtomicBoolean(false);
     Map<TConsensusGroupId, Pair<TRegionReplicaSet, TRegionReplicaSet>> 
differentPriorityMap =
@@ -295,6 +300,7 @@ public class RouteBalancer implements 
IClusterStatusSubscriber {
 
     long broadcastTime = System.currentTimeMillis();
     Map<TConsensusGroupId, TRegionReplicaSet> tmpPriorityMap = 
getRegionPriorityMap();
+    LOGGER.info("region map: {}", tmpPriorityMap);
     AsyncClientHandler<TRegionRouteReq, TSStatus> clientHandler =
         new AsyncClientHandler<>(
             DataNodeRequestType.UPDATE_REGION_ROUTE_MAP,
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/RegionMaintainHandler.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/RegionMaintainHandler.java
index 326787449df..caf6482a090 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/RegionMaintainHandler.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/RegionMaintainHandler.java
@@ -450,6 +450,7 @@ public class RegionMaintainHandler {
     configManager
         .getLoadManager()
         .forceRemoveRegionCache(regionId, deprecatedLocation.getDataNodeId());
+    
configManager.getLoadManager().getRouteBalancer().balanceRegionLeaderAndPriority();
   }
 
   /**
@@ -683,7 +684,8 @@ public class RegionMaintainHandler {
           break;
         }
         if (retryTime++ > MAX_RETRY_TIME) {
-          throw new ProcedureException("Transfer leader fail");
+          LOGGER.warn("[RemoveRegion] Ratis transfer leader fail, but 
procedure will continue.");
+          return;
         }
         LOGGER.warn("Call changeRegionLeader fail for the {} time", retryTime);
       }
@@ -695,8 +697,7 @@ public class RegionMaintainHandler {
             Collections.singletonMap(
                 regionId,
                 new ConsensusGroupHeartbeatSample(timestamp, 
newLeaderNode.get().getDataNodeId())));
-    configManager.getLoadManager().getRouteBalancer().balanceRegionLeader();
-    configManager.getLoadManager().getRouteBalancer().balanceRegionPriority();
+    
configManager.getLoadManager().getRouteBalancer().balanceRegionLeaderAndPriority();
 
     LOGGER.info(
         "{}, Change region leader finished, regionId: {}, newLeaderNode: {}",
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java
index 831ee181d44..07a68fb5043 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java
@@ -479,6 +479,7 @@ public class PartitionCache {
       if (result) {
         groupIdToReplicaSetMap.clear();
         groupIdToReplicaSetMap.putAll(map);
+        logger.info("groupIdToReplicaSetMap update: {}", 
groupIdToReplicaSetMap);
       }
       return result;
     } finally {

Reply via email to