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 {