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]
