This is an automated email from the ASF dual-hosted git repository.

jackie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new c15440466a Honor 'numReplicaGroupsToQuery' when 'useFixedReplica' is 
set (#15986)
c15440466a is described below

commit c15440466a0032c5f74e55940792fb16cd719760
Author: Xiaotian (Jackie) Jiang <[email protected]>
AuthorDate: Tue Jun 3 19:32:55 2025 -0600

    Honor 'numReplicaGroupsToQuery' when 'useFixedReplica' is set (#15986)
---
 .../routing/instanceselector/BalancedInstanceSelector.java       | 3 ++-
 .../routing/instanceselector/ReplicaGroupInstanceSelector.java   | 9 +++++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git 
a/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/BalancedInstanceSelector.java
 
b/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/BalancedInstanceSelector.java
index 62400519e4..807d3e9fda 100644
--- 
a/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/BalancedInstanceSelector.java
+++ 
b/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/BalancedInstanceSelector.java
@@ -87,6 +87,7 @@ public class BalancedInstanceSelector extends 
BaseInstanceSelector {
         }
       }
     } else {
+      boolean useFixedReplica = isUseFixedReplica(queryOptions);
       for (String segment : segments) {
         List<SegmentInstanceCandidate> candidates = 
segmentStates.getCandidates(segment);
         // NOTE: candidates can be null when there is no enabled instances for 
the segment, or the instance selector has
@@ -95,7 +96,7 @@ public class BalancedInstanceSelector extends 
BaseInstanceSelector {
           continue;
         }
         int selectedIdx;
-        if (isUseFixedReplica(queryOptions)) {
+        if (useFixedReplica) {
           // candidates array is always sorted
           selectedIdx = _tableNameHashForFixedReplicaRouting % 
candidates.size();
         } else {
diff --git 
a/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/ReplicaGroupInstanceSelector.java
 
b/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/ReplicaGroupInstanceSelector.java
index 8d87d9d209..943cd10d45 100644
--- 
a/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/ReplicaGroupInstanceSelector.java
+++ 
b/pinot-broker/src/main/java/org/apache/pinot/broker/routing/instanceselector/ReplicaGroupInstanceSelector.java
@@ -98,10 +98,11 @@ public class ReplicaGroupInstanceSelector extends 
BaseInstanceSelector {
     Map<String, String> segmentToSelectedInstanceMap = new 
HashMap<>(HashUtil.getHashMapCapacity(segments.size()));
     // No need to adjust this map per total segment numbers, as optional 
segments should be empty most of the time.
     Map<String, String> optionalSegmentToInstanceMap = new HashMap<>();
+    Map<Integer, Integer> replicaGroupToSegmentCount = new HashMap<>();
+    boolean useFixedReplica = isUseFixedReplica(ctx.getQueryOptions());
     Integer numReplicaGroupsToQuery = 
QueryOptionsUtils.getNumReplicaGroupsToQuery(ctx.getQueryOptions());
-    int numReplicaGroups = numReplicaGroupsToQuery == null ? 1 : 
numReplicaGroupsToQuery;
+    int numReplicaGroups = numReplicaGroupsToQuery != null ? 
numReplicaGroupsToQuery : 1;
     int replicaOffset = 0;
-    Map<Integer, Integer> replicaGroupToSegmentCount = new HashMap<>();
     for (String segment : segments) {
       List<SegmentInstanceCandidate> candidates = 
segmentStates.getCandidates(segment);
       // NOTE: candidates can be null when there is no enabled instances for 
the segment, or the instance selector has
@@ -113,9 +114,9 @@ public class ReplicaGroupInstanceSelector extends 
BaseInstanceSelector {
       int numCandidates = candidates.size();
       int instanceIdx;
 
-      if (isUseFixedReplica(ctx.getQueryOptions())) {
+      if (useFixedReplica) {
         // candidates array is always sorted
-        instanceIdx = _tableNameHashForFixedReplicaRouting % numCandidates;
+        instanceIdx = (_tableNameHashForFixedReplicaRouting + replicaOffset) % 
numCandidates;
       } else {
         instanceIdx = (requestId + replicaOffset) % numCandidates;
       }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to