@@ -133,7 +133,10 @@ protected Flow executeFromState(ConfigNodeProcedureEnv env, RemoveDataNodeState
133133 setNextState (RemoveDataNodeState .SUBMIT_REGION_MIGRATE );
134134 break ;
135135 case SUBMIT_REGION_MIGRATE :
136- submitChildRegionMigrate (env );
136+ // Avoid re-submit region-migration when leader change or ConfigNode reboot
137+ if (!isStateDeserialized ()) {
138+ submitChildRegionMigrate (env );
139+ }
137140 setNextState (RemoveDataNodeState .STOP_DATA_NODE );
138141 break ;
139142 case STOP_DATA_NODE :
@@ -183,10 +186,10 @@ private void submitChildRegionMigrate(ConfigNodeProcedureEnv env) {
183186 LOG .info (
184187 "Submit RegionMigrateProcedure for regionId {}: removedDataNode={}, destDataNode={}, coordinatorForAddPeer={}, coordinatorForRemovePeer={}" ,
185188 regionId ,
186- removedDataNode ,
187- destDataNode ,
188- coordinatorForAddPeer ,
189- coordinatorForRemovePeer );
189+ simplifyTDataNodeLocation ( removedDataNode ) ,
190+ simplifyTDataNodeLocation ( destDataNode ) ,
191+ simplifyTDataNodeLocation ( coordinatorForAddPeer ) ,
192+ simplifyTDataNodeLocation ( coordinatorForRemovePeer ) );
190193 } else {
191194 LOG .error (
192195 "{}, Cannot find target DataNode to migrate the region: {}" ,
@@ -197,6 +200,12 @@ private void submitChildRegionMigrate(ConfigNodeProcedureEnv env) {
197200 });
198201 }
199202
203+ private String simplifyTDataNodeLocation (TDataNodeLocation dataNodeLocation ) {
204+ return String .format (
205+ "DataNode(id:%d, address:%s)" ,
206+ dataNodeLocation .getDataNodeId (), dataNodeLocation .getInternalEndPoint ().getIp ());
207+ }
208+
200209 private void checkRegionStatusAndStopDataNode (ConfigNodeProcedureEnv env ) {
201210 List <TRegionReplicaSet > replicaSets =
202211 env .getConfigManager ().getPartitionManager ().getAllReplicaSets ();
0 commit comments