shauryachats commented on code in PR #15843:
URL: https://github.com/apache/pinot/pull/15843#discussion_r2106085638


##########
pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/MultiStageReplicaGroupSelector.java:
##########
@@ -99,58 +100,139 @@ Pair<Map<String, String>, Map<String, String>> 
select(List<String> segments, int
     } else {
       replicaGroupSelected = requestId % 
instancePartitions.getNumReplicaGroups();
     }
-    for (int iteration = 0; iteration < 
instancePartitions.getNumReplicaGroups(); iteration++) {
-      int replicaGroup = (replicaGroupSelected + iteration) % 
instancePartitions.getNumReplicaGroups();
-      try {
-        return tryAssigning(segments, segmentStates, instancePartitions, 
replicaGroup);
-      } catch (Exception e) {
-        LOGGER.warn("Unable to select replica-group {} for table: {}", 
replicaGroup, _tableNameWithType, e);
+
+    return tryAssigning(Sets.newHashSet(segments), segmentStates, 
instancePartitions, replicaGroupSelected);

Review Comment:
   If the instance partitions are updated immediately on rebalance within a 
single replica group, they might change. The delay in IS and EV updation might 
not directly impact this routing strategy since instance partitions are 
technically decoupled from IS and EV.
   
   Instance Partitions -> Set of instances belonging to a particular partition 
and replica group.
   IS/EV -> Mapping of segments to the list of segments (one per replica group) 
and the associated state with them.
   
   Since the `tryAssigning` takes in the `instancePartitions` and 
`segmentStates` (which determine the list of instances available for a segment 
and do not directly tie to the instance partitions), an immediate change in 
`instancePartitions` is unlikely to cause any `replica group not found` errors.
   
   Inside `tryAssigning,` the segments and instances are correctly mapped to 
the relevant partition ID; hence, any change in partitioning should be 
correctly reflected in the new partition ID for both segments and instances.



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