Copilot commented on code in PR #16096:
URL: https://github.com/apache/pinot/pull/16096#discussion_r2148997265


##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/rebalance/TableRebalancer.java:
##########
@@ -508,66 +531,100 @@ private RebalanceResult doRebalance(TableConfig 
tableConfig, RebalanceConfig reb
 
       // Re-calculate the target assignment if IdealState changed while 
waiting for ExternalView to converge
       ZNRecord idealStateRecord = idealState.getRecord();
-      if (idealStateRecord.getVersion() != expectedVersion) {
-        tableRebalanceLogger.info(
-            "IdealState version changed while waiting for ExternalView to 
converge, re-calculating the target "
-                + "assignment");
-        Map<String, Map<String, String>> oldAssignment = currentAssignment;
-        currentAssignment = idealStateRecord.getMapFields();
-        expectedVersion = idealStateRecord.getVersion();
-
-        // If all the segments to be moved remain unchanged (same instance 
state map) in the new ideal state, apply the
-        // same target instance state map for these segments to the new ideal 
state as the target assignment
-        boolean segmentsToMoveChanged = false;
-        if (segmentAssignment instanceof StrictRealtimeSegmentAssignment) {
-          // For StrictRealtimeSegmentAssignment, we need to recompute the 
target assignment because the assignment for
-          // new added segments is based on the existing assignment
-          segmentsToMoveChanged = true;
-        } else {
-          for (String segment : segmentsToMove) {
-            Map<String, String> oldInstanceStateMap = 
oldAssignment.get(segment);
-            Map<String, String> currentInstanceStateMap = 
currentAssignment.get(segment);
-            // TODO: Consider allowing segment state change from CONSUMING to 
ONLINE
-            if (!oldInstanceStateMap.equals(currentInstanceStateMap)) {
-              tableRebalanceLogger.info(
-                  "Segment state changed in IdealState from: {} to: {} for 
segment: {}, re-calculating the target "
-                      + "assignment based on the new IdealState",
-                  oldInstanceStateMap, currentInstanceStateMap, segment);
-              segmentsToMoveChanged = true;
-              break;
+      Map<String, Map<String, String>> nextAssignment;
+      boolean needsRecalculation;
+      boolean shouldForceCommit = forceCommitBeforeMoved;

Review Comment:
   [nitpick] For downtime rebalance, consuming segments are already force 
committed in the initial downtime block, so setting `shouldForceCommit` here 
will double-commit those segments in the subsequent loop. Consider resetting 
`shouldForceCommit = false` immediately after the initial commit when `downtime 
== true` to avoid redundant operations.



-- 
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]

Reply via email to