yujun777 commented on code in PR #48704:
URL: https://github.com/apache/doris/pull/48704#discussion_r1986751466
##########
fe/fe-core/src/main/java/org/apache/doris/alter/Alter.java:
##########
@@ -1056,11 +1073,103 @@ public void modifyPartitionsProperty(Database db,
Env.getCurrentEnv().getEditLog().logBatchModifyPartition(info);
}
+ public void setReplicasToDrop(Partition partition,
+ ReplicaAllocation oldReplicaAlloc,
+ ReplicaAllocation newReplicaAlloc,
+ Map<Long, Long> tableBeToReplicaNumMap) {
+ Set<Tag> scaleInTags = getScaleInTags(oldReplicaAlloc,
newReplicaAlloc);
+ SystemInfoService systemInfoService = Env.getCurrentSystemInfo();
+ List<Long> aliveBes = systemInfoService.getAllBackendIds(true);
+
+ for (Tag tag : scaleInTags) {
+ int replicasToDrop = oldReplicaAlloc.getReplicaNumByTag(tag) -
newReplicaAlloc.getReplicaNumByTag(tag);
+ if (replicasToDrop <= 0) {
+ return;
+ }
+
+ processReplicasInPartition(partition, tag, replicasToDrop,
+ tableBeToReplicaNumMap, systemInfoService,
oldReplicaAlloc, aliveBes);
+ }
+ }
+
+ private void processReplicasInPartition(Partition partition, Tag tag, int
replicasToDrop,
+ Map<Long, Long>
tableBeToReplicaNumMap, SystemInfoService systemInfoService,
+ ReplicaAllocation oldReplicaAlloc,
+ List<Long> aliveBes) {
+ for (MaterializedIndex index :
partition.getMaterializedIndices(MaterializedIndex.IndexExtState.VISIBLE)) {
Review Comment:
maybe no pass tag in this function is better ? for each tablet collect
map<tag, list<replica>>, then for each tag, process the list<replica>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]