Jackie-Jiang commented on code in PR #11073:
URL: https://github.com/apache/pinot/pull/11073#discussion_r1270928029


##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/rebalance/TableRebalancer.java:
##########
@@ -522,16 +550,19 @@ private InstancePartitions 
getInstancePartitions(TableConfig tableConfig,
             TableConfigUtils.hasPreConfiguredInstancePartitions(tableConfig, 
instancePartitionsType);
         if (hasPreConfiguredInstancePartitions) {
           String referenceInstancePartitionsName = 
tableConfig.getInstancePartitionsMap().get(instancePartitionsType);
+          InstancePartitions existingInstancePartitions = 
InstancePartitionsUtils.fetchInstancePartitions(

Review Comment:
   Here we need to read the table's instance partitions name instead of the 
reference instance partitions name



##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/rebalance/TableRebalancer.java:
##########
@@ -522,16 +550,19 @@ private InstancePartitions 
getInstancePartitions(TableConfig tableConfig,
             TableConfigUtils.hasPreConfiguredInstancePartitions(tableConfig, 
instancePartitionsType);
         if (hasPreConfiguredInstancePartitions) {
           String referenceInstancePartitionsName = 
tableConfig.getInstancePartitionsMap().get(instancePartitionsType);
+          InstancePartitions existingInstancePartitions = 
InstancePartitionsUtils.fetchInstancePartitions(
+              _helixManager.getHelixPropertyStore(), 
referenceInstancePartitionsName);
           InstancePartitions instancePartitions =
               
InstancePartitionsUtils.fetchInstancePartitionsWithRename(_helixManager.getHelixPropertyStore(),
                   referenceInstancePartitionsName, 
instancePartitionsType.getInstancePartitionsName(rawTableName));
-          if (!dryRun) {
+          boolean instancePartitionsUnchanged = 
instancePartitions.equals(existingInstancePartitions);
+          if (!dryRun && instancePartitionsUnchanged) {

Review Comment:
   If instance partitions is unchanged, we should not persist it
   ```suggestion
             if (!dryRun && !instancePartitionsUnchanged) {
   ```



##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/rebalance/TableRebalancer.java:
##########
@@ -544,16 +575,17 @@ private InstancePartitions 
getInstancePartitions(TableConfig tableConfig,
         InstancePartitions instancePartitions = 
instanceAssignmentDriver.assignInstances(instancePartitionsType,
             
_helixDataAccessor.getChildValues(_helixDataAccessor.keyBuilder().instanceConfigs(),
 true),
             existingInstancePartitions);
-        if (!dryRun) {
+        boolean instancePartitionsUnchanged = 
instancePartitions.equals(existingInstancePartitions);
+        if (!dryRun && instancePartitionsUnchanged) {

Review Comment:
   Same here



##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/rebalance/TableRebalancer.java:
##########
@@ -643,17 +688,17 @@ private InstancePartitions 
getInstancePartitionsForTier(TableConfig tableConfig,
         LOGGER.info("Persisting instance partitions: {} to ZK", 
instancePartitions);
         
InstancePartitionsUtils.persistInstancePartitions(_helixManager.getHelixPropertyStore(),
 instancePartitions);
       }
-      return instancePartitions;
+      return Pair.of(instancePartitions, 
instancePartitions.equals(existingInstancePartitions));

Review Comment:
   We want to follow the same logic as non-tier instance assignment. Also, in 
`bootstrap` mode, we still want to read the `existingInstancePartitions`, but 
just passing `null` into `instanceAssignmentDriver.assignInstances()`



##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/rebalance/TableRebalancer.java:
##########
@@ -623,7 +668,7 @@ private InstancePartitions 
getInstancePartitionsForTier(TableConfig tableConfig,
         LOGGER.info("Removing instance partitions: {} from ZK if it exists", 
instancePartitionsName);
         
InstancePartitionsUtils.removeInstancePartitions(_helixManager.getHelixPropertyStore(),
 instancePartitionsName);
       }
-      return defaultInstancePartitions;
+      return Pair.of(defaultInstancePartitions, true);

Review Comment:
   Here we should check if existing instance partitions exist



##########
pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/rebalance/TableRebalancer.java:
##########
@@ -256,22 +264,15 @@ public RebalanceResult rebalance(TableConfig tableConfig, 
Configuration rebalanc
           tierToInstancePartitionsMap, null);
     }
 
-    if (currentAssignment.equals(targetAssignment)) {
+    boolean segmentAssignmentUnchanged = 
currentAssignment.equals(targetAssignment);
+    LOGGER.info("For rebalanceId: {},  segmentAssignmentUnchanged: {}, "

Review Comment:
   (minor) The above comment is not addressed. Also there are double spaces



-- 
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: commits-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to