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

morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 46effbfad0308ab601118ac680b1a93738715bf5
Author: yujun <[email protected]>
AuthorDate: Mon May 29 09:00:51 2023 +0800

    [fix] (clone)  fix drop biggest version replica during reblance step 
(#20107)
    
    * add check for rebalancer choose deleted replica
    
    * impr a compare
---
 .../java/org/apache/doris/clone/TabletScheduler.java  | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/clone/TabletScheduler.java 
b/fe/fe-core/src/main/java/org/apache/doris/clone/TabletScheduler.java
index c672976b92..8023fe2be5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/clone/TabletScheduler.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/clone/TabletScheduler.java
@@ -991,11 +991,22 @@ public class TabletScheduler extends MasterDaemon {
             return false;
         }
         Replica chosenReplica = tabletCtx.getTablet().getReplicaById(id);
-        if (chosenReplica != null) {
-            deleteReplicaInternal(tabletCtx, chosenReplica, "src replica of 
rebalance", force);
-            return true;
+        if (chosenReplica == null) {
+            return false;
         }
-        return false;
+        List<Replica> replicas = tabletCtx.getTablet().getReplicas();
+        int eqOrNewVersionCount = 0;
+        for (Replica replica : replicas) {
+            if (replica.getVersion() >= chosenReplica.getVersion()) {
+                eqOrNewVersionCount++;
+            }
+        }
+        if (eqOrNewVersionCount == 1) {
+            return false;
+        }
+        deleteReplicaInternal(tabletCtx, chosenReplica, "src replica of 
rebalance", force);
+
+        return true;
     }
 
     private boolean deleteReplicaOnHighLoadBackend(TabletSchedCtx tabletCtx, 
boolean force) throws SchedException {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to